pr_01m47d24b0e6n91zwymwxg0vpx/packages/contracts/src/runner.ts

34 lines1,261 bytesCodeBlame
1import type { User, Viewer } from "./identity";
2import type { Result } from "./result";
3import type { Attempt } from "./work";
4
5/** A model a g1t agent can run on, as offered to the person starting it. */
6export type AgentModel = {
7 /** Stable name used in requests, e.g. `balanced`. */
8 id: string;
9 label: string;
10 description: string;
11 /** The model behind it, by its public name, e.g. `Claude Sonnet 5.5`. */
12 modelName: string;
13};
14
15export type RunHostedInput = {
16 /** How many agents to race on the intent, each in its own sandbox. */
17 count: number;
18 /** Extra guidance appended to the intent's brief for these runs. */
19 instructions?: string;
20 /** One of the offered model ids; the first offered when absent. */
21 model?: string;
22};
23
24/** Hosted agents: sandboxes on g1t that work on an intent. */
25export interface RunnerApi {
26 /** The models this viewer may run g1t agents on; empty if they may not. */
27 models(viewer: Viewer): Promise<AgentModel[]>;
28 /**
29 * Starts `count` attempts on the intent, each run by an agent in its own
30 * sandbox. Returns as soon as the sandboxes are starting; progress shows
31 * up in each attempt's session.
32 */
33 run(actor: User, intentId: string, input: RunHostedInput): Promise<Result<Attempt[]>>;
34}