// Both the SDK host and an existing TUI extension use official model APIs.
export async function sessionSettings(sessionId: string, current: () => any, registry: any,
  idle: () => boolean, setModel: (model: any) => Promise<any>, requested?: string) {
  const available = registry.getAvailable();
  if (requested !== undefined) {
    if (!idle()) throw Object.assign(new Error('session busy'), {status: 409});
    const model = available.find((m: any) => `${m.provider}/${m.id}` === requested);
    if (!model) throw new Error('model is not available');
    const result = await setModel(model);
    if (result === false) throw new Error('model update rejected');
  }
  const model = current();
  return {agent: 'pi', session_id: sessionId, model: model ? `${model.provider}/${model.id}` : null,
    effort: null, available_efforts: [], available_models: available.map((m: any) => ({
      id: `${m.provider}/${m.id}`, name: m.name || m.id, available_efforts: [], default_effort: null,
    }))};
}
