Refactor to Store-based architecture

- Create base Store class with private backend and protected getBackend()
- Add SettingsStore, ProviderKeysStore, SessionsStore
- Each store defines its own schema via getConfig()
- AppStorage now takes stores + backend in constructor
- Remove SessionsRepository (logic moved to SessionsStore)
- Update all consumers to use store API (storage.settings.get/set, storage.providerKeys.get/set)
- Update example app to follow new pattern: create stores, gather configs, create backend, wire
- Benefits: stores own their schema, no circular deps, cleaner separation
This commit is contained in:
Mario Zechner 2025-10-08 16:41:02 +02:00
parent bbbc232c7c
commit 0de89a750e
13 changed files with 243 additions and 126 deletions

View file

@ -9,14 +9,14 @@ import type { AgentRunConfig, AgentTransport } from "./types.js";
export class ProviderTransport implements AgentTransport {
async *run(messages: Message[], userMessage: Message, cfg: AgentRunConfig, signal?: AbortSignal) {
// Get API key from storage
const apiKey = await getAppStorage().getProviderKey(cfg.model.provider);
const apiKey = await getAppStorage().providerKeys.get(cfg.model.provider);
if (!apiKey) {
throw new Error("no-api-key");
}
// Check if CORS proxy is enabled
const proxyEnabled = await getAppStorage().getSetting<boolean>("proxy.enabled");
const proxyUrl = await getAppStorage().getSetting<string>("proxy.url");
const proxyEnabled = await getAppStorage().settings.get<boolean>("proxy.enabled");
const proxyUrl = await getAppStorage().settings.get<string>("proxy.url");
// Clone model and modify baseUrl if proxy is enabled
let model = cfg.model;