eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
214 lines (213 loc) • 11.4 kB
TypeScript
/**
* Leaf context keys — no codec, no runtime imports. Safe to import from any
* tier. Codec-carrying keys (`ChannelKey`, `BundleKey`) live in
* `#runtime/sessions/runtime-context-keys.ts`.
*/
import type { LanguageModel, ModelMessage, SystemModelMessage } from "ai";
import type { ActivityObserverConfig, ChannelDeliveryMetadata, ChannelInstrumentationProjection, SessionAuthContext, SessionCallback, SessionCapabilities, SessionParent, SessionTraceContext, SessionTurn } from "#channel/types.js";
import { ContextKey } from "#context/key.js";
import { type SessionInboxAddress } from "#execution/wire/session-inbox-contract.js";
import type { InstrumentationChannelDeliveryRef } from "#instrumentation/lifecycle.js";
import type { UserModelMessage } from "#harness/messages.js";
import type { HandleEventFn } from "#harness/types.js";
import type { PersistedDynamicToolMetadata } from "#context/dynamic-tool-metadata.js";
import type { DynamicSubagentAgentConfig } from "#runtime/subagents/dynamic-agent-config.js";
import type { DynamicRemoteAgentConfig } from "#runtime/subagents/dynamic-remote-agent-config.js";
import type { SandboxAccess } from "#sandbox/state.js";
import type { RunMode } from "#shared/run-mode.js";
import type { RuntimeModelReference } from "#runtime/agent/bootstrap.js";
import type { PreparedRuntimeDelegationTool } from "#runtime/sessions/turn.js";
import type { MemoryScope, MemoryTurnContext } from "#public/memory/index.js";
export type { SessionAuthContext, SessionParent, SessionTurn } from "#channel/types.js";
/**
* Auth metadata on the active session.
*
* `current` is the caller of the most recent request.
* `initiator` is the caller who originally created the session.
*/
export interface SessionAuth {
readonly current: SessionAuthContext | null;
readonly initiator: SessionAuthContext | null;
}
/**
* Internal session metadata seeded into the context container under
* {@link SessionKey}.
*
* This is not the shape authored code observes. Tools, hooks, and channel
* events receive the `SessionContext.session` projection (via `ctx.session`),
* whose session id is exposed as `id`, not `sessionId`.
*/
export interface Session {
readonly auth: SessionAuth;
readonly parent?: SessionParent;
readonly sessionId: string;
readonly turn: SessionTurn;
}
export declare const AuthKey: ContextKey<SessionAuthContext | null>;
export declare const InitiatorAuthKey: ContextKey<SessionAuthContext | null>;
export declare const SessionIdKey: ContextKey<string>;
export declare const ConversationIdKey: ContextKey<string>;
export declare const SessionInboxKey: ContextKey<SessionInboxAddress>;
export declare const ContinuationTokenKey: ContextKey<string>;
export declare const ChannelRequestIdKey: ContextKey<string>;
/** Parent-verified local client provenance, valid only for the current dev host secret. */
export interface LocalDevRequestProvenance {
readonly address: string;
readonly interactiveClient: boolean;
readonly signature: string;
}
export declare const LocalDevRequestKey: ContextKey<LocalDevRequestProvenance>;
/** Authored schedule whose dispatch created this session. */
export declare const ScheduleIdKey: ContextKey<string>;
export declare const ChannelDeliveryKey: ContextKey<ChannelDeliveryMetadata>;
/** Accepted messages whose response owns the current turn's durable stream events. */
export declare const TurnDeliveryIdsKey: ContextKey<readonly string[]>;
/** Task-reporting phase for the active root turn. */
export declare const TurnTaskDeliveryKey: ContextKey<"initiating" | "none" | "pending" | "settled">;
/** Last framework announcements recorded in the retained session history. */
export interface HistoryState {
readonly availableSkills?: string;
readonly taskState?: string;
readonly deliveryInstruction?: string;
}
export declare const HistoryStateKey: ContextKey<HistoryState>;
export interface ActiveChannelDelivery {
readonly agentName?: string;
readonly channelType?: string;
readonly delivery: InstrumentationChannelDeliveryRef;
readonly policyAgentName?: string;
readonly rootSessionId: string;
readonly sequence: number;
readonly sessionId: string;
readonly turnId: string;
}
export declare const ActiveChannelDeliveriesKey: ContextKey<readonly ActiveChannelDelivery[]>;
export declare const ChannelInstrumentationKey: ContextKey<ChannelInstrumentationProjection>;
/** Trace ceiling and immutable origin accepted from a trusted forwarding deployment. */
export declare const ModeKey: ContextKey<RunMode>;
export declare const ParentSessionKey: ContextKey<SessionParent>;
/** Separate from {@link ParentSessionKey} so it stays out of what extensions read. */
export declare const ParentTraceContextKey: ContextKey<SessionTraceContext>;
export type SessionTraceSeed = SessionTraceContext;
export declare const SessionTraceSeedKey: ContextKey<SessionTraceContext>;
export declare const OtelTraceEnabledKey: ContextKey<boolean>;
/**
* Session-level capability flags (see {@link SessionCapabilities}). Set
* on root runs by channel routes and inherited pointwise by subagent
* dispatch so HITL readiness flows through a conversation chain.
*/
export declare const CapabilitiesKey: ContextKey<SessionCapabilities>;
export declare const ActivityObserverKey: ContextKey<ActivityObserverConfig>;
/** Originating root turn that owns the current user-visible activity artifact. */
export declare const ActivityRootTurnIdKey: ContextKey<string>;
/** Pending HITL request identities that keep the current activity artifact open. */
export declare const ActivityPendingBlockersKey: ContextKey<readonly string[]>;
/**
* Optional framework-owned caller callback captured when the session is created.
*/
export declare const SessionCallbackKey: ContextKey<SessionCallback>;
export declare const SessionKey: ContextKey<Session>;
export declare const SandboxKey: ContextKey<SandboxAccess>;
export declare const HandleEventKey: ContextKey<HandleEventFn>;
/** Session-scoped dynamic model selection (from `session.started`). */
export declare const SessionDynamicModelReferenceKey: ContextKey<Readonly<import("../shared/agent-definition.ts").InternalAgentModelDefinition> | null>;
/** Turn-scoped dynamic model selection (from `turn.started`). */
export declare const TurnDynamicModelReferenceKey: ContextKey<Readonly<import("../shared/agent-definition.ts").InternalAgentModelDefinition> | null>;
export interface CachedModelMetadata {
readonly contextWindowTokens: number;
readonly expiresAt: number;
readonly maxOutputTokens?: number;
readonly resolvedModelId: string;
}
/** Successful runtime catalog selections cached in durable workflow state. */
export declare const RuntimeModelMetadataCacheKey: ContextKey<Readonly<Record<string, CachedModelMetadata>>>;
export interface LiveDynamicModelSelection {
/** Live provider instance; absent for string selections, which resolve through the reference. */
readonly model?: LanguageModel;
readonly reference: RuntimeModelReference;
}
/** Virtual step-scoped dynamic model selection (from `step.started`); never serialized. */
export declare const LiveStepDynamicModelSelectionKey: ContextKey<LiveDynamicModelSelection | null>;
/**
* Session-scoped dynamic tool metadata (from `session.started`).
* Persists for the session lifetime.
*/
export declare const SessionDynamicToolMetadataKey: ContextKey<readonly PersistedDynamicToolMetadata[]>;
/**
* Runtime revision that last resolved session-scoped dynamic tools.
* Used to refresh their durable metadata after a deploy or development rebuild.
*/
export declare const SessionDynamicToolRuntimeRevisionKey: ContextKey<string>;
/**
* Turn-scoped dynamic tool metadata (from `turn.started`).
* Replaced each turn.
*/
export declare const TurnDynamicToolMetadataKey: ContextKey<readonly PersistedDynamicToolMetadata[]>;
export interface LockedMemorySlot {
readonly scope: MemoryScope;
readonly slot: string;
readonly turn: MemoryTurnContext;
readonly visibility: "scope" | "session";
}
export declare const TurnMemoryLocksKey: ContextKey<Readonly<Record<string, LockedMemorySlot>>>;
export interface PreparedMemoryPreamble {
readonly history: readonly ModelMessage[];
readonly input: readonly ModelMessage[];
readonly state?: Readonly<Record<string, unknown>>;
}
export interface PendingMemoryCommit {
readonly history: readonly ModelMessage[];
readonly projectedMessages: readonly ModelMessage[];
readonly state: Readonly<Record<string, unknown>>;
}
export declare const PreparedMemoryPreambleKey: ContextKey<PreparedMemoryPreamble>;
export declare const PendingMemoryCommitKey: ContextKey<PendingMemoryCommit>;
export interface PreparedMemoryCompaction {
readonly history: readonly ModelMessage[];
readonly state?: Readonly<Record<string, unknown>>;
}
export declare const PreparedMemoryCompactionKey: ContextKey<PreparedMemoryCompaction>;
/** Step-scoped dynamic tool metadata, replaced before each model step. */
export declare const StepDynamicToolMetadataKey: ContextKey<readonly PersistedDynamicToolMetadata[]>;
export type DurableDynamicSubagentSelection = {
readonly agentConfig: DynamicSubagentAgentConfig;
readonly kind: "subagent";
readonly prepared: PreparedRuntimeDelegationTool;
readonly remoteAgent?: never;
} | {
readonly agentConfig?: never;
readonly kind: "remote";
readonly prepared: PreparedRuntimeDelegationTool;
readonly remoteAgent: DynamicRemoteAgentConfig;
} | null;
export declare const SessionDynamicSubagentSelectionsKey: ContextKey<Readonly<Record<string, DurableDynamicSubagentSelection>>>;
export declare const TurnDynamicSubagentSelectionsKey: ContextKey<Readonly<Record<string, DurableDynamicSubagentSelection>>>;
export declare const SessionDynamicSubagentRuntimeRevisionKey: ContextKey<string>;
export declare const DynamicSubagentAgentConfigKey: ContextKey<DynamicSubagentAgentConfig>;
/**
* Durable metadata for one session-scoped dynamic skill.
*/
export interface DurableDynamicSkillMetadata {
readonly name: string;
readonly description: string;
}
/**
* Durable map from resolver slug to the qualified skills it last produced.
* Used to diff on re-resolution, clean up removed skills from the sandbox,
* and rebuild the model-visible announcement across turns.
*/
export declare const DynamicSkillManifestKey: ContextKey<Record<string, readonly DurableDynamicSkillMetadata[]>>;
/**
* Durable session-scoped instruction messages (from `session.started`
* resolvers). Keyed by resolver slug. Persists for the session lifetime.
*/
export declare const SessionDynamicInstructionsKey: ContextKey<Record<string, readonly SystemModelMessage[]>>;
/**
* Durable turn-scoped instruction messages (from `turn.started`
* resolvers). Keyed by resolver slug. Replaced each turn.
*/
export declare const TurnDynamicInstructionsKey: ContextKey<Record<string, readonly SystemModelMessage[]>>;
/** Existing history exposed only to instructions resolvers during a preamble. */
export declare const DynamicInstructionResolveMessagesKey: ContextKey<readonly ModelMessage[]>;
/** User-role results waiting to be committed immediately after a preamble. */
export declare const PendingDynamicInstructionUserMessagesKey: ContextKey<readonly UserModelMessage[]>;