Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | import type { Logger } from '@metamask/logger';
import type { Message, MessageTypeBase } from './messages.ts';
import type { Context, Experience, Objective } from './task.ts';
export type Agent = {
task: <Result>(
intent: string,
judgment?: (result: unknown) => result is Result,
options?: { invocationBudget?: number; logger?: Logger },
) => Promise<Result>;
get experiences(): AsyncIterable<Experience>;
};
export type SampleCollector<Result = unknown> = (
delta: string,
) => Result | null;
export type Prompter<State extends Message<MessageTypeBase>[]> = (
state: State,
) => {
prompt: string;
readerArgs?: Record<string, unknown>;
};
export type Reader<Action extends Message<MessageTypeBase>> = (args: {
// This can be threaded with the stream type from the language model.
stream: AsyncIterable<{ response: string }>;
abort: () => Promise<void>;
}) => Promise<Action>;
export type Evaluator<
State extends Message<MessageTypeBase>[],
Action extends Message<MessageTypeBase>,
Observation extends Message<MessageTypeBase>,
> = (state: State, action: Action) => Promise<Observation | null>;
export type Printer<
Action extends Message<MessageTypeBase>,
Observation extends Message<MessageTypeBase>,
> = (action: Action, observation: Observation | null) => void;
export type PREP<
State extends Message<MessageTypeBase>[],
Action extends Message<MessageTypeBase>,
Observation extends Message<MessageTypeBase>,
> = [
Prompter<State>,
Reader<Action>,
Evaluator<State, Action, Observation>,
Printer<Action, Observation>,
];
export type Progress<Result, History extends Message<MessageTypeBase>[]> = {
history: History;
isDone: () => boolean;
result?: Result;
};
export type PrepareAttempt<
// The agent's environment.
State extends Message<MessageTypeBase>[],
Action extends Message<MessageTypeBase>,
Observation extends Message<MessageTypeBase>,
// The user's expectation.
> = <Result>(args: {
objective: Objective<Result>;
context: Context;
options?: {
taskLogger?: Logger;
printLogger?: Logger;
};
}) => [PREP<State, Action, Observation>, Progress<Result, State>];
|