2026-08-31 20:00:12 +03:00
|
|
|
/**
|
|
|
|
|
* THE COMPOSITION ROOT for storage — the single place concrete store
|
|
|
|
|
* adapters are wired. Everything else (core, services, agents) codes against
|
|
|
|
|
* the port types in core/ports.ts and receives instances through this
|
|
|
|
|
* module. Swapping the fs adapter for SQLite later changes exactly this
|
|
|
|
|
* file (and the adapter implementations in src/store/).
|
|
|
|
|
*/
|
|
|
|
|
|
2026-09-19 18:05:30 +03:00
|
|
|
import { MODELS } from "../../config.ts";
|
2026-08-31 20:00:12 +03:00
|
|
|
import { chatStore } from "../store/chats.ts";
|
|
|
|
|
import { graphStore } from "../store/graph.ts";
|
|
|
|
|
import { jobStore } from "../store/jobs.ts";
|
2026-09-19 18:05:30 +03:00
|
|
|
import { settingsStore } from "../store/settings.ts";
|
|
|
|
|
import { resolveSettings, type EffectiveSettings, type ModelRoleSpecs } from "../core/settings-resolution.ts";
|
2026-08-31 20:00:12 +03:00
|
|
|
/** The wired adapters. Satisfies core/graph.ts's GraphDeps structurally. */
|
|
|
|
|
export const stores = {
|
|
|
|
|
chatStore,
|
|
|
|
|
graphStore,
|
|
|
|
|
jobStore,
|
2026-09-19 18:05:30 +03:00
|
|
|
settingsStore,
|
2026-08-31 20:00:12 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type Stores = typeof stores;
|
2026-09-19 18:05:30 +03:00
|
|
|
|
|
|
|
|
/** config.ts's MODELS narrowed to the background roles — the compiled
|
|
|
|
|
* factory layer the resolution reads. core stays pure (it takes this as a
|
|
|
|
|
* parameter, never imports config at runtime); the prober/teacher pins
|
|
|
|
|
* are chat-settings-controlled and deliberately absent here. Tests pin
|
|
|
|
|
* that the role set matches core's BACKGROUND_MODEL_ROLES. */
|
|
|
|
|
const BACKGROUND_MODEL_PINS: ModelRoleSpecs = {
|
|
|
|
|
researcher: MODELS.researcher,
|
|
|
|
|
demoBuilder: MODELS.demoBuilder,
|
|
|
|
|
visualMaker: MODELS.visualMaker,
|
|
|
|
|
extractor: MODELS.extractor,
|
|
|
|
|
auditor: MODELS.auditor,
|
|
|
|
|
labeler: MODELS.labeler,
|
|
|
|
|
};
|
2026-09-19 22:28:11 +03:00
|
|
|
export { BACKGROUND_MODEL_PINS };
|
2026-09-19 18:05:30 +03:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The resolved view of the settings record (core/settings-resolution.ts):
|
|
|
|
|
* every knob concrete, record overrides over config.ts factory pins. Read
|
|
|
|
|
* fresh on every call — the record is a small file and turns are rare, so
|
|
|
|
|
* no caching layer (stale toggles after a settings PUT would be worse).
|
|
|
|
|
*/
|
|
|
|
|
export function effectiveSettings(): EffectiveSettings {
|
|
|
|
|
return resolveSettings(settingsStore.readSettings(), BACKGROUND_MODEL_PINS);
|
|
|
|
|
}
|