intellibrix v1.0.0
    Preparing search index...

    Type Alias RunEvent

    RunEvent:
        | { brickName?: string; runId: string; type: "run:start" }
        | { brickName?: string; runId: string; steps: number; type: "run:finish" }
        | { model: string; runId: string; stepIndex: number; type: "model:start" }
        | {
            durationMs: number;
            model: string;
            runId: string;
            stepIndex: number;
            type: "model:finish";
        }
        | {
            input: unknown;
            runId: string;
            toolCallId: string;
            toolName: string;
            type: "tool:call";
        }
        | {
            durationMs: number;
            output: unknown;
            runId: string;
            toolCallId: string;
            toolName: string;
            type: "tool:result";
        }
        | {
            error: unknown;
            runId: string;
            toolCallId: string;
            toolName: string;
            type: "tool:error";
        }
        | {
            input: unknown;
            runId: string;
            toolCallId: string;
            toolName: string;
            trust?: Trust;
            type: "approval:requested";
        }
        | {
            decision: ApprovalDecision;
            runId: string;
            toolCallId: string;
            toolName: string;
            type: "approval:resolved";
        }

    Structural observability events, layered onto LoopEvent (additive, not a replacement, so nothing already consuming LoopEvents breaks). Emitted at the same call sites loop.ts already defines: around each Provider.generate/stream call, around the existing parallel tool dispatch, around the existing onToolApproval hook, and once per runAgentLoop() call (and again around brick.ask()'s own invocation of it, annotated with a brickName).