A Session-list row no longer carries every registered client view: the three units whose values a list row never renders (`turnOutline`, `sessionStats`, and `todos`) are excluded, which removes the whole-log turn outline and the figure and todo payloads from every row. An opened Session is unchanged — `session/follow`, the `session/control` baseline, and `session.projections` still serve every projected key. The exclusion is one type-level mark plus one registration interlock: `SessionProjectionSummaryExcluded<T>` marks a map entry, and `ProjectionDefinition.wire` requires `summary: false` exactly on a marked key and rejects it everywhere else, so the mark and the declaration cannot drift. A nullable entry keeps `null` outside the wrapper, so `todos` stays `TodoItem[] | null`. `summaryKeys()` returns the derived set, stable until a registration or its disposal changes the key table, and the existing key-taking read faces (`cachedSnapshot`, `viewCheckpoint`) accept that set directly, so summaries need no separate read face and no per-read key copy. `packages/api/session-controller/src/list.ts` passes the set to the live and cold cached faces; `cachedPredecessorTitle` is untouched. Client types only: `SessionSummary.projectionValues` narrows to `SessionProjectionSummaryValues`, `SessionProjectionSnapshot.values` keeps every view value with the mark stripped, and no wire field or client name changed. The cache, subsystem page, and package README document the summary rule and the two read faces.
description, kind
| description | kind |
|---|---|
| Runtime API inspection, process-local runners, and historical Cordis cards. | package-group |
packages/extensions
English | 中文
Summary
The extensions group provides read-only runtime API discovery for agents, process-local runners for programmatic and browser consumers, and historical generated-plugin cards. Creator mode installs persistent plugins through Plugin Manager. Choose a child package for inspection, Host execution, Client execution, or browser controls.
Table of Contents
Packages
| Package | Role | ctx key |
|---|---|---|
tool-cordis |
Two read-only tools for runtime API discovery | registers on ctx.tools |
cordis-host-runner |
Host half: definition registry, sandboxed host-half lifecycle, and the inspect registry that answers browser queries | provides ctx.dynamicCordisRunner and ctx.cordisInspect |
cordis-client-runner |
Browser half: evaluates a browser-half source into a live plugin and answers run requests | client face; provides browser ctx.dynamicCordisRunner |
ui-cordis |
Browser panel and historical lifecycle tool cards | client face; registers slots |
Related documentation
- Extensions subsystem — the generated
ctx.cordisInspectandctx.dynamicCordisRunnerservice API. - Generated tool catalog — the two read-only tool schemas.
- Generated configuration catalog — the runner's accepted config fields.
- Self-referential Cordis toolset reference — design home for sandbox semantics, lifecycle, and composition.
- Client shells and dynamic packages Agent Note — package placement and build faces for the client halves.
Dev Note
Working context for maintainers — click to expand
The two browser-half packages live in this group rather than under packages/client/ because they are halves of this subsystem's dual-half packages; the client face compiles them through the client program, while the host program references only the host runner.