diff --git a/packages/core/src/agent/agent.ts b/packages/core/src/agent/agent.ts index 1996bb78..c4f933c0 100644 --- a/packages/core/src/agent/agent.ts +++ b/packages/core/src/agent/agent.ts @@ -22,104 +22,21 @@ import type { ToolCallContext, } from "../tool/tool"; import { ToolSet } from "../tool/tool-set"; -import type { VectorFilter, VectorSearchIndex, VectorSearchResult } from "../vector-store"; +import type { VectorSearchIndex } from "../vector-store"; import type { PromptHook } from "./hooks"; import { normalizeAgentId } from "./ids"; import { PromptRequest } from "./request"; +import type { + AgentEventStoreRegistration, + AgentOptions, + AgentToolOptions, + DynamicContextRegistration, + DynamicToolRegistration, +} from "./types"; import { isStreamingCompletionModel } from "./utils"; -export type AgentOptions = { - id: string; - name?: string | undefined; - description?: string | undefined; - model: M; - instructions?: string | undefined; - staticContext?: Document[]; - temperature?: number | undefined; - maxTokens?: number | undefined; - additionalParams?: JsonValue | undefined; - toolSet?: ToolSet | undefined; - toolChoice?: ToolChoice | undefined; - defaultMaxTurns?: number | undefined; - hook?: PromptHook | undefined; - outputSchema?: JsonObject | undefined; - observers?: AgentObserverRegistration[] | undefined; - approvals?: ToolApprovalsOptions | undefined; - dynamicContexts?: DynamicContextRegistration[] | undefined; - dynamicTools?: DynamicToolRegistration[] | undefined; - middlewares?: AgentMiddleware[] | undefined; - /** - * @deprecated Use `middlewares` instead. - */ - toolMiddlewares?: AgentMiddleware[] | undefined; - memory?: MemoryRegistration | undefined; - eventStore?: AgentEventStoreRegistration | undefined; -}; - export const DEFAULT_MAX_TURNS = 20; -export type AgentToolOptions = { - name: string; - description?: string | undefined; - maxTurns?: number | undefined; - stream?: boolean | undefined; -}; - -export type AgentEventStoreInclude = "all" | "agent_tool_events"; - -export type AgentEventStoreOptions = { - include?: AgentEventStoreInclude | undefined; -}; - -export type AgentEventAppendInput = { - runId: string; - agentId: string; - agentName?: string | undefined; - turn?: number | undefined; - toolName?: string | undefined; - toolCallId?: string | undefined; - internalCallId?: string | undefined; - event: unknown; -}; - -export type AgentEventRecord = AgentEventAppendInput & { - createdAt?: Date | undefined; -}; - -export interface AgentEventStore { - append(input: AgentEventAppendInput): Promise; - load(runId: string): Promise; - clear?(runId: string): Promise; -} - -export type AgentEventStoreRegistration = { - store: AgentEventStore; - options: Required; -}; - -export type DynamicContextOptions = { - topK: number; - threshold?: number | undefined; - filter?: VectorFilter | undefined; - format?: ((result: VectorSearchResult) => Document) | undefined; -}; - -export type DynamicContextRegistration = { - index: VectorSearchIndex; - options: DynamicContextOptions; -}; - -export type DynamicToolOptions = { - topK: number; - threshold?: number | undefined; - filter?: VectorFilter | undefined; -}; - -export type DynamicToolRegistration = { - index: VectorSearchIndex; - options: DynamicToolOptions; -}; - export class Agent { readonly id: string; readonly name: string | undefined; diff --git a/packages/core/src/agent/builder.ts b/packages/core/src/agent/builder.ts index c771a2bf..ca17ab28 100644 --- a/packages/core/src/agent/builder.ts +++ b/packages/core/src/agent/builder.ts @@ -14,18 +14,18 @@ import type { AgentMiddleware, ToolMiddleware } from "../tool/middleware"; import type { AnyTool, ToolApprovalsOptions } from "../tool/tool"; import { ToolSet } from "../tool/tool-set"; import type { VectorSearchIndex } from "../vector-store"; -import { - Agent, - type AgentEventStore, - type AgentEventStoreOptions, - type AgentEventStoreRegistration, - type DynamicContextOptions, - type DynamicContextRegistration, - type DynamicToolOptions, - type DynamicToolRegistration, -} from "./agent"; +import { Agent } from "./agent"; import type { PromptHook } from "./hooks"; import { normalizeAgentId } from "./ids"; +import type { + AgentEventStore, + AgentEventStoreOptions, + AgentEventStoreRegistration, + DynamicContextOptions, + DynamicContextRegistration, + DynamicToolOptions, + DynamicToolRegistration, +} from "./types"; export class AgentBuilder { private readonly agentId: string; diff --git a/packages/core/src/agent/index.ts b/packages/core/src/agent/index.ts index 48c88b4d..6cc76f30 100644 --- a/packages/core/src/agent/index.ts +++ b/packages/core/src/agent/index.ts @@ -17,13 +17,6 @@ export type { ToolResultMiddlewareArgs, } from "../tool/middleware"; export { createMiddleware, createToolMiddleware } from "../tool/middleware"; -export type { - AgentEventAppendInput, - AgentEventRecord, - AgentEventStore, - AgentEventStoreInclude, - AgentEventStoreOptions, -} from "./agent"; export { AgentBuilder } from "./builder"; export { MaxTurnsError, PromptCancelledError, ToolApprovalRequiredError } from "./errors"; export type { @@ -61,3 +54,10 @@ export type { AgentStreamEvent, PromptResponse, } from "./request-types"; +export type { + AgentEventAppendInput, + AgentEventRecord, + AgentEventStore, + AgentEventStoreInclude, + AgentEventStoreOptions, +} from "./types"; diff --git a/packages/core/src/agent/types.ts b/packages/core/src/agent/types.ts new file mode 100644 index 00000000..cebbe2ef --- /dev/null +++ b/packages/core/src/agent/types.ts @@ -0,0 +1,105 @@ +import type { + CompletionModel, + Document, + JsonObject, + JsonValue, + ToolChoice, +} from "../completion/index"; +import type { MemoryRegistration } from "../memory"; +import type { AgentObserverRegistration } from "../observability"; +import type { ToolSearchDocument } from "../tool/dynamic-tools"; +import type { AgentMiddleware } from "../tool/middleware"; +import type { ToolApprovalsOptions } from "../tool/tool"; +import type { ToolSet } from "../tool/tool-set"; +import type { VectorFilter, VectorSearchIndex, VectorSearchResult } from "../vector-store"; +import type { PromptHook } from "./hooks"; + +export type AgentOptions = { + id: string; + name?: string | undefined; + description?: string | undefined; + model: M; + instructions?: string | undefined; + staticContext?: Document[]; + temperature?: number | undefined; + maxTokens?: number | undefined; + additionalParams?: JsonValue | undefined; + toolSet?: ToolSet | undefined; + toolChoice?: ToolChoice | undefined; + defaultMaxTurns?: number | undefined; + hook?: PromptHook | undefined; + outputSchema?: JsonObject | undefined; + observers?: AgentObserverRegistration[] | undefined; + approvals?: ToolApprovalsOptions | undefined; + dynamicContexts?: DynamicContextRegistration[] | undefined; + dynamicTools?: DynamicToolRegistration[] | undefined; + middlewares?: AgentMiddleware[] | undefined; + /** + * @deprecated Use `middlewares` instead. + */ + toolMiddlewares?: AgentMiddleware[] | undefined; + memory?: MemoryRegistration | undefined; + eventStore?: AgentEventStoreRegistration | undefined; +}; + +export type AgentToolOptions = { + name: string; + description?: string | undefined; + maxTurns?: number | undefined; + stream?: boolean | undefined; +}; + +export type AgentEventStoreInclude = "all" | "agent_tool_events"; + +export type AgentEventStoreOptions = { + include?: AgentEventStoreInclude | undefined; +}; + +export type AgentEventAppendInput = { + runId: string; + agentId: string; + agentName?: string | undefined; + turn?: number | undefined; + toolName?: string | undefined; + toolCallId?: string | undefined; + internalCallId?: string | undefined; + event: unknown; +}; + +export type AgentEventRecord = AgentEventAppendInput & { + createdAt?: Date | undefined; +}; + +export interface AgentEventStore { + append(input: AgentEventAppendInput): Promise; + load(runId: string): Promise; + clear?(runId: string): Promise; +} + +export type AgentEventStoreRegistration = { + store: AgentEventStore; + options: Required; +}; + +export type DynamicContextOptions = { + topK: number; + threshold?: number | undefined; + filter?: VectorFilter | undefined; + format?: ((result: VectorSearchResult) => Document) | undefined; +}; + +export type DynamicContextRegistration = { + index: VectorSearchIndex; + options: DynamicContextOptions; +}; + +export type DynamicToolOptions = { + topK: number; + threshold?: number | undefined; + filter?: VectorFilter | undefined; +}; + +export type DynamicToolRegistration = { + index: VectorSearchIndex; + options: DynamicToolOptions; +}; diff --git a/packages/core/src/internal/agent.ts b/packages/core/src/internal/agent.ts index 6ed626c9..e9a121a3 100644 --- a/packages/core/src/internal/agent.ts +++ b/packages/core/src/internal/agent.ts @@ -1 +1,2 @@ export * from "../agent/agent"; +export type * from "../agent/types";