UNPKG

kestrel.markets

Version:

A typed, token-efficient language + runtime for agentic trading: agents author bounded plans, the runtime fires them at the tick. CLI + typed library + MCP server.

97 lines 6.71 kB
/** * # session/wake-frontier — the band-parameterized wake floor + the frontier's wake shapes * * The safety floor + the pending-wake / per-wake-context types the agent-driven wake frontier * (kestrel-5zl.4) is built from, extracted from the Simulate driver ({@link import("./simulate.ts")}) so * the band → floor table lives beside its own interface. After the T-5 OPEN baseline the AGENT drives its * own monitoring cadence via `scheduleWake`; the platform FLOORS it (never replaces it) with the * {@link WakeFloor} resolved here from the cell's timescale band. * * - {@link wakeFloorForBand} / {@link WakeFloor} — the pure `band → floor` table (kestrel-5zl.16.7); the * DAY row reproduces today's day-shaped constants byte-for-byte (the no-churn anchor); * - {@link FrontierWake} — a wake pending on the frontier (a dateless sim-time instant + its provenance); * - {@link WakeCtx} — the per-wake context the driver knows that the snapshot does not. * * PURE: {@link wakeFloorForBand} is a total function of the band alone (no wall clock, no RNG) — same band * ⇒ identical floor ⇒ byte-identical wake schedule. Safety can never be silenced (CLAUDE fail-closed); the * floors are author-tunable config, never removable by the agent. */ import type { ViewSelection } from "../frame/pane-catalog.ts"; import type { WakeSource } from "./agent.ts"; import type { TimescaleBand } from "./carry.ts"; /** The DAY staleness-backstop deadline (minutes): a gap longer than this after any delivered vantage * forces a platform safety wake, so a book is never left unattended (CONTEXT "Staleness backstop"). * This is ALSO the universal fail-closed floor — a HELD book in a WIDER band whose backstop lands past * settle still gets a safety wake before settle (never a silent no-wake window while exposed). */ export declare const DAY_STALENESS_BACKSTOP_MIN = 30; /** The three wake-frontier controls, resolved from the cell's timescale band (kestrel-5zl.16.7). A pure * function of the band alone (no wall clock, no RNG) — same band ⇒ identical floor ⇒ byte-identical * wake schedule. The `structural` close ramp is a separate control owned by `day.ts` (kestrel-5zl.3); * its per-band re-shaping re-anchors at that owner, so it is NOT part of this floor. */ export interface WakeFloor { /** The staleness-backstop deadline (minutes): the max gap after a vantage before a safety wake. */ readonly stalenessBackstopMin: number; /** The coalescing floor (minutes): an agent wake nearer than this to the last vantage is folded. */ readonly minWakeSpacingMin: number; /** The per-session ceiling on delivered wakes (safety floors are exempt). */ readonly maxWakes: number; } /** * The band → {@link WakeFloor} table (kestrel-5zl.16.7). Pure + total (every {@link TimescaleBand} maps). * * band backstop spacing (coalesce) ceiling * scalp 2 min 0.25 min (15 s) 4096 — seconds-scale, tick cadence * day 30 min 1 min 512 — TODAY'S EXACT DEFAULTS (the no-churn anchor) * swing 240 min (4 h) 5 min 512 — intraday → multi-day * position 1440 min (~1 d) 15 min 512 — a ~1-day backstop + daily cadence * * The DAY row is the identity of today's day-shaped constants (byte-for-byte); the scalp/swing/position * rows are the minimal shape consistent with `carry.band` + those defaults (design note on 5zl.16.7). * The fail-closed floor (a HELD book in a WIDE band always keeps a backstop before settle — never a * silent no-wake window while exposed) is enforced in `runSimulateSession`'s `armStaleness`, not * by widening this table: widening cadence by band must never create a silent exposed window. */ export declare function wakeFloorForBand(band: TimescaleBand): WakeFloor; /** A wake pending on the frontier — a dateless sim-time instant plus its provenance. `reason` is the * semantic label threaded into {@link import("./agent.ts").ActingFrame.wakeReason}; `label` is the * dateless `HHMM` ET clock the WAKE checkpoint carries (the unchanged bus contract). */ export interface FrontierWake { readonly ts: number; readonly reason: string; readonly source: WakeSource; readonly label: string; /** This wake's MONOTONE PER-SOURCE ordinal — the stable half of its `wakeKeyOf` replay identity * (kestrel-5zl.20). Minted where the wake is RAISED (`pushFrontier` / a latency-fold's construction), * NOT where it is delivered, so folding a delivery (an inserted own-fill advancing the budget/spacing, * a probe skip) can never shift the ordinal a later same-source wake carries. A pure count of RAISES, * per source (no wall clock, no RNG) — same bus + same turns ⇒ identical ordinals ⇒ identical keys. */ readonly sourceOrdinal: number; /** The scheduled wake's stored View (kestrel-wa0j.4), resolved fail-closed at schedule time and * carried to the delivery it selects panes for. Absent ⇒ the default WAKE View. */ readonly view?: ViewSelection; } /** The per-wake context the driver knows that the snapshot does not (dateless relative time only). */ export interface WakeCtx { readonly wakeOrdinal: number; /** WHICH frontier raised this delivery (kestrel-5zl.19) — with {@link wakeSourceOrdinal}, the stable * half of the replay identity `wakeKeyOf` derives. */ readonly wakeSource: WakeSource; /** This delivery's 0-based ordinal among the wakes THIS source RAISED (kestrel-5zl.20) — minted at the * raise, carried on the {@link FrontierWake}, so neither a vantage another source inserts NOR a delivery * that folded (spacing/budget/probe skip) shifts it (the global {@link wakeOrdinal} does shift). */ readonly wakeSourceOrdinal: number; /** The wake's SEMANTIC reason (agent reason / `"staleness-backstop"` / the seed HHMM label). */ readonly wakeReason: string; readonly wakeTs: number; readonly prevVantageTs: number; readonly nextWakeTs: number | null; readonly lastTs: number; /** Wakes remaining under the attention budget; `null` ⇒ the agent-driven horizon is open-ended. */ readonly wakesRemaining: number | null; /** Same-key wakes folded into THIS delivery (coalesced past the budget) — the visible squelch. */ readonly coalesced: number; /** The View this delivery carries (kestrel-wa0j.4) — the scheduled wake's stored View, already * resolved fail-closed at schedule time. Absent ⇒ the default WAKE View (byte-identical). */ readonly view?: ViewSelection; } //# sourceMappingURL=wake-frontier.d.ts.map