diff --git a/examples/folio/sanderling/spec-llm.ts b/examples/folio/sanderling/spec-llm.ts new file mode 100644 index 0000000..e5f33de --- /dev/null +++ b/examples/folio/sanderling/spec-llm.ts @@ -0,0 +1,18 @@ +// LLM action-backend variant of spec.ts. +// +// The properties and the login `setup` are reused verbatim; only the action +// generator changes. Instead of the seeded fuzzer drawing a random candidate, +// `llm({ model })` hands selection to an OpenRouter vision model: each step it +// sees the screenshot plus the candidate list the system already enumerates and +// returns which candidate to act on. The candidate set, the typed input values, +// action execution, and the trace are all identical to the seeded run. +// +// Requirements: +// - OPENROUTER_API_KEY in the environment. +// - A model that supports image input AND strict json_schema structured +// outputs (e.g. "openai/gpt-4o"). A model lacking either fails clearly. +import { llm } from "@sanderling/spec"; + +export { properties, setup } from "./spec"; + +export const actionsRoot = llm({ model: "openai/gpt-4o" });