Replace the transient `session/model-request` mux frame with ordinary durable session state. Occupancy now rides two last-wins projection fields instead of a non-replayable frame that needed removal tombstones and cross-stream fencing. The frame was the only non-replayable class on the mux stream. Because host and mux are independent SSE streams with no cross-stream order, a request emitted before a removal could arrive after `host/session-removed`, and a legitimate request for a new lifecycle reusing the same id could be fenced by a late removal. Fixing that needed a lifecycle generation on every frame; the frame itself was the problem. Removed: the `session/model-request` frame and schema, the `agent/model-request` core event, the ApiProxy measurement point, the client-side telemetry map and removal tombstone, and the synthetic `cancelled` open error used to signal reconnect through the error channel. Added: `request/context`, a log-only session event recording the registration-bound capacity of the route a request resolved to, appended beside `request/header` from the lookup that already prepared the call and skipped when the route is unchanged. Capacity stays out of `EpochHeader` because it is adapter metadata about a route, not an input the request was built from, so it must not join request reconstruction or header equality. The `contextPressure` projection pairs the newest provider-reported prompt size with the newest recorded capacity. The two are deliberately not one atomic request observation: switching models can pair a fresh capacity with the prior route's pressure until the next request reports usage. The figure is a user-facing reference, and this matches how the TUI status line has always computed occupancy.
70 lines
1.2 KiB
JSON
70 lines
1.2 KiB
JSON
{
|
|
"extends": "../../../tsconfig.base.json",
|
|
"compilerOptions": {
|
|
"rootDir": "src",
|
|
"outDir": "lib/types"
|
|
},
|
|
"include": [
|
|
"src"
|
|
],
|
|
"references": [
|
|
{
|
|
"path": "../../goal/goal"
|
|
},
|
|
{
|
|
"path": "../../../vendor/cordis"
|
|
},
|
|
{
|
|
"path": "../../../vendor/schemastery"
|
|
},
|
|
{
|
|
"path": "../../util/brand"
|
|
},
|
|
{
|
|
"path": "../../llm/llm"
|
|
},
|
|
{
|
|
"path": "../../core/agent"
|
|
},
|
|
{
|
|
"path": "../../core/session"
|
|
},
|
|
{
|
|
"path": "../../core/tools"
|
|
},
|
|
{
|
|
"path": "../../session-persistence/session-persistence"
|
|
},
|
|
{
|
|
"path": "../../session-projection/session-projection"
|
|
},
|
|
{
|
|
"path": "../../session-projection/session-projection-cache"
|
|
},
|
|
{
|
|
"path": "../../skill/skill"
|
|
},
|
|
{
|
|
"path": "../../ui/commands"
|
|
},
|
|
{
|
|
"path": "../../ui/user-approval"
|
|
},
|
|
{
|
|
"path": "../../ui/user-interaction"
|
|
},
|
|
{
|
|
"path": "../../workspace/workspace"
|
|
},
|
|
{
|
|
"path": "../directory-picker"
|
|
},
|
|
{
|
|
"path": "../../support/invariants"
|
|
},
|
|
{
|
|
"path": "../../util/native-command"
|
|
}
|
|
]
|
|
}
|