Interface GMITurnInput

Represents a single turn of input to the GMI.

Interface

GMITurnInput

interface GMITurnInput {
    interactionId: string;
    userId: string;
    sessionId?: string;
    type: GMIInteractionType;
    content: string | Record<string, any> | ToolCallResult | ToolCallResult[] | Record<string, any>[];
    timestamp?: Date;
    userContextOverride?: Partial<UserContext>;
    taskContextOverride?: Partial<TaskContext>;
    metadata?: Record<string, any> & {
        options?: Partial<ModelCompletionOptions & {
            preferredModelId?: string;
            preferredProviderId?: string;
            toolChoice?: any;
            responseFormat?: any;
        }>;
        userApiKeys?: Record<string, string>;
        userFeedback?: any;
        explicitPersonaSwitchId?: string;
        providerUserId?: null | string;
        memoryScope?: null | {
            userId?: string;
            sessionId?: string;
        };
        noTurnUser?: boolean;
        agencyLaunch?: AgencyLaunchFrame;
        toolCallGate?: GMIToolCallGate;
        conversationHistoryForPrompt?: any[];
        rollingSummary?: null | {
            text?: string;
            json?: any;
        };
        promptProfile?: null | {
            id: string;
            systemInstructions?: string;
            reason?: string;
        };
        executionPolicy?: null | {
            plannerVersion?: string;
            toolFailureMode?: "fail_open" | "fail_closed";
            toolSelectionMode?: "all" | "discovered";
        };
        capabilityDiscovery?: null | {
            query?: string;
            kind?: string;
            selectedToolNames?: string[];
            promptContext?: string;
            fallbackReason?: string;
            result?: any;
        };
    };
}

Properties

interactionId: string
userId: string
sessionId?: string
content: string | Record<string, any> | ToolCallResult | ToolCallResult[] | Record<string, any>[]
timestamp?: Date
userContextOverride?: Partial<UserContext>
taskContextOverride?: Partial<TaskContext>
metadata?: Record<string, any> & {
    options?: Partial<ModelCompletionOptions & {
        preferredModelId?: string;
        preferredProviderId?: string;
        toolChoice?: any;
        responseFormat?: any;
    }>;
    userApiKeys?: Record<string, string>;
    userFeedback?: any;
    explicitPersonaSwitchId?: string;
    providerUserId?: null | string;
    memoryScope?: null | {
        userId?: string;
        sessionId?: string;
    };
    noTurnUser?: boolean;
    agencyLaunch?: AgencyLaunchFrame;
    toolCallGate?: GMIToolCallGate;
    conversationHistoryForPrompt?: any[];
    rollingSummary?: null | {
        text?: string;
        json?: any;
    };
    promptProfile?: null | {
        id: string;
        systemInstructions?: string;
        reason?: string;
    };
    executionPolicy?: null | {
        plannerVersion?: string;
        toolFailureMode?: "fail_open" | "fail_closed";
        toolSelectionMode?: "all" | "discovered";
    };
    capabilityDiscovery?: null | {
        query?: string;
        kind?: string;
        selectedToolNames?: string[];
        promptContext?: string;
        fallbackReason?: string;
        result?: any;
    };
}

Type declaration

  • Optional options?: Partial<ModelCompletionOptions & {
        preferredModelId?: string;
        preferredProviderId?: string;
        toolChoice?: any;
        responseFormat?: any;
    }>
  • Optional userApiKeys?: Record<string, string>
  • Optional userFeedback?: any
  • Optional explicitPersonaSwitchId?: string
  • Optional providerUserId?: null | string

    The end-user id this turn's model calls send to the provider (OpenAI's user / safety_identifier). Unset, the GMI sends the turn's userId; null sends none. Pass an opaque or hashed id: the provider receives it.

  • Optional memoryScope?: null | {
        userId?: string;
        sessionId?: string;
    }

    The ids the turn's cognitive memory files and recalls traces under, in place of the turn's userId and sessionId (the session also stands in for the conversation when no conversationId is given). Tools, the user context and the reasoning trace keep the turn's own ids. Unset, memory uses the turn's ids.

  • Optional noTurnUser?: boolean

    True on a turn that names no user: a gmi() session opened with no user id, generate() and stream() run as their own session id, which is no user's. A learning layer reads such a turn's user as null.

  • Optional agencyLaunch?: AgencyLaunchFrame

    The launched team this turn's GMI sits in (launch_agency): the launch, the seat's role and the team's level. The GMI hands each tool call of the turn a frozen copy in sessionData.agencyLaunch, where a launch from that call reads its parent; a tool continuation that names none keeps the frame of the turn it continues.

  • Optional toolCallGate?: GMIToolCallGate

    Asked before each call of this turn's tool round runs (see GMIToolCallGate). A tool continuation that names none asks the gate of the turn it continues.

  • Optional conversationHistoryForPrompt?: any[]

    Optional conversation history snapshot to use for prompt construction. When provided, the GMI should prefer this over any internal ephemeral history so persona switches share conversation memory.

  • Optional rollingSummary?: null | {
        text?: string;
        json?: any;
    }

    Optional rolling summary block (text + structured metadata) maintained by ConversationContext and injected into prompts for long conversations.

  • Optional promptProfile?: null | {
        id: string;
        systemInstructions?: string;
        reason?: string;
    }

    Optional prompt-profile selection for this turn (e.g., concise/deep_dive/planner/reviewer).

  • Optional executionPolicy?: null | {
        plannerVersion?: string;
        toolFailureMode?: "fail_open" | "fail_closed";
        toolSelectionMode?: "all" | "discovered";
    }

    Optional planner-selected execution policy for this turn.

  • Optional capabilityDiscovery?: null | {
        query?: string;
        kind?: string;
        selectedToolNames?: string[];
        promptContext?: string;
        fallbackReason?: string;
        result?: any;
    }

    Optional capability discovery payload for this turn. result is intentionally any to avoid hard-coupling the GMI contract to a specific discovery-engine type.