import { Web } from "@webcompute/sdk";
const filingsSchema = {
type: "object",
additionalProperties: false,
required: ["company", "filings"],
properties: {
company: { type: "string" },
filings: {
type: "array",
items: {
type: "object",
additionalProperties: false,
required: ["form", "filingDate", "accessionNumber", "url", "summary"],
properties: {
form: { type: "string" },
filingDate: { type: "string" },
accessionNumber: { type: "string" },
url: { type: "string" },
summary: { type: "string" },
},
},
},
},
} as const;
const web = new Web();
const agent = web.agent({
model: {
route: "openrouter",
model: "openai/gpt-5.4-mini",
apiKeyEnv: "OPENROUTER_API_KEY",
},
browser: { policy: { allowedDomains: ["sec.gov"] } },
outputSchema: filingsSchema,
});
const result = await agent.run({
startUrl: "https://www.sec.gov/edgar/search/",
goal: "Find Apple's latest 10-Q filings.",
});
if (result.status !== "completed" || !result.output) {
throw new Error(result.error?.message ?? "Agent did not return valid filings.");
}
console.log(result.output);
console.log(result.schema?.validationStatus);