@maudecode/talaria-web 1.14.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.
- package/_release.json +4 -4
- package/dist/api/automation-router.d.ts +123 -7
- package/dist/api/automation-router.js +5 -0
- package/dist/api/automation-router.js.map +1 -1
- package/dist/api/chat-router.d.ts +728 -55
- package/dist/api/chat-router.js +122 -126
- package/dist/api/chat-router.js.map +1 -1
- package/dist/api/git-router.js +44 -32
- package/dist/api/git-router.js.map +1 -1
- package/dist/api/raw-routes.js +5 -58
- package/dist/api/raw-routes.js.map +1 -1
- package/dist/api/router.d.ts +6 -3
- package/dist/api/router.js +10 -8
- package/dist/api/router.js.map +1 -1
- package/dist/api/sessions-router.d.ts +2583 -297
- package/dist/api/sessions-router.js +92 -47
- package/dist/api/sessions-router.js.map +1 -1
- package/dist/api/settings-router.d.ts +188 -17
- package/dist/api/settings-router.js +75 -26
- package/dist/api/settings-router.js.map +1 -1
- package/dist/api/sse-routes.js +1 -1
- package/dist/api/sse-routes.js.map +1 -1
- package/dist/api/tools-router.d.ts +13 -1
- package/dist/api/tools-router.js +10 -8
- package/dist/api/tools-router.js.map +1 -1
- package/dist/app.d.ts +3620 -343
- package/dist/auth/gate.js +8 -4
- package/dist/auth/gate.js.map +1 -1
- package/dist/auth/oidc.d.ts +6 -2
- package/dist/auth/oidc.js +16 -11
- package/dist/auth/oidc.js.map +1 -1
- package/dist/auth/store.d.ts +14 -2
- package/dist/auth/store.js +26 -1
- package/dist/auth/store.js.map +1 -1
- package/dist/cli/dotenv.d.ts +1 -1
- package/dist/cli/dotenv.js +36 -3
- package/dist/cli/dotenv.js.map +1 -1
- package/dist/config/agent-config.js +20 -15
- package/dist/config/agent-config.js.map +1 -1
- package/dist/http/addresses.d.ts +6 -0
- package/dist/http/addresses.js +26 -0
- package/dist/http/addresses.js.map +1 -1
- package/dist/http/context.d.ts +7 -5
- package/dist/http/context.js.map +1 -1
- package/dist/links.d.ts +26 -0
- package/dist/links.js +60 -0
- package/dist/links.js.map +1 -0
- package/dist/onboarding.d.ts +1 -1
- package/dist/onboarding.js +28 -8
- package/dist/onboarding.js.map +1 -1
- package/dist/profiles/profiles.js +1 -1
- package/dist/profiles/profiles.js.map +1 -1
- package/dist/providers/catalog.d.ts +85 -1
- package/dist/providers/catalog.js +280 -43
- package/dist/providers/catalog.js.map +1 -1
- package/dist/providers/tables.d.ts +3 -1
- package/dist/providers/tables.js +9 -4
- package/dist/providers/tables.js.map +1 -1
- package/dist/redact.js +493 -13
- package/dist/redact.js.map +1 -1
- package/dist/runtime.js +104 -42
- package/dist/runtime.js.map +1 -1
- package/dist/sessions/anchor.d.ts +22 -3
- package/dist/sessions/anchor.js +87 -42
- package/dist/sessions/anchor.js.map +1 -1
- package/dist/sessions/background-tasks.d.ts +140 -0
- package/dist/sessions/background-tasks.js +352 -0
- package/dist/sessions/background-tasks.js.map +1 -0
- package/dist/sessions/background-updates.d.ts +56 -0
- package/dist/sessions/background-updates.js +152 -0
- package/dist/sessions/background-updates.js.map +1 -0
- package/dist/sessions/cli-sessions.d.ts +6 -0
- package/dist/sessions/cli-sessions.js +20 -7
- package/dist/sessions/cli-sessions.js.map +1 -1
- package/dist/sessions/completions.d.ts +17 -1
- package/dist/sessions/completions.js +84 -13
- package/dist/sessions/completions.js.map +1 -1
- package/dist/sessions/compress.d.ts +33 -0
- package/dist/sessions/compress.js +66 -0
- package/dist/sessions/compress.js.map +1 -0
- package/dist/sessions/list.d.ts +22 -4
- package/dist/sessions/list.js +113 -33
- package/dist/sessions/list.js.map +1 -1
- package/dist/sessions/merge.d.ts +81 -7
- package/dist/sessions/merge.js +391 -26
- package/dist/sessions/merge.js.map +1 -1
- package/dist/sessions/pending.d.ts +5 -0
- package/dist/sessions/pending.js +30 -10
- package/dist/sessions/pending.js.map +1 -1
- package/dist/sessions/relay.d.ts +7 -1
- package/dist/sessions/relay.js +17 -4
- package/dist/sessions/relay.js.map +1 -1
- package/dist/sessions/service.d.ts +118 -6
- package/dist/sessions/service.js +564 -65
- package/dist/sessions/service.js.map +1 -1
- package/dist/sessions/session.d.ts +22 -1
- package/dist/sessions/session.js +29 -2
- package/dist/sessions/session.js.map +1 -1
- package/dist/sessions/shares.js +11 -2
- package/dist/sessions/shares.js.map +1 -1
- package/dist/sessions/source-kind.d.ts +22 -0
- package/dist/sessions/source-kind.js +54 -0
- package/dist/sessions/source-kind.js.map +1 -0
- package/dist/sessions/state-db.d.ts +10 -1
- package/dist/sessions/state-db.js +48 -17
- package/dist/sessions/state-db.js.map +1 -1
- package/dist/sessions/store.d.ts +2 -0
- package/dist/sessions/store.js +24 -5
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/streams.d.ts +3 -0
- package/dist/sessions/streams.js +0 -5
- package/dist/sessions/streams.js.map +1 -1
- package/dist/sessions/titles.d.ts +4 -0
- package/dist/sessions/titles.js +16 -0
- package/dist/sessions/titles.js.map +1 -1
- package/dist/sessions/turn-context.d.ts +1 -0
- package/dist/sessions/turn-context.js +3 -0
- package/dist/sessions/turn-context.js.map +1 -1
- package/dist/sessions/turn.d.ts +85 -7
- package/dist/sessions/turn.js +518 -170
- package/dist/sessions/turn.js.map +1 -1
- package/dist/settings.d.ts +2 -0
- package/dist/settings.js +13 -0
- package/dist/settings.js.map +1 -1
- package/dist/sidecar/fake.js +2 -0
- package/dist/sidecar/fake.js.map +1 -1
- package/dist/tools/commands.d.ts +15 -0
- package/dist/tools/commands.js +52 -0
- package/dist/tools/commands.js.map +1 -0
- package/dist/tools/crons.d.ts +38 -4
- package/dist/tools/crons.js +323 -36
- package/dist/tools/crons.js.map +1 -1
- package/dist/tools/mcp.js +5 -1
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/update-notifications.d.ts +1 -1
- package/dist/tools/update-notifications.js +1 -1
- package/dist/tools/update-notifications.js.map +1 -1
- package/dist/tools/updates.d.ts +8 -3
- package/dist/tools/updates.js +133 -34
- package/dist/tools/updates.js.map +1 -1
- package/dist/workspace/git.d.ts +57 -10
- package/dist/workspace/git.js +302 -195
- package/dist/workspace/git.js.map +1 -1
- package/dist/workspace/media-refs.d.ts +13 -0
- package/dist/workspace/media-refs.js +165 -0
- package/dist/workspace/media-refs.js.map +1 -0
- package/dist/workspace/media.d.ts +19 -0
- package/dist/workspace/media.js +61 -2
- package/dist/workspace/media.js.map +1 -1
- package/dist/workspace/workspaces.d.ts +7 -1
- package/dist/workspace/workspaces.js +30 -21
- package/dist/workspace/workspaces.js.map +1 -1
- package/dist/workspace/worktrees.d.ts +2 -4
- package/dist/workspace/worktrees.js +28 -33
- package/dist/workspace/worktrees.js.map +1 -1
- package/package.json +4 -2
- package/sidecar/scripts/replay_sidecar.py +3 -1
- package/sidecar/talaria_sidecar/__init__.py +1 -1
- package/sidecar/talaria_sidecar/home.py +59 -2
- package/sidecar/talaria_sidecar/methods/__init__.py +2 -2
- package/sidecar/talaria_sidecar/methods/aux.py +19 -3
- package/sidecar/talaria_sidecar/methods/chat.py +360 -27
- package/sidecar/talaria_sidecar/methods/commands.py +46 -31
- package/sidecar/talaria_sidecar/methods/config.py +14 -10
- package/sidecar/talaria_sidecar/methods/cron.py +22 -14
- package/sidecar/talaria_sidecar/methods/oauth.py +439 -0
- package/sidecar/talaria_sidecar/methods/process.py +318 -0
- package/sidecar/talaria_sidecar/methods/profiles.py +5 -4
- package/sidecar/talaria_sidecar/methods/providers.py +161 -1
- package/sidecar/talaria_sidecar/methods/runtime.py +2 -0
- package/sidecar/talaria_sidecar/methods/text.py +1 -20
- package/sidecar/talaria_sidecar/methods/usage.py +7 -1
- package/static/dist/FILES.txt +124 -119
- package/static/dist/assets/AppShell-ef3bhu32.js +1 -0
- package/static/dist/assets/Button-nx37f4u1.js +1 -0
- package/static/dist/assets/ChatPage-cdcpykcg.js +25 -0
- package/static/dist/assets/Dialog-mec42hvb.js +1 -0
- package/static/dist/assets/HubRoute-ecb65zpr.js +2 -0
- package/static/dist/assets/{Markdown-emii55o0.js → Markdown-jqrx5es0.js} +125 -125
- package/static/dist/assets/RightPanel-d1lgvk4s.js +1 -0
- package/static/dist/assets/Select-h4ivl9qf.js +1 -0
- package/static/dist/assets/SessionListPanel-ewib046b.js +1 -0
- package/static/dist/assets/SettingsLayout-lx654cup.js +1 -0
- package/static/dist/assets/States-ehsb6lzo.js +1 -0
- package/static/dist/assets/Toaster-mch1pa3t.js +1 -0
- package/static/dist/assets/_app-m8d961ef.js +1 -0
- package/static/dist/assets/_app.ext._extensionId-mp33hbzi.js +1 -0
- package/static/dist/assets/_app.index-dk6zp7e0.js +1 -0
- package/static/dist/assets/_app.insights-jt2fk4i1.js +1 -0
- package/static/dist/assets/_app.kanban-if4pubeu.js +1 -0
- package/static/dist/assets/_app.logs-mfaw9m6g.js +1 -0
- package/static/dist/assets/_app.memory-h3eaarb6.js +1 -0
- package/static/dist/assets/_app.profiles-ienktovs.js +1 -0
- package/static/dist/assets/{_app.session._sessionId-m6nx9g8t.js → _app.session._sessionId-hh27wwu2.js} +1 -1
- package/static/dist/assets/_app.settings-dpoe0bzf.js +1 -0
- package/static/dist/assets/_app.settings._section-l468ynag.js +3 -0
- package/static/dist/assets/_app.skills-kcbncc8i.js +1 -0
- package/static/dist/assets/_app.tasks-occdrqhw.js +2 -0
- package/static/dist/assets/_app.todos-nnke2rcc.js +1 -0
- package/static/dist/assets/_app.workspaces-cdlatvwj.js +1 -0
- package/static/dist/assets/{abnfDiagram-VCTEODGH-kejgxpil.js → abnfDiagram-VCTEODGH-oity9y4o.js} +1 -1
- package/static/dist/assets/architecture-7GRP2DOG-hj11333z.js +1 -0
- package/static/dist/assets/architectureDiagram-5GKGNRK7-ceaepnyr.js +36 -0
- package/static/dist/assets/back-eu64w89w.js +1 -0
- package/static/dist/assets/{blockDiagram-I7D4REHJ-l1466a7j.js → blockDiagram-I7D4REHJ-n79st4pj.js} +1 -1
- package/static/dist/assets/{c4Diagram-7LVT6UL2-gg3aq3sr.js → c4Diagram-7LVT6UL2-mi73akzk.js} +1 -1
- package/static/dist/assets/cancel-mzvkdjg8.js +1 -0
- package/static/dist/assets/channel-mbvmf2vv.js +1 -0
- package/static/dist/assets/{chunk-4HAMMTFA-oalgz5l8.js → chunk-4HAMMTFA-laat0g1q.js} +1 -1
- package/static/dist/assets/{chunk-75Z2AOVW-babmzhdg.js → chunk-75Z2AOVW-0psy1tr2.js} +1 -1
- package/static/dist/assets/{chunk-DU6HZSFF-lagu350c.js → chunk-DU6HZSFF-lw8uox8x.js} +3 -3
- package/static/dist/assets/{chunk-F27PBJKO-gjh2tqif.js → chunk-F27PBJKO-erassib3.js} +1 -1
- package/static/dist/assets/{chunk-GMAD6QVW-ipdgja5c.js → chunk-GMAD6QVW-fz7rx619.js} +1 -1
- package/static/dist/assets/{chunk-GVQU2GXP-j8wkn1at.js → chunk-GVQU2GXP-gdb0epb2.js} +1 -1
- package/static/dist/assets/{chunk-IMKFNOWR-k00laqyk.js → chunk-IMKFNOWR-ea8t26qw.js} +1 -1
- package/static/dist/assets/{chunk-L3NEJ4N5-fju6xqj4.js → chunk-L3NEJ4N5-mb1gu9kz.js} +1 -1
- package/static/dist/assets/{chunk-OSK3NFVY-bi6widqt.js → chunk-OSK3NFVY-eovmccvy.js} +1 -1
- package/static/dist/assets/{chunk-P2QGCYS3-czr4tebv.js → chunk-P2QGCYS3-bo55zjo5.js} +1 -1
- package/static/dist/assets/{chunk-POPQ4Y6H-ktdhn67w.js → chunk-POPQ4Y6H-ja7ohe4h.js} +1 -1
- package/static/dist/assets/{chunk-PWAF6VOD-ii4dsu0d.js → chunk-PWAF6VOD-e30g9nus.js} +1 -1
- package/static/dist/assets/{chunk-SHT3W25Y-fpwk3xxp.js → chunk-SHT3W25Y-gbb798f7.js} +3 -3
- package/static/dist/assets/{chunk-SVP7TREG-k0jrvhei.js → chunk-SVP7TREG-h2iw8urm.js} +1 -1
- package/static/dist/assets/{chunk-TICWLB2K-nkqv9ot0.js → chunk-TICWLB2K-fd2cottz.js} +1 -1
- package/static/dist/assets/classDiagram-ZZMXUADV-o8r05k0n.js +1 -0
- package/static/dist/assets/classDiagram-v2-VYDZK3BY-o8r05k0n.js +1 -0
- package/static/dist/assets/{copied-gpchexqu.js → copied-h65fc3cx.js} +1 -1
- package/static/dist/assets/copy-e6977uwq.js +1 -0
- package/static/dist/assets/{cynefin-OW5HDTMX-lqxt8rs3.js → cynefin-OW5HDTMX-lbltyl5j.js} +1 -1
- package/static/dist/assets/{cynefinDiagram-5FMLGOSQ-j9eqovf5.js → cynefinDiagram-5FMLGOSQ-lxhsqq4a.js} +1 -1
- package/static/dist/assets/{dagre-GXQ25YYZ-m9agobjm.js → dagre-GXQ25YYZ-gn4nnaln.js} +4 -4
- package/static/dist/assets/{diagram-S7CK7UJ4-itodc50c.js → diagram-S7CK7UJ4-pa3ij6q7.js} +3 -3
- package/static/dist/assets/{diagram-UQ7AKVKN-n1h2t4ah.js → diagram-UQ7AKVKN-zbipyz57.js} +1 -1
- package/static/dist/assets/{diagram-VSXAHHWV-lvtvm9bj.js → diagram-VSXAHHWV-d1kbpzgf.js} +1 -1
- package/static/dist/assets/{diagram-VX7I27RA-cgas58sy.js → diagram-VX7I27RA-i3ty14xl.js} +1 -1
- package/static/dist/assets/{diagram-Z3DM3KII-d0aeps1q.js → diagram-Z3DM3KII-m8xefqa7.js} +1 -1
- package/static/dist/assets/{ebnfDiagram-PWID7BFC-md345fyq.js → ebnfDiagram-PWID7BFC-nz7wj05l.js} +1 -1
- package/static/dist/assets/endpoints-k7yf25m0.js +64 -0
- package/static/dist/assets/{erDiagram-RLTQ6QDP-i4rua63b.js → erDiagram-RLTQ6QDP-fa41ib83.js} +1 -1
- package/static/dist/assets/eventmodeling-NTZA5JFV-kpbq09bx.js +1 -0
- package/static/dist/assets/flowDiagram-HODETNUW-lcz0kx14.js +1 -0
- package/static/dist/assets/{ganttDiagram-EL5Y4UJY-geqx7zgl.js → ganttDiagram-EL5Y4UJY-n7zq01qu.js} +1 -1
- package/static/dist/assets/{gitGraph-4MIJSDKK-leoq0z8t.js → gitGraph-4MIJSDKK-c89emb07.js} +1 -1
- package/static/dist/assets/{gitGraphDiagram-WWUBYQGX-llrlxfha.js → gitGraphDiagram-WWUBYQGX-cz7cgr6w.js} +1 -1
- package/static/dist/assets/{highlighted-body-KPVGNVTW-kq2cnw6q.js → highlighted-body-KPVGNVTW-d9bapmni.js} +1 -1
- package/static/dist/assets/{index-f9bzglkn.js → index-h00usru2.js} +3 -3
- package/static/dist/assets/index-n73ijkv2.css +2 -0
- package/static/dist/assets/{info-A6RAGUB7-lkly4xj6.js → info-A6RAGUB7-ndddhhhh.js} +1 -1
- package/static/dist/assets/infoDiagram-27XIBGKW-ccxigcpf.js +2 -0
- package/static/dist/assets/{ishikawaDiagram-5VMMS53U-hq6jf374.js → ishikawaDiagram-5VMMS53U-le0z9vtc.js} +1 -1
- package/static/dist/assets/{journeyDiagram-3NMN7TZE-is03ntb0.js → journeyDiagram-3NMN7TZE-ivsmb26o.js} +1 -1
- package/static/dist/assets/{kanban-definition-UXKFOSKX-jmerizqb.js → kanban-definition-UXKFOSKX-h6n2awt0.js} +1 -1
- package/static/dist/assets/lazyRouteComponent-m1rtyk4t.js +1 -0
- package/static/dist/assets/{line-laaa8h99.js → line-dmzlfe0u.js} +1 -1
- package/static/dist/assets/link-budeg5t9.js +1 -0
- package/static/dist/assets/login-kjhasvp8.js +1 -0
- package/static/dist/assets/mermaid-HWGCJPDP-jb5d211j.js +1 -0
- package/static/dist/assets/{mermaid-parser.core-ix4junux.js → mermaid-parser.core-gwyd5bnq.js} +3 -3
- package/static/dist/assets/{mindmap-definition-YA3MSWOX-o0e0adl1.js → mindmap-definition-YA3MSWOX-l68gg5h7.js} +1 -1
- package/static/dist/assets/onboarding-cdfrk0pj.js +1 -0
- package/static/dist/assets/{packet-AYTQ26CC-kl8pwsyg.js → packet-AYTQ26CC-gpv06065.js} +1 -1
- package/static/dist/assets/{pegDiagram-XKGWAZYB-bbqn9jo4.js → pegDiagram-XKGWAZYB-e52vs23u.js} +1 -1
- package/static/dist/assets/{pie-WAS4IAKB-cpyo8bkr.js → pie-WAS4IAKB-l6m7nz5s.js} +1 -1
- package/static/dist/assets/{pieDiagram-E7YTZNPT-pelug34f.js → pieDiagram-E7YTZNPT-b4is36bq.js} +3 -3
- package/static/dist/assets/{quadrantDiagram-AXDQQJYC-jds4jmr5.js → quadrantDiagram-AXDQQJYC-m8vt2788.js} +1 -1
- package/static/dist/assets/{radar-RG4KPBEZ-e02oxnvd.js → radar-RG4KPBEZ-nxbrhiov.js} +1 -1
- package/static/dist/assets/{railroad-74A4TZTK-kz3delwo.js → railroad-74A4TZTK-222mu9hi.js} +1 -1
- package/static/dist/assets/railroad-abnf-HS5TGJTU-kdvgl6x8.js +1 -0
- package/static/dist/assets/railroad-ebnf-LZEXJU2U-itiqslby.js +1 -0
- package/static/dist/assets/railroad-peg-WCYAUIDC-go7kov78.js +1 -0
- package/static/dist/assets/{railroadDiagram-O6MQD6OU-jgroj2ew.js → railroadDiagram-O6MQD6OU-o8lldfzv.js} +1 -1
- package/static/dist/assets/{refresh-cw-k7yxjdn3.js → refresh-cw-kbcje1uy.js} +1 -1
- package/static/dist/assets/{requirementDiagram-BXWQKSXE-m4az5e0j.js → requirementDiagram-BXWQKSXE-ovyq38kv.js} +1 -1
- package/static/dist/assets/{sankeyDiagram-P5KCCOFB-vlryqiv3.js → sankeyDiagram-P5KCCOFB-ou7lznor.js} +1 -1
- package/static/dist/assets/{saved-brdfjjnw.js → saved-bazmcup9.js} +1 -1
- package/static/dist/assets/search-jen74z4u.js +1 -0
- package/static/dist/assets/{sequenceDiagram-WJ2MYXX4-fr8hrpql.js → sequenceDiagram-WJ2MYXX4-ovckdzf2.js} +1 -1
- package/static/dist/assets/{settings_section_extensions_title-l0zodj0b.js → settings_section_extensions_title-ertwwhlx.js} +1 -1
- package/static/dist/assets/share._token-dan9hgvj.js +2 -0
- package/static/dist/assets/{sliders-horizontal-gcgscv8r.js → sliders-horizontal-f9cb3lh3.js} +1 -1
- package/static/dist/assets/{stateDiagram-D77RDMKH-bg548iyr.js → stateDiagram-D77RDMKH-fcrexkkv.js} +1 -1
- package/static/dist/assets/stateDiagram-v2-MP3YSRHH-lcfraua2.js +1 -0
- package/static/dist/assets/{swimlanes-42K2YHIH-hk5z3efh.js → swimlanes-42K2YHIH-f7usu8fw.js} +1 -1
- package/static/dist/assets/swimlanesDiagram-VR7AAH4N-ogmanni0.js +8 -0
- package/static/dist/assets/{timeline-definition-24CTP7MA-olvknr62.js → timeline-definition-24CTP7MA-gp1hvz9f.js} +1 -1
- package/static/dist/assets/todoStore-eqtid4r4.js +1 -0
- package/static/dist/assets/{treeView-Q6P3EWNA-ovvjsxtf.js → treeView-Q6P3EWNA-gb9gf11u.js} +1 -1
- package/static/dist/assets/{treemap-WGGIJYW6-ggkipj59.js → treemap-WGGIJYW6-nuvfnvvi.js} +1 -1
- package/static/dist/assets/{untitled-c8ydw0bu.js → untitled-htelhc68.js} +1 -1
- package/static/dist/assets/useForm-h2t0u14e.js +1 -0
- package/static/dist/assets/useLocale-hcsb84pj.js +1 -0
- package/static/dist/assets/useNavigate-nwy70ztj.js +1 -0
- package/static/dist/assets/{useParams-katwvzil.js → useParams-dqd64jv7.js} +1 -1
- package/static/dist/assets/{useSearch-c70sgau1.js → useSearch-j30pvsy7.js} +1 -1
- package/static/dist/assets/{vennDiagram-4TSXK5OY-hzld7zt7.js → vennDiagram-4TSXK5OY-fzchbzaj.js} +1 -1
- package/static/dist/assets/{wardley-WFR3VGLG-hxkeoms8.js → wardley-WFR3VGLG-m47mhfbh.js} +1 -1
- package/static/dist/assets/{wardleyDiagram-VM6X3IG4-ljh90mb1.js → wardleyDiagram-VM6X3IG4-odg6ct1z.js} +2 -2
- package/static/dist/assets/{xychartDiagram-S5SC5T6Z-mnuaes03.js → xychartDiagram-S5SC5T6Z-mrhms5um.js} +1 -1
- package/static/dist/index.html +1 -1
- package/static/dist/sw.js +1 -1
- package/static/dist/assets/AppShell-haqi9qzu.js +0 -1
- package/static/dist/assets/ChatPage-hjyu2g64.js +0 -22
- package/static/dist/assets/HubRoute-gkd8o1vg.js +0 -2
- package/static/dist/assets/RightPanel-o73y98dn.js +0 -1
- package/static/dist/assets/Select-jld3yeni.js +0 -1
- package/static/dist/assets/SessionListPanel-d3qx4ric.js +0 -1
- package/static/dist/assets/SettingsLayout-lnn2wo2s.js +0 -1
- package/static/dist/assets/States-e5hv6gdh.js +0 -1
- package/static/dist/assets/Toaster-c4jq1i26.js +0 -1
- package/static/dist/assets/_app-bnip2pjg.js +0 -1
- package/static/dist/assets/_app.ext._extensionId-egptzrfy.js +0 -1
- package/static/dist/assets/_app.index-vdz13ul5.js +0 -1
- package/static/dist/assets/_app.insights-lgjshsba.js +0 -1
- package/static/dist/assets/_app.kanban-c18cjrpz.js +0 -1
- package/static/dist/assets/_app.logs-ezhojgeg.js +0 -1
- package/static/dist/assets/_app.memory-i00paisv.js +0 -1
- package/static/dist/assets/_app.profiles-kd02bwjx.js +0 -1
- package/static/dist/assets/_app.settings-giaudkuk.js +0 -1
- package/static/dist/assets/_app.settings._section-k4qtlexk.js +0 -1
- package/static/dist/assets/_app.skills-bby2uvl8.js +0 -1
- package/static/dist/assets/_app.tasks-1kz9bosm.js +0 -2
- package/static/dist/assets/_app.todos-izjdbkm2.js +0 -1
- package/static/dist/assets/_app.workspaces-lfh2kw7s.js +0 -1
- package/static/dist/assets/architecture-7GRP2DOG-b4u9z1w3.js +0 -1
- package/static/dist/assets/architectureDiagram-5GKGNRK7-hqnf84fc.js +0 -36
- package/static/dist/assets/channel-o77ioktg.js +0 -1
- package/static/dist/assets/classDiagram-ZZMXUADV-f5rvod26.js +0 -1
- package/static/dist/assets/classDiagram-v2-VYDZK3BY-f5rvod26.js +0 -1
- package/static/dist/assets/endpoints-e58saih3.js +0 -9
- package/static/dist/assets/eventmodeling-NTZA5JFV-bn3fjsaq.js +0 -1
- package/static/dist/assets/flowDiagram-HODETNUW-li70d120.js +0 -1
- package/static/dist/assets/index-gkh7kum4.css +0 -2
- package/static/dist/assets/infoDiagram-27XIBGKW-oo7kdyte.js +0 -2
- package/static/dist/assets/lazyRouteComponent-b1h2ykmb.js +0 -1
- package/static/dist/assets/link-d8f0788e.js +0 -1
- package/static/dist/assets/login-llkohrcg.js +0 -1
- package/static/dist/assets/mermaid-HWGCJPDP-id0ffk2r.js +0 -1
- package/static/dist/assets/onboarding-lx0d6b38.js +0 -1
- package/static/dist/assets/railroad-abnf-HS5TGJTU-l13ped2z.js +0 -1
- package/static/dist/assets/railroad-ebnf-LZEXJU2U-c7rg3g4g.js +0 -1
- package/static/dist/assets/railroad-peg-WCYAUIDC-od0b8niq.js +0 -1
- package/static/dist/assets/search-gt2ueyvg.js +0 -1
- package/static/dist/assets/share._token-oyjv046r.js +0 -2
- package/static/dist/assets/stateDiagram-v2-MP3YSRHH-j5v40qih.js +0 -1
- package/static/dist/assets/swimlanesDiagram-VR7AAH4N-grzefo9c.js +0 -8
- package/static/dist/assets/tabBuild-idliyw9f.js +0 -56
- package/static/dist/assets/todoStore-j4c2xq0b.js +0 -1
- package/static/dist/assets/useForm-kd759sjk.js +0 -1
- package/static/dist/assets/useLocale-hds4xmja.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>>;
|
|
@@ -245,21 +269,26 @@ export declare const settingsRouter: {
|
|
|
245
269
|
}, import("zod/v4/core").$loose>;
|
|
246
270
|
}, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
247
271
|
auxiliary: 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<{
|
|
248
|
-
main: import("zod").
|
|
272
|
+
main: import("zod").ZodObject<{
|
|
249
273
|
model: import("zod").ZodOptional<import("zod").ZodString>;
|
|
250
274
|
provider: import("zod").ZodOptional<import("zod").ZodString>;
|
|
251
275
|
base_url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
252
276
|
api_key_set: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
253
|
-
}, import("zod/v4/core").$loose
|
|
254
|
-
tasks: import("zod").
|
|
277
|
+
}, import("zod/v4/core").$loose>;
|
|
278
|
+
tasks: import("zod").ZodArray<import("zod").ZodObject<{
|
|
255
279
|
task: import("zod").ZodString;
|
|
256
|
-
label: import("zod").
|
|
257
|
-
description: import("zod").
|
|
258
|
-
|
|
259
|
-
|
|
280
|
+
label: import("zod").ZodString;
|
|
281
|
+
description: import("zod").ZodString;
|
|
282
|
+
provider: import("zod").ZodString;
|
|
283
|
+
model: import("zod").ZodString;
|
|
260
284
|
base_url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
261
285
|
api_key_set: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
262
|
-
|
|
286
|
+
is_auto: import("zod").ZodBoolean;
|
|
287
|
+
value_label: import("zod").ZodNullable<import("zod").ZodString>;
|
|
288
|
+
provider_label: import("zod").ZodNullable<import("zod").ZodString>;
|
|
289
|
+
selected_option_id: import("zod").ZodNullable<import("zod").ZodString>;
|
|
290
|
+
in_catalog: import("zod").ZodBoolean;
|
|
291
|
+
}, import("zod/v4/core").$loose>>;
|
|
263
292
|
}, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
264
293
|
set: 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<{
|
|
265
294
|
advanced: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>>;
|
|
@@ -274,6 +303,28 @@ export declare const settingsRouter: {
|
|
|
274
303
|
ok: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
275
304
|
session: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
276
305
|
error: import("zod").ZodOptional<import("zod").ZodString>;
|
|
306
|
+
auxiliary: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
307
|
+
main: import("zod").ZodObject<{
|
|
308
|
+
model: import("zod").ZodOptional<import("zod").ZodString>;
|
|
309
|
+
provider: import("zod").ZodOptional<import("zod").ZodString>;
|
|
310
|
+
base_url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
311
|
+
api_key_set: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
312
|
+
}, import("zod/v4/core").$loose>;
|
|
313
|
+
tasks: import("zod").ZodArray<import("zod").ZodObject<{
|
|
314
|
+
task: import("zod").ZodString;
|
|
315
|
+
label: import("zod").ZodString;
|
|
316
|
+
description: import("zod").ZodString;
|
|
317
|
+
provider: import("zod").ZodString;
|
|
318
|
+
model: import("zod").ZodString;
|
|
319
|
+
base_url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
320
|
+
api_key_set: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
321
|
+
is_auto: import("zod").ZodBoolean;
|
|
322
|
+
value_label: import("zod").ZodNullable<import("zod").ZodString>;
|
|
323
|
+
provider_label: import("zod").ZodNullable<import("zod").ZodString>;
|
|
324
|
+
selected_option_id: import("zod").ZodNullable<import("zod").ZodString>;
|
|
325
|
+
in_catalog: import("zod").ZodBoolean;
|
|
326
|
+
}, import("zod/v4/core").$loose>>;
|
|
327
|
+
}, import("zod/v4/core").$loose>>;
|
|
277
328
|
}, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
278
329
|
setDefault: 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<{
|
|
279
330
|
advanced: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>>;
|
|
@@ -304,6 +355,8 @@ export declare const settingsRouter: {
|
|
|
304
355
|
id: import("zod").ZodString;
|
|
305
356
|
label: import("zod").ZodOptional<import("zod").ZodString>;
|
|
306
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>;
|
|
307
360
|
supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
308
361
|
}, import("zod/v4/core").$loose>>>;
|
|
309
362
|
models_total: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
@@ -331,12 +384,64 @@ export declare const settingsRouter: {
|
|
|
331
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<{
|
|
332
385
|
provider: import("zod").ZodOptional<import("zod").ZodString>;
|
|
333
386
|
refresh: import("zod").ZodOptional<import("zod").ZodString>;
|
|
334
|
-
}, import("zod/v4/core").$strip>, import("zod").
|
|
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>>;
|
|
335
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<{
|
|
336
440
|
source: import("zod").ZodOptional<import("zod").ZodString>;
|
|
337
441
|
refresh: import("zod").ZodOptional<import("zod").ZodString>;
|
|
338
442
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
339
443
|
version: import("zod").ZodNumber;
|
|
444
|
+
computed_at: import("zod").ZodString;
|
|
340
445
|
scope_id: import("zod").ZodString;
|
|
341
446
|
profile_id: import("zod").ZodString;
|
|
342
447
|
active_provider: import("zod").ZodNullable<import("zod").ZodString>;
|
|
@@ -352,13 +457,44 @@ export declare const settingsRouter: {
|
|
|
352
457
|
message: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
353
458
|
is_active_provider: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
354
459
|
quota: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
355
|
-
windows: import("zod").ZodOptional<import("zod").
|
|
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>>>;
|
|
356
489
|
balances: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
357
490
|
plan: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
358
491
|
details: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
359
492
|
unavailable_reason: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
360
493
|
retry_after: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
361
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>>;
|
|
362
498
|
}, import("zod/v4/core").$loose>>;
|
|
363
499
|
}, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
364
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<{
|
|
@@ -431,6 +567,10 @@ export declare const settingsRouter: {
|
|
|
431
567
|
base_url: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
432
568
|
models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnknown>>;
|
|
433
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>;
|
|
434
574
|
}, import("zod/v4/core").$loose>>>;
|
|
435
575
|
categories: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnknown>>;
|
|
436
576
|
current: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
@@ -457,7 +597,7 @@ export declare const settingsRouter: {
|
|
|
457
597
|
}, import("zod/v4/core").$loose>>;
|
|
458
598
|
workspaces: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
459
599
|
items: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
460
|
-
name: import("zod").
|
|
600
|
+
name: import("zod").ZodString;
|
|
461
601
|
path: import("zod").ZodString;
|
|
462
602
|
}, import("zod/v4/core").$loose>>>;
|
|
463
603
|
last: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
@@ -465,6 +605,9 @@ export declare const settingsRouter: {
|
|
|
465
605
|
models: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
466
606
|
active_provider: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
467
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>>;
|
|
468
611
|
groups: import("zod").ZodArray<import("zod").ZodObject<{
|
|
469
612
|
provider: import("zod").ZodString;
|
|
470
613
|
provider_id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
@@ -472,12 +615,16 @@ export declare const settingsRouter: {
|
|
|
472
615
|
id: import("zod").ZodString;
|
|
473
616
|
label: import("zod").ZodOptional<import("zod").ZodString>;
|
|
474
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>;
|
|
475
620
|
supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
476
621
|
}, import("zod/v4/core").$loose>>;
|
|
477
622
|
extra_models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
478
623
|
id: import("zod").ZodString;
|
|
479
624
|
label: import("zod").ZodOptional<import("zod").ZodString>;
|
|
480
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>;
|
|
481
628
|
supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
482
629
|
}, import("zod/v4/core").$loose>>>;
|
|
483
630
|
}, import("zod/v4/core").$loose>>;
|
|
@@ -509,6 +656,10 @@ export declare const settingsRouter: {
|
|
|
509
656
|
base_url: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
510
657
|
models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnknown>>;
|
|
511
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>;
|
|
512
663
|
}, import("zod/v4/core").$loose>>>;
|
|
513
664
|
categories: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnknown>>;
|
|
514
665
|
current: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
@@ -535,7 +686,7 @@ export declare const settingsRouter: {
|
|
|
535
686
|
}, import("zod/v4/core").$loose>>;
|
|
536
687
|
workspaces: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
537
688
|
items: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
538
|
-
name: import("zod").
|
|
689
|
+
name: import("zod").ZodString;
|
|
539
690
|
path: import("zod").ZodString;
|
|
540
691
|
}, import("zod/v4/core").$loose>>>;
|
|
541
692
|
last: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
@@ -543,6 +694,9 @@ export declare const settingsRouter: {
|
|
|
543
694
|
models: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
544
695
|
active_provider: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
545
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>>;
|
|
546
700
|
groups: import("zod").ZodArray<import("zod").ZodObject<{
|
|
547
701
|
provider: import("zod").ZodString;
|
|
548
702
|
provider_id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
@@ -550,12 +704,16 @@ export declare const settingsRouter: {
|
|
|
550
704
|
id: import("zod").ZodString;
|
|
551
705
|
label: import("zod").ZodOptional<import("zod").ZodString>;
|
|
552
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>;
|
|
553
709
|
supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
554
710
|
}, import("zod/v4/core").$loose>>;
|
|
555
711
|
extra_models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
556
712
|
id: import("zod").ZodString;
|
|
557
713
|
label: import("zod").ZodOptional<import("zod").ZodString>;
|
|
558
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>;
|
|
559
717
|
supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
560
718
|
}, import("zod/v4/core").$loose>>>;
|
|
561
719
|
}, import("zod/v4/core").$loose>>;
|
|
@@ -574,25 +732,35 @@ export declare const settingsRouter: {
|
|
|
574
732
|
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
575
733
|
models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnknown>>;
|
|
576
734
|
}, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
577
|
-
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").
|
|
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<{
|
|
578
738
|
ok: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
579
739
|
status: import("zod").ZodOptional<import("zod").ZodString>;
|
|
580
740
|
url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
581
741
|
verification_url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
582
742
|
user_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
583
743
|
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
584
|
-
error: import("zod").ZodOptional<import("zod").ZodString
|
|
744
|
+
error: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
585
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>;
|
|
586
749
|
}, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
587
|
-
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").
|
|
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<{
|
|
588
753
|
ok: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
589
754
|
status: import("zod").ZodOptional<import("zod").ZodString>;
|
|
590
755
|
url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
591
756
|
verification_url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
592
757
|
user_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
593
758
|
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
594
|
-
error: import("zod").ZodOptional<import("zod").ZodString
|
|
759
|
+
error: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
595
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>;
|
|
596
764
|
}, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
597
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<{
|
|
598
766
|
flow_id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
@@ -603,8 +771,11 @@ export declare const settingsRouter: {
|
|
|
603
771
|
verification_url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
604
772
|
user_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
605
773
|
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
606
|
-
error: import("zod").ZodOptional<import("zod").ZodString
|
|
774
|
+
error: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
607
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>;
|
|
608
779
|
}, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
609
780
|
};
|
|
610
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 {
|
|
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
|
-
import { canonicaliseProviderId, ConfigUnavailable, maxTokensStatus, personalityPrompt, personalityRows, reasoningStatus, setAuxiliaryModel, setDefaultModel, setMaxTokens, validReasoningEffort } from '../config/agent-config.js';
|
|
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
|
-
import { displayName, providerEnvVar } from '../providers/catalog.js';
|
|
19
|
-
import { OAUTH_PROVIDERS } from '../providers/tables.js';
|
|
20
|
-
import { SETTINGS_SPEECH_KEYS, pyBool } from '../settings.js';
|
|
18
|
+
import { displayName, providerEnvVar, stampAuxiliarySelections } from '../providers/catalog.js';
|
|
19
|
+
import { OAUTH_PROVIDERS, SUPPORTED_PROVIDER_SETUPS } from '../providers/tables.js';
|
|
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)
|
|
@@ -43,14 +44,11 @@ async function run(fn) {
|
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
const home = (ctx) => ctx.deps.profileHome(activeProfileName(ctx));
|
|
47
|
+
/** The active profile's auxiliary slots, stamped against the same catalog `/api/models` answers. */
|
|
48
|
+
const auxiliaryState = async (ctx) => stampAuxiliarySelections(auxiliaryModels(await ctx.deps.agentConfig.read(home(ctx))), await ctx.deps.catalog.models(home(ctx)));
|
|
46
49
|
const truthy = (v) => ['1', 'true', 'yes', 'on'].includes((v ?? '').trim().toLowerCase());
|
|
47
|
-
/** Python `addr.is_loopback or addr.is_private
|
|
48
|
-
|
|
49
|
-
const ip = addr.trim();
|
|
50
|
-
if (!isIP(ip))
|
|
51
|
-
return false;
|
|
52
|
-
return isLoopback(ip) || isNonGlobalAddress(ip);
|
|
53
|
-
}
|
|
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);
|
|
54
52
|
/** Python `_onboarding_request_is_local`: forwarded headers count only behind a trusted proxy with the opt-in. */
|
|
55
53
|
export function onboardingRequestIsLocal(ctx) {
|
|
56
54
|
const env = ctx.deps.config.env;
|
|
@@ -120,8 +118,11 @@ async function saveSettings(ctx, input) {
|
|
|
120
118
|
const body = { ...input };
|
|
121
119
|
if (['auto_apply_updates', 'update_channel', 'agent_update_channel', 'check_for_updates'].some((key) => key in body) && !(await canManageServer(ctx)))
|
|
122
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');
|
|
123
124
|
if ('bot_name' in body)
|
|
124
|
-
body.bot_name =
|
|
125
|
+
body.bot_name = displayBotName(body.bot_name);
|
|
125
126
|
const authEnabledBefore = await auth.isAuthEnabled();
|
|
126
127
|
const passwordAuthBefore = authEnabledBefore && (await auth.getPasswordHash()) !== null;
|
|
127
128
|
const cookie = ctx.authCookie();
|
|
@@ -203,11 +204,37 @@ const effortsResolver = (ctx) => async (model, provider) => {
|
|
|
203
204
|
return [];
|
|
204
205
|
}
|
|
205
206
|
};
|
|
206
|
-
const
|
|
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
|
+
}
|
|
207
233
|
export const settingsRouter = os.router({
|
|
208
234
|
settings: {
|
|
209
235
|
get: os.settings.get.handler(({ context: { ctx } }) => run(() => settingsPayload(ctx))),
|
|
210
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()))),
|
|
211
238
|
},
|
|
212
239
|
profiles: {
|
|
213
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() }))),
|
|
@@ -284,17 +311,19 @@ export const settingsRouter = os.router({
|
|
|
284
311
|
ctx.deps.agentConfig.invalidate(home(ctx));
|
|
285
312
|
return { ok: true, provider, models: await ctx.deps.catalog.models(home(ctx)) };
|
|
286
313
|
})),
|
|
287
|
-
auxiliary: os.models.auxiliary.handler(({ context: { ctx } }) => run(
|
|
288
|
-
const { auxiliaryModels } = await import('../config/agent-config.js');
|
|
289
|
-
return auxiliaryModels(await ctx.deps.agentConfig.read(home(ctx)));
|
|
290
|
-
})),
|
|
314
|
+
auxiliary: os.models.auxiliary.handler(({ context: { ctx } }) => run(() => auxiliaryState(ctx))),
|
|
291
315
|
set: os.models.set.handler(({ input, context: { ctx } }) => run(async () => {
|
|
292
316
|
const scope = str(input.scope).trim();
|
|
293
317
|
const provider = str(input.provider).trim() || 'auto';
|
|
294
318
|
const model = str(input.model).trim();
|
|
295
319
|
try {
|
|
296
|
-
if (scope === 'auxiliary')
|
|
297
|
-
|
|
320
|
+
if (scope === 'auxiliary') {
|
|
321
|
+
const saved = await setAuxiliaryModel(ctx.deps.agentConfig, home(ctx), str(input.task).trim(), provider, model, input.advanced);
|
|
322
|
+
ctx.deps.catalog.invalidate();
|
|
323
|
+
// The write is saved; a catalog failure only drops the refreshed state, and clients then reread it.
|
|
324
|
+
const auxiliary = await auxiliaryState(ctx).catch(() => undefined);
|
|
325
|
+
return { ...saved, ...(auxiliary ? { auxiliary: auxiliary } : {}) };
|
|
326
|
+
}
|
|
298
327
|
if (scope === 'main')
|
|
299
328
|
return await setDefaultModel(ctx.deps.agentConfig, home(ctx), model, provider === 'auto' ? null : provider, input.advanced);
|
|
300
329
|
}
|
|
@@ -442,13 +471,33 @@ export const settingsRouter = os.router({
|
|
|
442
471
|
throw new HttpError(500, `probe failed: ${str(error.message)}`);
|
|
443
472
|
}
|
|
444
473
|
})),
|
|
445
|
-
oauthStart: os.onboarding.oauthStart.handler(({ context: { ctx } }) => run(async () => {
|
|
474
|
+
oauthStart: os.onboarding.oauthStart.handler(({ input, context: { ctx } }) => run(async () => {
|
|
446
475
|
if (!(await onboardingGateAllows(ctx)))
|
|
447
|
-
throw new HttpError(403,
|
|
448
|
-
|
|
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 () => {
|
|
493
|
+
if (!(await onboardingGateAllows(ctx)))
|
|
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);
|
|
449
500
|
})),
|
|
450
|
-
oauthCancel: os.onboarding.oauthCancel.handler(() => run(() => { throw new HttpError(501, OAUTH_UNAVAILABLE); })),
|
|
451
|
-
oauthPoll: os.onboarding.oauthPoll.handler(() => run(() => { throw new HttpError(501, OAUTH_UNAVAILABLE); })),
|
|
452
501
|
},
|
|
453
502
|
});
|
|
454
503
|
/** Python `set_provider_key`: `.env` write; `null` removes the key. */
|