murashit_codex-panel/src/runtime/shared-app-server-state.ts
2026-05-26 09:29:25 +09:00

54 lines
1.7 KiB
TypeScript

import type { AppServerDiagnostics } from "../app-server/compatibility";
import { createAppServerDiagnostics } from "../app-server/compatibility";
import type { ConfigReadResponse } from "../generated/app-server/v2/ConfigReadResponse";
import type { Model } from "../generated/app-server/v2/Model";
import type { RateLimitSnapshot } from "../generated/app-server/v2/RateLimitSnapshot";
import type { SkillMetadata } from "../generated/app-server/v2/SkillMetadata";
import type { Thread } from "../generated/app-server/v2/Thread";
export interface SharedSessionMetadata {
effectiveConfig: ConfigReadResponse | null;
availableModels: Model[];
availableSkills: SkillMetadata[];
rateLimit: RateLimitSnapshot | null;
appServerDiagnostics: AppServerDiagnostics;
}
export interface SharedAppServerState extends SharedSessionMetadata {
threads: Thread[] | null;
sessionMetadataLoaded: boolean;
}
export function createSharedAppServerState(): SharedAppServerState {
return {
threads: null,
sessionMetadataLoaded: false,
effectiveConfig: null,
availableModels: [],
availableSkills: [],
rateLimit: null,
appServerDiagnostics: createAppServerDiagnostics(),
};
}
export function applySharedThreadList(state: SharedAppServerState, threads: Thread[]): SharedAppServerState {
return {
...state,
threads,
};
}
export function applySharedSessionMetadata(state: SharedAppServerState, metadata: SharedSessionMetadata): SharedAppServerState {
return {
...state,
...metadata,
sessionMetadataLoaded: true,
};
}
export function applySharedModels(state: SharedAppServerState, models: Model[]): SharedAppServerState {
return {
...state,
availableModels: models,
};
}