import type { ProviderOptionDescriptor, RuntimeMode } from "@t3tools/contracts";/** * Desktop-oriented effort keywords that don't belong in the phone picker. * Prompt-injected values (ultrathink and friends) are filtered from the * descriptor metadata; ultracode is a real option but a workflow trigger, not * a reasoning level. A value set elsewhere still displays, it just isn't * offered. */const HIDDEN_EFFORT_OPTION_IDS: ReadonlySet<string> = new Set(["ultracode"]);export const RUNTIME_MODE_CHOICES: ReadonlyArray<{ readonly mode: RuntimeMode; readonly label: string; readonly description: string;}> = [ { mode: "approval-required", label: "Supervised", description: "Ask before commands and file changes.", }, { mode: "auto-accept-edits", label: "Auto-accept edits", description: "Auto-approve edits, ask before other actions.", }, { mode: "auto", label: "Auto", description: "Supported providers approve routine actions; others still ask.", }, { mode: "full-access", label: "Full access", description: "Allow commands and edits without prompts.", },];export function selectableChoices( descriptor: Extract<ProviderOptionDescriptor, { type: "select" }>,) { const injected = new Set(descriptor.promptInjectedValues ?? []); return descriptor.options.filter( (option) => !injected.has(option.id) && !HIDDEN_EFFORT_OPTION_IDS.has(option.id), );}
import type { ProviderOptionDescriptor, RuntimeMode } from "@t3tools/contracts";
/**
* Desktop-oriented effort keywords that don't belong in the phone picker.
* Prompt-injected values (ultrathink and friends) are filtered from the
* descriptor metadata; ultracode is a real option but a workflow trigger, not
* a reasoning level. A value set elsewhere still displays, it just isn't
* offered.
*/
const HIDDEN_EFFORT_OPTION_IDS: ReadonlySet<string> = new Set(["ultracode"]);
export const RUNTIME_MODE_CHOICES: ReadonlyArray<{
readonly mode: RuntimeMode;
readonly label: string;
readonly description: string;
}> = [
{
mode: "approval-required",
label: "Supervised",
description: "Ask before commands and file changes.",
},
{
mode: "auto-accept-edits",
label: "Auto-accept edits",
description: "Auto-approve edits, ask before other actions.",
},
{
mode: "auto",
label: "Auto",
description: "Supported providers approve routine actions; others still ask.",
},
{
mode: "full-access",
label: "Full access",
description: "Allow commands and edits without prompts.",
},
];
export function selectableChoices(
descriptor: Extract<ProviderOptionDescriptor, { type: "select" }>,
) {
const injected = new Set(descriptor.promptInjectedValues ?? []);
return descriptor.options.filter(
(option) => !injected.has(option.id) && !HIDDEN_EFFORT_OPTION_IDS.has(option.id),
);
}