All files / kernel-agents/src/types agent.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

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>];