Mario Zechner
f63095cfff
feat(ai): add Models runtime with provider-owned auth (phase 1)
...
New Models/MutableModels/createModels collection: provider map, async
model listing (best-effort aggregation), getAuth decision tree with
double-checked locked OAuth refresh, stream/complete with per-field
auth merge over lazyStream.
Auth substrate: ProviderAuth { apiKey?, oauth? }, one type-tagged
credential per provider, CredentialStore (read/modify/delete; modify
is the only write path, serialized RMW), OAuthAuth login/refresh/toAuth
split, prompt()/notify() login callbacks, browser-safe default
AuthContext.
types.ts: Provider alias renamed to ProviderId; ApiOptionsMap and
ApiStreamOptions<TApi> for typed per-API stream options; hasApi()
runtime narrowing guard.
2026-06-10 18:49:10 +02:00
..
2025-08-30 18:37:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-28 21:51:55 +02:00
2026-05-28 21:51:55 +02:00
2026-05-20 12:46:17 +02:00
2026-05-28 12:04:33 +02:00
2026-05-28 21:51:55 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-28 21:51:55 +02:00
2026-05-20 12:46:17 +02:00
2026-05-31 16:20:22 +08:00
2026-05-28 21:51:55 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-01-24 12:04:34 +01:00
2026-06-01 18:04:04 +02:00
2026-05-29 10:21:44 +02:00
2026-05-28 21:51:55 +02:00
2026-05-20 12:46:17 +02:00
2026-05-28 21:51:55 +02:00
2026-01-13 00:32:59 +01:00
2026-05-20 12:37:58 +02:00
2026-05-01 00:56:05 +02:00
2026-05-20 12:46:17 +02:00
2026-06-02 11:37:32 +02:00
2026-05-20 12:46:17 +02:00
2026-06-02 11:37:32 +02:00
2026-06-02 23:39:56 +08:00
2026-05-20 12:46:17 +02:00
2026-05-28 21:51:55 +02:00
2026-05-20 12:46:17 +02:00
2026-06-02 23:15:46 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-06-02 11:37:32 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-06-10 18:49:10 +02:00
2026-05-20 12:46:17 +02:00
2026-05-28 11:09:33 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-28 11:09:33 +02:00
2026-05-29 23:20:18 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-28 21:51:55 +02:00
2026-05-26 23:41:58 +02:00
2026-05-20 12:46:17 +02:00
2026-06-02 16:37:44 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-28 23:13:15 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-26 08:58:21 +02:00
2026-05-20 12:46:17 +02:00
2026-06-10 18:49:10 +02:00
2026-06-02 16:37:44 +02:00
2026-05-29 12:21:37 +02:00
2026-05-20 12:46:17 +02:00
2026-06-02 11:37:32 +02:00
2026-05-20 12:46:17 +02:00
2026-06-02 11:37:32 +02:00
2026-06-02 11:37:32 +02:00
2026-05-20 12:46:17 +02:00
2026-06-02 11:37:32 +02:00
2026-05-20 12:46:17 +02:00
2026-05-20 12:46:17 +02:00
2026-05-28 22:19:47 +02:00
2026-05-28 12:04:33 +02:00
2026-05-20 12:46:17 +02:00