* feat(liveshare): add the owner host, viewer host, and share runtime
The owner-side half of the bundle: the share host that publishes a Session to a Relay and answers one viewer per share, the owner credential/authorization records, the fork registry and its enforcement, the read-only viewer access policy and read budgets, the turn-requester fold, and the Relay gateway worker. The viewer host renders the served page's assets and declarations; no browser code is included in this layer.
* test(liveshare): cover the owner host, viewer host, and gateway
Keyless host-side coverage: share publication and restore, owner login/authority, fork registry and enforcement, viewer read policy and budgets, the turn-requester fold, the Relay tunnel worker and gateway commands, and the served viewer page. The browser surfaces are covered by the client layer's own suite.
* chore(build): register the host bundle in the compiler, dependency policy, and CI
The package manifest, Host compiler face, and tsdown host entries the bundle needs; the workspace constraints the built gateway/declaration artifacts require; the release-family and README model-experience rows; the coverage-lane exemption; and the keyless CI job that runs the share cases on Linux. The dependency-policy classifications wait for the client layer, which is where the package's client face (and its imports) first appears.
* docs(liveshare): record the bundle's subsystem, projection, and decision rationale
The package README for the host layer, the subsystem page, the persistence record that declares the viewer principal projection, and the note that keeps the protocol and owner-surface decisions with their evidence.
* feat(boot): offer the Liveshare host bundle in the CLI profile and plugin manager
The bundle joins the optional bundles the CLI installation carries and the Official group the plugin manager lists, so an owner can switch it on without editing a profile by hand. The plugin-manager and plugin-config expectations follow in the client layer that renders the card's browser half.
* chore(docs): regenerate the graphs, catalogs, and persistence records for the host
Run the generators over the host layer: the event producer/consumer graphs, the persistence catalog and schema inventory, the config catalog, the module graph, and the Cordis API catalog. The persisted viewer-principal event appears in the catalog and the historical format index counts it.
* fix(liveshare): keep the bundle's locale display metadata in this layer
The CLI profile registers the bundle as optional, so the plugin manager reads title and description from ./locale/*.json. Ship the two locale files and their export here; the browser half is not needed for display metadata.
* refactor(liveshare): read the turn boundary through the typed Agents service
The retained projection-handle migration left two assertions converted through unknown; ctx.get('agents') already exposes turnBoundaryOf, so the host and the cancel-admission case call it directly and the unknown-cast baseline stays untouched.
* test(liveshare): expect the canonical viewer tier from the three-mode harness
The Relay reports a share published with the withdrawn fork-readonly tier as view and carries the fork grant separately, so the harness compares the canonical tier and forwards an explicit allowsFork when the case names one.
* refactor(liveshare): share the reader-facing record and body readers
The fork decision and the access snapshot built the same share facts twice, and the two share-writing routes read the same share-naming JSON body twice; both pairs are now one helper each, so jscpd no longer reports them. Behavior is unchanged.
* test(web): record the host layer's optional-bundle expectations
Registering the LiveShare bundle in the Official group adds its card and description to the plugin manager and plugin-config pages, and the packed preview must state that its host plugin needs LIVESHARE_RELAY_URL instead of a generic applied toggle. Refresh the affected goldens locally (keyless web snapshot refresh) and keep the card badge at this layer: the client list that labels it experimental arrives with the client layer.
* docs(liveshare): mark the shipping owner policy note implemented
The protocol-and-owner-surfaces decision shipped with this bundle, so the note moves from proposed/ to implemented/ in both languages, its proposal-era headings become Decision/Verification/Consequences, and the subsystem page plus package README link to the new path. The pairing record moves with the triplet.
* fix(liveshare): judge tool turns from the open Session turn and recheck the narrowed write
The master baseline has no ToolExecutionInput.turn, so the host derives the turn a tool execution serves from the Agent's Session: the latest turn/start with no turn/end after it. A missing Agent, Session, or open turn yields no turn and the fork guard refuses the execution (fail-closed) instead of reading it as the owner's. Also refuse a fork that names a child without a bound rpcId/operationId, classify forwarded paths by their normalized pathname so /api/session/./fork or a query suffix cannot skip the fork decision, and ask the write gate again after the final authorization refresh so a share narrowed to view during fs/write-intent cannot write. The subsystem page, package README, and model-experience census follow the two-tier model and the bounded-write child ceiling.
* refactor(liveshare): read the open turn beside the requester fold
The derivation reads the same Session log the requester fold decides, so it
lives with that fold and the host imports it instead of keeping a private copy.
* test(liveshare): cover the derived turn and the refusal paths
Drive the host's real derivation from Session events: the open turn of the
Agent's Session decides a viewer turn is confined and an owner turn is not,
while a missing Agent, an absent open turn, and a requester the host no longer
drives all refuse instead of being read as the owner's. Cover the three safety
behaviours the host commit added: fork child naming without a bound request
identity, dot-segment/query fork paths that must still reach the fork decision,
and a share narrowed to view while fs/write-intent awaits.
* fix(liveshare): avoid the deprecated snapshot reader and the extra casts
The host derived the open turn by scanning the Session event log, which the
deprecation note forbids for new production calls. Read the same state from the
turnBoundary projection the Agents service maintains instead, and let a spec
supply a fixture boundary reader where production supplies turnBoundaryOf.
The live attribution of an execution is unchanged: an absent boundary or one
between turns still yields no turn and the guard refuses it fail-closed.
* docs(liveshare): describe the bundle's indirect model experience
The bundle's Model Experience moved to the audited indirect classification,
so the README sentence now names the path: viewer prompts the owner host
forwards into a shared Session drive that Session's model requests. The
KV-cache paragraph and the bilingual pairing record follow.
* test(liveshare): pin the turn-start admission for steered and admitted reader input
The pre-step admission already re-reads Relay authority from each entering message's own source and refuses queued reader input whose grant ended before the model runs; the new cases pin the steer path and the admitted viewer turn, so the turn-start half stays proven next to the delivery-time recheck the Session Controller owns.
* test(liveshare): adapt the replay and cancel expectations to the parsed tier
* test(liveshare): align the access-state expectations with protocol v2
The parsed share-access-state frame always carries allowsFileUpload, the
withdrawn fork-readonly word no longer implies a view tier or forking, and a
hand-built frame may not name it. Update the hand-built expectations and the
two fixture specs that named the retired word, without touching production
semantics.
* test(liveshare): record the in-flight cancel race after the controller revert
The Session Controller no longer re-reads a caller's access before cancelling,
so a cancel admitted before the reader's grant ends keeps its effect. State that
as the known limitation the earlier refusal tests documented instead.
* feat(liveshare): add the viewer attachment-upload switch
The share record, registration handshake, access-state replay, and share-viewer
policy carry an owner switch that is off by default: it admits fileUploads/upload
on the shared Session and the viewer's own forks, is independent of the tier and
of forking, and is normalized to off at every untrusted state-file or frame
boundary.
* docs(liveshare): state the sandbox tiers and the attachment switch
Name the two execution tiers as a read-only sandbox and a bounded writable
sandbox, and document the independent default-off switch that lets admitted
viewers upload attachments, including that legacy shares read as off.
* refactor(liveshare): drop the withdrawn fork-readonly migration
The feature never shipped, so no stored record can name the withdrawn tier and
the boundary needs no compatibility path. Read a stored fork switch as exactly
what it states, let an old Relay state the switch explicitly instead of
inferring it from the tier, and stop accepting the retired mode name on create
or restore.
* fix(liveshare): preflight a resumed child's limit before publishing it
A resumed child is announced through agent/created before its execution limit
installs, so an installability failure left a created Session whose guard never
landed. Resolve the recorded child's granted workspace before activation and
refuse the resume there, so a child this host cannot confine is never published.
* refactor(liveshare): render the viewer page through the reader's own Peer
The served-page seam now hands the frontend reader the reader's Peer, which renders that page's own
opening access rows; the Liveshare side no longer assembles a global access snapshot and the removed
global is gone. The viewer read service builds the same Peer it already creates for every dispatch and
passes it to the asset reader.
* fix(liveshare): keep the owner upload switch across an older Relay's access frame
The Relay is the authority for what a viewer receives, but only for the fields its frame states. An
older Relay predates the upload switch and omits it entirely; the protocol parser rightly normalizes a
missing switch to off for frames that state it, so the host must inspect the raw answer to tell not
* test(liveshare): adapt the host specs to the current tool and session APIs
The host specs drove a single tool through the pre-batch executor shape and handed
some tests a Session outside its store; the current tool executor takes a call batch
and Session appends require the owning SessionStore. This adapts those fixtures to
the current shapes without changing what each test asserts.
Also gives the reader's own fork the same Session permissions as the source grant:
forking its own child again and renaming it are allowed on the child only, while the
source Session still refuses renaming and keeps forking as its one Session verb.
* fix(liveshare): let the owner's background turns run while a share is served
The requester fold only counts a message with `source.kind === 'user'`, so a
turn a background event opened has no attributable input and stayed `unknown`;
the source-session tool guard refused every tool in that turn. Establish the
owner's own turn for an input-less turn and leave unattributable input unknown.
* fix(liveshare): grant the reader its own fork's rename and gate child forks by the fork switch
* refactor(liveshare): read the served page through webServer.readResource
* feat(boot): offer the Liveshare host bundle from the official bundle list
`@deepseek-ai/dsh-official-bundles` owns the shipped template, retired, and
optional bundle lists now, so the liveshare bundle joins `OPTIONAL_BUNDLES`
there instead of being restated in the app-boot profile module.
* feat(liveshare): gate the reader's own fork independently of its input permissions
The reader's child gets prompt, cancel, and rename from a role with no extra
condition, while forking the shared Session or one of the reader's own forks
belongs to a separate role bound to the owner's fork switch. A viewer cannot
rename the shared Session, and a withdrawn fork switch also withdraws forking
a child.
* test(liveshare): adapt the admission specs to the current tool and driver APIs
* feat(liveshare): accept only the declarations a plugin's own package owns
A viewer plugin may contribute endpoints a share can offer, so a declaration
has to name a live Host Remote endpoint whose generated id belongs to the
declaring package. Fail closed: no loader entry, no local endpoint, no owning
package, or a foreign owner all refuse the declaration, and the recorded
attribution is the package name the owner sees.
The package's Typert artifact registers after its apply runs, so a plugin
declares once that registration has happened.
* feat(liveshare): classify every Remote endpoint before the reader policy decides it
The share-viewer policy refuses by default, so the endpoints it decides were a
handwritten whitelist that could drift from the generated endpoint set. State
every endpoint's reason in one shared table: the Client face proves it covers
`RemoteEndpoint` (both directions), the Host derives `POLICY_DECIDED_ACTIONS`
from the reader entries, and a load-time assertion fails if the derived set and
the roles' actions disagree.
* fix(liveshare): declare the Client face its classification gate compiles in
Typert attributes a package's exports to a face only for manifests declaring
`dsh.client` plus a `./client` subpath (`isDualFacePackage`). Without that row
the client catalog read `exports["."]` — the Host entry — from the Client
program, which holds only the classification table and its completeness gate,
and failed on the source that program does not contain.
Export the gate module as `./client`, declare the Client row, publish its
bundle, and exempt the package from Client/Host dependency treatment: the
runtime importing these dependencies is the Host's, and `dsh.client` here only
attributes the compilation face.
* test(liveshare): align worker fixtures with the protocol tenant contract
The protocol layer rejects a share RPC actor whose tenant is empty at the IPC ingress. The worker fixtures still described a peer normalizing the tenant to an empty string, so the Host dropped every fabricated request event and the lifecycle and correlation polls timed out. Use a concrete tenant in the fixtures; those scenarios do not depend on an empty tenant.
* chore(docs): count the liveshare persistence nodes in the format index
The regenerated current-checkout catalog adds the liveshare viewer-principal nodes, so the v4 row's node count moves from 622 to 626. Refresh the generated format index rather than keeping the pre-liveshare count.
* refactor(liveshare): consume the protocol package's single public entry
The protocol layer now publishes only its root entry, so the Host face reads the wire codecs, identity contract, and viewer-state vocabulary from the package root instead of the removed /protocol and /identity subpaths.
* fix(liveshare): classify the schedule cleanup endpoint before the Client gate reads it
The Client completeness gate compiles against the generated Remote endpoint map; master added schedule/deleteInactive after the table was last filled. It mutates the owner's schedules like its neighbours, so it stays owner-only.
* chore(release): carry the liveshare package to the rc.3 family version
* docs(liveshare): align the host docs with the shipped two-tier shares
The subsystem page still described a withdrawn fork-readonly compatibility, a
write-only source drive, and an immutable execution.turn. State the two tiers,
the independent fork and upload switches, the refused unknown mode, and the
turn derived from the Session boundary. Mirror the Chinese pages and re-record
the pairing hashes.
* fix(liveshare): describe the writable tier in the plugin card
The package description, both locale descriptions, and the three Web goldens
still told the owner that sharing is read-only. State driving, bounded writes,
forking, and the independent upload switch instead.
* chore(liveshare): forward the owner credential file from the bundle patch
The README lists LIVESHARE_OWNER_CREDENTIAL_FILE beside the other owner
settings, but the patch left it to a direct process.env read. Pass it through
the same config field as its siblings.
* docs(liveshare): drop stale fork module comments
The registry header still said read-only forks only, and both the registry
and the policy carried an orphan JSDoc block in front of the real one.
* refactor(liveshare): drop unreachable fork tool effect fields
ForkToolRequest.writesWorkspace and changesConfiguration had no producer in
the repository: the guard never sets them, and the only callers were the
tests. The write-denying branch also contradicted WRITE_FORK_CEILING, which
admits the bounded write tool. Remove the fields, their refusal codes, and
the test cases that manufactured them.
* refactor(liveshare-protocol): retire the attachment-upload capability
Sharing itself now carries attachment upload, so the protocol no longer
states an independent switch: `LIVESHARE_CAPABILITIES` drops
`file-upload`, and share specs and access-state frames drop
`allowsFileUpload`. Wire frames stay v1 and no Relay is deployed, so no
compatibility layer is needed.
* refactor(liveshare): grant attachment upload with visibility
The owner controls sharing, audience, the tier, and forking only.
`fileUploads/upload` now rides the Session read role, so every Session a
share serves the viewer accepts files, independent of the tier and the
fork switch. The owner record, the share APIs, the registration handshake,
and access-state adoption no longer carry an upload switch; an older owner
state file that still contains the field loads with it ignored.
Accepted risk, recorded in Known Limitations: an owner cannot refuse
uploads for an admitted viewer.
* feat(liveshare): share the owner wire records
Move the owner identity report into a module both compiler faces can import, and
declare the share-management request, result, audit, and capability records there
with the same fields the same-origin routes already answer. The Remote failure
vocabulary joins the same module so a client learns the liveshareShares/ codes
without importing the Host.
* refactor(liveshare): extract the owner share operations
Move the twelve share-management handler bodies out of the route closures into
operations implemented once inside apply(), leaving each HTTP route with its JSON
parsing, normalization, and legacy status/body. Each operation documents the
side-effect order it keeps and what reordering would break.
* feat(liveshare): serve share management over Typert Remote
Register a LiveshareShares Remote service over the same operations the routes
call, publish its ./typert and ./remote artifacts plus the shared ./types module,
and make the shared records part of the Client compiler face. The owner page gains
the Remote endpoints while the HTTP routes stay as thin adapters.
* chore(docs): regenerate the Cordis catalog for share management
Record the liveshareShares service on the LiveShare subsystem page, link its
wire records to that page, and regenerate the runtime API catalog. The service
declaration moves to the package entry so the host-face catalog projection can
render it.
* test(liveshare): refuse share management to viewer Peers over Remote
Cover the owner Peer's Remote list and the share-viewer denial of list, create,
stop, and setRelay. The refused calls leave the share list empty, the selected
Relay unchanged, and the worker channel without an add-share.
* chore(liveshare): mark the typert resource follow-ups behind #7003
The share-management Remote ships against today's resource registration. Default
resource resolvers and the stricter identity rules arrive with #7003, so the two
places that will change carry a TODO naming the PR.
* fix(docs): classify the liveshareShares service role
The share-management Remote adds one owner-side service, so the capability
seams graph owed it a role row; without the classification the generator
refuses to render and doc-sync fails.
* fix(liveshare): complete the bundle metadata and restore the static gates
The bundle shipped only two of the eight shipped-language metadata files, and its
browser face had no named tsdown config, so the locale metadata gate and the
browser bundle walk both failed. Ship the full locale set and name the client
build; share one owner-body registrar between the two POST adapters so jscpd
stops reporting an eight-line clone.
* fix(liveshare): give the bundle a client source route and a typed peer double
The product-use walk follows `${name}/client` for every mounted bundle, so the
package needs the source mapping and a Client entry the mapping resolves to.
Replace the unknown-cast peer double with a complete PeerScope literal.
* test(liveshare): adapt the viewer admission rows to the Session default resolver
#7003 replaced the `session/page` and `session/follow` resource readers with the
Session kind's default resolver. A body carrying both `sessionId` and `address`
is now refused as invalid resources before the share policy reads either, while
a lone hidden `sessionId` still resolves and is refused by the policy.
Records the new expectations; the served page names one identity per request.
* feat(liveshare): resolve create's request Session through the default resolver
#7003 registers the `session` kind's default resolver with the Session
Controller, and `liveshareShares/create` names its Session in the one request
object, so the Gateway resolves that Session for a non-owner Peer without a
reader declared on the method. The owner Peer reaches the operation without
an access decision.
Adds the Gateway resource assertion and the owner-path assertion to the
share-management security spec, regenerating the Cordis catalog.
* test(liveshare): refuse a viewer body naming two Session identities
A prompt or cancel body carrying both `sessionId` and `address` reaches the
Gateway, whose Session resolver refuses it as invalid resources, so the target
child operation never runs and no request content comes back. Prompt and
cancel requests name their Session by `sessionId` alone.
* test(liveshare): widen the two-identity coverage across the reader endpoints
The resolver refuses a request that names two Session identities for every
namespace, so cover the remaining reader endpoints with one parametrized case
instead of leaving them to the generic Gateway tests.
* refactor(liveshare): remove the unreferenced gateway heartbeat policy
The production worker keeps its own interval and missed-pong counter, so
nothing imported this module; only its spec did.
* refactor(liveshare): extract the owner state persistence
The state file reader, writer, serialized write queue, and stored-share
record types move out of the host plugin unchanged.
* refactor(liveshare): extract the Relay authority reader
The access-state cache, its generation fence, the admission rule, and the
authoritative read that adopts a frame move behind one factory.
* refactor(liveshare): extract the tunnel worker supervision
Worker start, settlement, registration replay, expiry timers, owed Relay
rows, and the credential state each registration presents move out of the
host plugin behind one factory.
* refactor(liveshare): extract the owner share operations
The twelve operations keep their order and side effects but move behind an
explicit deps factory, so the host plugin mounts them instead of owning
their bodies.
* refactor(liveshare): extract the owner routes and source access
The sixteen owner HTTP routes, their request adapters, and the credential
store move behind registerOwnerHttpRoutes. The confined source Session
layer and its turn control move to source-access, which the share-host
re-exports for its public helpers.
* refactor(liveshare): split the viewer reader into dispatch, fork, and lifecycle
The request entry and endpoint handlers, fork orchestration and branch
facts, and the streams/calls/Peers lifecycle move out of viewer-read,
which keeps the deps types and assembly. Order, TOCTOU re-checks, and
Peer ownership are unchanged.
* refactor(liveshare): share the wire JSON helpers and the fork enforcement record
The split duplicated `json`/`isRecord` across the extracted owner modules and the
child enforcement options at three call sites; the stored ACL selection type also
lost its reference to the wire type. One helper module and one record factory keep
the split modules from carrying their own copies.
* refactor(liveshare): move the shared owner record and one-definition helpers
The split published OwnerShare from the assembly while every extracted module
imported it back, and left each host module carrying its own isRecord. Move the
share record and its ACL summary to a neutral module, name the two optional
service seams instead of inline casts, and import one wire JSON helper.
* refactor(liveshare): remove the fork-enforcement audit event
Nothing consumes `liveshare/fork-enforcement` except the spec that watched
it, so the minimal-surface rule drops the declaration, the reporter, and
every report call instead of reserving an extension point for later.
The wiring spec now asserts the outcomes an observer could previously
infer stages from: an install that returns nothing leaves
`ForkRegistry.enforcementInstalled` false and the child's prompt gate
refused with `fork-ceiling-uninstalled`. The subsystem prose no longer
names the removed refusal code, and the Cordis/doc catalogs are
regenerated.
* fix(liveshare): surface fork enforcement failures
Three registration paths swallowed the error behind a fail-closed
refusal. Keep refusing, but carry the reason:
- `preflightForkChild` now throws `fork <id> preflight failed: <message>`
when the stored child cannot be read, instead of returning and letting
activation fail later; `share-host`'s `prepareChild` caller already
propagates that through the viewer's `fork-prepare-failed` answer.
- A child's confined `read`/`write` registration keeps its error in a
`ForkEnforcementFailure`, so `prepareChild` throws
`fork execution limits are unavailable: <message>` with the error as
the cause instead of the bare message.
- Source-session access keeps the refused registration on the
installation and logs it beside the existing confinement refusal.
The wiring spec asserts the preflight failure and both captured errors.
* refactor(liveshare): move the client placeholder face out of this layer
The `./client` entry existed only so the package's Client face could
compile the viewer endpoint classification against the generated Remote
map; it published no runtime this product used. P3b owns the real Client
face, so P3a drops the placeholder instead of shipping a surface ahead of
its consumer:
- delete `src/client/*` and the package's Client tsconfig; the endpoint
spec keeps the Host-table diagnostics, and the Host still derives the
policy action set from that table
- drop `dsh.client`, `exports["./client"]`, the `lib/client.js` publish
entry, the browser tsdown build, and the package path alias
- remove the dependency-policy exemption and the devDependencies only
those client sources imported
- the Host tsdown face still skips the Client build pass; `./typert` and
`./remote` stay Host-generated and the Client tsconfig never fed them
- README and subsystem prose no longer claim a browser face
* chore(ci): drop the stacked-PR e2e dispatch input
The narrow dispatch scope existed only to verify a stack's exact SHA while its
ordinary pull-request checks were unavailable; it is not part of LiveShare and
never belonged in this layer's diff.
* feat(liveshare): add the share dialogs, viewer seats, and client surfaces
The browser half of the bundle: the owner's share dialog and management surfaces, the owner sign-in flow, the viewer page's session plugin, brand, status, and seat components, and the read-only permission and model seats that replace the shipped composer controls at a shadow rank. The package README regains the client implementation links this layer provides.
* test(liveshare): cover the client surfaces and viewer seats
jsdom coverage for the share dialogs, owner login and identity, the viewer page composition, the read-only seats and their shadow rank, the served-page artifacts, and the client-face registration. The host-side suite stays in the lower layer.
* chore(build): ship the Liveshare client bundle
The client compiler face and solution reference, the tsdown client entry beside the host phase, the manifest's client export, client runtime files, locale assets, and client dependencies; the dependency-policy classifications whose consumers appear with the client face; the generated client slot catalog; and the plugin-manager expectations that list the bundle's card.
* fix(liveshare): shadow the shipped brand seats instead of colliding with them
sidebar.brand.mark and sidebar.brand.name are single slots, and a served viewer page mounts the owner's plugins, so on an official build ui-brand-official already registers both at the default rank. Register the viewer entries at a shadow rank and pin the collision in a registration spec, as the composer seats already do.
* fix(liveshare): clear the viewer's composer blocks when its plugin is disposed
The honest-composer effect raised a per-Session block but its disposer only unsubscribed, so a disposed or replaced viewer page left the owner's composer blocked. Track the Sessions it addressed and clear their blocks on disposal; a spec pins the recovery.
* style(liveshare): drop unnecessary type assertions in the registration specs
The slot test runtime's renderSlot already accepts these owner props, so the contracts-ready lint reports the as-never assertions as unnecessary.
* test(web): mark the client layer's LiveShare card experimental
The client layer ships the card that renders the bundle, and the recorded goldens already carry its Experimental badge. Add the bundle to the manager's always-held extension list and to the presentation's experimental set, and expect badge 1 in the plugin-manager spec.
* fix(liveshare-client): return to the share after viewer sign-in
The viewer page names its share in its own query (?shareId=...), so a
sign-in that returned to the bare path brought the reader back to a page
that no longer named their share. Build the Relay sign-in entry from the
page's path and query, and keep the entry's construction in one testable
function.
* fix(liveshare-client): state a half-saved share permission accurately
Saving the share permission writes the session tier first and the plugin
endpoint selection second. When the second write was refused the dialog
claimed the whole save had failed, though the tier and fork switch were
already stored. State which half landed, and re-read the host's record so
the fields show what it kept while the refused endpoint pick stays for the
retry.
* fix(liveshare-client): route viewer copy through the client locale seat
The viewer surfaces translated their own copy from navigator.language, so
a language chosen in Settings could not reach them and a Node boot read the
machine's language instead of the page's. Register the package dictionaries
once, as the client face already does, and take the bound translate seat:
React seats get it from their locale registration, and the plain-DOM status
banner takes it from the plugin and repaints on locale changes.
Also move the viewer status banner's copy and reason helpers to that seat,
and update the viewer specs to provide a LocaleRuntime the way the assembled
viewer page does.
* test(liveshare): assert the two-tier fork ceiling in the viewer artifact
The branched row states the ceiling the host installed: a view-tier
(fork-readonly reads as view) share's child runs under the read-only fork
ceiling, while a write-tier share's child carries the bounded write
ceiling, whose host half readonly-fork-cold-child.spec.ts covers. Read
that statement through the shipped Tooltip's pointer events: after the
rebase it listens to pointerenter/pointerleave, so the previous mouse-event
hover never raised the bubble and the row's statement stayed unread.
* feat(plugins): hide LiveShare until its plugin rows run
A default installation ships the LiveShare package but composes none of
its plugins, so the plugin manager must list it nowhere; enabling it
through the profile's cordis.patch.yml or its bundle selection starts
those rows and only then shows the card under Experimental plugins.
The visibility rule reads the bundle rows' own run state rather than the
profile's bundle selection, because a row inserted through cordis.patch.yml
runs while the bundle stays unselected. The hidden bundle ID stays
addressable, so openBundle still opens its details.
* test(web): assert the hidden LiveShare card across both lists
The plugin-manager scenario now checks that the default profile lists no
LiveShare card in the Experimental plugins group or on the More page, and
that the offered count is one lower than the shipped optional bundles. A
dedicated scaffold writes the bundle's declarations row into the profile
patch, waits for the loader to recompose it with bounded timeouts, and
checks the card joins the list and leaves it again when the row is removed.
* docs(plugins): document LiveShare's default hidden state and enablement
The package README now states that a default installation shows LiveShare
in neither plugin list, and gives both enable routes: inserting the
bundle's two entries in the profile's cordis.patch.yml (placeholders for
the deployment's Relay identity values, with the recomposition caveat), or
selecting the bundle in dsh.profile.bundles. It also states that removing
or disabling the rows takes the card away again. The subsystem page keeps
the rule and links to the README for the exact entries, and the plugin
manager README describes the hidden-until-running list behavior.
This also repairs the README's pre-existing Model Experience mismatch with
its audited indirect classification, which failed the documentation gate
before this change.
* docs(agent-notes): record LiveShare's hidden-until-running rule
Record why the plugin manager keys visibility on the bundle rows' run state
rather than the profile's bundle selection (the cordis.patch.yml route
leaves the bundle unselected while its plugins run), and why the detail
entry by bundle ID survives the hidden card. The rejected alternatives and
the costs of the decision are stated for review.
* test(web): expect the hidden LiveShare card in the configuration scenario
The configuration-page scenario reads the same More list as the plugin
manager, so its offered count is one lower than the installed optional
bundles while LiveShare's declared rows do not run.
* test(web): re-record the plugin goldens without the default LiveShare card
Refresh goldens remove the LiveShare entry from the Experimental plugins
list of both plugin-manager snapshots and from the plugin-configuration
snapshot, and drop the refresh card count from 12 to 11. Re-analysis under
replay confirms both scenarios green.
* fix(liveshare-client): release the viewer page state with its plugin
The viewer context facts, capability, and status stores are module-level so
every viewer surface reads one page's answer, but nothing released them when
the plugin owning the page was disposed or HMR-replaced, so the next mount
inherited the previous page's share facts, tier, and status. The viewer
session plugin now owns that lifetime: it clears the stores when it mounts
and disposes, and advances the read generation so a previous page's in-flight
answer cannot publish into the new page. A spec pins the disposed page and
the inherited state.
* feat(liveshare-client): add the viewer attachment-upload switch
The share carries whether viewers may upload attachments as its own switch,
off by default and independent of the session tier and the fork switch: a
view-tier share may allow uploads and a writable one may refuse them. The
share dialog sets it in both the create and edit flows and submits it with
the permission write; the manager sets it per share beside the fork switch.
A share the Host does not report reads as off. The dialog also states the
tier as the sandbox it runs in, so neither tier is described as carrying
file uploads.
* docs(liveshare): describe the sandbox tiers and the upload switch
The host layer owns the package README statement of the two tier sandboxes
and the upload switch; this layer's documentation adds the subsystem
contract for the switch and the client README's attachment-intake sentence —
file intake follows fileUploads/upload, which a share grants only while its
own switch is on.
* refactor(liveshare-client): drive the owner dialogs through the modal layer and shared primitives
Both owner dialogs ran their own focus trap beside Modal's layer, so initial focus, Tab wrapping, Escape
and focus restoration were each installed twice and could disagree. The hand-written trap is removed;
the shared layer owns the keyboard lifetime, including the dialog's own restore target. The hand-written
returns focus to the opener exactly as before.
The same surfaces also stop inventing their own controls: the session permission and the share lifetime
are SegmentedControl choices like the capability tier, and the independent fork and upload switches are
the shared Switch primitive. Stopping a published share now asks for the shared RiskConfirmation
acknowledgement before the destructive request runs.
* feat(liveshare-client): state the narrowed owner copy and correct the viewer surface
The share manager no longer promises a request-and-approval flow that the protocol dropped: its
description states the online state and access scope it actually shows. Stopping a share is now gated
on acknowledging that the published link stops working immediately.
The viewer status banner keeps its placement inline but takes its colors from the theme tokens with
system-color fallbacks, so the served page stays readable when the client stylesheet never loads. Both
owner dialogs size against the Modal padding box instead of a second viewport calculation, and a long
list title wraps instead of pushing the status out of its row.
A forked branch is stated as a branch, without claiming a read-only workspace the write tier does not
have; the same correction applies to a branch whose sandbox limits failed to install.
* fix(liveshare-client): align the viewer face with the current Client services
The rebased Client surface no longer carries uiConversation.noticeBranchRefusal: a refused branch leaves the view unchanged, so the viewer row consumes the rejection and the refusal-notice tests become containment tests. The plugin manager's bundle lists moved to dsh-official-bundles, so the liveshare bundle joins the centralized experimental and extension lists. Master's sidebar keeps the brand identity out of the accessibility tree when the page cannot start a Session, so the assembled-page test reads the viewer home link from the DOM. The roster gains the file-drag plugin ui-chat and ui-attachment now inject, and the fixture reads the protocol's Client-face carrier from its own project and brands the fabricated reasoning effort.
* refactor(liveshare-client): consume the protocol package's single public entry
The protocol layer now publishes only its root entry; the client tests read the wire and identity contracts from that root. The dependency policy keeps one liveshare entry carrying both the protocol vocabulary and the identity helpers.
* feat(plugin-manager): leave the LiveShare bundle unranked in the extension list
The bundle already stays invisible until one of its patch rows runs, which
keeps ordinary users from encountering it. Removing its ranking entry means an
internal profile that enables it finds the card at the end of the experimental
list instead of pinned to the front; the Experimental badge and the hidden-
until-running card both stay.
* refactor(liveshare-client): drop the attachment-upload switch
The share dialog and share management present only the tier and the fork
switch; attachment upload follows visibility on the Host, so there is
nothing left to toggle. Removes the field from the client share record,
both locale seats, and the dialog tests, and states the new rule in the
viewer README.
* feat(liveshare-client): drive share management through the liveshareShares Remote
The owner dialogs stop posting the twelve management routes and call the
generated namespace instead. The share list, creation, stopping, permission and
endpoint writes, the Relay read and override, the owner identity read, the
audit, and both Relay checks resolve to a RemoteResult, so a refusal is read
from its `liveshareShares/` code instead of an HTTP status. The sign-in round
trip keeps its three same-origin routes.
The package's client entry mounts its own generated contribution and passes the
namespace to the share surfaces through the slot inject face. `dsh.client.inject`
now names `@deepseek-ai/dsh-api-remotes`, and the viewer endpoint table
classifies the twelve management endpoints as owner-only so the Client
completeness gate stays total.
Client specs substitute the namespace with a scripted double instead of stubbing
`fetch`; the assertions read the recorded requests.
* test(liveshare): drive the owner host cases through the Remote service
The host cases no longer register a route map and post JSON to it. They call
`ctx.liveshareShares` directly, which runs the same OwnerShareOperations the
remote Gateway dispatches, so each case keeps its side-effect coverage and
asserts the RemoteError code and details a refusal carries instead of a status
and body.
The ping case is gone with the route: the header action reads `relay()` for the
effective address, which the Relay-state cases already cover. The e2e harness
publishes through `liveshareShares/create` over the owner's own `/api` carrier,
and the sign-in/credential cases keep their same-origin routes.
* refactor(liveshare): remove the owner share-management HTTP routes
The twelve same-origin management routes are gone, together with the thin
adapter layer that existed only for them: the status/body error translation,
the per-route request-body readers, and the capability-selection parser. Every
side effect stays in OwnerShareOperations, which the `liveshareShares` Remote
dispatches.
The four remaining routes are the sign-in and credential ones:
ownerLoginStart, ownerLoginRedeem, ownerLoginCancel, and ownerCredential. The
route-registration case now asserts exactly those.
* docs(liveshare): describe share management as the liveshareShares Remote
The package README (both languages) and the subsystem page now state that the
share list, creation, stopping, permission and endpoint writes, Relay state,
identity, audit, and both Relay checks are `liveshareShares` methods, and that
the sign-in round trip and credential storage are the only same-origin HTTP
routes left. The owner source table points at share-operations.ts and
share-remote.ts for management.
Re-record the README pairing hashes and regenerate the Cordis surface sections,
including the inspect catalog's service description.
* test(liveshare): restore the Client classification gate
P3a dropped the Client-face completeness gate together with its placeholder
face. P3b owns the browser runtime, so the gate returns: the Client program
proves every generated Remote endpoint has a table row, and the spec pins the
compiled export beside the diagnostics the Host also uses.
* chore(build): restore the Liveshare Client compiler face
The rebase onto the Host layer lost the solution reference and the Host
exclude that kept `src/client` out of the Host program. The package now
carries a real browser runtime, so it takes the ordinary Client/Host
dependency treatment instead of the exemption its placeholder face needed.
* docs(liveshare): restore the package's client faces
The subsystem overview names the client faces again now that the browser face
is back, and the translation pairing record is re-recorded.
* test(liveshare): cover the browser surfaces and client readers
The browser half of the package now meets the per-file gate on its own
terms: the viewer request decoder, the share-type readers, the viewer
session selection, and the owner identity readers are pinned by direct
specs, and the seats, brand row, share-path chip, status banner, model
seat, and menu row gain the cases their uncovered branches named.
Two internal simplifications remove branches that no input can reach: the
brand row strips build metadata with one replace instead of a split whose
second operand was unreachable, and the viewer-session subscription no
longer starts behind a placeholder disposer that subscribe can never call.
* test(liveshare): cover the owner host and gateway glue
The host half gains the direct specs its uncovered branches named: the
stored credential file (absent, corrupt, unbound, empty facts, deletion),
the viewer principal comparison, the share Remote's audit delegation, the
registration handshake's plain-socket scheme, the relay refusal status
reader, the JSON body reader, the fork policy's mode helpers and empty
prefix, and the fork guard's unreachable-context refusal. The worker entry
is covered through a mocked worker module, so its boot decision runs
without a spawned process.
The served-page resource answer no longer carries a `string` body: both
call sites hand it bytes, and the string branch could not run.
* test(liveshare): cover owner state, authorization, and the header action
Pins the owner state file's restore and refusal rules against real files
(every optional fact, every invalid record, the owed Relay rows, and a
failed write), the authorization transaction's four bindings and its
single-use state, the declaration surface's stable package order and
repeated withdrawal, and the Session-header action that opens the share
dialog and switches it to management.
The owner state write chain no longer catches a rejection it cannot
observe: the map holds only promises whose failures were already absorbed.
* test(liveshare): close the owner and declaration surface gaps
Pins the authorization URL the browser opens and the production clock and
lifetime a transaction gets when the host passes neither, the declaration
surface's stable package order and repeated withdrawal, the owner state
file's restore and refusal rules against real files, and the Session-header
action's open, manage, and close paths.
The declaration disposer's two optional lookups are annotated instead of
tested: this effect registers each accepted name once, so its own disposer
cannot reach a missing entry, and the effect disposers are idempotent, so a
second withdrawal never re-enters that loop.
* test(liveshare): satisfy the lint and compiler gates in the new specs
The refusal double takes the empty details its code declares, the waits
return nothing instead of a void expression, and the IPC entry reads the
channel through a computed access so the lint rule does not read it as an
unbound method reference.
* test(liveshare): cover the gateway worker and tunnel supervision
* test(liveshare): cover the owner, relay, fork, and viewer host modules
* refactor(liveshare): keep the coverage hooks behavior-preserving
* test(liveshare): fix the typed listener and endpoint fixtures
* test(liveshare): cover the owner login, share manager, and viewer plugin
* test(liveshare): cover the share dialog and host fork wiring
* test(liveshare): satisfy the contract lint in the gateway worker spec
* chore(coverage): drop the liveshare lane exemption
* feat(liveshare): ship the remaining shipped-language dictionaries
The locale parity gate requires every shipped language beside each object-form
dictionary, so the Liveshare browser plugin now carries Japanese, Spanish,
French, German, Russian, and Brazilian Portuguese alongside `zh` and `en`, and
registers all eight.
Each dictionary is typed `Record<keyof typeof zh, string>` so a missing or extra
key fails the build, and named placeholders, slash commands, and API field names
stay verbatim in every language.
* docs(liveshare): document the host config and two exported host contracts
`verify-export-jsdoc` requires prose on every exported declaration: `Config`
states what a deployment sets and why `relayUrl` has no default,
`requestedBoundary` states how a fork request names its prefix and what an
unnamed one becomes, and `OpenStream` states what the reader tracks and when it
releases the stream.
* chore(docs): regenerate the liveshare catalogs and acknowledgement after rebasing
Rebasing the host layer onto current master left the generated artifacts at the
new base's state, because each conflict was resolved to master's side rather
than merged by hand. Recompute them from the rebased tree with the repository
generators: `gen-config-catalog`, `gen-doc-graphs`, `gen-persistence-catalog`,
`gen-client-catalog`, `gen-tool-catalog`, and `verify-persistence-formats
--write`. `gen-module-graph`, `gen-cordis-catalog`, and
`gen-official-bundle-catalog` computed no change.
The LiveShare persistence acknowledgement predated master's later changes to the
four user-message source roots and stored the inventory in a non-canonical
layout, so `verify-persistence-changes` could not read it. Re-record it with
`persistence-changes --update ... --decision same-version`, which chains it onto
master's current tips and rewrites the snapshot, the bilingual declaration, and
their pairing record. Re-record the ui-plugin-manager README pair, whose
LiveShare paragraph now matches on both sides.
* test(liveshare): read attachments by the complete image reference
Current master sends `session/attachment` the complete image reference the
conversation folded from the log and answers with the stored reference plus
bytes, instead of accepting a bare `attachmentId`. The viewer fixture still
read the old field, so every assembled-page image read failed and the
viewer-shell and viewer-global-privacy artifact tests timed out waiting for the
delivered image. Follow the new request field and keep verifying by id against
the Session's log.
* test(liveshare): pass the complete reference in the owner attachment probe
`session/attachment` now takes the complete image reference, so the admission
spec's owner-side probe sends the fixture's reference instead of a bare id.
* fix(liveshare): classify the current Client endpoints for the share-viewer policy
Master added session read/observation endpoints to the Client's Remote map, and
the share-viewer policy's reader role is the only grant they can receive. Name
the six read endpoints in the reader role and in the classification table, keep
the endpoints this Client assembly cannot name out of the table (they stay
owner-only by default), and extend the served-page contract plus an admission
test so a hidden Session is still refused.
* fix(liveshare): await and type the turn-requester projection
Register the fold before publishing the policy and source layer that read
it, surface a refused registration instead of leaving it unobserved,
reset the retained handle when the projection service reloads, and type
the boundary and execution reads from Agent and TurnBoundaryProjection.
* fix(liveshare): withdraw only the fork children a revocation saw
Apply a withdrawal to the entries the registry file holds when it
commits, leave a child recorded afterwards live across restarts, and
retry a failed withdrawal without replaying it over a newer child.
* fix(liveshare): refuse a fork that names no Session
Answer 400 with a named code before dispatch, so a malformed fork body
cannot reach the owner's Gateway unrecorded.
* fix(liveshare): stop injecting a child id into fork requests
SessionForkRequest mints the child id, so the injected field was ignored.
Forward the caller's envelope and rely on the recorded operation for a
retry; document the crash window that needs a caller-supplied child id.
* fix(liveshare): classify and dispatch one normalized path
Use the same pathname plus query for the endpoint decision and the owner
dispatch, and parse with URL.canParse instead of an empty catch.
* docs(liveshare): record the two-tier driving model
Rewrite the implemented note's stale tier, turn-carrier, upload, and
retry facts, add the superseding decision note, and keep the subsystem
page and package READMEs aligned.
* fix(liveshare): publish only the exported type module from lib/types
The package published every tsc-emitted lib/types/**/*.js file, so the client
JavaScript that imports .module.css files entered the tarball without those
stylesheets. Retain only lib/types/share-api-types.js, the one runtime file
the ./types export names, alongside the declaration tree.
Teach the publication allowlist that this package's emitted tree is completed
by its exact runtime file rather than the whole glob, and pin both the accepted
and rejected payloads.
* test(liveshare): mock the generated remote for assembled viewer pages
The assembled viewer specs load the client entry, which statically imports the
generated ./remote contribution. A clean checkout has no lib/ build, and Vite
resolves a static import while transforming the entry, before vi.mock can
answer it, so the jsdom suites failed to import the page roster.
Mock the contribution in each assembly spec, matching the owner-side face
tests, and provide a resolvable test stand-in whenever the artifact is absent.
* fix(liveshare): guard hover styles and draw the viewer banner hairline
Wrap the owner action, dialog actions, and viewer wordmark hover rules in
@media (hover: hover) so touch devices do not latch the hover treatment, and
draw the viewer status banner's neutral border at the 0.5px hairline width.
* refactor(liveshare): name the owner gateway directory
The owner-side Relay connection process is LiveShare's own gateway, not the
Host API gateway; move it to src/owner-gateway so the published entry
lib/owner-gateway/cli.js and the module headers say which gateway they mean.
The protocol vocabulary (frames, tunnel mode) keeps the word gateway.
* docs(liveshare): merge the tier and visibility notes into the owner note
* docs(liveshare): call the Relay the Liveshare server
* docs(liveshare): name the Liveshare server in the share-management JSDoc
* docs(liveshare): document that new shares are organization links
The shipped Share dialog sends neither accessMode nor allowedSubjectIds, so
every share it creates is open. The agent note, both package READMEs, and
CreateShareRequest's JSDoc now say that selected/approval shares are legacy
stored records that keep their ACL and access summary, that the UI has no
creation entry for them, and that the create fields remain for those records
and direct Remote callers.
* refactor(liveshare): drop the configurable owner display name
The reader-facing owner name now always resolves from the Relay-verified
credential: its display name, otherwise the subject label, otherwise the
Relay's host name. Config.ownerDisplayName and the namedOwner dependency
only fed the removed override, so delete both and the test configuration
that set the field.
* docs(liveshare): read the owner name only from the verified credential
Remove the LIVESHARE_OWNER_NAME row and its cordis patch mapping, and say
in both READMEs that a reader-facing share name comes from the
Relay-verified credential rather than local configuration. The
LIVESHARE_OWNER_DISPLAY_NAME legacy identity label stays.
* feat(liveshare): save the relay address from the share dialog
The public address is the owner's runtime choice, not deployment configuration:
the host loads without one, the dialog saves it into the owner state, and new
shares publish there until the owner saves another or clears it. A host with no
saved address contacts no server and its sharing surfaces state that.
* docs(liveshare): describe the address saved in the share dialog
The README, subsystem page, generated API reference, and their bilingual
pairing now state the dialog-owned address and the no-address host state.
* refactor(liveshare): sandbox a shared session instead of attributing turns
Retire per-turn origin isolation: delete the turn-requester fold, the
turn-boundary derivation, and every per-turn verdict, and make the source
access layer a session-level sandbox.
While any share over a Session is active the layer's guard permits only the
confined read it mounted (plus the bounded write when some share may write);
every turn of that Session, the owner's own included, runs through them and
nothing else. The layer is released once no active share is left, which
restores the Session's own tools, and the read-only layer is re-installed
when the last write share narrows to view. Each operation re-reads the
shares' current Relay grants and checks the resolved target against the
granted root.
A viewer's session/cancel now travels the standard Gateway dispatch under
the source-write role instead of a host-side ownership comparison, and a
share that stops, expires, or loses admission stops whatever turn its
Session is running.
Behavior changes:
- The owner is confined too: while a share is active the owner's own turns
can only use the confined read (and bounded write), and the full tool set
returns when every share stops or expires.
- Cancellation has no attribution: a viewer's stop cancels the shared
Session's running turn, including one the owner started.
* test(liveshare): exercise the session sandbox and gateway cancel dispatch
Delete the specs that asserted per-turn attribution (turn-requester, source
cancel ownership, source execution turn, source turn revocation) and the test
fixtures only they used. Cover the behavior that replaced them: every turn of
a shared Session is confined while the layer is mounted, the layer is released
when no share is left, a write-to-view narrowing re-installs the read-only
layer, a share ending stops the running turn, and a viewer's cancel and prompt
both travel the standard Gateway dispatch as the reader's Peer.
The pre-step admission test now covers the messages' own principals, and the
projection double is gone with the projection it stood in for.
* docs(liveshare): document the session sandbox and retiring turn origin isolation
Update the package READMEs, the LiveShare subsystem, the share-viewer
principal persistence record, and the merged Agent Note: remove the
turn-requester fold, turn-boundary derivation, pinned source cancel, and
per-turn origin prose, and state the shipped facts instead — a Session-level
sandbox that also confines the owner while a share is active, a standard
Gateway cancel with no ownership comparison, and the pre-step admission check
as the principal's only consumer. Re-record the bilingual pairing records.
* refactor(liveshare): extract share dialog relay and identity hooks
Move the Relay address read/save/draft state and its connectivity and
permission checks into useShareRelayAddress, and the owner identity read
plus the one sign-in attempt into useOwnerIdentityLogin. ShareDialog
keeps the step guide and passes the identity facts saving an address
needs, so neither hook reaches into the other.
* refactor(liveshare): extract the share dialog create form
Move the session permission, fork switch, lifetime, and the create
action into useShareCreateForm and ShareCreateForm. The dialog keeps the
link, error, and created-record adoption it already owned, and the
shared choice builders live in share-options so the edit panel can use
the same session-mode list.
* refactor(liveshare): extract the share edit panel and tier picker
Move the stored share's permission, fork switch, endpoint tier, and the
one save into useShareEdit and ShareEditPanel, with the tier expansion and
summary in ShareCapabilitiesPicker. ShareDialog now composes the relay,
identity, create, and edit hooks and keeps only the link, advanced help,
and close/manage surface.
* fix(liveshare): take share dialog hook options as named parameters
The exported hooks documented an `options` parameter while destructuring it
in their signatures, so their JSDoc could not name the binding.
* chore(docs): regenerate graphs, catalogs, and pairing after rebasing on master
The rebase merged this branch's liveshare entries with master's forge entries;
the generated English sources and their bilingual pairing records now reflect
both.
* feat(liveshare): open the shared read and write tool surface
The source-session sandbox and each fork child's limit now admit one shared surface: read, read_image, glob, grep, present, todo_write, skill, web_search, and web_fetch at the view tier, plus edit and write at the write tier.
Every path a call declares is resolved and checked against the granted root before the deployment tool receives its canonical form; a pathless search uses the Session's working directory. Tools with no local file effect keep the deployment's own definition, which the guard vouches for by identity. Everything else, including bash, pwsh, cua, the plugin manager, and the schedule tools, stays refused.
* test(liveshare): cover the shared tool surface
Drive the view and write surfaces through the source sandbox and a fork child's limit: canonical paths, symlink and relative escapes, pathless searches, deliveries, the no-effect tools, both mutation tools, and every capability the surface does not name. Registration counts in the host wiring now read the shared table instead of one confined read.
* docs(liveshare): describe the shared tool surface
The package README, the subsystem reference, and the owner note now state the admitted tools per tier, how each declared path is checked, and that the no-effect tools keep the deployment's definition. Re-record the bilingual pairing and the generated event graph for the new fs/edit-intent consumer.
* feat(liveshare): confine viewer turns and admit PTC run_code
Owner turns of a shared Session keep the deployment's native tool chain. The
source layer now decides per turn, from the admitted input's share-viewer
principals, whether the turn is confined; agent/pre-step records that answer
in Host memory only, and the guard plus every confined replacement read it.
A turn the owner starts runs the deployment's tools unchanged, an owner's
steering input inside a viewer's turn stays confined, and stopping every
share still disposes the layer.
Both tiers also admit the PTC transport run_code. A non-empty
sandbox_permissions is refused; every nested tools.* call is a separate
execution through the same guard and confined replacements, so tools.bash
stays refused and read/edit/glob/grep keep their grantedRoot checks. Before
the runtime starts a program, run_code dispatches the new sandbox/policy
waterfall with the Session-resolved policy; the source layer caps it to the
share tier (read-only for view, workspace-write at most for write, never
danger-full-access) and drops the deployment's extra writable roots. A fork
child's installation applies the same cap from its live tier.
Verification: pnpm run typecheck, oxlint on the changed files, and the
focused liveshare specs for the turn marker, owner/viewer turns, run_code
admission and nested calls, and the policy caps. Local commits only; not
pushed.
* refactor(liveshare): drop the uncommitted-prefix fork state
The host never reads the source Session log, so it cannot know a completed
sequence. The forking command validates the requested boundary against its own
committed history instead, which makes the local boundary refusal unreachable.
* feat(ui-chat): export the official user renderer and shared-session copy
* feat(liveshare): mark shared-session reader messages through the chat node seat
* test(liveshare): cover shared-session attribution and the reused chat node seat
* fix(liveshare): leave steering rows to Chat
Only the message that opens a conversation carries the reader attribution;
steering is a turn-internal insertion, so its official Chat cell is untouched.
The wrapper now shadows the user cell alone.
* feat(plugin-manager): hide default bundles through their manifest
The LiveShare bundle now declares `dsh.bundle.listedByDefault: false` and the
page applies one manifest rule to every bundle: a default-hidden bundle is
listed only when the profile enables it, the installation carries it selected,
or one of its declared rows runs. The client-side name set and its special
details-by-id fallback are gone.
* docs(sandbox): document the per-program sandbox policy extension
The new `sandbox/policy` waterfall owns one event scope, the generated event
graph and subsystem reference now list it, and the catalog classifies its
payload type.
* chore(docs): regenerate the graphs and pairing after rebasing on master
The rebased branch now shares master's forge and sandbox service entries; the
generated English graphs and their Chinese counterparts are re-recorded.
* test(web): keep the plugin lists contiguous around the LiveShare card
The recorded accessible tree has no blank line between the last experimental
card and the installed-plugins heading.
* test(typert): expect the PTC sandbox policy event in the executor catalog
The new waterfall is part of the executor's model events.
* fix(liveshare): name the PTC transport without the unclassified tools export
The dependency policy does not classify @deepseek-ai/dsh-tools' RUN_CODE_NAME
as a safe host export. Liveshare now owns the reserved name locally, pinned to
the canonical constant by its test suite.
* fix(liveshare): close the coverage gaps in the owner-turn and PTC paths
The asynchronous policy resolver is covered by the executor tests; the
share-host guard covers unattributable executions and same-turn narrowing;
the owner's edit path exercises the native pass-through.
* test(web): align plugin goldens with the manifest visibility rule
The default profile no longer lists LiveShare before its rows run, the refresh
count includes the forge bundle master added, and the creation recommendation
skill catalog records the new bundle entry.
* fix(ptc): keep the disposed check lint-clean after policy resolution
The narrowed property read became an always-false conditional; the helper
method keeps the runtime check without the narrowing.
* test(liveshare): cover a relay probe stopped by host disposal
The probe checks the disposed flag after its fetch; a disposal landing during the
request now exercises that early return.
* fix(liveshare): encode identifiers without the base64url Buffer name
Packed worker deployments run a Buffer polyfill that only names standard
base64; the new helper produces the same unpadded base64url text from it. The
packed preview's generic bundle toggles skip the declaration-first Liveshare
bundle, which the ordinary Web scaffold covers.
* test(liveshare): build worker command fixtures from real file URLs
`file:///pkg/...` has no drive letter, so Windows `fileURLToPath` refuses it;
the launch-command test now derives both fixtures with pathToFileURL.
* feat(ui-chat): offer a user-origin seat above user rows
Chat now declares a session-scoped `conversation.chat.user.origin` list seat and passes the flow's renderer to the official user row through `ChatNodeOwnerProps.renderUserOrigin`. The flow supplies the callback only while the seat has an entry, and the official renderer calls it for `user` nodes alone, so steering keeps its DOM. Entries receive the durable message source and own their markup and copy; ui-chat ships none, and its shared-session dictionary entry moves back to the feature that writes it.
* feat(liveshare): attribute shared-session messages through Chat's origin seat
The client registers one `conversation.chat.user.origin` list entry on both faces instead of shadowing Chat's user node renderer. The component recognizes the durable share-viewer principal and states the Relay-asserted subject from the package's own `inputOrigin.sharedSession` copy in all eight dictionaries; owner-authored, malformed, and steering rows render nothing. The ui-chat runtime external and its client-inject edge are gone: the remaining ui-chat import is type-only, and `slots.inject` makes the registration independent of declaration order.
* chore(client): record the user-origin seat in the slot catalog
Regenerate the model-facing client slot catalog for `conversation.chat.user.origin`: the new list seat, its owner props, its declaring flow entry, and the Liveshare occupant. The subsystem slot tree follows the same declaration.
* chore(liveshare): publish the types entry as declarations only
`./types` no longer declares a runtime target into the tsc-emitted tree, so the
package no longer publishes `lib/types/share-api-types.js` and the workspace
constraint check no longer needs a package-name exception.
* docs(ui-chat): name the message-source decoration
The prose uses the exact field it decorates instead of the abstract term the
repository's concrete-terms gate rejects.
* fix(liveshare): classify master's tool-results stream after rebasing
Master added the `toolResults/watch` Remote endpoint and bumped the workspace to
0.2.1-rc.4; the viewer endpoint table and the read role now cover the stream,
and the package version follows the root.
* refactor(ptc): keep sandbox policy dispatch synchronous
The policy cap is a pure, cheap computation, so the waterfall should not force
every confined program through an await before the call is registered. The
event now returns the policy directly: no admission window between reading the
mode and registering the call, no async mode resolver, and no fallback branch
in PtcCalls. The event can still be dispatched twice for one Agent-owned
program; its contract names the synchronous, idempotent listener requirement
and tests lock both dispatch counts.
* docs(ptc): state the synchronous sandbox-policy contract
The README now names the synchronous waterfall and the two policy resolutions
an Agent-owned program performs, so readers know listeners must be synchronous,
pure, idempotent, and return the same cap each time.
* fix(liveshare): let the declaration entry win the fallback race
A live bundle activation can start the share host before the separate
declaration entry's service is visible in the host context. The host now gives
that entry one task turn before providing its own fallback surface, so both
rows no longer register `liveshareViewerDeclarations` twice.
* chore(liveshare): drop the now-unused require-await suppression
The deferred fallback makes apply genuinely await, so the file no longer needs
the suppression it carried for a synchronous throw.
* fix(liveshare): read the owner Remote namespace after mounting it
The client face accessed `remote.liveshareShares` on its own context before
that namespace existed, which the Remote carrier refuses without an inject
entry. The header action now registers inside a child scope injected after the
carrier mounts, and the face tests provide the mounted namespace.
* feat(liveshare): simplify the owner share dialog
Saving the relay address now checks it in the same action, and the numbered
step guide is gone. Sign-in is a single control above the share settings, and
every setting below it stays disabled until the owner signs in. Fork wording
and the read-only permission hint now state the actual permissions.
* feat(liveshare): save the relay address on blur
The address field no longer needs a Save button: leaving the field (or pressing
Enter) stores it and probes the address it put in force. Chinese copy now uses
观看者 consistently instead of mixing viewer and 观看者.
* chore(ptc): restore the run signature formatting
The synchronous policy refactor left only a line-wrap difference in this file;
the signature returns to its original one-line form.
* feat(liveshare): configure plugin sharing when creating a share
The create form now carries the same share-wide plugin-endpoint tier as the
stored-share editor and writes it immediately after the host creates the
share. The Advanced disclosure only renders for an existing share, where it
has stored-share details to show.
* fix(liveshare): show the owner name on shared-message attribution
The durable source names the reader by subject id, so the line showed the opaque
id even when the reader was the owner. The client now remembers the verified
owner identity it reads on mount, and the attribution uses that display name for
the matching subject while keeping the persisted id for every other reader.
* feat(liveshare): use the viewer's Relay name in shared-message attribution
The viewer context already carries the reader's own display name; reading it
lets a viewer's messages show their name instead of the opaque subject id,
while a reader with no reported name keeps the durable id.
* feat(liveshare): persist the viewer display name in message attribution
The Relay asserts a display name for the viewer it forwards. Copying that name
into the durable share-viewer principal lets the owner and every reader show
who sent a message, instead of only the current reader or an opaque subject id.
The name is attribution data only and stays out of authorization and model
requests; old logs and readers without it keep showing the subject id.
* feat(liveshare): share the permission fields between create and edit
Creating and managing a share now render the same session permission, fork
switch, and plugin-endpoint fields, and the stored-share view states its
lifetime and link scope inline instead of behind an empty Advanced disclosure.
The first version publishes only the never-expiring lifetime.
* feat(liveshare): edit a share lifetime and link scope after creation
`updatePermissions` now accepts a new deadline (null means never) and the
open/selected link scope. The shared permission fields expose both while
creating and editing; an existing share can be switched to the open link or
cleared back to never, and selected shares accept provider subject ids.
LiveShare prose now calls every fork product a 分叉会话.
* test(liveshare): remove duplicate lint suppression
* fix(liveshare): keep row labels on one line
* fix(liveshare): clear the static catalog and unknown-cast gates
The owner-display test no longer casts through unknown, and the generated
Cordis runtime catalog now includes the extended permission request type.
* test(liveshare): cover the unchanged update and subject-order branches
* test(liveshare): cover the unchanged restored-access branch
* fix(liveshare): re-probe a stale owner credential
* refactor(liveshare): remove the unfinished selected-colleague scope
The share dialog no longer offers or edits a selected-colleague link scope;
new shares use the organization link and stored legacy scopes stay read-only.
The create form's lifetime is the single never-expiring row, and the host
identity read re-probes a stale credential.
* feat(liveshare): simplify the share manager and add plugin sharing
The global manager now lists Session titles and opens the matching Session's
share dialog, which names the Session it edits and exposes one plugin-sharing
switch. Shares can still be listed without any plugin declaring endpoints, and
the switch states that absence.
* fix(liveshare): open the selected share from the manager
The manager's Manage action now opens that Session's share dialog directly,
and binds workspace navigation when the page has it. The rows use one grid so
titles, online state, and actions line up, and the footer offers Cancel next to
Done.
* refactor(liveshare): elect shared-session attribution through a chain seat
Chat now declares `conversation.chat.user.before` as a chain seat whose owner
props carry the durable source and row kind. Liveshare's selector elects only
share-viewer user rows, so the component no longer probes or returns null, and
the official user row stays unchanged. The manager aligns its columns, adds a
per-share cancellation action, and no longer offers a footer cancel that meant
the window rather than a share.
* refactor(liveshare): drop PTC sharing from this change
The share surface now admits only the native read/write tools. PTC
run_code admission, its sandbox-policy cap, and the executor-side policy
extension move to a separate change, so this PR keeps non-PTC sharing focused.
Core PTC files, sandbox docs, and generated catalogs return to master.
* docs(liveshare): fold the viewer display name into the principal record
The optional displayName is part of the share-viewer principal, so its
persistence acknowledgement now lives in the 2026-10-13 principal record
instead of a separate 2026-10-27 record.
* refactor(liveshare): render user attribution through its own chain slot
* refactor(liveshare): keep one user message renderer for the attribution seat
* refactor(liveshare): render the attribution seat inside the user bubble
* docs(liveshare): regenerate the event graph pages
* test(liveshare): close the endpoint control coverage gaps
Cover the endpoint tier control's empty-offer return and drop the unused expiry choice list.
* chore(docs): regenerate the persistence catalogs after rebasing onto master
* chore(liveshare): carry the 0.2.2-alpha.1 release version
354 KiB
Session Persistence Event Catalog
Every repository-declared durable Session event appears here with its source declaration and resolved types. The catalog covers the logical and physical headers, event envelopes, and every SessionEventMap declaration merge. See Session for replay and persistence for storage.
Experimental records appear in the separate experimental plugin record catalog.
Run pnpm run gen-persistence-catalog to regenerate both catalog languages, their pairing record, the known-event module, and the machine schema inventory. pnpm run verify-persistence-catalog checks all generated files. Declaration fences preserve source JSDoc and type references; resolved definitions expose their transitive structure.
The envelope carries type, seq, time, data, optional ignorable, and conditional surfaceOp / sourceEventSeqs. A surface event produces model history; a log-only event does not. The inventory covers this repository; external plugin types require their own declarations and are outside this catalog.
Persistence type fingerprints
The machine inventory contains every reachable normalized type and its SHA-256 digest. Root digests include referenced types. Comments, source locations, alias names, erased brands, readonly markers, and harmless field, union, or intersection reordering do not affect these fingerprints. Tuple order, property names, value types, and optionality do. Catalog text and source locations can still produce a diff when digests stay unchanged.
The format references cover every historical Session format. The change records acknowledge exact transitions using snapshots kept in this tree. Follow the review workflow to classify a change and record it. These checks cover declared type structure; opaque payload contents and behavior without type changes are outside their scope.
| Root | Kind | SHA-256 | Resolved type |
|---|---|---|---|
SessionHeader |
header | 1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445 |
SessionHeader |
JsonlHeaderLine |
header | 18ee62b8900a4c3d046700f05d7a4d49d6cab2a660a020c87481d1603dd8bd4f |
HeaderLine |
SessionEventEnvelope |
envelope | 5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc |
union (3 variants) |
event:agent-preset/selected |
event | a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b |
{ type: "agent-preset/selected" } |
event:agent/inbox/spliced |
event | cdf988172b589b230f2bce868489def1bb575eb0501076ac757a8f369ac5c64e |
{ type: "agent/inbox/spliced" } |
event:approval/asked |
event | 3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1 |
{ type: "approval/asked" } |
event:approval/decided |
event | bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3 |
{ type: "approval/decided" } |
event:approval/policy |
event | 26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78 |
{ type: "approval/policy" } |
event:assistant/attempt |
event | 15d5dfdd822aa35e115afd74a8982825a493880457774e6850bc1520b50875e4 |
{ type: "assistant/attempt" } |
event:assistant/message |
event | 1033093edd0db80ff410e00830b523405e00bb0c7684948e531ff65095799625 |
{ type: "assistant/message" } |
event:command/done |
event | 15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff |
{ type: "command/done" } |
event:command/run |
event | 37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006 |
{ type: "command/run" } |
event:compaction/end |
event | b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d |
{ type: "compaction/end" } |
event:compaction/prune |
event | 7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04 |
{ type: "compaction/prune" } |
event:compaction/start |
event | db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965 |
{ type: "compaction/start" } |
event:compaction/summary |
event | e2f9a41e0989f54ed8cee80f8db2bcf9d60a5c810dc9d45b83fa050b9dce7602 |
{ type: "compaction/summary" } |
event:deliverables/presented |
event | 13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176 |
{ type: "deliverables/presented" } |
event:developer/message |
event | 70d2acdec1ebcfea56d02f7233ebb9ec0f7f494447fb952884c22c3afdc01d6f |
{ type: "developer/message" } |
event:feedback/message-delete |
event | 3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796 |
{ type: "feedback/message-delete" } |
event:feedback/message-put |
event | b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf |
{ type: "feedback/message-put" } |
event:feedback/record |
event | b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8 |
{ type: "feedback/record" } |
event:goal/change |
event | 763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d |
{ type: "goal/change" } |
event:hook/invoked |
event | 8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0 |
{ type: "hook/invoked" } |
event:hook/result |
event | e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4 |
{ type: "hook/result" } |
event:image/offload |
event | b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e |
{ type: "image/offload" } |
event:job/registered |
event | f5520c1d261ca86ea03735799c311a0a9ede8babb588cf0a65422576d2ee0ad1 |
{ type: "job/registered" } |
event:job/settled |
event | edd37b1e4974af648633014435572089b1e8fb71910468a0767a7e28fdd22abf |
{ type: "job/settled" } |
event:llm/retry |
event | 525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336 |
{ type: "llm/retry" } |
event:llm/retry-started |
event | 48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3 |
{ type: "llm/retry-started" } |
event:model/selection |
event | 35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc |
{ type: "model/selection" } |
event:permission/preset |
event | 5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b |
{ type: "permission/preset" } |
event:plan/mode |
event | a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f |
{ type: "plan/mode" } |
event:request/context |
event | 37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf |
{ type: "request/context" } |
event:request/header |
event | 4208123b50df5006b181481ab45fcf1cde807b88d3fd4d340090bc2e202fac41 |
{ type: "request/header" } |
event:sandbox/mode |
event | 516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415 |
{ type: "sandbox/mode" } |
event:schedule/change |
event | a0a2e5c42e1c929445ecd1cd70f49be6b66441894ec72c08e8ae332821d4a3cb |
{ type: "schedule/change" } |
event:session-log-deepseek/delivery-accepted |
event | d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9 |
{ type: "session-log-deepseek/delivery-accepted" } |
event:session/end-seed |
event | 5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e |
{ type: "session/end-seed" } |
event:session/title |
event | 1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5 |
{ type: "session/title" } |
event:session/title-llm-request |
event | 2e505098f9209e52eebd577f1a6f9d4e773ec4d78987aff28a7c786442b9f54c |
{ type: "session/title-llm-request" } |
event:step/end |
event | e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05 |
{ type: "step/end" } |
event:step/start |
event | 4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986 |
{ type: "step/start" } |
event:subagent/catalog |
event | 53750b9abf61efb7992b0aadc3e247ec927449c63266df28230fd1139f5590ac |
{ type: "subagent/catalog" } |
event:subagent/descriptor |
event | b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5 |
{ type: "subagent/descriptor" } |
event:subagent/model-selection-policy |
event | a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc |
{ type: "subagent/model-selection-policy" } |
event:system/message |
event | 69081694be231d56fd9580ba14645fd5e35373202605d5c5c841a9435b5fa3b1 |
{ type: "system/message" } |
event:team/member |
event | 4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc |
{ type: "team/member" } |
event:team/message/delivered |
event | 48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb |
{ type: "team/message/delivered" } |
event:team/message/queued |
event | 21fb6a90d5068f6a0003b7ab316ed2f56342477146a65c00db0f13c4d8df667d |
{ type: "team/message/queued" } |
event:team/task |
event | d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a |
{ type: "team/task" } |
event:todo/write |
event | b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26 |
{ type: "todo/write" } |
event:tool-workflow/agent-end |
event | babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7 |
{ type: "tool-workflow/agent-end" } |
event:tool-workflow/agent-start |
event | 5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627 |
{ type: "tool-workflow/agent-start" } |
event:tool-workflow/run-end |
event | 42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f |
{ type: "tool-workflow/run-end" } |
event:tool-workflow/run-start |
event | c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058 |
{ type: "tool-workflow/run-start" } |
event:tool/call |
event | 3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48 |
{ type: "tool/call" } |
event:tool/ptc-dispatch |
event | d66e11dddf5dfa3c71547e2cbd7b0608824cd8d6243fc16f532017ff28e8fba5 |
{ type: "tool/ptc-dispatch" } |
event:tool/ptc-dispatch-start |
event | ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93 |
{ type: "tool/ptc-dispatch-start" } |
event:tool/result |
event | 7c9f44e90a0058f4cc532ae20dad0c10afa6eba22e70a6c79fc79490bad64397 |
{ type: "tool/result" } |
event:turn/end |
event | 0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce |
{ type: "turn/end" } |
event:turn/start |
event | aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8 |
{ type: "turn/start" } |
event:user/message |
event | 5bb231bc5afdb532a6898a20604e76bf0c1db438bfcdc17d4847dceaddc02451 |
{ type: "user/message" } |
event:web/deepseek-search-llm-request |
event | 0c556c9b9f2a96238a6b9bbb99e748206cbff2ed6203041c9571f04ae5802f52 |
{ type: "web/deepseek-search-llm-request" } |
event:working-directory/change |
event | 124aa62078ca3311353b39cc3bf6c75da281338be6bbf672f8b361d828cddca3 |
{ type: "working-directory/change" } |
event:workspace/changes |
event | e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72 |
{ type: "workspace/changes" } |
Event envelope
/** The appendable event-type keys of {@link SessionEventMap}, plugin-merged extensions included. */
export type SessionEventType = keyof SessionEventMap
/**
* The subset of {@link SessionEventType} values whose events produce LLM
* messages and are eligible to appear on the ordered surface. Only these
* event types may carry {@link SurfaceOp}; system, user, and tool events may also cite
* earlier sources through {@link SessionEvent.sourceEventSeqs}.
*/
export type SurfaceEventType =
| 'system/message'
| 'developer/message'
| 'user/message'
| 'assistant/message'
| 'tool/result'
/**
* How a session event entered the ordered surface. Only valid on
* {@link SurfaceEventType} events.
*
* - `'append'`: added to the tail — normal path for user/assistant/tool
* messages.
* - `{ op: 'replace', startSeq, endSeq }`: replaces surface nodes from `startSeq`
* (inclusive) through `endSeq` (inclusive) with this node. Both must exist as
* surface nodes in the current surface. `startSeq === endSeq` replaces a single
* node. The node's {@link SessionEvent.sourceEventSeqs} must include every
* shadowed surface node. Used by compaction; any surface-replacing producer
* may use it.
*/
export type SurfaceOp =
| 'append'
| { op: 'replace'; startSeq: SessionSeq; endSeq: SessionSeq }
/**
* One immutable entry in the session log.
*
* A proper discriminated union over `type` (not independent `type`/`data`
* unions), so `switch (event.type)` narrows `event.data` without casts.
*
* The {@link sourceEventSeqs} and {@link surfaceOp} fields are conditional:
* they only exist on {@link SurfaceEventType} variants (`system/message`, `user/message`,
* `assistant/message`, `tool/result`).
* Non-surface events (boundary markers, attempts, errors) never carry
* surface metadata — the compiler enforces this at `Session.append()`
* call sites.
*/
export type SessionEvent<T extends SessionEventType = SessionEventType> = {
[K in SessionEventType]: {
type: K
/** Monotonic sequence number within the session. */
seq: SessionSeq
/** Unix epoch milliseconds. */
time: number
data: SessionEventMap[K]
/**
* Marks an event a reader may safely skip when it does not recognize
* `type`. Absent means required: a reader meeting an unrecognized type
* without this marker MUST refuse to reconstruct the session instead of
* silently dropping the event, because an unrecognized required event may
* change how the rest of the log is interpreted. A writer sets `true` only
* on purely informational records whose loss cannot affect reconstruction;
* defaulting to required means a forgotten marker over-refuses (an
* inconvenience) rather than silently resuming a gutted session.
*/
ignorable?: true
} & (K extends SurfaceEventType ? SurfaceIntent<K> : {
surfaceOp?: never
sourceEventSeqs?: never
})
}[T]
Sources: packages/core/session/src/types.ts:439 · packages/core/session/src/types.ts:447 · packages/core/session/src/types.ts:470 · packages/core/session/src/types.ts:501
Events
agent/*
agent/inbox/spliced — log-only
/**
* One normalized mutation of an agent's durable pending-message lists.
* The session-projection registry applies the committed event before
* `Session.append()` returns; Inbox live notifications follow that commit.
*/
'agent/inbox/spliced': {
target: InboxTarget
start: number
removedCount?: number
inserted: UserMessage[]
outcome?: 'canceled'
}
Source: packages/core/agent/src/types.ts:110
agent-preset/*
agent-preset/selected — log-only
/**
* The session's agent preset was chosen after creation, while the session
* was still blank. Log-only: it records the composition later turns ran
* under, so a resumed or forked session rebuilds the same one instead of
* the header's creation-time value. In a child Session, an occurrence
* before its first own `subagent/descriptor` marks an independent spawn
* selection that cold resume restores instead of joining the parent's
* composition (`dsh-subagent` README, "Restoring child composition").
*/
'agent-preset/selected': { agentPreset: string }
Source: packages/preset/agent-preset-registry/src/session.ts:31
approval/*
approval/asked — log-only
/**
* An approval question was put to the answerer chain — log-only audit
* (like `hook/*`; NOT a surface event, carries no `surfaceOp`). `id` pairs
* it with the `approval/decided` that always follows; `toolName` is the
* tool the question is about, `callId` the exact tool call when the asker
* had one, `reason` the asker's human-readable explanation (e.g. a hook's
* permission-decision reason).
*/
'approval/asked': {
id: ApprovalRequestId
toolName: string
callId?: ToolCallId
reason?: string
}
Types: ToolCallId
Source: packages/interaction/user-approval/src/types.ts:44
approval/decided — log-only
/**
* The outcome of a prior `approval/asked` (same `id`) — log-only audit.
* Exactly one per ask, appended when the outcome is known: a decision, a
* cancellation, or the fail-closed `'unavailable'`.
*/
'approval/decided': {
id: ApprovalRequestId
outcome: ApprovalOutcome
}
Source: packages/interaction/user-approval/src/types.ts:55
approval/policy — log-only
/**
* The session's approval policy was switched — log-only, durable,
* replayable, never in the model transcript (the model learns the policy
* from the runtime-context snapshot and live switch notices). The LAST
* such event is the session's override.
* `source: 'delegation'` marks an override seeded into a child; an absent
* source is a runtime switch.
*/
'approval/policy': {
policy: ApprovalPolicy
/** Marks an override seeded into a child at delegation. */
source?: 'delegation'
}
Source: packages/interaction/user-approval/src/index.ts:41
assistant/*
assistant/attempt — log-only
/**
* One model attempt that committed no surface message. The embedded stream
* preserves a failed, retried, cancelled, or stream-error attempt that
* reached settlement without fabricating model-visible history.
*/
'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[] }
Source: packages/core/session/src/types.ts:363
assistant/message — surface
/**
* Assembled assistant message for one step (derived history uses this).
* Carries the step's `usage` when the adapter reported token accounting, so
* the model output and its accounting travel together (there is no separate
* usage record). `usage` is absent when the adapter reported none. A turn
* cancelled mid-stream finalizes its delivered text/reasoning prefix as this
* event with `interrupted: true`; undispatched tool calls are absent. The
* marker distinguishes that prefix without re-deriving interruption from turn
* boundaries. An aborted turn with no such event streamed no visible content.
*/
'assistant/message': {
turn: number
step: number
message: AssistantMessage
/** Exact timed model stream, compacted without joining delta boundaries. */
stream: AssistantStreamRecord[]
usage?: TokenUsage
interrupted?: true
}
Types: TokenUsage
Source: packages/core/session/src/types.ts:349
command/*
command/done — log-only
/**
* The paired command settled. `kind`/`text` carry the handler's verbatim
* outcome (a thrown/aborted handler settles as `kind: 'error'` with the
* rendered failure). A successful command may identify the earlier
* authoritative domain event for a richer client-computed presentation.
*/
'command/done': {
commandId: CommandId
kind: 'success' | 'error'
text?: string
sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq
}
Source: packages/interaction/commands/src/types.ts:112
command/run — log-only
/**
* A resolved slash command entered its handler. Log-only (never model
* surface); paired with `command/done` by `commandId`, mirroring the
* `tool/call`↔`tool/result` pairing. The payload is structured — `name`
* and `args` are `parseCommand`'s own split (name and verbatim rawInput,
* separator whitespace included), so a consumer (a projection unit
* folding its own command records, a rich command card) never re-parses
* a line. `args` is absent when the definition sets `recordInput: false`
* because an authoritative domain event owns the input payload.
*/
'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource }
Source: packages/interaction/commands/src/types.ts:105
compaction/*
compaction/end — log-only
/**
* Marks the end of a compaction — log-only, releases the lock. Its owner
* matches `compaction/start`; `error` records an unsuccessful attempt.
*/
'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string }
Source: packages/compaction/compaction/src/types.ts:72
compaction/prune — log-only
/**
* Shadow price of one model-free prune replacement — log-only, no
* surfaceOp. The shared shadow-price protocol: a surface `replace` event
* is priced by the metering event immediately before it (`compaction/summary`
* for a summarizing compaction, this event for a prune), which states the
* heuristic token price of the exact replaced range so a pure consumer
* can subtract it without retaining per-node prices. The replacement MUST
* be appended synchronously right after this event.
*/
'compaction/prune': {
/** The replaced range's first and last surface-node seqs (a surface-position span, like {@link CompactionResult.shadowedRange}). */
shadowedRange: { start: SessionSeq; end: SessionSeq }
/** The seqs of all shadowed surface nodes, in surface order. */
shadowedSeqs: SessionSeq[]
/** Heuristic price of the shadowed content under the token-meter's fixed estimator. */
shadowedTokenCount: number
}
Source: packages/compaction/compaction/src/types.ts:82
compaction/start — log-only
/**
* Marks the start of a compaction — log-only, holds the lock until
* `compaction/end`. A numbered owner is strictly enclosed by that open turn;
* `null` identifies a standalone manual transaction between turns.
*/
'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null }
Source: packages/compaction/compaction/src/types.ts:24
compaction/summary — log-only
/**
* Completed summary, its inputs, and its model call facts — log-only, no surfaceOp.
* The summary content is in `data.summary`; the actual surface replacement
* is performed by the immediately following `user/message` event that
* shadows the compacted range. That adjacency is contractual — the
* shadowed pricing fields are the replacement's shadow price, so a
* consumer may pair a replacement with the metering event directly
* before it (`compaction/prune` documents the shared protocol).
*/
'compaction/summary': {
compactionId: CompactionId
sourceCommandId?: CommandId
summary: ContentBlock[]
shadowedRange: { start: SessionSeq; end: SessionSeq }
shadowedSeqs: SessionSeq[]
shadowedTokenCount: number
/** The provider route that wrote the summary. */
provider: string
/**
* The model that wrote the summary — the summarize call's envelope,
* reported by the backend that made the call, logged so the one-shot
* request is reconstructable from log + code and "which model wrote
* this summary" has a durable answer (the reconstructability Agent Note).
*/
model: string
/** The generation cap the summarize call sent, when one applied. */
maxTokens?: number
/** Provider-reported token usage for the summarization request, when emitted. */
usage?: TokenUsage
} & (
| {
/** Complete provider output before the backend's safe summary projection. */
rawOutput: ContentBlock[]
/** Identifies exactly one call through this context's `ctx.llm.stream()`. */
llmStreamCall: true
}
| {
/** Optional complete output from an unmarked template, remote, or other summarizer. */
rawOutput?: ContentBlock[]
/** An unmarked summary does not identify a call through this context's LLM seam. */
llmStreamCall?: never
}
)
Types: ContentBlock · TokenUsage
Source: packages/compaction/compaction/src/types.ts:34
deliverables/*
deliverables/presented — log-only
/** Declared filesystem files from a successful final present result, including nested calls. */
'deliverables/presented': { turn: number; callId: ToolCallId; files: PresentedFile[] }
Types: PresentedFile · ToolCallId
Source: packages/deliverables/tool-present/src/types.ts:15
developer/*
developer/message — surface
/** An incremental agent session change admitted at the named turn and step. */
'developer/message': {
turn: number
step: number
message: DeveloperMessage
/** Earlier request/header defining every tool addition; required exactly when additions are present. */
headerSeq?: SessionSeq
}
Source: packages/core/session/src/types.ts:317
feedback/*
feedback/message-delete — log-only
/** Log-only deletion; earlier ratings and notes remain in the log. */
'feedback/message-delete': MessageFeedbackDelete
Source: packages/feedback/message-feedback/src/types.ts:58
feedback/message-put — log-only
/** Log-only human feedback; never enters model history. */
'feedback/message-put': MessageFeedbackPut
Source: packages/feedback/message-feedback/src/types.ts:56
feedback/record — log-only
/**
* One recorded human remark about this session. Log-only and independent
* of its trigger; it never enters model context or derived history.
*/
'feedback/record': FeedbackRecord
Source: packages/feedback/command-feedback/src/types.ts:40
goal/*
goal/change — log-only
/**
* Complete post-mutation goal state or clear tombstone.
*/
'goal/change': GoalChangeMeta
Source: packages/goal/goal/src/domain.ts:66
hook/*
hook/invoked — log-only
/**
* A hook command was invoked at a hook point — a log-only record (like
* `compaction/*`; NOT a {@link SurfaceEventType}, carries no `surfaceOp`).
* `dialect` is the bridge that ran it (`claude`/`codex`), `point`
* the hook point (`PreToolUse`, `Stop`, …), `matcher` the matcher-group
* pattern that selected it (absent for match-all), `handlerId` a stable id
* for the command (so an invoked/result pair correlates). `turn` is the open
* turn the invocation lives inside.
*/
'hook/invoked': {
turn: number
point: string
dialect: HookDialect
matcher?: string
handlerId: string
}
Source: packages/experimental/hook-protocol/src/types.ts:19
hook/result — log-only
/**
* Log-only outcome paired to `hook/invoked` by `handlerId`. Decision is the
* parsed permission result, `stop` for `continue:false`, or `pass`; exit code
* may be absent, stderr is bounded, and duration is wall-clock runtime.
*/
'hook/result': {
turn: number
point: string
handlerId: string
decision: string
exitCode?: number
stderrSummary?: string
durationMs: number
}
Source: packages/experimental/hook-protocol/src/types.ts:31
image/*
image/offload — log-only
/**
* Permanently omit selected input-image occurrences from subsequent model requests.
* Targets name unique current user/message or tool/result nodes. Nonempty, strictly
* increasing indexes count all images in depth-first order, including nested tool
* results and already omitted images. Message nodes and identities remain unchanged.
* @messageProjection
*/
'image/offload': { targets: ImageOffloadTarget[] }
Source: packages/compaction/compaction-image-offload/src/projection.ts:25
job/*
job/registered — log-only
/**
* Log-only job registration; model output collection is not required.
* @param data - Execution identity, original owner, registration time, and creating tool call.
*/
'job/registered': JobRegisteredData
Source: packages/jobs/jobs/src/types.ts:59
job/settled — log-only
/**
* Log-only terminal record, paired by the same unique jobId used for live control.
* @param data - Registration facts plus settlement time, outcome, and producer acknowledgement.
*/
'job/settled': JobSettledData
Source: packages/jobs/jobs/src/types.ts:64
llm/*
llm/retry — log-only
/** Durable, non-surface record of one provider-routed retry scheduled after a failed request attempt. */
'llm/retry': LlmRetryEventData
Source: packages/llm/llm-retry/src/types.ts:9
llm/retry-started — log-only
/** Durable transition written after a retry wait succeeds and before the next request attempt starts. */
'llm/retry-started': LlmRetryStartedEventData
Source: packages/llm/llm-retry/src/types.ts:11
model/*
model/selection — log-only
/**
* Complete model selection that applies from the next model step until a
* later selection. Log-only: it never enters derived model history.
*/
'model/selection': ModelSelection
Source: packages/core/agent/src/types.ts:121
permission/*
permission/preset — log-only
/**
* Records the selected preset as durable, log-only user intent. The knob
* events follow in the same turn and control execution; this event stays
* out of the model transcript and lets the permission projection unit
* preserve a selection when bundles match.
*/
'permission/preset': { preset: string }
Source: packages/interaction/permission-presets/src/index.ts:53
plan/*
plan/mode — log-only
/**
* Whether plan mode is in force from this point on: log-only, non-surface,
* whole-value replace. The last `plan/mode` wins; a log with none folds to
* inactive through the projection unit's fold.
*/
'plan/mode': { active: boolean }
Source: packages/plan/plan-mode/src/index.ts:53
request/*
request/context — log-only
/**
* Route metadata for the next request, logged only when the route, capacity,
* or system prompt update mode changes. It does not participate in request
* reconstruction or header equality. Prompt admission uses the bound prepared
* call's capability, not this snapshot from an earlier request.
*/
'request/context': RequestContext
Source: packages/core/session/src/types.ts:410
request/header — log-only
/**
* Full header for the next request, appended inside its step before dispatch.
* It is log-only; the latest snapshot reconstructs the request header.
*/
'request/header': {
header: EpochHeader
reason: RequestHeaderReason
/** This request begins a distinct model-message series, independently of the header reason. */
startsSeries?: true
}
Source: packages/core/session/src/types.ts:398
sandbox/*
sandbox/mode — log-only
/**
* The session's sandbox mode was switched — log-only (like `approval/*`;
* NOT a surface event, carries no `surfaceOp`): durable and replayable,
* never in the model transcript. The LAST such event is the session's
* override (folded by the sandboxMode projection unit). `source: 'delegation'` marks
* an override seeded into a child; an absent source is a runtime switch.
*/
'sandbox/mode': {
mode: SandboxMode
/** Marks an override seeded into a child at delegation. */
source?: 'delegation'
}
Source: packages/sandbox/sandbox-policy/src/session-mode.ts:33
schedule/*
schedule/change — log-only
/**
* Versioned Schedule mutation. The owning package validates the complete
* session-local transition stream before accepting a candidate event.
*/
'schedule/change': ScheduleChange
Types: ScheduleChange
Source: packages/schedule/schedule/src/types.ts:371
session/*
session/end-seed — log-only
/**
* Separates inherited or restored history from later lifecycle-owned work.
* This log-only marker need not be at {@link Session.firstLiveSeq}: a fork
* seed can already contain its tagged marker and child-owned synthetic
* closers before construction.
*
* A fresh fork child owns one `{ inherited: true }` marker at its exact
* inherited-prefix cut, even when that prefix ends in an ancestor marker.
* `buildForkSeed` appends that marker before any synthetic closers; the
* `Session` constructor supplies it when given only the inherited prefix.
* The last tagged marker is the current Session's cut; untagged markers
* keep ordinary restore and replay lifecycle boundaries.
*
* Only the `Session` constructor and `buildForkSeed` may create this marker.
* Session append does not reject other writers, so a plugin appending one
* would silently classify every live bracket before it as seed history.
*
* An owner of a standalone open/close bracket (`compaction/start` …
* `compaction/end`) reads it because seed history and live work are otherwise
* byte-identical: an unmatched opening marker before this event belongs to
* an ended lifecycle, whatever ended it. NOT a liveness signal about other
* writers — a concurrently live session holds its own boundary elsewhere,
* so tolerating concurrent writers needs a signal beyond the log.
*/
'session/end-seed': { inherited?: true }
Source: packages/core/session/src/types.ts:435
session/title — log-only
/**
* Latest-wins session title snapshot. Log-only: it never enters the model
* surface or derived history.
*/
'session/title': SessionTitleEventData
Types: SessionTitleEventData
Source: packages/session/session-title/src/index.ts:77
session/title-llm-request — log-only
/** Log-only pre-dispatch record of one session-title model request. */
'session/title-llm-request': SessionTitleLlmRequestEventData
Types: SessionTitleLlmRequestEventData
Source: packages/session/session-title-llm/src/index.ts:57
session-log-deepseek/*
session-log-deepseek/delivery-accepted — log-only
/** Records that the configured endpoint accepted one delivery through `throughSeq`. */
'session-log-deepseek/delivery-accepted': {
/** Session identity the accepted delivery carried; inherited fork markers retain the parent's id. */
sessionId: import('@deepseek-ai/dsh-session/types').SessionId
/** Accepted Session format generation; absence identifies version 0. */
sessionFormatVersion?: number
/** Last canonical event included in the accepted request. */
throughSeq: import('@deepseek-ai/dsh-session/types').SessionSeq
}
Source: packages/session/session-log-deepseek/src/types.ts:81
step/*
step/end — log-only
/** Closes step `step` of turn `turn`. */
'step/end': { turn: number; step: number }
Source: packages/core/session/src/types.ts:307
step/start — log-only
/** Opens step `step` of turn `turn` — one model call plus the tool executions it requested. */
'step/start': { turn: number; step: number }
Source: packages/core/session/src/types.ts:305
subagent/*
subagent/catalog — log-only
/**
* A direct child's identity and available discovery fields.
* @param data - versioned parent-owned catalog entry.
*/
'subagent/catalog': SubagentCatalogEvent
Source: packages/subagent/subagent/src/catalog.ts:44
subagent/descriptor — log-only
/**
* Durable identity and lifecycle mode of a session-backed subagent child,
* appended once inside the child's initial turn, before its first
* request. Continuable records also carry their
* resumable composition. Log-only: it carries no `surfaceOp`, never enters
* model history, and survives compaction.
*/
'subagent/descriptor': SubagentDescriptorData
Source: packages/subagent/subagent/src/descriptor.ts:38
subagent/model-selection-policy — log-only
/**
* Records this Session’s authorized child provider/model routes. Appended
* before the first model request; absence restricts explicit selection
* to the current parent route. Log-only: it carries
* no `surfaceOp` and never enters model history.
*/
'subagent/model-selection-policy': {
/** Exact routes this Session may select explicitly for a child. */
allowedModels: AllowedModelRoute[]
}
Source: packages/subagent/tool-subagent/src/model-selection-state.ts:17
system/*
system/message — surface
/**
* The rendered system prompt on the model-visible surface. The loop appends
* the first one as surface node 0 before the step's first `user/message`.
* A prepared in-history route can append nonempty changes in a continuing
* series. An incapable route, or a new series whose effective text differs,
* normalizes text to the first system node; a series start whose latest
* surviving node already holds the rendering leaves it in place.
* Normalization empties nonempty later nodes, then rewrites the head if
* needed, through logged per-node replacements. An empty rendering always
* clears all active system nodes, leaving no older instructions model-visible.
* Empty later nodes are dormant and project to no message; an empty head with
* no active later node records "no system prompt". Restored nonempty text follows
* the same route and series rule; empty nodes never restore older text.
*/
'system/message': { turn: number; step: number; message: SystemMessage }
Source: packages/core/session/src/types.ts:338
team/*
team/member — log-only
/** Whole teammate lifecycle value, stored only in the Team Lead Session. */
'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot }
Types: TeamId · TeamMemberSnapshot
Source: packages/experimental/agent-team/src/types.ts:230
team/message/delivered — log-only
/** Historical acknowledgement that the target Session recorded a queued message. */
'team/message/delivered': {
version: 2
teamId: TeamId
messageId: TeamMessageId
targetId: SessionId
}
Types: TeamId · TeamMessageId
Source: packages/experimental/agent-team/src/types.ts:236
team/message/queued — log-only
/** Historical mailbox enqueue; new sends use the target Agent inbox. */
'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot }
Types: TeamId · TeamMessageSnapshot
Source: packages/experimental/agent-team/src/types.ts:234
team/task — log-only
/** Whole shared-task value, stored only in the Team Lead Session. */
'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot }
Types: TeamId · TeamTaskSnapshot
Source: packages/experimental/agent-team/src/types.ts:232
todo/*
todo/write — log-only
/** Whole-list snapshot; latest write wins on replay. Log-only UI state; never derived history. */
'todo/write': { todos: TodoItem[] }
Types: TodoItem
Source: packages/todo/tool-todo/src/types.ts:33
tool/*
tool/call — log-only
/**
* The model requested one tool invocation: `name` with the raw `arguments`
* JSON string exactly as the model produced it (unparsed). `callId` pairs the
* call with its `tool/result`.
*/
'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string }
Types: ToolCallId
Source: packages/core/session/src/types.ts:369
tool/ptc-dispatch — log-only
/**
* One bridged sub-dispatch SETTLING: the pairing ids (matching the
* `tool/ptc-dispatch-start` with the same `subCallId`), the tool `name`
* with the same JSON-normalized `arguments`, and the sub-call's complete
* durable outcome in `tool/result`'s own vocabulary (`content` + `isError`
* + optional presentation `meta` and structured `error`), so UIs and SDKs
* render a sub-call through the exact path used for a native call. Every started sub-call settles
* with exactly one of these (abort included: the aborted pipeline result
* is an `isError` outcome).
* Log-only: `deriveMessages()` ignores it, so sub-calls never re-enter
* model context; persistence and UIs get every call. Appended inside the
* parent `run_code`'s execution (the bridge drains in-flight dispatches
* before returning), so its execution-enclosure relation holds by
* construction.
*/
'tool/ptc-dispatch': PtcDispatchEventData
Source: packages/core/tool-executor-ptc/src/types.ts:61
tool/ptc-dispatch-start — log-only
/**
* One sub-dispatch STARTING inside a `run_code` program: the parent
* `run_code` call id, the opaque sub-call id (new calls use
* `<parent>:ptc:<n>`, numbered in submission order), and the tool `name` with its
* JSON-normalized `arguments` — the exact value dispatched, normalized
* BEFORE dispatch, so this append can never fail on payload shape.
* Appended when the scheduler actually starts the call (not at
* submission), so a start means the tool body pipeline was entered; a
* call abandoned in the queue logs nothing. Log-only: `deriveMessages()`
* ignores it; UIs use it for live per-sub-call running state and pair it
* with `tool/ptc-dispatch` by `subCallId` (timing = the two events'
* `time` fields).
*/
'tool/ptc-dispatch-start': PtcDispatchStartEventData
Source: packages/core/tool-executor-ptc/src/types.ts:45
tool/result — surface
/**
* A completed tool call's model-facing result, optional internal failure
* identity and user-facing reason, and optional tool-private `meta`
* presentation payload. The reason remains outside the model-facing message.
* `meta` is
* opaque to the core (the producing tool owns its shape and reads it back in
* `presentResult`) but MUST be JSON-serializable: `Session.append`
* runtime-validates all event data with `isJsonValue`, so a non-serializable
* `meta` is rejected at the source, and the durable log reproduces the
* identical card on replay. Absent
* unless the tool attaches one (e.g. `dsh-tool-fs` carries its result-time
* contextual diff here).
*/
'tool/result': {
turn: number
step: number
message: ToolResultMessage
/**
* Optional failure identity and raw user-facing reason, outside model content;
* allowed only when the message has `isError: true`.
*/
error?: { name: string; code: string; reason?: string }
meta?: JsonValue
}
Source: packages/core/session/src/types.ts:383
tool-workflow/*
tool-workflow/agent-end — log-only
/**
* Records one member settlement.
* @param data - run identity, paired member sequence, and outcome.
*/
'tool-workflow/agent-end': ToolWorkflowAgentEndData
Source: packages/workflow/tool-workflow/src/types.ts:57
tool-workflow/agent-start — log-only
/**
* Records one published workflow member.
* @param data - run identity, member sequence, display identity, and child Session.
*/
'tool-workflow/agent-start': ToolWorkflowAgentStartData
Source: packages/workflow/tool-workflow/src/types.ts:52
tool-workflow/run-end — log-only
/**
* Closes one workflow record after cleanup.
* @param data - stable run identity and terminal reason.
*/
'tool-workflow/run-end': ToolWorkflowRunEndData
Source: packages/workflow/tool-workflow/src/types.ts:62
tool-workflow/run-start — log-only
/**
* Opens one top-level workflow record.
* @param data - stable run identity and display name.
*/
'tool-workflow/run-start': ToolWorkflowRunStartData
Source: packages/workflow/tool-workflow/src/types.ts:47
turn/*
turn/end — log-only
/**
* Closes turn `turn` with the {@link TurnEndReason} that ended it. A turn
* with no entered step has no `step/start` or `step/end`. The loop does not await a
* flush at turn boundaries: `dsh-session-checkpoint-policy` owns the
* per-request durability checkpoint, and consumers that read storage after
* `whenIdle()` flush themselves. Success commits the turn; rejection is
* reported live and does not prevent later work.
*/
'turn/end': { turn: number; reason: TurnEndReason }
Types: TurnEndReason
Source: packages/core/session/src/types.ts:303
turn/start — log-only
/**
* Opens turn `turn` before the loop claims queued input or runs pre-step.
* Rejection, empty input, cancellation, or failure may close it with no
* step; otherwise the following identified `user/message` event or batch
* records the messages entering the step.
*/
'turn/start': { turn: number }
Source: packages/core/session/src/types.ts:294
user/*
user/message — surface
/**
* A user-role message on the model-visible surface: a direct human prompt
* (the queued message claimed for this turn), a synthetic `agent.inject()`
* context (file-change notices, subdir AGENTS.md, skill content, cron
* notifications, …), or an entered goal continuation round. All three
* project their `content` verbatim; `source` tells them apart.
*/
'user/message': UserMessage
Source: packages/core/session/src/types.ts:315
web/*
web/deepseek-search-llm-request — log-only
/** Secret-free auxiliary DeepSeek search request recorded before dispatch. */
'web/deepseek-search-llm-request': DeepSeekSearchLlmRequest
Source: packages/web/web-search-deepseek/src/provider.ts:89
working-directory/*
working-directory/change — log-only
/** Effective working directory; the immutable Session header retains the original project. */
'working-directory/change': {
/** Absolute directory used by subsequent directory-based operations. */
cwd: string
}
Source: packages/session/working-directory/src/index.ts:36
workspace/*
workspace/changes — log-only
/**
* A completed top-level turn's changed files were summarized; the summary itself stays on the
* Host and is served by `workspaceChanges.summary` for the event's sequence while the Session
* lives. The latest event for one turn replaces earlier ones.
*/
'workspace/changes': { turn: number }
Source: packages/deliverables/workspace-changes/src/types.ts:106
Resolved persistence types
Each definition appears once. References preserve sharing and recursion; the digest beside a definition includes its complete reachable structure. Source names and locations identify its declarations but are excluded from its digest.
"aborted"
SHA-256: 1e0b0b66b6f0c53fc72e52289d06b4708d776f1ca9df4c86a22bff621d403cf0
"aborted"
"action-cards"
SHA-256: 05205074b24d8340cfd7995f6cb64779c7f1241490954700115601e264178877
"action-cards"
"active"
SHA-256: c8e6f48878cc2a2f0dc59682280d81f407943fb503f32c64bf9ff3d9393c3eff
"active"
"after"
SHA-256: 5b232a9b9bfcc0fc6794dab7865bcf203a65785c5de5aa647a51228bff628413
"after"
"agent-instructions"
SHA-256: fbd2c74b346a1595b376139c587fadd23e4a21acc9c0abce342975b6cfc60986
"agent-instructions"
"agent-message"
SHA-256: 82470020b5bfcb1a843e2aa05602af7d37df99e82d01f015c7c589ba054fd89d
"agent-message"
"agent-preset/selected"
SHA-256: 557e148d30b79ee48645850832b30c717d7c3b64641deb5d6133b8b4e91ee0b8
"agent-preset/selected"
"agent/inbox/spliced"
SHA-256: 829a2fb3be6efd4ba36aef8ed2d381a4c6fb2a0aaf50c823a6f3f8290786b809
"agent/inbox/spliced"
"allowed-once"
SHA-256: 811229eedcec57979dbadca7dbea832a59f8580cff30cb217fca5e2da16314bd
"allowed-once"
"always"
SHA-256: 142c37d302aa22a0a57915b5255939d3ca91c1811ca13fddcf84cf76ea00758a
"always"
"answered"
SHA-256: 85d6d96ff884297410ec0026bdacba835f10e56cbcc5a3b9d670739f4aa0494b
"answered"
"append"
SHA-256: e438a9d4fb883b3e4a8d9fc8913aa1550ed50eb384bfbf943100a5605b537498
"append"
"approval/asked"
SHA-256: cd186c309e2bef305705e1d324139240f5e681f4f6a957d6a25b0225f65560df
"approval/asked"
"approval/decided"
SHA-256: 378f90f9f6022a0991928a1eaf7991094ea1920fe89a9248358a1da106e1a970
"approval/decided"
"approval/policy"
SHA-256: 36d6a9a871d949ea4f3edd919d81d66aa69218bebef38899d2a1282c39420a1f
"approval/policy"
"ask"
SHA-256: 9e07693fd7cd9babe0688c22c986e4d519ae1c0e40eeea13b2dc583bed2abc86
"ask"
"assistant"
SHA-256: 95c0e88fcf0bafb2087f912ad9e2369de6ae6530cc0c4c2772c96205b57f7f60
"assistant"
"assistant/attempt"
SHA-256: e95f957154b2b1b58692af53d4131180b6dd19e2264869f876dbaa959991494e
"assistant/attempt"
"assistant/message"
SHA-256: 6ab45ac76839722df912f3ba50f1c6b41f2d614bde11f1aabfae04117ccdc80d
"assistant/message"
"at"
SHA-256: 17aae616ef020b8b9f011ec398ec935450fb06d3e2a0722c456f63aeaf5ff728
"at"
"block"
SHA-256: 1e346446e183ee76f48d7994c97ecb302bddc682abb60b8a10ea0bb26223a69c
"block"
"block-end"
SHA-256: eefbea819caeeea91ccb02dfafc16c68dd7f961cf9c1b2be25a2084509cf5c5a
"block-end"
"block-start"
SHA-256: cbca49bde16b656d5b8fbe4a8a507769f7b594c6287782b809c03814941bc5e3
"block-start"
"blocked"
SHA-256: 254dce209e735f9cb6f6b7aec0354712b1611759ec02af4d35a96f2081e666f6
"blocked"
"canceled"
SHA-256: d4e4d575abeb4b72d616dc65c17ac0eaa943cc135609395044c38d5afcb10e31
"canceled"
"cancelled"
SHA-256: 2142e391b9ccb60d487afcf373ce74db98d952f69e8289eddb352a7e16e996c5
"cancelled"
"catalog"
SHA-256: aec150797b655c5f15ebb7a501454b0c208fbaccec9ace49d7de2171fc02f47d
"catalog"
"change"
SHA-256: f789af5ab844827eb5a4f357c0afae1eeed108c6c22d8ca1a56e586b349a7c85
"change"
"chunk"
SHA-256: 14230f9b8b5797bb7e8c621fa636531cfbde2ffba1ef5f1fd058216ff21952a0
"chunk"
"claude-code"
SHA-256: aff60ef947c18b012644852bdd0d5bfe72065e061dd563787c76c646b4a10f6b
"claude-code"
"clear"
SHA-256: e7e154d47d5fbc5366330fb4dade1f108c6dfe4335044d21ded14b7bf1dce084
"clear"
"codex"
SHA-256: 15495614ccfa9cbdeefb0ec2abd76406435f4c6ff3dae42acae8e09ef42025c9
"codex"
"command/done"
SHA-256: 8cdd3fdd295cee53035de16a1b23411716f75e9f994fe9510cac5d7fef605c76
"command/done"
"command/run"
SHA-256: f1996af2602e6f62b5ab179ca5c4af00d8753938b74cc6ef102de09e99e74a7e
"command/run"
"compact-checkpoint"
SHA-256: 6b23ed9ce1b397e602788dbe033693bf97642a69e23fcab1cc45bf6f13b6d619
"compact-checkpoint"
"compaction/end"
SHA-256: 1986c2664009c99155e44795676c887fa67f7c55cd2d5e6b648ff763e0ab033a
"compaction/end"
"compaction/prune"
SHA-256: 10e386801903f9d424602c31d3ff837a94aef623c8b391376d8d9e253525fabe
"compaction/prune"
"compaction/start"
SHA-256: e2d0367e5716bc188435e51718ebff8ce873190625fa93b1c5331102d98758fa
"compaction/start"
"compaction/summary"
SHA-256: ef4f00923b9edbae15c7ef05320280bf61147ca17146cf59690359bfd5e5da45
"compaction/summary"
"complete"
SHA-256: d9196086e41e4dd5c2ce87f5c25529c8112a1731d258cf0728747d41a9ee3241
"complete"
"completed"
SHA-256: 1ebc6f9ff3aa9e3a38f8695f49bacdab1f8b7a3832741853ca46f40af56ccd01
"completed"
"continuable"
SHA-256: e5d3828df1ec3e2a66879de0659e0f4866d9cfffc00825ee731a66f8a0c03d98
"continuable"
"cordis-host-runner"
SHA-256: c5687b1313206a6ff334066047b6a0681611467dc4df8c5a8e71d0b6df39311f
"cordis-host-runner"
"create"
SHA-256: 7624ca28c61ca0eaa4f015140f3cea6e0c16cce2f2960fab5f531203d253903e
"create"
"danger-full-access"
SHA-256: 18fce9540bb20897a66275499faee6b8296c97e9901fa1ff45a191772448ad1a
"danger-full-access"
"delegation"
SHA-256: 76632533f67879dcb346fcae640540dbc89b2472b0bce88c59f7e48fc5c0e668
"delegation"
"delete"
SHA-256: d0fbb0ca1bbba059830826f33f801da1aced35a2504376d61e020bdfec8d50c0
"delete"
"deleted"
SHA-256: e7e8f1318170b8284f16ab45a557afd4675c96071c0f2a456636481dab20b427
"deleted"
"deliverables/presented"
SHA-256: 1a2718b00937b236a0d0910ef5dab2f9f8b65e4bde410cc21f15fbbf29f584d3
"deliverables/presented"
"developer"
SHA-256: 589d0d91239681f89ee485459dc8c2f73ea47183b5534289d966637024a2c35d
"developer"
"developer/message"
SHA-256: 1379f0b72275994d20f1ddca2d60a96ab16ec80397ca9f1af21bdc67ba5c269c
"developer/message"
"disabled"
SHA-256: 0b9b8facbe2c19773b3fb0ecc824ccbcc603d41b8f18069faa3807d449572fce
"disabled"
"dispatch"
SHA-256: 26c879bdd130e8b8683a6ce588414fad2244783d6573ca399fa0de184a2b0bb1
"dispatch"
"disposed"
SHA-256: b38f206d59bad891fa58c89f97a0036987b3defe7685acbd318fa55eb85f9751
"disposed"
"dsh-session-title-llm"
SHA-256: 23af3759678a30de1d11d946772da8c051c63caa67997c5da05d30d7a9fe8a97
"dsh-session-title-llm"
"edit"
SHA-256: ad22a5ca5bbaab2e1440779cd3648e85ddfc6f73b5207394eda699555cf31430
"edit"
"error"
SHA-256: a2be0f0cb59f0d4a06557d45847d1938aced238baa77a6da416e590b8b958553
"error"
"every"
SHA-256: e42b0f40b5d0b628c6e1c44a8fb9eda0780037a81959e1b93d2dfb47b46b0e87
"every"
"external"
SHA-256: fc351843b8ecbd05d739c4ca4fcd4bc7cfad6c0beacbbd48389959bb1bf06cf3
"external"
"failed"
SHA-256: b57a2889408de36e4516807194c73bdecd51a92f633ccd05db81bf049200f420
"failed"
"fallback"
SHA-256: d6e654b88b584fcdf290a56802b1730bc7b9847ae86baa4265ab7769eb48990c
"fallback"
"feedback/message-delete"
SHA-256: 44818000e56acb97afdb5045ce235eb55e3fb1ccabc9fc7d0750bb38f36a7f8e
"feedback/message-delete"
"feedback/message-put"
SHA-256: 6cda0d6d3b4336d83998fe580628426df81c2afbab5d768b8813b56d569120e8
"feedback/message-put"
"feedback/record"
SHA-256: c99e20441bf15341e9db54385e558e5c03d21dff2eb1ac08ccbf47c2d8747954
"feedback/record"
"file"
SHA-256: 277b61f9c6f8170425fa6ffe06cfa14376757a896a4749cb82a687d7364c4fc9
"file"
"finish"
SHA-256: bd499eac047efe091a4df7382eadd06d25cf0cb31fee3981e8b24d85762841cd
"finish"
"fork"
SHA-256: 2da725e554cd89301d829ed9dc45a572c3cd1b93b5e91d0d71f007976d8a0863
"fork"
"forked"
SHA-256: b2245a906e13aa94f2d3cc6cf7b04cfa0267f7b7f4d468de1b00b1a314e54626
"forked"
"fresh"
SHA-256: dd2780e7e07684332f7a9ab047237798d260e7eaffb1321cb38eca695d184c3d
"fresh"
"goal"
SHA-256: b815d7b91cdd9fc6ccc7dcba05cfc5ce1d55fab5fc0c0801803cd3630cedb602
"goal"
"goal/change"
SHA-256: 237c004c73b6b288246816e0d7fde16e09c63a47aa3b1227383d7afe58666163
"goal/change"
"hook"
SHA-256: dbdafceb9a900183cccc80596498d386f3bf7bddead2b8cfde68453aa4739edc
"hook"
"hook/invoked"
SHA-256: b9305f0ea75ccd6a6061c27fde19f2ab85534f9f3c1a717b573b077ebae0f611
"hook/invoked"
"hook/result"
SHA-256: a3a259a1aa5401af786ce08c4a8419681d3000d73467991b5fc563389bc4ebd2
"hook/result"
"hooks-claude-code"
SHA-256: a9059a81430b320792bbb7c2ee1f8f6c77ff71e40ee44c18aec72e157c522694
"hooks-claude-code"
"hooks-codex"
SHA-256: bb94f3217aa56c8876bbff0b8460d6a73cbead545659abb29e76cd0cf2cb92d6
"hooks-codex"
"image"
SHA-256: fb8b6a2e53cb9cf44c551176de0fb77d1ddc60037b99a891ff8a860b6d5c29a0
"image"
"image/gif"
SHA-256: de30b1fa12c75f81df6aa4096e1595296d2d04e2be14a7c29849cf8028b79048
"image/gif"
"image/jpeg"
SHA-256: 3f74ba74acd10644c1ed6947a411d8088bd2cfac74f61bb8540f96d68e31f004
"image/jpeg"
"image/offload"
SHA-256: 9acbe713f3f641921dd3333b240aa72e176d795327c24e8d9db9b68b16771b49
"image/offload"
"image/png"
SHA-256: 58f94390b982f8a5ac1f4f235ba612557f4a1dc4a995d8b1cec63ce7639decb0
"image/png"
"image/webp"
SHA-256: ebb768d85ec87fb68e42fc14fd7d8535b5ac11791b14d04c6770180f0a719bf8
"image/webp"
"in-history"
SHA-256: f311671e07bc7fa645a0b6597de9966b97147956565296ba76a36543801b66c5
Sources: packages/llm/llm/src/types.ts:440
"in-history"
"in_progress"
SHA-256: 94c56aeb1564ad735eb773d88636b40761d063efa1610f1308004d32923f5378
"in_progress"
"initial"
SHA-256: e7ce49f12953583fad217bf80fb9f1463acff2c3e9471a823782661675fb124c
"initial"
"instruction-following"
SHA-256: e4cac694f8b6e1d52e48c699464f1c4c26111ef87e558f7931040d00fdc8d486
"instruction-following"
"instructions"
SHA-256: fee1caf8ab6a65c1bc981f5a1730164490f22a2a89ffa3d0b76f1f432c44c8b5
"instructions"
"interrupted"
SHA-256: 69d238a6e9b08d67f601b1825962963d8d3523cb69ebf6208c697dc5d058c199
"interrupted"
"job/registered"
SHA-256: 24a8188c4d61b70a01af8cc576748765d36f132632ec55c0064f6fba482369fc
"job/registered"
"job/settled"
SHA-256: 347de3380f2da308d0c74e08821f9e85559f55af4c5010795b110d00f7fc9dbd
"job/settled"
"kill"
SHA-256: bab68657940075483f086fffb711682a45bcc99c43d659fbe1c36af21ac05dd7
"kill"
"killed"
SHA-256: ef226a90ddac6cd8e631a3a337a3a3e27f9494be92befb7c718b404681d75e21
"killed"
"legacy"
SHA-256: ad3b56aa2fc1ad4250e7399295d34a8eae592e1907e85852e2291b2e498a30bc
"legacy"
"llm/retry"
SHA-256: 611cae9a3539733aa0c42f66035a7d90f19dcbbdfb5d9e3b628b13705253942d
"llm/retry"
"llm/retry-started"
SHA-256: 4ae007ed190a72c92138b22d059b83208079c7551ca13fb59ae8cf5e23693964
"llm/retry-started"
"max-tokens"
SHA-256: 68141cbe3994a5ffcd064c07c75996538437fd9dbf77ce8a2927e89ec577fabe
"max-tokens"
"model"
SHA-256: 2765e9119edf5816ac1ab4c95c5ee32c90403f3742962eff11544f7752d59d2e
"model"
"model-selection"
SHA-256: 9ac52f0f84fec2eb9f71c2937e497d759db5ca0da4836d93a679d113684141f2
"model-selection"
"model/selection"
SHA-256: 1d5f04a03ea75fc8eeece544129eba0f49f0c82046e9c404461920390135c7b2
"model/selection"
"negative"
SHA-256: b1f62380f6746fedd629e71065e3583cef83334875b499ac9665c2eb87acfbf5
"negative"
"never"
SHA-256: 1571525adc95a24e5d25b5a6440df401cd7cdd881b745178e85f5a333435cd1b
"never"
"next-step"
SHA-256: 3e2ece4967cfebe95f450a93f45523dff99d6749f6269f2f60f84dfecfcf3693
"next-step"
"next-turn"
SHA-256: 62ecb62dc0fe1b5e70217f8a80c39256a40ee3a1917be14e5ca899d20c35f7fd
"next-turn"
"normal"
SHA-256: 3bc287e765d58dc3a22672a0495a6cfd561220dd38fbaecef80aa95b96caed79
"normal"
"notice"
SHA-256: e8de0f457fed5b9ff94dc4950b59ef75fd8ba8af665cc7899485924a62653367
"notice"
"one-shot"
SHA-256: d28765f87d6b6ab408e0b2f3e7e297791b004b806d8e302c49903ebae815feb2
"one-shot"
"other"
SHA-256: 9d80129e13edfb6feb03ed327e6085c6ef60b97ad074244b2f5fd4667424a6a4
"other"
"owner"
SHA-256: 95a3ffccbf3c8afcf9a2f3b355f724da8e07e98dc47ee741166dde7f9ea058bd
"owner"
"parent"
SHA-256: e6411b09c1d982f789bf741ca74e2bea69df56029847f86a6148e722039ee732
"parent"
"pause"
SHA-256: 1d8798b1a5e8c545ee4dcd2b4e75c0b4c9ffd985e4744c6d1a1aab992f859721
"pause"
"paused"
SHA-256: c43b119ce579b3e9983a0d3adc4ba402ebb9ba773d89738a2dab01ecf5813943
"paused"
"pending"
SHA-256: 234142ee4f996f38cc9fa3b8b3e3de29b03c9aefe5ebf6c224eddd564505aa85
"pending"
"permission/preset"
SHA-256: ae63d9d1080ed8945031594d93f8d96651d7101b848719cc3e1475875cd3d649
"permission/preset"
"plan-mode"
SHA-256: 0fe52387f65052702ed9d7cd59db826468936595d1b3eec207e7a823adc719db
"plan-mode"
"plan/mode"
SHA-256: f634871d1e18b1eb199497ac8ab72d3964f48d03fbf611dc7521a1970cf429d9
"plan/mode"
"positive"
SHA-256: df5d9709b7db2a72510dc52052a23f0c38f39730af1504bab8bccabc14fae528
"positive"
"producer"
SHA-256: 6cf082d0fb6034dea61636787ff0ddf43b6e59aad71e644435a479bc9b83ad65
"producer"
"product-interaction"
SHA-256: 0341d4c3dfcd53253cdc1e789d9130d3cd848b6f8b0706bf92f313a68b39ff23
"product-interaction"
"provider"
SHA-256: e31572180d6b28b73f073ad30ae19d5d82982d3daf984723984e23da1e7c459a
"provider"
"provisioning"
SHA-256: 871bfd6f7bb91061246768d3377f3fd58d6b8ea7c31f44c714ae7ab215650d62
"provisioning"
"ptc-mode"
SHA-256: 4edec1b770e8ec4ce1220bf42edc5ac46713a1b48d4caa778dcfc98bad1f28a3
"ptc-mode"
"read-only"
SHA-256: 12a0cfa619ac4a5fc6c3e8e359c8dae15769edc61497a575935c78d5842f8e42
"read-only"
"reasoning"
SHA-256: 3c2535ca0a2062f172f15344f8040755002b5ac506cf94fc4ebaa822b15feb8c
"reasoning"
"reasoning-chunks"
SHA-256: 688e853dc149f0d30b31765c12ec7e3be74169bdf1a4c6463a10b945d50cc1b8
"reasoning-chunks"
"reasoning-delta"
SHA-256: 6f091fe32ab24407236090ca9d710bbaf59bb57466e9f3b8f1f6e4862bc863c6
"reasoning-delta"
"recall"
SHA-256: 383cf73ae4748e5beb281ae74857ba1ffb92ae01075b9fbf51af78b666007a8f
"recall"
"rejected"
SHA-256: fab35c4520883c0d69e42d079c9f543fc5ac7a2d15b537b5572fcd99059c7018
"rejected"
"relay"
SHA-256: 16d0507cb94b4cfc84a87446b1ba7652d6ec1d65ee1684789e747e30d542800e
"relay"
"remove"
SHA-256: 7382c4fc95fe8c5db65ca4d9da572b115d0dbb818b7f32c22ab040318ffbb4bc
"remove"
"repeat-tool-reminder"
SHA-256: 1f1385dbc3e875c021e387c7096d671d606f22daec51b25c80348735b6bbfa10
"repeat-tool-reminder"
"replace"
SHA-256: f6cb462f808309e315fea634f1ed86268b8346bbcee6774d9097ca6eed7ac1f8
"replace"
"request/context"
SHA-256: 70b082fe78991edf13cf66e1b4d06cd2dcff9cacfd76f8cfb996bfb61939e7b2
"request/context"
"request/header"
SHA-256: 3e0eff5946255ff05d88a10839c60305135801f97794ea48d409f8503303317e
"request/header"
"resource-cost"
SHA-256: 5bd310104cfe448e530beb11422d2f791e2e32e8e95fdc528a15f9ca693dae75
"resource-cost"
"resume"
SHA-256: 34d1ab5c5df378186d6054b1a1beea9a41e41965d6f336f0bc0025c441a82e66
"resume"
"runtime-context"
SHA-256: 24b10f7cdae64928f89c49afc2eca0af9eb4a2f135e16f3416e6b8461fef1748
"runtime-context"
"sandbox/mode"
SHA-256: ca085dba2c877feceebf3c62f9d39c6c2a4d2314d97b94b3927a780fe8fe2bb2
"sandbox/mode"
"schedule"
SHA-256: d9edf1862e4471d6ad8a106a3f4160e0643874368707d50ecd8e27e5ee7a2567
"schedule"
"schedule/change"
SHA-256: 0e7b2a97f54f1afdb8cdfad1635abe9145327db539bfb69b4045c19d8c17755d
"schedule/change"
"security-privacy-permission"
SHA-256: 07eccc9ea2f9b5439d76cc77d5e062936677d43f07a23da749819b0a22ee36b7
"security-privacy-permission"
"series"
SHA-256: 4f507598cf476214aa7646ce7841a7064a9dcb05d0a1eaaefaf79c2b738f160f
"series"
"service-stability"
SHA-256: 7180844e1066230c5e891f1b9ccd942423b0fe48aac6ded7eef2a285b288a732
"service-stability"
"session"
SHA-256: e41bdebe246abe17154de7e7a1d81035437eee8d20e7f1edff0d91e2598ad828
"session"
"session-log-deepseek/delivery-accepted"
SHA-256: 47e5d84f1a93450a78c7f3954b43990d0f629af7c034a56313e5deb63e772c1b
"session-log-deepseek/delivery-accepted"
"session-reference"
SHA-256: 7f13860ee89a2d35ce09f958e85a04566cd59cb1de1d73a9619a9b631961dc71
"session-reference"
"session/end-seed"
SHA-256: 1c2686c0682e7bc51d61117b2652bd4a80707e331aa276d6ef915ae32534a330
"session/end-seed"
"session/title"
SHA-256: 7a651f3b672c52fb615f22c0ce9cb3cc5b22aad92e6bbeefb0808fd7b9233a50
"session/title"
"session/title-llm-request"
SHA-256: 587bb11da730e06aa52b62c087d217d6f8f22459b25f31cb9e1e1baf17944e5e
"session/title-llm-request"
"set"
SHA-256: b765ee31033cea463863faf3fc6a0a1b85c47c6a2f13fe1ce833abe56105114b
"set"
"share-viewer"
SHA-256: 6ba7edb6447b6a3e7947dddf5e4116c1526000c4e62882a6d65edc67ba797c2c
"share-viewer"
"skill-catalog"
SHA-256: 6ebcc2dbec9f2dabca9f668ae6d39e877899b180740570f453409db339221df3
"skill-catalog"
"skill-invocation"
SHA-256: 1922cd79a70806c17758185a6ef0458bc1fb3900363906733421c16414da2509
"skill-invocation"
"snapshot"
SHA-256: 6f9e00383836275e46c0a9915767f9bb561be5fc30aae490174908a93e99a912
"snapshot"
"step/end"
SHA-256: c219efbdfd53b836786202ab4532913d555798f0a8615a4e9629736e3799fb70
"step/end"
"step/start"
SHA-256: 2c64d4bc7264fd3f8bed47e96ab8a593bce05a1e4e1c436dcd244a3b7e0c2a9d
"step/start"
"stop"
SHA-256: 57f3f606ff8b6c84d9c443faace9d1dd10cca0354f37a4f515ef075f7c351b90
"stop"
"subagent"
SHA-256: aacda84a69739238aa782eea902d3073017d9d74b9808de2bf5a83c9738cbdc6
"subagent"
"subagent-settled"
SHA-256: bf16d2e98a7f13894ded2cffe5ce857bf473954a0e3c0ed9bc7739e2e1c7b78a
"subagent-settled"
"subagent/catalog"
SHA-256: 44c8c77aa9aa100b0d74d2deee85474b29faa6eee0ac0f662f7abe9931ddd7f2
"subagent/catalog"
"subagent/descriptor"
SHA-256: 5ebce1317eacd2c148456627a09668e927ee15c204f0643f5ea76b46b54a2647
"subagent/descriptor"
"subagent/model-selection-policy"
SHA-256: 0a8a062bc9c3c0d97fd97742262f2ea53dd32297f834e81114870d38ac3dc6da
"subagent/model-selection-policy"
"success"
SHA-256: 511801b0a6470d98566e8385d3dffddb2b67f79fcf73ed6056f46c3cc0a245a7
"success"
"system"
SHA-256: 8af841fc9b265ade3441caf9fe40dd24db24226befba48150e6d0eeccc1389c3
"system"
"system-prompt"
SHA-256: 09655b34d7f3cf1e9005974de2357de2d4a60deea165d16dac1eadaa6ec539a8
"system-prompt"
"system/message"
SHA-256: 1c5a58f4599bd4a9711712551ffe2442a5e5fcd0758bafe630cc4ead850bdaa7
"system/message"
"task-result"
SHA-256: f05fb85e715af4ab4de0b6ba111166dd0435bd8bb74a0fa0f32b9d174113fc7c
"task-result"
"team-message"
SHA-256: 2e4debca12f2c449f96dc6574f3fbf2fb346193443114a241d01a236362ec48c
"team-message"
"team/member"
SHA-256: 18fcdd273a2f2f9d813a3be5e71df5903a963a5c88e46b90b14de6e2db890da0
"team/member"
"team/message/delivered"
SHA-256: a8a2b9011fc067862df7ce40748868467e5778283d7ac193c13f77684a914c57
"team/message/delivered"
"team/message/queued"
SHA-256: 4e011753f8263f436efaabfbb3b4db53a98fc55342c5ded2daf7208b217be159
"team/message/queued"
"team/task"
SHA-256: b57ae1b37e52bee0a21cbdace168dc6a15582bcda8c306dad962c5dcc8a8e28b
"team/task"
"teardown"
SHA-256: 5cb63db9fe57dc09c3a1c2b84c3edf73ff5b62960155d8436a2377a5c43ce32c
"teardown"
"text"
SHA-256: 4e44c9118152f6829634bfd508e47669ab0497caffa380c94b4be91f9390d35d
"text"
"text-chunks"
SHA-256: f9cfc89e8fe085b4fcc9cd32b74b6f103608c54d7d8cd97b47c01de34f252ba3
"text-chunks"
"text-delta"
SHA-256: 5abab3a27fd2736660ecddd94b28d6bbf114986dd894880153bd1be3ccacb563
"text-delta"
"time-context"
SHA-256: 8067b0d232c350f189738e60ee3c9939d46ca3b32b45db5525237b077893f649
"time-context"
"tmux-context"
SHA-256: 78a9be340090b735a39980e7222ce730c972fbcf1de7c9e0aef2125884b7caee
"tmux-context"
"todo/write"
SHA-256: af0750d32d97d47b12b7361a587db41894b17e04c9a805fe212f0114aa2248c7
"todo/write"
"tool"
SHA-256: a13d8f379222ece8a02a86efe4c8334af4f108ecb3034b38c0a42bb3046e6847
"tool"
"tool-addition"
SHA-256: 85f9b505b7bdff1f61845c4cea8f36fd0fde1b62facbe87d8924d1d27e616f3a
"tool-addition"
"tool-call"
SHA-256: 1f0133217eeeffd8d387baf1ec8ed9856e719bcd999dc08e48624cba96d75fd7
"tool-call"
"tool-call-chunks"
SHA-256: 616f93a5047de668e1c30d57b1786abd76beeb4123599637ec1dc5290320ede5
"tool-call-chunks"
"tool-call-delta"
SHA-256: 9b4fd974c124c83743efe030ba4e1250e087505f3f74588716a521fb8d453267
"tool-call-delta"
"tool-calls"
SHA-256: 6c1cccb433ddc153facb380c7dda956237ba5c31f8a532a69142dc277890cc9b
"tool-calls"
"tool-goal"
SHA-256: 2f3f201c8846e19c20bb75c02280e3d4eb3c57509e4715f0c0a4d1d4f91a7a06
"tool-goal"
"tool-jobs"
SHA-256: 99e7e7d7fed55ae6a3a648b35192f16ab1248ddcb0179a0e275128ac1487d7c7
"tool-jobs"
"tool-registry"
SHA-256: a720757f704a2512e9d2f20da4a093e582472176236a75ab8b8eb7aaff17d85a
"tool-registry"
"tool-removal"
SHA-256: 83d6916021eede8f2d83a1872716caa1efdec39a3681890996c55147187fdd12
"tool-removal"
"tool-workflow/agent-end"
SHA-256: 5d17f27a1ef9f7026c0232714adf7573961536d75f3303ca97973975f5af170e
"tool-workflow/agent-end"
"tool-workflow/agent-start"
SHA-256: ad92f473a03ae72599ff26c86e897c25e16269519ad2a87340f0bea946517af8
"tool-workflow/agent-start"
"tool-workflow/run-end"
SHA-256: fe792a6cd430494503837e21e79f91677704ccdd9e870c679aabd7d43ed47ddd
"tool-workflow/run-end"
"tool-workflow/run-start"
SHA-256: cdca80b8dad24d4e7b1d5a288a8475ba8d8d46be385bd2da85f122ee836f1670
"tool-workflow/run-start"
"tool/call"
SHA-256: c589e938cc0e4989df8b82abef6339de621f0dc4fe62c230d145b94996af7f92
"tool/call"
"tool/ptc-dispatch"
SHA-256: fb5e0517050d2c6d40e5b8145db1f7c5ca7044d5d50fada6ff80e0b22c6ca973
"tool/ptc-dispatch"
"tool/ptc-dispatch-start"
SHA-256: 2aed07493b1c65b6d00de5586da1e743cf501684b9ad43a1765fb4007d4ea456
"tool/ptc-dispatch-start"
"tool/result"
SHA-256: 570e85022434613394418ad33e77e9f1f7a05699b33d0b62eae0677a638c3833
"tool/result"
"turn/end"
SHA-256: 4312134fc6f9cad507c31390bd3d147535492dd77621ec517c5e85f853d53a03
"turn/end"
"turn/start"
SHA-256: 0af3ecfb8c60d416fc40a7cc4fb2c4851a8e46608b2b38ab9e510670c971aa1f
"turn/start"
"unavailable"
SHA-256: 2c4c21f19f426a58f2dac914e34313aa43f8408972de857a486d1f086d5adb6c
"unavailable"
"unknown"
SHA-256: 05a2796621b1ee6c03ef7abe560b25116bb4da4d592312117242a78415a32b04
"unknown"
"usage"
SHA-256: 0bdaf9cb63594be4ef034b68901fffe792fe09d6d5f6bac42d7f56f6e7834fb9
"usage"
"user"
SHA-256: 68f44f59e91c41395076cb77265981a601680ec8a381bbbeb6ab754ffdc94573
"user"
"user-approval"
SHA-256: f68c335306535a001127dae6685ece493a0ee7f4e2a851197b6054d8a9ff7394
"user-approval"
"user-question-reply"
SHA-256: 9645cf93769a6dfb227bd400bd6cb9fa7bab9140f4a851e4ae92514ade6e3114
"user-question-reply"
"user/message"
SHA-256: de25352d2dc4196309bd84b5bac6319f6d5c898ea0e82bb5ae66c5738d0d426f
"user/message"
"web/deepseek-search-llm-request"
SHA-256: 6f611bed14b2106542480c4a230b4a83baf76dc0d8ac0cd13319a7cb8dae7675
"web/deepseek-search-llm-request"
"web_search"
SHA-256: 935c8d486292b13c87b57ca280eb8c58b5b2f5239be86fcd4334c33fdeb87682
"web_search"
"web_search_20250305"
SHA-256: 0116b1f89c05221d56b0ba35c83d302bf4857bc7277d247e9bbaf74b27d2c66e
"web_search_20250305"
"webhook"
SHA-256: db6c5246911d47a7969f6b4cb47c7d0dbbde75c402710b22ace3672fa97bebe0
"webhook"
"working-directory"
SHA-256: 7b1ce60193fa8b69292e5843858d9cee7dc565dcb40d33c136e5d7e8b8d4296a
"working-directory"
"working-directory/change"
SHA-256: d4c799e3d51cae1040362ba4968efc484739e14416c9c1df20c2f108b4ef2eb5
"working-directory/change"
"workspace-write"
SHA-256: a3edd1efd1fef21b72c55e213c8a8b24196b091abde2b89db52be0b2aaae3cfa
"workspace-write"
"workspace/changes"
SHA-256: 8e8155594e07812356b67d732196dda894b0f9c91a5969d51612cf490b0a016d
"workspace/changes"
0
SHA-256: 93d38436347f67c9022aacbc4472e283d722bcab8eb73fc376aaf7b6a6b9fb35
0
1
SHA-256: f88f1b7b6bb733f685f5fb6a8744a5db9199fa53c90463ea1a33bad51153671d
1
2
SHA-256: a0f906856fc06f1c6f2083eb970e5a657a82b1a84c06c095445e5d6d161cda80
2
4
SHA-256: af6e173f7be819bcd0a5c8d77918649c10ce761d8a184ff472f2e01ce64eb2e0
4
AgentInstructionChange
SHA-256: 83da72c6857601c75da11212ef847f57d457b9c99f0a82246dcdff3e26700239
Sources: packages/context/agent-instructions/src/render.ts:62
| Property | Presence | Type |
|---|---|---|
action |
required | union (3 variants) |
digest |
optional | string |
path |
required | string |
scope |
required | string |
AgentInstructionChange[]
SHA-256: 2ab12a0e345658f9342816d773fe610f049982bcad82631f43b9205abe43e5ee
Array of AgentInstructionChange.
AgentInstructionSource
SHA-256: 6f22a9d02b9a1f1157f3b0e7bdccd7e7b12b085c4efdb709dfc74a465cd4e590
Sources: packages/context/agent-instructions/src/state.ts:40
| Property | Presence | Type |
|---|---|---|
baseline |
optional | true |
baselineIdentity |
optional | string |
changes |
required | AgentInstructionChange[] |
form |
required | "instructions" |
kind |
required | "agent-instructions" |
AgentMessageSource
SHA-256: 4a9bef9f27a942520cc2279ca7dd3082556e4bff543f66b5c0333e1bbed1cd86
Sources: packages/subagent/subagent/src/continuation-messages.ts:14
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "agent-message" |
senderSessionId |
required | string |
ApprovalOutcome
SHA-256: 930c1cd289def119d443e19dd90008916bf035f0a4d23e07241e7f050f2b89b7
Sources: packages/interaction/user-approval/src/types.ts:32
One of:
"allowed-once""cancelled""rejected""unavailable"
ApprovalPolicy
SHA-256: 05d2ae1e0c7f8770f83f9a09047afb39a335d8ac986df3193659aa1e581472cf
Sources: packages/interaction/user-approval/src/index.ts:68
One of:
"ask""never"
AssistantMessage
SHA-256: fa87537f4a9c1e25602990a8bf686b383e9e00352ec8946e16ae24ba7c1625be
Sources: packages/llm/llm/src/message.ts:167
| Property | Presence | Type |
|---|---|---|
content |
required | ContentBlock[] |
id |
required | string |
role |
required | "assistant" |
source |
required | ModelMessageSource |
AssistantStreamRecord
SHA-256: 33341aac09312300de5a178e6cc6f6544a4876f7f710cfea55eda473c8d329ef
Sources: packages/llm/llm/src/assistant-stream.ts:20
One of:
AssistantStreamRecord[]
SHA-256: 84bbfdce7d2eab5b0c53e72ff7406db856c8bfd621b965b72fd86598ba493bf7
Array of AssistantStreamRecord.
CommandSource
SHA-256: ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05
Sources: packages/core/session/src/types.ts:195 · packages/interaction/commands/src/types.ts:75 · packages/interaction/commands/src/types.ts:79 · packages/llm/llm/src/message.ts:111 · packages/session/session-title/src/types.ts:35
| Property | Presence | Type |
|---|---|---|
kind |
required | "user" |
CompactionCheckpointSource
SHA-256: 31907de9563751822af6d9be02bafaf26faa098bbd1cb412524134d577cc1648
Sources: packages/compaction/compaction/src/checkpoint.ts:22
| Property | Presence | Type |
|---|---|---|
compactionId |
required | string |
kind |
required | "compact-checkpoint" |
sourceCommandId |
optional | string |
ContentBlock
SHA-256: 8064c03c87c357fd1575cb9395ce86e6dcbe2d275bf7717864a02cddf01827d5
Sources: packages/llm/llm/src/types.ts:157
One of:
ContentBlockType
SHA-256: 7d65acf0a3a43a8f445ce5d3320b42eca492739fc931b2a7516bfb8368dc2c68
Sources: packages/llm/llm/src/types.ts:155
One of:
"file""image""reasoning""text""tool-addition""tool-call""tool-removal"
ContentBlock[]
SHA-256: b52f215a6cd691058a3413c12f161fa3b563a2f4895adb3df6f744ec4b0a6ef1
Array of ContentBlock.
ContextSnapshotSection
SHA-256: 86e1e384495ee09ac2d60c9db3610f1f1fddac2d248f6f1d6000e78054680219
Sources: packages/llm/llm/src/message.ts:70
| Property | Presence | Type |
|---|---|---|
name |
required | string |
text |
required | string |
ContextSnapshotSection[]
SHA-256: c748fb42c80a120038a8c587af80ec39924803c401364db11c8974d5bf6d0262
Array of ContextSnapshotSection.
ContinuableSubagentDescriptorData
SHA-256: 6487b10ba7542f3c447b1e41a1c6a590b7bfafe0b9b66b49f34028da85bb970f
Sources: packages/subagent/subagent/src/descriptor.ts:72
| Property | Presence | Type |
|---|---|---|
agentModel |
optional | string |
agentProvider |
optional | string |
agentReasoningEffort |
optional | string |
label |
required | string |
mode |
required | "continuable" |
persona |
optional | string |
provider |
required | string |
toolFilter |
optional | ToolRestriction |
version |
required | number |
DeepSeekSearchLlmRequest
SHA-256: abd6ca62a5ab166553848324a23fef90eed7f59c8021bd63e7ea5bc6fd666b0c
Sources: packages/web/web-search-deepseek/src/provider.ts:55
| Property | Presence | Type |
|---|---|---|
apiVersion |
required | string |
body |
required | { max_tokens, messages, model, thinking?, … } |
endpoint |
required | string |
DeveloperMessage
SHA-256: 64ef542b1bfc988382d337f2ea85aab8ad76ea55341cf082163919d315688428
Sources: packages/llm/llm/src/message.ts:157
| Property | Presence | Type |
|---|---|---|
content |
required | ContentBlock[] |
id |
required | string |
role |
required | "developer" |
source |
required | MessageSource |
Source compatibility: source — session-source-attribution v1; session.developer-message.source; kind; preserve.
Attribution-only additions: action-cards, tmux-context, user-question-reply, working-directory.
EpochHeader
SHA-256: 9a930283b91d493d6347146f2475bb107294b379415ca02162354f46a64164f7
Sources: packages/core/session/src/types.ts:246
| Property | Presence | Type |
|---|---|---|
adapterDefaults |
optional | LlmCallConfigAdapterDefaults |
config |
required | LlmCallConfig |
system |
optional | never |
tools |
optional | ToolSchema[] |
EveryScheduleDispatchChange
SHA-256: e6063d0451dc02026fd9b54ad3f77c7b1b6392ad3e872a7737ac84e13ca72344
Sources: packages/schedule/schedule/src/types.ts:244
| Property | Presence | Type |
|---|---|---|
acceptedAt |
required | string |
id |
required | string |
operation |
required | "dispatch" |
version |
required | 1 |
FeedbackRecord
SHA-256: 7d54a5a5e629e2e7783bfac72683bcc5e969e9f43426b9289826aaf294ff6344
Sources: packages/feedback/command-feedback/src/types.ts:27
| Property | Presence | Type |
|---|---|---|
category |
optional | union (7 variants) |
text |
optional | string |
FileAttachmentRef
SHA-256: f19bee84bf3d20904553cdcd57465232bc1c2a194f54c4d195292ba0487223a6
Sources: packages/attachment/attachment/src/types.ts:39
| Property | Presence | Type |
|---|---|---|
attachmentId |
required | string |
bytes |
required | number |
name |
required | string |
FileBlock
SHA-256: f2da0f27c1e6add59982c37b15e4a4912c5b33466859cce3b13d503600e24aef
Sources: packages/llm/llm/src/types.ts:105
| Property | Presence | Type |
|---|---|---|
attachment |
required | FileAttachmentRef |
type |
required | "file" |
FinishReason
SHA-256: 5808e36c95355f0e745201b5db1b6bcec4ebf5adb75d3e82d7d59cc89635ab80
Sources: packages/llm/llm/src/types.ts:172
| kind | Form property | Other required fields | Full definition |
|---|---|---|---|
aborted |
not declared | failure: LlmFailure |
{ failure, kind: "aborted" } |
error |
not declared | failure: LlmFailure |
{ failure, kind: "error" } |
max-tokens |
not declared | none | { kind: "max-tokens" } |
stop |
not declared | none | { kind: "stop" } |
tool-calls |
not declared | none | { kind: "tool-calls" } |
GoalBlockReason
SHA-256: 84ac8c1a66ffc697262e181f42e851259eae14038c113ca329fb4700ccdb1f7c
Sources: packages/goal/goal/src/types.ts:52
| Property | Presence | Type |
|---|---|---|
code |
required | string |
message |
required | string |
GoalChangeMeta
SHA-256: 7d226b9fd95b4ba213d4237c22e930a91c3c769c95ca7f92977b9d625ba13438
Sources: packages/goal/goal/src/domain.ts:44
| kind | Form property | Other required fields | Full definition |
|---|---|---|---|
goal/change |
not declared | createdAt: number; goal: GoalSnapshot; operation: union (6 variants); roundsStarted: number; updatedAt: number; version: 1 |
GoalSnapshotChangeMeta |
goal/change |
not declared | cleared: GoalRef; clearedAt: number; operation: "clear"; version: 1 |
GoalClearChangeMeta |
GoalClearChangeMeta
SHA-256: cffcdc19881ab61ec0a9ce18743996f7ac44ac8889f34dfac36ae745574aa22f
Sources: packages/goal/goal/src/domain.ts:35
| Property | Presence | Type |
|---|---|---|
cleared |
required | GoalRef |
clearedAt |
required | number |
kind |
required | "goal/change" |
operation |
required | "clear" |
version |
required | 1 |
GoalMessageSource
SHA-256: 7f959241c24128b4983b559984811861dc59774b85905c8fa57c6cb0148a3dbc
Sources: packages/goal/goal/src/domain.ts:47
| Property | Presence | Type |
|---|---|---|
goalId |
required | string |
kind |
required | "goal" |
revision |
required | number |
round |
required | number |
GoalPhase
SHA-256: b8327af7ee5767952d1300cb4f03b7fc04197ae5ba275e13981c689ff7506172
Sources: packages/goal/goal/src/types.ts:45
One of:
"active""blocked""complete""paused"
GoalRef
SHA-256: 0b6d718c693fdf7f06dcccb0bcbbabe78cc63514eafc62d6b2a3899735279d6f
Sources: packages/goal/goal/src/types.ts:20
| Property | Presence | Type |
|---|---|---|
id |
required | string |
revision |
required | number |
GoalSnapshot
SHA-256: 6bbe793f6a93dc8d50a4d4d3fbb6f8ed15650bcb7e151d28669628f7b7c3fc25
Sources: packages/goal/goal/src/types.ts:60
| Property | Presence | Type |
|---|---|---|
blockedReason |
optional | GoalBlockReason |
id |
required | string |
maxGoalRounds |
required | number |
objective |
required | string |
phase |
required | GoalPhase |
revision |
required | number |
GoalSnapshotChangeMeta
SHA-256: 1df34a6c086866ffdc2dd9e8e5c581c3751a010cdf6b8538a7327f7a3237f0b4
Sources: packages/goal/goal/src/domain.ts:24
| Property | Presence | Type |
|---|---|---|
createdAt |
required | number |
goal |
required | GoalSnapshot |
kind |
required | "goal/change" |
operation |
required | union (6 variants) |
roundsStarted |
required | number |
updatedAt |
required | number |
version |
required | 1 |
HeaderLine
SHA-256: 18ee62b8900a4c3d046700f05d7a4d49d6cab2a660a020c87481d1603dd8bd4f
Sources: packages/session/session-persistence-jsonl/src/format.ts:83
| Property | Presence | Type |
|---|---|---|
agentPreset |
optional | string |
createdAt |
required | number |
cwd |
optional | string |
delegationDepth |
required | number |
id |
required | string |
isSeeded |
required | boolean |
origin |
optional | "subagent" |
parentSession |
optional | string |
type |
required | "session" |
version |
required | number |
HookDialect
SHA-256: a6b41f5bede8094d7bf635be5d69b1bd7a25e006ca9cf9415bceb9322f1a7feb
Sources: packages/experimental/hook-protocol/src/types.ts:48
One of:
"claude-code""codex"
ImageAttachmentRef
SHA-256: b0b0eb1b16490f6bee135b2377e8f8c39227974c799ad7d49ff418af23ecbc35
Sources: packages/attachment/attachment/src/types.ts:11
| Property | Presence | Type |
|---|---|---|
attachmentId |
required | string |
bytes |
required | number |
height |
required | number |
mediaType |
required | ImageMediaType |
name |
optional | string |
originalDimensions |
optional | { height, width } |
width |
required | number |
ImageBlock
SHA-256: 12d5808fac1996b9b3c2afa806e03022252ba2d7b88f835862ae1896591f60c7
Sources: packages/llm/llm/src/types.ts:86
| Property | Presence | Type |
|---|---|---|
attachment |
required | ImageAttachmentRef |
offloaded |
optional | true |
type |
required | "image" |
ImageMediaType
SHA-256: 2f1e6a7ebace43d727ae138ddcd352eb3813960009e5805b8c5ac84300c97716
Sources: packages/attachment/attachment/src/types.ts:8
One of:
"image/gif""image/jpeg""image/png""image/webp"
ImageOffloadTarget
SHA-256: 1cde1bedde79c5e8a56aee9c05c8e0a579cf5bc611deb85b93fa331a16ca978f
Sources: packages/compaction/compaction-image-offload/src/projection.ts:9
| Property | Presence | Type |
|---|---|---|
imageIndexes |
required | number[] |
seq |
required | number |
ImageOffloadTarget[]
SHA-256: 9e2c06d8653585b33d72d5c1a80da79c8a24a88c284409bca15cc0f0ead5ebfb
Array of ImageOffloadTarget.
InboxTarget
SHA-256: 96f4a9c81fc0f940ef71528a8cc66731ae4cf1f40d79680c5fe3c39f96d7723c
Sources: packages/core/agent/src/types.ts:40
One of:
"next-step""next-turn"
JobRegisteredData
SHA-256: e3056e0dda3a379e895386e368c3ce42131460ea65e410e1d091cca98a347305
Sources: packages/jobs/jobs/src/types.ts:24
| Property | Presence | Type |
|---|---|---|
jobId |
required | string |
kind |
required | string |
label |
required | string |
owner |
required | string |
startedAt |
required | number |
toolCall |
optional | JobToolCall |
JobSettleCause
SHA-256: 750a2b129d67704df675c06823c20c80b65cbae89d5aaa914fd5a72e3df395b5
Sources: packages/jobs/jobs/src/types.ts:247
One of:
"kill""producer""teardown"
JobSettledData
SHA-256: 611d82d2dc50df706cf08a0fc04bc8eaf78083391fe6f10313de943e615dd2da
Sources: packages/jobs/jobs/src/types.ts:40
| Property | Presence | Type |
|---|---|---|
cause |
required | JobSettleCause |
detail |
optional | string |
finishedAt |
required | number |
jobId |
required | string |
kind |
required | string |
label |
required | string |
owner |
required | string |
producerReported |
required | boolean |
startedAt |
required | number |
status |
required | union (3 variants) |
toolCall |
optional | JobToolCall |
JobToolCall
SHA-256: 39cf2d3ff8bac81c62d49ac2ba38a095b18e80f3ad700819fa1f650a4e60197f
Sources: packages/jobs/jobs/src/types.ts:16
| Property | Presence | Type |
|---|---|---|
callId |
required | string |
rootCallId |
required | string |
JsonValue
SHA-256: c592ce75aab73fcab19c1d7845684c72cf402b78d2e1f2833a58ecf9f3598ed6
Sources: packages/util/values/src/index.ts:4
One of:
JsonValue[]{}stringbooleannullnumber
JsonValue[]
SHA-256: 72ec79127a9c0d0241b1106a74cc2b24c81ce467170f1c3c93f7b71a9496d227
Array of JsonValue.
LegacyAfterScheduleRecord
SHA-256: 3fdf9582c3b5597df104d32d97dab6c6ee3a93794f3034ec6ada6272404ea27f
Sources: packages/schedule/schedule/src/types.ts:161
| Property | Presence | Type |
|---|---|---|
afterSeconds |
required | number |
id |
required | string |
kind |
required | "after" |
prompt |
required | string |
scheduledAt |
required | string |
title |
optional | string |
LegacyAtScheduleRecord
SHA-256: b63b089a00b3b9357675b3e0c3d3e9aa4fdbda1fba9c91a6b0c59ffdbb89f505
Sources: packages/schedule/schedule/src/types.ts:167
| Property | Presence | Type |
|---|---|---|
id |
required | string |
kind |
required | "at" |
prompt |
required | string |
scheduledAt |
required | string |
title |
optional | string |
LegacyEveryScheduleRecord
SHA-256: a926dc71814edd01a4f041eb5fc766d153db3407ef4704e98f4c1b6527309ebb
Sources: packages/schedule/schedule/src/types.ts:173
| Property | Presence | Type |
|---|---|---|
everySeconds |
required | number |
id |
required | string |
kind |
required | "every" |
prompt |
required | string |
scheduledAt |
required | string |
title |
optional | string |
LegacyScheduleRecord
SHA-256: 4b1e632e05776982a2d21c25a50c7c04c199d311c5675218fa73ff9fe30d22cd
Sources: packages/schedule/schedule/src/types.ts:185
| kind | Form property | Other required fields | Full definition |
|---|---|---|---|
after |
not declared | afterSeconds: number; id: string; prompt: string; scheduledAt: string |
LegacyAfterScheduleRecord |
at |
not declared | id: string; prompt: string; scheduledAt: string |
LegacyAtScheduleRecord |
every |
not declared | everySeconds: number; id: string; prompt: string; scheduledAt: string |
LegacyEveryScheduleRecord |
LlmCallConfig
SHA-256: 67d5f73ceae82f5265258142ad6cf172de2c1fef93ba551b7f0454e0a93bffe0
Sources: packages/llm/llm/src/call-config.ts:31
| Property | Presence | Type |
|---|---|---|
maxTokens |
optional | number |
model |
required | string |
provider |
required | string |
reasoningEffort |
optional | string |
stop |
optional | string[] |
temperature |
optional | number |
LlmCallConfigAdapterDefaults
SHA-256: 326a9bfda27dda5882fb3cbe6e715df41dae2298fdae3d66437457268a665693
Sources: packages/llm/llm/src/call-config.ts:54
| Property | Presence | Type |
|---|---|---|
maxTokens |
optional | true |
reasoningEffort |
optional | true |
LlmFailure
SHA-256: 5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca
Sources: packages/llm/llm/src/types.ts:48
| Property | Presence | Type |
|---|---|---|
code |
required | string |
message |
required | string |
offloadImages |
optional | number |
providerRetryAfterMs |
optional | number |
requestId |
optional | string |
status |
optional | number |
LlmRetryEventData
SHA-256: c170da8ab7c37635b10867b2571811d9e317ac3ec394e8ff8efe53f902fc41c1
Sources: packages/llm/llm-retry/src/types.ts:16
One of:
LlmRetryStartedEventData
SHA-256: 6f72ece8f317cd080c4f20a93f1bf709965f5b81ac4669528f5a023191cfcf20
Sources: packages/llm/llm-retry/src/types.ts:43
| Property | Presence | Type |
|---|---|---|
retry |
required | number |
retryId |
required | string |
step |
required | number |
turn |
required | number |
Message
SHA-256: c78b9097bfae83cd08f0a98a92730236ba80ac61d712046959e4fc7f28aa1f36
Sources: packages/llm/llm/src/message.ts:196
One of:
MessageFeedbackDelete
SHA-256: 7c6129b6961cf4b2a030f36c78d2b0a5be38617651a9b81322e054ee512bee06
Sources: packages/feedback/message-feedback/src/types.ts:46
| Property | Presence | Type |
|---|---|---|
messageId |
required | string |
sessionId |
required | string |
MessageFeedbackItem
SHA-256: 3d7d07060a7be77984feb651ea2bf1925d3e0477911d9d3ed86330d1e8ca6182
Sources: packages/feedback/message-feedback/src/types.ts:20
| Property | Presence | Type |
|---|---|---|
category |
optional | union (7 variants) |
createdAt |
required | number |
messageId |
required | string |
note |
optional | string |
rating |
required | MessageFeedbackRating |
updatedAt |
required | number |
version |
required | string |
MessageFeedbackPut
SHA-256: aa7bc2817014ca6c45719b1c193c5c131be718a0921f34345098ff250f444626
Sources: packages/feedback/message-feedback/src/types.ts:38
| Property | Presence | Type |
|---|---|---|
item |
required | MessageFeedbackItem |
sessionId |
required | string |
MessageFeedbackRating
SHA-256: 390eed1028aba02774f14408647acec10ec5516e97d4f15ecde2b9989d5a69f2
Sources: packages/feedback/message-feedback/src/types.ts:17
One of:
"negative""positive"
MessageSource
SHA-256: 7e9f1072c17f7aa86547c9c8b02766c1006d866a1859a3d677a336e932f70d1a
Sources: packages/llm/llm/src/message.ts:136
Message[]
SHA-256: ff2cbb53582d1827b02622482246979942f59e07e0393b76a161251423549e72
Array of Message.
ModelMessageSource
SHA-256: 719c51f67074f97034a6c94297fe1f4b5d3c8d392c57586dab732aa5398c7a91
Sources: packages/llm/llm/src/message.ts:24
| Property | Presence | Type |
|---|---|---|
kind |
required | "model" |
model |
required | string |
provider |
required | string |
replayState |
optional | unknown (opaque) |
ModelSelection
SHA-256: f09e5e7acf5ff5ccd193ff2eeec015fa2ff7c29d98bc465f8c3302058d47e29b
Sources: packages/core/agent/src/types.ts:79
| Property | Presence | Type |
|---|---|---|
model |
required | string |
provider |
required | string |
reasoningEffort |
optional | string |
OneShotScheduleDispatchChange
SHA-256: 8e8e91646a5cae3fc78f7532a0013ff2088ae47077642c2edd507a508209b8af
Sources: packages/schedule/schedule/src/types.ts:237
| Property | Presence | Type |
|---|---|---|
id |
required | string |
operation |
required | "dispatch" |
version |
required | 1 |
OneShotSubagentDescriptorData
SHA-256: 5f758f3de5f00c18968a7c6d347083aac5c9ae13f6a79c78f6611b23c4973564
Sources: packages/subagent/subagent/src/descriptor.ts:61
| Property | Presence | Type |
|---|---|---|
label |
optional | string |
mode |
required | "one-shot" |
provider |
required | string |
version |
required | number |
OptionalSessionSeq
SHA-256: 3bd652ebfa8726b3ce3937a4f1bd2759e02f86b3a08a20f9e41a8513656fbc5f
Sources: packages/core/session/src/types.ts:66
One of:
nullnumber
PresentedFile
SHA-256: b8fc636a2121df9d8423c242e03c9d23b7ab7c6fdce00e45746932c60b730f97
Sources: packages/deliverables/tool-present/src/types.ts:5
| Property | Presence | Type |
|---|---|---|
description |
optional | string |
path |
required | string |
PresentedFile[]
SHA-256: 1d9cb3caa96100b18b1911fa3ff8c751ef6992971a03c5f4d9aefc1a0004a345
Array of PresentedFile.
PtcDispatchEventData
SHA-256: cef171adf021a1867d244618a3dbbaafc22beb17c7f3df3ee203393271c8c6f6
Sources: packages/core/tool-executor-ptc/src/types.ts:21
| Property | Presence | Type |
|---|---|---|
arguments |
required | unknown (opaque) |
content |
required | ContentBlock[] |
error |
optional | { code, name, reason? } |
isError |
required | boolean |
meta |
optional | JsonValue |
name |
required | string |
parentCallId |
required | string |
rootCallId |
required | string |
subCallId |
required | string |
PtcDispatchStartEventData
SHA-256: 2fe5026daf14bd4ff2b7bfb7cf9791c302d9cbba06802178b6dfec00b892698f
Sources: packages/core/tool-executor-ptc/src/types.ts:12
| Property | Presence | Type |
|---|---|---|
arguments |
required | unknown (opaque) |
name |
required | string |
parentCallId |
required | string |
rootCallId |
required | string |
subCallId |
required | string |
ReasoningBlock
SHA-256: 814d9434e1ddf9078612b3b34322f26e9363b469213335007f7e9ba7fee9464e
Sources: packages/llm/llm/src/types.ts:75
| Property | Presence | Type |
|---|---|---|
text |
required | string |
type |
required | "reasoning" |
ReplayEnvelope
SHA-256: 0acd94fe8794574c9ae72c7855ee16d29c546096d4af760d16d1225385764555
Sources: packages/llm/llm/src/types.ts:474
| Property | Presence | Type |
|---|---|---|
blocks |
optional | unknown[] |
response |
required | unknown (opaque) |
RequestContext
SHA-256: b158f3ff6923714807c0d73882f0b05dc87f8fa85c9e90814852d48bbc866081
Sources: packages/core/session/src/types.ts:260
| Property | Presence | Type |
|---|---|---|
contextWindow |
optional | number |
model |
required | string |
provider |
required | string |
systemPromptUpdate |
optional | "in-history" |
RequestHeaderReason
SHA-256: 530da6c0267813bb4511af72883cc518834e624e3b3220a7062955fd57a788a6
Sources: packages/core/session/src/types.ts:279
One of:
"change""initial""resume""series"
SandboxMode
SHA-256: fab2bb09bc5e3b9db0685e8f5500b029af1a2b33e70bc703c1d5d0f596fbc1fd
Sources: packages/sandbox/sandbox/src/index.ts:30
One of:
"danger-full-access""read-only""workspace-write"
ScheduleChange
SHA-256: 2e3523541e942ef6cc9fbc5b91f242e0ca4c6ada479b79b96025b797f6e41f3f
Sources: packages/schedule/schedule/src/types.ts:256
One of:
ScheduleCreateChange
SHA-256: eea687d437880bd5f55fb447a561112800ca34334c0724d9cecb98493059d9e4
Sources: packages/schedule/schedule/src/types.ts:223
| Property | Presence | Type |
|---|---|---|
operation |
required | "create" |
schedule |
required | LegacyScheduleRecord |
version |
required | 1 |
ScheduleDeleteChange
SHA-256: 18dc21f12bbac8ade8377e6fbb54179e20c3d955d73fba3244c57fb6bf001df0
Sources: packages/schedule/schedule/src/types.ts:230
| Property | Presence | Type |
|---|---|---|
id |
required | string |
operation |
required | "delete" |
version |
required | 1 |
SessionHeader
SHA-256: 1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445
Sources: packages/core/session/src/types.ts:95
| Property | Presence | Type |
|---|---|---|
agentPreset |
optional | string |
createdAt |
required | number |
cwd |
optional | string |
delegationDepth |
optional | number |
id |
required | string |
isSeeded |
required | boolean |
origin |
optional | "subagent" |
parentSession |
optional | string |
version |
required | 4 |
SessionReferenceSource
SHA-256: f56c5b59ca0161310c338d31dd16cf14287ccd602ff4181058df178c1c286d7f
Sources: packages/context/session-reference/src/types.ts:13
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "session-reference" |
references |
required | { capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }[] |
version |
required | 1 |
SessionTitleEventData
SHA-256: b56f6a885da3dc394c69a3e3cc5c0cfc4da15601b63fda4989eee8f40efc5be4
Sources: packages/session/session-title/src/types.ts:41
| Property | Presence | Type |
|---|---|---|
messageSeqs |
required | number[] |
source |
required | SessionTitleSource |
title |
required | string |
SessionTitleLlmRequestEventData
SHA-256: 7ff62f6599c083ceb5a0d7a8940ff85ba80dc1d7ddd6ba9339903e93f74cba54
Sources: packages/session/session-title-llm/src/index.ts:37
| Property | Presence | Type |
|---|---|---|
maxTokens |
required | number |
messageSeqs |
required | number[] |
messages |
required | Message[] |
reasoningEffort |
optional | string |
route |
required | SessionTitleModelIdentity |
system |
required | string |
titleProvider |
required | string |
SessionTitleModelIdentity
SHA-256: 07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235
Sources: packages/session/session-title/src/types.ts:20 · packages/subagent/tool-subagent/src/model-selection.ts:9
| Property | Presence | Type |
|---|---|---|
model |
required | string |
provider |
required | string |
SessionTitleModelIdentity[]
SHA-256: ba77b58995e36f14bb13886b0493d0a1a63d5db10b1a6cd9f6ac65a72cf832ec
Array of SessionTitleModelIdentity.
SessionTitleSource
SHA-256: 30d5a537b296685770b1241c4b4bbde19d5a31ff81aa23df73fab5e90b8fc65f
Sources: packages/session/session-title/src/types.ts:28
| kind | Form property | Other required fields | Full definition |
|---|---|---|---|
fallback |
not declared | none | { kind: "fallback" } |
provider |
not declared | provider: string |
{ kind: "provider" } |
user |
not declared | none | CommandSource |
ShareViewerPrincipal
SHA-256: 4d60dddaa65d3da8d4cd014d85ce3d2c2875664dd0433e331d8e9d395289686b
Sources: packages/experimental/liveshare/src/host/viewer-principal.ts:24
| Property | Presence | Type |
|---|---|---|
actor |
required | { displayName?, providerId, subjectId, tenantId } |
kind |
required | "share-viewer" |
shareId |
required | string |
SkillCatalogSource
SHA-256: 65d583e66518c5236015e0846470fb32efcf92375ed306aef14e50a9d2cd2099
Sources: packages/skill/tool-skill/src/index.ts:35
| Property | Presence | Type |
|---|---|---|
entries |
required | { description, name }[] |
form |
required | "catalog" |
incomplete |
optional | true |
kind |
required | "skill-catalog" |
update |
optional | true |
SkillInvocationSource
SHA-256: 672c4aa2a9b736e3d6e5da6346d2e2ed5e3573f2d0baafa18e7407c9f3fee3db
Sources: packages/skill/skill/src/index.ts:146
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "skill-invocation" |
name |
required | string |
StreamChunk
SHA-256: 47e9095591ae36e7c39ee62553097772f2bfa16304536a72dbbc3f691f605180
Sources: packages/llm/llm/src/types.ts:496
One of:
{ type: "tool-call-delta" }{ type: "block-end" }{ type: "block-start" }{ type: "reasoning-delta" }{ type: "text-delta" }{ type: "finish" }{ type: "usage" }
SubagentCatalogEvent
SHA-256: f731ffe80810b0289b3e694d8f40af6f01865c02a622ee457be90ca808b66e87
Sources: packages/subagent/subagent/src/catalog.ts:28
One of:
{ childCreatedAt, childId, label, mode, … }{ childCreatedAt, childId, label?, mode, … }{ childCreatedAt, childId, label?, mode, … }{ childCreatedAt, childId, label?, mode, … }{ childCreatedAt, childId, label?, mode, … }{ childCreatedAt, childId, label, mode, … }
SubagentDescriptorData
SHA-256: 86d1d0e9cfebb240421187e3dc37fb71cc38a1501885cf32f8f9adef7b0a2bde
Sources: packages/subagent/subagent/src/descriptor.ts:89
One of:
SubagentSettledMessageSource
SHA-256: 4e97c3d85c0fc817ee58873c38c25a2474abaaa0af4839311b50b68db3b8cf1a
Sources: packages/subagent/subagent/src/continuation-messages.ts:29
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "subagent-settled" |
senderSessionId |
required | string |
summary |
required | string |
SurfaceOp
SHA-256: 335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5
Sources: packages/core/session/src/types.ts:470
One of:
"append"{ endSeq, op, startSeq }
SystemMessage
SHA-256: 09f3f8dc417f278257202714132f98ba7b52957d7b558c4a04456603890eb363
Sources: packages/llm/llm/src/message.ts:151
| Property | Presence | Type |
|---|---|---|
content |
required | ContentBlock[] |
id |
required | string |
role |
required | "system" |
source |
required | SystemPromptMessageSource |
SystemPromptMessageSource
SHA-256: 65a8400e451e667e5b6e34df72ceb81fca8c12330330fa72083ad40279b189ad
Sources: packages/llm/llm/src/message.ts:35
| Property | Presence | Type |
|---|---|---|
kind |
required | "system-prompt" |
TeamMemberPhase
SHA-256: dfce5db4aa42b7ebe0bb79eca92553587287e18c06b9eba85cbfb9d332e26acd
Sources: packages/experimental/agent-team/src/types.ts:45
One of:
"active""failed""provisioning"
TeamMemberSnapshot
SHA-256: 6598cd6da253948d6b207c6374a45335804c79b576866d6215649c2d1bc85e25
Sources: packages/experimental/agent-team/src/types.ts:48
| Property | Presence | Type |
|---|---|---|
context |
required | union (2 variants) |
description |
required | string |
error |
optional | string |
id |
required | string |
name |
required | string |
phase |
required | TeamMemberPhase |
provider |
required | string |
TeamMessageSnapshot
SHA-256: 2eafefdc6f79a4922d68a787a09eaf4dd2b2369c3777fba4c05e800b5678ac8e
Sources: packages/experimental/agent-team/src/types.ts:129
| Property | Presence | Type |
|---|---|---|
content |
required | ContentBlock[] |
id |
required | string |
senderId |
required | string |
senderName |
required | string |
targetId |
required | string |
TeamMessageSource
SHA-256: 2152caf1a71e588e4df2358a806dea24936c1c47131134f01a12939d12cdc0c0
Sources: packages/experimental/agent-team/src/types.ts:138
| Property | Presence | Type |
|---|---|---|
kind |
required | "team-message" |
messageId |
required | string |
senderId |
required | string |
senderName |
required | string |
teamId |
required | string |
TeamTaskSnapshot
SHA-256: 51edec100659da3a9bd9c3f6ba1180f5e64ec9a1585e5057080df45c180bd357
Sources: packages/experimental/agent-team/src/types.ts:75
| Property | Presence | Type |
|---|---|---|
blockedBy |
required | string[] |
description |
required | string |
id |
required | string |
ownerId |
optional | string |
revision |
required | number |
status |
required | TeamTaskStatus |
subject |
required | string |
writeScopes |
required | string[] |
TeamTaskStatus
SHA-256: b2d2a01e51341a3bfec809198952c8c830a7899f4cb6ecd3c1dc0b5d9a2af943
Sources: packages/experimental/agent-team/src/types.ts:72
One of:
"completed""deleted""in_progress""pending"
TextBlock
SHA-256: 4e887768586528565381dadbddee6cef555874148089f4579e0b4b1ad096fc9c
Sources: packages/llm/llm/src/types.ts:69 · packages/web/web-search-deepseek/src/provider.ts:66
| Property | Presence | Type |
|---|---|---|
text |
required | string |
type |
required | "text" |
TodoItem
SHA-256: a99f76fd149051c363f960bfeeb5b9509587ecaf7591a42797e4bfe810d8987a
Sources: packages/todo/tool-todo/src/types.ts:23
| Property | Presence | Type |
|---|---|---|
content |
required | string |
status |
required | union (3 variants) |
TodoItem[]
SHA-256: 4b7ddaf3710b88ff9b8df66304f5f97bf03688fd19730eedc2e9535203c820ea
Array of TodoItem.
TokenUsage
SHA-256: fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394
Sources: packages/llm/llm/src/types.ts:182
| Property | Presence | Type |
|---|---|---|
cacheReadTokens |
optional | number |
cacheWriteTokens |
optional | number |
inputTokens |
required | number |
outputTokens |
required | number |
reasoningTokens |
optional | number |
totalTokens |
optional | number |
ToolAdditionBlock
SHA-256: 8e611bf46821e5003a1605a73560a6f56388295149d449dfe2142d5ec335f29c
Sources: packages/llm/llm/src/types.ts:122
| Property | Presence | Type |
|---|---|---|
tool |
optional | never |
toolName |
required | string |
type |
required | "tool-addition" |
ToolCallBlock
SHA-256: c1f0f17b6493b85db6453bb30e01b208d703731b25bc1e68e5d4fc72eea9cdea
Sources: packages/llm/llm/src/types.ts:112
| Property | Presence | Type |
|---|---|---|
arguments |
required | string |
id |
required | string |
name |
required | string |
type |
required | "tool-call" |
ToolMessageSource
SHA-256: d9c462b9f62fdd3efc76a44b9524dc8781f6b91cd9c7e584b17d971defafebab
Sources: packages/llm/llm/src/message.ts:29
| Property | Presence | Type |
|---|---|---|
callId |
required | string |
kind |
required | "tool" |
ToolRemovalBlock
SHA-256: 43e311235aa537df1bacdd92d144df8a952337a76e9ac892cdf670f1a797bad8
Sources: packages/llm/llm/src/types.ts:134
| Property | Presence | Type |
|---|---|---|
toolName |
required | string |
type |
required | "tool-removal" |
ToolRestriction
SHA-256: 3cfc3a56502da1f8c6153c2c56657bab4b749056968634dd0991d325ec1c919f
Sources: packages/core/tools/src/contracts.ts:376
| Property | Presence | Type |
|---|---|---|
allow |
optional | string[] |
deny |
optional | string[] |
ToolResultMessage
SHA-256: 4b259f7f8f0a44ad5e90b70a73553ced1df27012d126921d397ff403b6c86731
Sources: packages/llm/llm/src/message.ts:173
| Property | Presence | Type |
|---|---|---|
content |
required | ContentBlock[] |
id |
required | string |
isError |
optional | boolean |
role |
required | "tool" |
source |
required | ToolMessageSource |
toolCallId |
required | string |
ToolSchema
SHA-256: 66ba70f6f068da443f969a0b947a013c3addd776b9b60a0a393759c19825e9a2
Sources: packages/llm/llm/src/types.ts:517
| Property | Presence | Type |
|---|---|---|
deferLoading |
optional | true |
description |
required | string |
name |
required | string |
parameters |
required | {} |
ToolSchema[]
SHA-256: a0baff42eb900561f91032b6950a3925cf19c5c8d9ba33948ac69e4ac7dee573
Array of ToolSchema.
ToolWorkflowAgentEndData
SHA-256: c0ea97bc89dfc46fa94eab956f5c3ee6af2f964aa7db6327cb18b451f207bef7
Sources: packages/workflow/tool-workflow/src/types.ts:29
| Property | Presence | Type |
|---|---|---|
outcome |
required | WorkflowAgentOutcome |
runId |
required | string |
seq |
required | number |
ToolWorkflowAgentStartData
SHA-256: 9a410ddf56792b2b7cd4a224a2e54dc4dee30a8e8e6b1c2b9a1d19992b217adc
Sources: packages/workflow/tool-workflow/src/types.ts:20
| Property | Presence | Type |
|---|---|---|
childId |
required | string |
label |
required | string |
phase |
optional | string |
runId |
required | string |
seq |
required | number |
ToolWorkflowRunEndData
SHA-256: 7f9365bae9fcb73e1e34061a1acfe0422c1a5fd351848cace9bebbe806f28462
Sources: packages/workflow/tool-workflow/src/types.ts:36
| Property | Presence | Type |
|---|---|---|
runId |
required | string |
stopReason |
required | WorkflowStopReason |
ToolWorkflowRunStartData
SHA-256: a6da9ad5d42ae83a6833a8288b076688e8e0801633ea36cbdd8a30a6d9f3160c
Sources: packages/workflow/tool-workflow/src/types.ts:14
| Property | Presence | Type |
|---|---|---|
name |
required | string |
runId |
required | string |
TurnEndCancelCause
SHA-256: 1f8c126cfab3df812cd115cfc23e3256f0fa2383400f4ce91ecad313577e59b0
Sources: packages/core/session/src/types.ts:201
| kind | Form property | Other required fields | Full definition |
|---|---|---|---|
disposed |
not declared | none | { kind: "disposed" } |
hook |
not declared | reason: string |
{ kind: "hook" } |
legacy |
not declared | none | { kind: "legacy" } |
parent |
not declared | none | { kind: "parent" } |
user |
not declared | none | CommandSource |
TurnEndReason
SHA-256: f1687f982fa3d41ef29e159feed154ecd13af4dd209acaee16038f223f2e9402
Sources: packages/core/session/src/types.ts:238
| kind | Form property | Other required fields | Full definition |
|---|---|---|---|
aborted |
not declared | reason: TurnEndCancelCause |
{ kind: "aborted", reason } |
blocked |
not declared | none | { kind: "blocked" } |
completed |
not declared | none | { kind: "completed" } |
error |
not declared | error: LlmFailure |
{ error, kind: "error" } |
forked |
not declared | none | { kind: "forked" } |
interrupted |
not declared | none | { kind: "interrupted" } |
max-tokens |
not declared | none | { kind: "max-tokens" } |
UserMessage
SHA-256: 4035903993dfee62cca2142c0ca51ab57075909ddee2817d0620daa97ac4d4ce
Sources: packages/llm/llm/src/message.ts:162
| Property | Presence | Type |
|---|---|---|
content |
required | ContentBlock[] |
id |
required | string |
role |
required | "user" |
source |
required | MessageSource |
Source compatibility: source — session-source-attribution v1; session.user-message.source; kind; preserve.
Attribution-only additions: action-cards, tmux-context, user-question-reply, working-directory.
UserMessage[]
SHA-256: 7c203f3d4dfa6638ff2601247cc7ca5d46731d2c614aa61217475b9eb1fbd0b3
Array of UserMessage.
WorkflowAgentOutcome
SHA-256: c2deb7c9183735d4e0fffddf5c623f4e34daa1c8e96b111982e957dfcbbcf896
Sources: packages/workflow/workflow/src/types.ts:110
One of:
"cancelled""completed""failed"
WorkflowStopReason
SHA-256: 8465ece5e9d9007c038b357015d849c15262cb0bc25abc59e47692d87ee01a15
Sources: packages/workflow/workflow/src/types.ts:63
One of:
"cancelled""completed""error"
boolean
SHA-256: aa93010d0e521ad7c42273f58d5c9b8bf1dfc94edf1b805a3971b364a35c1877
boolean
false
SHA-256: 0c4205180f75b9ee1e0d878bd9a9851628b5dc18448486389d9c5fdc3f1ccda3
false
never
SHA-256: fcf427290c6213c2a7feb57492d832ce324f5b9737a759f424dab69e6bd101a0
never
null
SHA-256: 938f7c7357bc403ea3b281a9dd016939df7a0880fc8db12612585be574d0d615
null
number
SHA-256: 0657d3ca5ac4e7bf79b00bcf860b1c7159d01a9da137497221ec2f1776e365f7
Sources: packages/core/session/src/types.ts:33
number
number[]
SHA-256: 5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78
Array of number.
string
SHA-256: 4cd48f3e5108bd6ebedf7301c3638839b8b2b9db8dbd493974177fbdeb91a01b
Sources: packages/api/session-controller/src/types.ts:388 · packages/attachment/attachment/src/brand.ts:6 · packages/compaction/compaction/src/brand.ts:4 · packages/core/session/src/types.ts:21 · packages/experimental/agent-team/src/types.ts:21 · packages/experimental/agent-team/src/types.ts:33 · packages/experimental/agent-team/src/types.ts:9 · packages/experimental/webhook/src/brand.ts:12 · packages/experimental/webhook/src/brand.ts:6 · packages/experimental/webhook/src/brand.ts:9 · packages/feedback/message-feedback/src/types.ts:14 · packages/goal/goal/src/types.ts:17 · packages/interaction/commands/src/brand.ts:31 · packages/interaction/user-approval/src/types.ts:17 · packages/jobs/jobs/src/brand.ts:19 · packages/llm/llm-retry/src/brand.ts:4 · packages/llm/llm/src/brand.ts:16 · packages/llm/llm/src/brand.ts:31 · packages/llm/llm/src/brand.ts:43 · packages/llm/llm/src/brand.ts:67 · packages/schedule/schedule/src/types.ts:14 · packages/session/session-title/src/index.ts:42 · packages/session/session-title/src/types.ts:17 · packages/workflow/workflow/src/types.ts:13
string
string[]
SHA-256: 93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2
Array of string.
true
SHA-256: dacf3d5f3e4ff619c1320e64a48dec5e7ecd7870bece65fbd449a0e63adfa521
true
tuple (1 positions)
SHA-256: 4aed17ec726b5397c29f6cb4bcd7905dc1a12bb6140f1657f073cd24380f2af8
| Position | Presence | Type |
|---|---|---|
| 0 | required | { type: "web_search_20250305" } |
tuple (1 positions)
SHA-256: 8f6d609794bf5afc01d7ccf3e03811d32f4b8047f58a2c9a98db0154c2ad7cb9
| Position | Presence | Type |
|---|---|---|
| 0 | required | TextBlock |
tuple (1 positions)
SHA-256: b993441f8ce7d27b80e619e113e232ae8e62d3d5a8340f6bfe12d8c4c018e62f
| Position | Presence | Type |
|---|---|---|
| 0 | required | { role: "user" } |
union (2 variants)
SHA-256: 1ab2ef1296f157ba96998f179bb5daa9d21a82480da2901127aeab2730797c92
One of:
"error""success"
union (2 variants)
SHA-256: 50cf02d875f8a1f1411f4a6fbcffab9120ccef5f74a47331fbf29480e5f68f48
One of:
"fork""fresh"
union (2 variants)
SHA-256: 824a4aad44a54e245c67196817d67946734a2dc0eee0b0b6834a5b2a6ef352ce
| kind | Form property | Other required fields | Full definition |
|---|---|---|---|
owner |
not declared | none | { kind: "owner" } |
share-viewer |
not declared | actor: { displayName?, providerId, subjectId, tenantId }; shareId: string |
ShareViewerPrincipal |
union (2 variants)
SHA-256: 9947aa5938fe19a895298da412917acbf9ffb5093a73ab8baa257e6ae9e63a07
One of:
{ compactionId, llmStreamCall, maxTokens?, model, … }{ compactionId, maxTokens?, model, provider, … }
union (3 variants)
SHA-256: 5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc
One of:
{ ignorable?, seq, sourceEventSeqs?, surfaceOp, … }{ ignorable?, seq, surfaceOp, time, … }{ ignorable?, seq, time, type }
union (3 variants)
SHA-256: 904bf499d98be4a3a5f836fcac533b6c4899569b018071e6604e1d32657d00fd
One of:
"remove""replace""set"
union (3 variants)
SHA-256: c2f49004d9ae38a964e80850c87bc6849d6a872091a1d43e99eedf00c641e2a3
One of:
"completed""failed""killed"
union (3 variants)
SHA-256: fd0d91a1f9dd2efb8959bdf5e07f8f0a98b1cdfa38ce8d4732ebde0b44c3abd4
One of:
"completed""in_progress""pending"
union (6 variants)
SHA-256: 62e6a429ff3f390a46ac39fb468692032f42936ca0db19b53454184189401379
One of:
"block""complete""create""edit""pause""resume"
union (7 variants)
SHA-256: 3305a4bb6b6c29b482ba91d59c60b47e8f98282d3dacc8c29e4a4c2712209bdd
One of:
"instruction-following""other""product-interaction""resource-cost""security-privacy-permission""service-stability""task-result"
unknown
SHA-256: bbc5696e3f13c758237b316e3cf08cda0b9fd51ffe672539883457769faa185d
unknown: the declaration does not expose the stored value's internal fields.
unknown[]
SHA-256: b1664fa89f8eab49a14e7e3168d8bc4da4aa9fd76332f6c4a053d839e5276ae7
Array of unknown (opaque).
{ active }
SHA-256: 20a57544bbf204dacd1ae6beb2ab29444365c3c869f2afdf489dcdcbc3d9c8c5
Sources: packages/plan/plan-mode/src/index.ts:53
| Property | Presence | Type |
|---|---|---|
active |
required | boolean |
{ agentPreset }
SHA-256: 6e52dd55a1d48954ed5464ec46fe34d9eb65f709baabc9561e7a279910b0c406
Sources: packages/preset/agent-preset-registry/src/session.ts:31
| Property | Presence | Type |
|---|---|---|
agentPreset |
required | string |
{ allowedModels }
SHA-256: 0d47a8f3d847243c4488e755ad4cab7a04ac5d4621b9c81865524cf3f4d8536f
Sources: packages/subagent/tool-subagent/src/model-selection-state.ts:17
| Property | Presence | Type |
|---|---|---|
allowedModels |
required | SessionTitleModelIdentity[] |
{ args?, commandId, name, source }
SHA-256: a853902cfab417b8f08aa51ad6855fea46f34ed4588a74e47403035111d0fb86
Sources: packages/interaction/commands/src/types.ts:105
| Property | Presence | Type |
|---|---|---|
args |
optional | string |
commandId |
required | string |
name |
required | string |
source |
required | CommandSource |
{ arguments, callId, name, step, … }
SHA-256: e4c18e294232c3ba6c9f1999f168263cc55956147cfe4121720899be8e52edd1
Sources: packages/core/session/src/types.ts:369
| Property | Presence | Type |
|---|---|---|
arguments |
required | string |
callId |
required | string |
name |
required | string |
step |
required | number |
turn |
required | number |
{ callId, files, turn }
SHA-256: 1528539c63db8b23506f0209a99ce77d8ad138adfbfcee3d4769b7382d93756c
Sources: packages/deliverables/tool-present/src/types.ts:15
| Property | Presence | Type |
|---|---|---|
callId |
required | string |
files |
required | PresentedFile[] |
turn |
required | number |
{ callId?, id, reason?, toolName }
SHA-256: 45f2a07ea94573123b6ae14db787a40062dec3834f36d8be92c523d40ba28448
Sources: packages/interaction/user-approval/src/types.ts:44
| Property | Presence | Type |
|---|---|---|
callId |
optional | string |
id |
required | string |
reason |
optional | string |
toolName |
required | string |
{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }
SHA-256: 4f91f187baeabef5c7950c4780d31bbe39f3345dff591a6cf26ac7e135ac1cf4
Sources: packages/context/session-reference/src/types.ts:18
| Property | Presence | Type |
|---|---|---|
capturedFormatVersion |
optional | number |
capturedThroughSeq |
required | OptionalSessionSeq |
compacted |
required | boolean |
inputIndex |
required | number |
label |
required | string |
omittedBytes |
required | number |
omittedMessages |
required | number |
originalMessages |
required | number |
retainedMessages |
required | number |
sessionId |
required | string |
truncated |
required | boolean |
{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }[]
SHA-256: df843efd87c78cf8de98f8e0d0216956cd568d0d0e56a22c853663e274aa1a18
Array of { capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }.
{ childCreatedAt, childId, label, mode, … }
SHA-256: 0e10d7c096b47e61defe372a5fc8bd37d835199410eac44367f95c45082498bd
| Property | Presence | Type |
|---|---|---|
childCreatedAt |
required | number |
childId |
required | string |
label |
required | string |
mode |
required | "continuable" |
version |
required | 0 |
{ childCreatedAt, childId, label, mode, … }
SHA-256: e2ad8f5bcd813f268ffef1b10a12d7ddd2b8ced8b9b6d0275b3f6b7ed094a187
| Property | Presence | Type |
|---|---|---|
childCreatedAt |
required | number |
childId |
required | string |
label |
required | string |
mode |
required | "continuable" |
version |
required | 1 |
{ childCreatedAt, childId, label?, mode, … }
SHA-256: 5d542ac7bdf13310c46e1a884dec9fb18ad8c6e153cff207e639cd7bf9d7e694
| Property | Presence | Type |
|---|---|---|
childCreatedAt |
required | number |
childId |
required | string |
label |
optional | string |
mode |
required | "one-shot" |
version |
required | 0 |
{ childCreatedAt, childId, label?, mode, … }
SHA-256: a0f25b5aeeebf2bf1542ce67726b095e3b139a39c71861d57e827f12dea1f499
| Property | Presence | Type |
|---|---|---|
childCreatedAt |
required | number |
childId |
required | string |
label |
optional | string |
mode |
required | "unknown" |
version |
required | 1 |
{ childCreatedAt, childId, label?, mode, … }
SHA-256: b6896938660a1dfe4ddd100fb3164d9f8fa57feeabfe37441a80106c9942697a
| Property | Presence | Type |
|---|---|---|
childCreatedAt |
required | number |
childId |
required | string |
label |
optional | string |
mode |
required | "one-shot" |
version |
required | 1 |
{ childCreatedAt, childId, label?, mode, … }
SHA-256: cbbe8377ee744964537dbafd83607219e58ba79a13f6db0d0645c7ad3d5e8a09
| Property | Presence | Type |
|---|---|---|
childCreatedAt |
required | number |
childId |
required | string |
label |
optional | string |
mode |
required | "external" |
version |
required | 2 |
{ code, name, reason? }
SHA-256: a81059ca06999da1e712414520c2c65e491d052fcf9640fae20aa38f0a5dc735
Sources: packages/core/session/src/types.ts:391 · packages/core/tool-executor-ptc/src/types.ts:27
| Property | Presence | Type |
|---|---|---|
code |
required | string |
name |
required | string |
reason |
optional | string |
{ commandId, kind, sourceEventSeq?, text? }
SHA-256: 5b6fb1f226ff56402db08a6aae82af76100b14056271875f69ec526a1ae05d51
Sources: packages/interaction/commands/src/types.ts:112
| Property | Presence | Type |
|---|---|---|
commandId |
required | string |
kind |
required | union (2 variants) |
sourceEventSeq |
optional | number |
text |
optional | string |
{ compactionId, error?, sourceCommandId?, turn }
SHA-256: ca59530d1a4f3e191b4032bc4a20eded0d827db8b5a7efb27b3af9e9b456c6f2
Sources: packages/compaction/compaction/src/types.ts:72
| Property | Presence | Type |
|---|---|---|
compactionId |
required | string |
error |
optional | string |
sourceCommandId |
optional | string |
turn |
required | OptionalSessionSeq |
{ compactionId, llmStreamCall, maxTokens?, model, … }
SHA-256: a99ec0993c62c058e50af9f68922202a3b54f5e259bc2abf1915a73381d2316d
| Property | Presence | Type |
|---|---|---|
compactionId |
required | string |
llmStreamCall |
required | true |
maxTokens |
optional | number |
model |
required | string |
provider |
required | string |
rawOutput |
required | ContentBlock[] |
shadowedRange |
required | { end, start } |
shadowedSeqs |
required | number[] |
shadowedTokenCount |
required | number |
sourceCommandId |
optional | string |
summary |
required | ContentBlock[] |
usage |
optional | TokenUsage |
{ compactionId, maxTokens?, model, provider, … }
SHA-256: 576a2de8355eb09850963ff5953420b172e274d9283666eb7d889097db120796
| Property | Presence | Type |
|---|---|---|
compactionId |
required | string |
maxTokens |
optional | number |
model |
required | string |
provider |
required | string |
rawOutput |
optional | ContentBlock[] |
shadowedRange |
required | { end, start } |
shadowedSeqs |
required | number[] |
shadowedTokenCount |
required | number |
sourceCommandId |
optional | string |
summary |
required | ContentBlock[] |
usage |
optional | TokenUsage |
{ compactionId, sourceCommandId?, turn }
SHA-256: 3e4e7683b0192c9f0e6a75c59076108f017892cdb302a98032c2632fd79c356f
Sources: packages/compaction/compaction/src/types.ts:24
| Property | Presence | Type |
|---|---|---|
compactionId |
required | string |
sourceCommandId |
optional | string |
turn |
required | OptionalSessionSeq |
{ cwd }
SHA-256: da60ed58a8fa23d7aa4920ab5c1f4e3d28109cb0797ef9e5c8b125721b847582
Sources: packages/session/working-directory/src/index.ts:36
| Property | Presence | Type |
|---|---|---|
cwd |
required | string |
{ decision, durationMs, exitCode?, handlerId, … }
SHA-256: 8ad45ad053b4d89f8865c17cc9ff3b8748e86045f3f0fb816269a34af2619141
Sources: packages/experimental/hook-protocol/src/types.ts:31
| Property | Presence | Type |
|---|---|---|
decision |
required | string |
durationMs |
required | number |
exitCode |
optional | number |
handlerId |
required | string |
point |
required | string |
stderrSummary |
optional | string |
turn |
required | number |
{ delayMs, failure, maxRetries, mode, … }
SHA-256: cdee10e87dbed8440d8b6935888624884878efc7af95402e94171b29f173dced
Sources: packages/llm/llm-retry/src/types.ts:17
| Property | Presence | Type |
|---|---|---|
delayMs |
required | number |
failure |
required | LlmFailure |
maxRetries |
required | number |
mode |
required | "normal" |
policyKey |
required | string |
provider |
required | string |
retry |
required | number |
retryId |
required | string |
step |
required | number |
turn |
required | number |
{ delayMs, failure, mode, policyKey, … }
SHA-256: 374fdd68aee5ff844e378c0cbdd961d247a0f22e4ade0bb03d800cd2a46a2b8b
Sources: packages/llm/llm-retry/src/types.ts:30
| Property | Presence | Type |
|---|---|---|
delayMs |
required | number |
failure |
required | LlmFailure |
mode |
required | "always" |
policyKey |
required | string |
provider |
required | string |
retry |
required | number |
retryId |
required | string |
step |
required | number |
turn |
required | number |
{ description, name }
SHA-256: 83079c8a3f733ac3fa603eefa0fbb4737ca4d8b69e7e2e7298b60f9ac4098693
Sources: packages/skill/tool-skill/src/index.ts:43
| Property | Presence | Type |
|---|---|---|
description |
required | string |
name |
required | string |
{ description, name }[]
SHA-256: aba175fb20ffc71112c55efe70458ff5d7dbfb83501892b4ba8d077f0ea5d7ba
Array of { description, name }.
{ dialect, handlerId, matcher?, point, … }
SHA-256: 119abe2b9c0b2f46ecb31d82b9acba4d4b30e049f655e2475e8b4ae12d5a9e25
Sources: packages/experimental/hook-protocol/src/types.ts:19
| Property | Presence | Type |
|---|---|---|
dialect |
required | HookDialect |
handlerId |
required | string |
matcher |
optional | string |
point |
required | string |
turn |
required | number |
{ displayName?, providerId, subjectId, tenantId }
SHA-256: 0a92c5bdfa06c2e2615b777728f3aa95f408d43b9012e7b754568311251db623
Sources: packages/experimental/liveshare/src/host/viewer-principal.ts:29
| Property | Presence | Type |
|---|---|---|
displayName |
optional | string |
providerId |
required | string |
subjectId |
required | string |
tenantId |
required | string |
{ end, start }
SHA-256: 9e41386b3a0c9572b0d63078492ebb3997da7d3a830d44e0259418bd02f4bcb2
Sources: packages/compaction/compaction/src/types.ts:38 · packages/compaction/compaction/src/types.ts:84
| Property | Presence | Type |
|---|---|---|
end |
required | number |
start |
required | number |
{ endSeq, op, startSeq }
SHA-256: bcf0caf62d964b2fcf5404bd5c909cfa9a21c3f3c96e6b7e36d9e33565223825
Sources: packages/core/session/src/types.ts:472
| Property | Presence | Type |
|---|---|---|
endSeq |
required | number |
op |
required | "replace" |
startSeq |
required | number |
{ error, kind: "error" }
SHA-256: 79650cfa10aa3c52440328d85e8a25f0ffadc8d7efd784e3c0819d8bb74a1985
Sources: packages/core/session/src/types.ts:218
| Property | Presence | Type |
|---|---|---|
error |
required | LlmFailure |
kind |
required | "error" |
{ error?, message, meta?, step, … }
SHA-256: 5302e763151277614b97e77f00e3b326694c6c1247b916a20503c344dc970777
Sources: packages/core/session/src/types.ts:383
| Property | Presence | Type |
|---|---|---|
error |
optional | { code, name, reason? } |
message |
required | ToolResultMessage |
meta |
optional | JsonValue |
step |
required | number |
turn |
required | number |
{ failure, kind: "aborted" }
SHA-256: 8e31bb958e9b015e6f8407eaade32217068159e816f3cc99c3ad76eb889732e0
Sources: packages/llm/llm/src/types.ts:167
| Property | Presence | Type |
|---|---|---|
failure |
required | LlmFailure |
kind |
required | "aborted" |
{ failure, kind: "error" }
SHA-256: 693f4952fb5565da96c06bace8924b098ac2fbc915fde0ff8019701183abc057
Sources: packages/llm/llm/src/types.ts:168
| Property | Presence | Type |
|---|---|---|
failure |
required | LlmFailure |
kind |
required | "error" |
{ header, reason, startsSeries? }
SHA-256: ad0c38a0adb82a94c925456df41586d9b5f9202fca18593eae2213d4445b4585
Sources: packages/core/session/src/types.ts:398
| Property | Presence | Type |
|---|---|---|
header |
required | EpochHeader |
reason |
required | RequestHeaderReason |
startsSeries |
optional | true |
{ headerSeq?, message, step, turn }
SHA-256: 53d4f8256bc58109468ea358ac54d437760cd765012360cafe72a401e6a41d4a
Sources: packages/core/session/src/types.ts:317
| Property | Presence | Type |
|---|---|---|
headerSeq |
optional | number |
message |
required | DeveloperMessage |
step |
required | number |
turn |
required | number |
{ height, width }
SHA-256: 0f46153645c297846a3fad3911636659ca4717a5e7d71c9f50bffacd312115ef
Sources: packages/attachment/attachment/src/types.ts:28
| Property | Presence | Type |
|---|---|---|
height |
required | number |
width |
required | number |
{ id, outcome }
SHA-256: 93cbbc5a7fd0b1aa1ff1b9a6bb5ec52b073f48e5a5200365c45c0cd54059e1b9
Sources: packages/interaction/user-approval/src/types.ts:55
| Property | Presence | Type |
|---|---|---|
id |
required | string |
outcome |
required | ApprovalOutcome |
{ ignorable?, seq, sourceEventSeqs?, surfaceOp, … }
SHA-256: 998f22585a5d73ec005365e203f07fc3b3a029e82323fdda3fd7f13b0a9639d0
| Property | Presence | Type |
|---|---|---|
ignorable |
optional | true |
seq |
required | number |
sourceEventSeqs |
optional | number[] |
surfaceOp |
required | SurfaceOp |
time |
required | number |
type |
required | string |
{ ignorable?, seq, surfaceOp, time, … }
SHA-256: 7af85bf70d4eafce63e739adae38ea85501e68df3a0e22f97f3a0be90fd9e4cb
| Property | Presence | Type |
|---|---|---|
ignorable |
optional | true |
seq |
required | number |
surfaceOp |
required | SurfaceOp |
time |
required | number |
type |
required | string |
{ ignorable?, seq, time, type }
SHA-256: e3e77b26f0148755a505f5b8ea843a3be117827d4703bb5754d9dc8ddbef521f
| Property | Presence | Type |
|---|---|---|
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | string |
{ inherited? }
SHA-256: 17d1afb770d9941936130996da00dc86782cfef731d8d6526162c301256a4ac3
Sources: packages/core/session/src/types.ts:435
| Property | Presence | Type |
|---|---|---|
inherited |
optional | true |
{ inserted, outcome?, removedCount?, start, … }
SHA-256: d4d960185026266ed7bd127be1e252234689e8b4890c7c2677a644ba58f35401
Sources: packages/core/agent/src/types.ts:110
| Property | Presence | Type |
|---|---|---|
inserted |
required | UserMessage[] |
outcome |
optional | "canceled" |
removedCount |
optional | number |
start |
required | number |
target |
required | InboxTarget |
{ interrupted?, message, step, stream, … }
SHA-256: 1ccb56061942f5ccb0d30c9e4f2883b9d115ff906560029de637b61d3cde896d
Sources: packages/core/session/src/types.ts:349
| Property | Presence | Type |
|---|---|---|
interrupted |
optional | true |
message |
required | AssistantMessage |
step |
required | number |
stream |
required | AssistantStreamRecord[] |
turn |
required | number |
usage |
optional | TokenUsage |
{ kind: "aborted", reason }
SHA-256: 0a30c3be336cdd4f8f34e66543a3d46d611c43986edd9b3ce6cbb9b721d3b5d3
Sources: packages/core/session/src/types.ts:209
| Property | Presence | Type |
|---|---|---|
kind |
required | "aborted" |
reason |
required | TurnEndCancelCause |
{ kind: "action-cards" }
SHA-256: dde0cdf9d426768b649b5a9783d2144e7f900c35ef65229cd89036dbf411d1b0
| Property | Presence | Type |
|---|---|---|
kind |
required | "action-cards" |
through |
required | number |
{ kind: "action-cards", form: "catalog" }
SHA-256: dd00cdccd0ba487b92362ef67db58cd264f48c1bfd368291424a1da9a899489a
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "action-cards" |
through |
required | number |
{ kind: "action-cards", form: "instructions" }
SHA-256: ba2a1a8f194b1bb21f270713398f6643e206e8ff5f7f26f6d36a88e3f0f0ab10
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "action-cards" |
through |
required | number |
{ kind: "action-cards", form: "notice" }
SHA-256: e7f4cbb3a57f4cbdb61ea41e95bcba626ad1fff6bb9b1e063b1d50a32da6e864
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "action-cards" |
summary |
required | string |
through |
required | number |
{ kind: "action-cards", form: "recall" }
SHA-256: b613f83572fe2fbf7259c72308cafd008f4fceea897749128a48bcd158f290aa
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "action-cards" |
through |
required | number |
{ kind: "action-cards", form: "relay" }
SHA-256: 45f005e6bbb7645248be792b715a74bc7fdf5a67f5381655d3a75dcc7aa2112e
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "action-cards" |
through |
required | number |
{ kind: "action-cards", form: "snapshot" }
SHA-256: 3247e566f4340029325b70e4366b56fa9719977f1e39033b769a2ec221ab22a9
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "action-cards" |
sections |
required | ContextSnapshotSection[] |
through |
required | number |
{ kind: "blocked" }
SHA-256: 023a355b2be0d688fb6e4df8388dadb942761d46cfe96d0f499aae9631a159d4
Sources: packages/core/session/src/types.ts:211
| Property | Presence | Type |
|---|---|---|
kind |
required | "blocked" |
{ kind: "completed" }
SHA-256: b6ef9c6210be8350cd465f485cf520031fffa6bf3809c61a1e713e834c5982d0
Sources: packages/core/session/src/types.ts:207
| Property | Presence | Type |
|---|---|---|
kind |
required | "completed" |
{ kind: "cordis-host-runner" }
SHA-256: 02b2c23f2d94b028c9588a8faace3fce1217405db346da3389368b495457bf79
Sources: packages/extensions/cordis-host-runner/src/index.ts:14
| Property | Presence | Type |
|---|---|---|
kind |
required | "cordis-host-runner" |
{ kind: "disposed" }
SHA-256: 4bb451330ff699f36b45539ceb0eb2606ead72084e2c5bb637c36cc80e2252db
Sources: packages/core/session/src/types.ts:198
| Property | Presence | Type |
|---|---|---|
kind |
required | "disposed" |
{ kind: "dsh-session-title-llm" }
SHA-256: 290f32bfd81ff85a8095886a8066fae06e885942b63a8bcd6a8d66d328445808
| Property | Presence | Type |
|---|---|---|
kind |
required | "dsh-session-title-llm" |
{ kind: "dsh-session-title-llm", form: "catalog" }
SHA-256: 80677c8c8b804189a0fde8aa70dd4ad7af8bb12dfd03027e8e023c8592c838bc
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "dsh-session-title-llm" |
{ kind: "dsh-session-title-llm", form: "instructions" }
SHA-256: 224aa11d4d5f88c450822d01b99e6ca5e3a9c7f26a5ede10bae33384a09ef4dc
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "dsh-session-title-llm" |
{ kind: "dsh-session-title-llm", form: "notice" }
SHA-256: 8338ee303e2bd448e9e6144069942f63e3cfd5868962bddc9347d7009e8919d6
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "dsh-session-title-llm" |
summary |
required | string |
{ kind: "dsh-session-title-llm", form: "recall" }
SHA-256: b2a5c8c008a31e3dc6c3013502f2356aca13894b31c8e70601fa92f2d40d1dba
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "dsh-session-title-llm" |
{ kind: "dsh-session-title-llm", form: "relay" }
SHA-256: 7eaef7a763ba5b949b8464bc8add8980a3a5ab566014b69787aeba71e5dfe07b
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "dsh-session-title-llm" |
{ kind: "dsh-session-title-llm", form: "snapshot" }
SHA-256: ba4c40b4381e0dcdfab8fc9fc75b5c9b3e8f09ef56deeb1bec8e703b0ef8cd6d
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "dsh-session-title-llm" |
sections |
required | ContextSnapshotSection[] |
{ kind: "fallback" }
SHA-256: 1b5649238876e28811e80f10ec67a00c197ad3babd4ecc61a22b09064b88c597
Sources: packages/session/session-title/src/types.ts:29
| Property | Presence | Type |
|---|---|---|
kind |
required | "fallback" |
{ kind: "forked" }
SHA-256: ec8b5ff7c77ca6893ac7ba5a0c5b2aefeb52f12c64450b7359660c2a7e8a53d7
Sources: packages/core/session/src/types.ts:234
| Property | Presence | Type |
|---|---|---|
kind |
required | "forked" |
{ kind: "hook" }
SHA-256: 6c5a37d42ebdb12db4410699259335f1e149e3a0260425684c00b153afc8990d
Sources: packages/core/session/src/types.ts:197
| Property | Presence | Type |
|---|---|---|
kind |
required | "hook" |
reason |
required | string |
{ kind: "hooks-claude-code" }
SHA-256: 0ed8d1108fe7a5e1c3078ef1faea12199a56b6b1216ccaceb0f6103b0c9a7691
| Property | Presence | Type |
|---|---|---|
kind |
required | "hooks-claude-code" |
{ kind: "hooks-claude-code", form: "catalog" }
SHA-256: 297fbd8067d7815adae02b89790ec6ff5fb7c2cb0d0eb026e1746c24ec857761
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "hooks-claude-code" |
{ kind: "hooks-claude-code", form: "instructions" }
SHA-256: b70f3e81fe11b7a5f2504fb47a4502fb8d9c8f0731fdfe8ddcaf9b41f5a6e196
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "hooks-claude-code" |
{ kind: "hooks-claude-code", form: "notice" }
SHA-256: edbbfff1128099fda7b792c56330d2cb04debc9790988e66d1c3f4026e813e0e
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "hooks-claude-code" |
summary |
required | string |
{ kind: "hooks-claude-code", form: "recall" }
SHA-256: 87b1a33564b9a4d63b00988a524c12259243953aebb9c9a05127d87b27464df9
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "hooks-claude-code" |
{ kind: "hooks-claude-code", form: "relay" }
SHA-256: 6ea608bdc8a7a63d3d23b84c49721325094db88d136482e43a820945295eee3e
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "hooks-claude-code" |
{ kind: "hooks-claude-code", form: "snapshot" }
SHA-256: 3bdb8dc6989655b0d4ec361edafb8e2629bc263e1ea591819414fdafc1a413b3
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "hooks-claude-code" |
sections |
required | ContextSnapshotSection[] |
{ kind: "hooks-codex" }
SHA-256: b4ec0af39fd52ed971990e42f04e5be3204882e555c409eb330f8238eec21569
| Property | Presence | Type |
|---|---|---|
kind |
required | "hooks-codex" |
{ kind: "hooks-codex", form: "catalog" }
SHA-256: 99f0e98184709ad10f27bfdeaafb4457d9d2b413f402331764798cdb7d3cbe4d
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "hooks-codex" |
{ kind: "hooks-codex", form: "instructions" }
SHA-256: b6f94c17dd9bbd7cd57015198b7c7c88407f0e3b89faab176ca3c11c3d864d3e
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "hooks-codex" |
{ kind: "hooks-codex", form: "notice" }
SHA-256: 854db3efdfb0cd39d30953b28703e519c121f1115cebfffc40369fe86c406dd1
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "hooks-codex" |
summary |
required | string |
{ kind: "hooks-codex", form: "recall" }
SHA-256: 3b4f2c9ef2c1217eac596c7b070173cb7896e2fae09e729bc7c56c801e56bb29
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "hooks-codex" |
{ kind: "hooks-codex", form: "relay" }
SHA-256: 1fdad624334d354820dfb3a26e28d0bc9fc1b62a33f87bab63f715b3f4391bfd
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "hooks-codex" |
{ kind: "hooks-codex", form: "snapshot" }
SHA-256: 88841202942c7683b3b7e5ea6a796047ec326b6701ac23e58cc236d85613b9fa
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "hooks-codex" |
sections |
required | ContextSnapshotSection[] |
{ kind: "interrupted" }
SHA-256: 56b7c047694875a843ba020dfea3c8380d54ae4ff88ab349e72004dc21e07c23
Sources: packages/core/session/src/types.ts:227
| Property | Presence | Type |
|---|---|---|
kind |
required | "interrupted" |
{ kind: "legacy" }
SHA-256: eaa71be0fbf0f702df8ea6c11d0aa2f9782263d45a10d0fb14eda662f4bfe04c
Sources: packages/core/session/src/types.ts:201
| Property | Presence | Type |
|---|---|---|
kind |
required | "legacy" |
{ kind: "max-tokens" }
SHA-256: ab7ec5f9eb2c6dfacca5da4c37cf7ba85d04172053ee6b1ebf1709ffcd99c1a7
Sources: packages/core/session/src/types.ts:220 · packages/llm/llm/src/types.ts:166
| Property | Presence | Type |
|---|---|---|
kind |
required | "max-tokens" |
{ kind: "model-selection" }
SHA-256: f7283223aacdc39b0adca728c8cbd4c090a20006a6fecec74421c30e943b489c
| Property | Presence | Type |
|---|---|---|
kind |
required | "model-selection" |
{ kind: "model-selection", form: "catalog" }
SHA-256: 99135d8a3937977955eaac5f8f04f930dcd1562f8450a54a51cde9b921dd59a6
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "model-selection" |
{ kind: "model-selection", form: "instructions" }
SHA-256: f6605d6c57933aeaaf10911b5fbd6c61e655baa181af7192d3240f49d255b90d
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "model-selection" |
{ kind: "model-selection", form: "notice" }
SHA-256: a3c6f1ea38e9a61d7a9706057ba65aabe02dfe6d9dd90d4736aa62325d874531
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "model-selection" |
summary |
required | string |
{ kind: "model-selection", form: "recall" }
SHA-256: aae343bc3d663c83f2e8b5e1c7eea5d509dc7a5361bc8bd8b5ac3bb8d3b1ed56
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "model-selection" |
{ kind: "model-selection", form: "relay" }
SHA-256: a15a19ef63cf5d1b711db1d249821dab0cedcd3a9ad09137b47352c93841fd20
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "model-selection" |
{ kind: "model-selection", form: "snapshot" }
SHA-256: 52c6113cb0e53f345324bf84f01928bea5d5df57ee80bc0dd65407b8bc5a3734
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "model-selection" |
sections |
required | ContextSnapshotSection[] |
{ kind: "owner" }
SHA-256: deebfc7c62177ea840f23c6362b8615bc78ffa93377dd5d243c04e541c413af5
Sources: packages/typert/protocol/src/types.ts:457
| Property | Presence | Type |
|---|---|---|
kind |
required | "owner" |
{ kind: "parent" }
SHA-256: 6c03546143cdf6ae88f1745ac98c5139efa1588d1415249bbc5f3104d32ab800
Sources: packages/core/session/src/types.ts:196
| Property | Presence | Type |
|---|---|---|
kind |
required | "parent" |
{ kind: "plan-mode" }
SHA-256: f4a66f654996c093aae700ea4c434ff2ee3569fea9c0e5813ccf6afdccabd163
| Property | Presence | Type |
|---|---|---|
kind |
required | "plan-mode" |
{ kind: "plan-mode", form: "catalog" }
SHA-256: 3b04790e08b35241ffa0d38f6d7e4f8788aa921341f6c0d7574a329397c59408
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "plan-mode" |
{ kind: "plan-mode", form: "instructions" }
SHA-256: 408927267422a7b2beb6df354ff7c1406d929a5646554f48adf85eb8372f811c
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "plan-mode" |
{ kind: "plan-mode", form: "notice" }
SHA-256: baccc97ec34be6c4c78e95aa88c85c29820269479445e5b13f956cd64c5e286f
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "plan-mode" |
summary |
required | string |
{ kind: "plan-mode", form: "recall" }
SHA-256: f6329fb30c7ea8013e8975ca5e78284fb7685cc6bd620e8aa4e9a99bc81d45eb
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "plan-mode" |
{ kind: "plan-mode", form: "relay" }
SHA-256: deaae5cd30987d4f49398e8f9d994c125907e7f928300745fb1dbf15f145d0e7
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "plan-mode" |
{ kind: "plan-mode", form: "snapshot" }
SHA-256: 8c1c4f72755a78ea163523a46565316e36e9b644382eb48e6635c71a6f412dd2
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "plan-mode" |
sections |
required | ContextSnapshotSection[] |
{ kind: "provider" }
SHA-256: b81e9de81a481b24e1e1f9adf038bfc59e57b4f35ce62f8f1e45284186f4f812
Sources: packages/session/session-title/src/types.ts:30
| Property | Presence | Type |
|---|---|---|
kind |
required | "provider" |
model |
optional | SessionTitleModelIdentity |
provider |
required | string |
{ kind: "ptc-mode" }
SHA-256: dba54c09c6e7aafc9acbed7792ecc920d99f92d0784aeeed10af55f7fe0bc8cd
Sources: packages/core/tool-executor-ptc/src/types.ts:68
| Property | Presence | Type |
|---|---|---|
kind |
required | "ptc-mode" |
{ kind: "repeat-tool-reminder" }
SHA-256: b062078e899958f99ae464514578b8c093924dfe34bd9a835932b420ff2150b1
| Property | Presence | Type |
|---|---|---|
kind |
required | "repeat-tool-reminder" |
{ kind: "repeat-tool-reminder", form: "catalog" }
SHA-256: d85590a5675c6e2fd8164e5792a6cceac714605b8ac228adae5ee668facb1490
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "repeat-tool-reminder" |
{ kind: "repeat-tool-reminder", form: "instructions" }
SHA-256: 6f44f32be9bcd9a8bf075c3b575b06c8ed63446386e5b0995c7b73762e68ddae
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "repeat-tool-reminder" |
{ kind: "repeat-tool-reminder", form: "notice" }
SHA-256: fe1a7acdeed4d0f5ab483396eaa5b3dc97263b7c10eb4da2f0028cb01728bfc9
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "repeat-tool-reminder" |
summary |
required | string |
{ kind: "repeat-tool-reminder", form: "recall" }
SHA-256: 8620189c8e33582708ece48fd2d20dc4d57912486a17bdbb9aea4c44f7018062
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "repeat-tool-reminder" |
{ kind: "repeat-tool-reminder", form: "relay" }
SHA-256: 4991dfc415c9efebc36fa6969e1798c7d2e42396cc1e6e0ac7d7c89c5c5c4aea
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "repeat-tool-reminder" |
{ kind: "repeat-tool-reminder", form: "snapshot" }
SHA-256: db06ef35b27a38425046b2228fa6bce9582abe140d781d363137eb2f4d233a1c
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "repeat-tool-reminder" |
sections |
required | ContextSnapshotSection[] |
{ kind: "runtime-context" }
SHA-256: 0203243b72fc867afc81aff5f4cf2167e564ed342534eb612fc92f295cf07789
| Property | Presence | Type |
|---|---|---|
kind |
required | "runtime-context" |
{ kind: "runtime-context", form: "catalog" }
SHA-256: 58015da1c1950a66daf66ae24913d6a1fc6d1d9ac441b155f8847f7f8584ba8e
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "runtime-context" |
{ kind: "runtime-context", form: "instructions" }
SHA-256: 0eeb17e1df89b1ebc2902116fe7145e0d321ef0db26e6bdebc802cb8513a01c1
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "runtime-context" |
{ kind: "runtime-context", form: "notice" }
SHA-256: cda2345a9be9d139df49ccbd16dcba716f3440178bf20ff8b801fda1f5eb77dc
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "runtime-context" |
summary |
required | string |
{ kind: "runtime-context", form: "recall" }
SHA-256: 96bfb916a727cd4445a594df264c523fc039749a31bfed924b8cc7bb308a5bb0
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "runtime-context" |
{ kind: "runtime-context", form: "relay" }
SHA-256: cb1c8959e1726f82f9a3d2ef2bc90bf8c451a98fd56175e956022124c770c818
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "runtime-context" |
{ kind: "runtime-context", form: "snapshot" }
SHA-256: 2aad1179f957631477b582e57cd8f538cb82618fc3fb816bde1171154235b065
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "runtime-context" |
sections |
required | ContextSnapshotSection[] |
{ kind: "schedule" }
SHA-256: f29d63336e8266d80dd7baeab219436db86341304f6be1cd0edb36f5134c4a47
| Property | Presence | Type |
|---|---|---|
kind |
required | "schedule" |
{ kind: "schedule", form: "catalog" }
SHA-256: 1e709346005826eb81809eeb76a3f713cf13ad6c5cec75146d07020ab9adc938
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "schedule" |
{ kind: "schedule", form: "instructions" }
SHA-256: 1938c8c20f1cba7c82dbedcfa4f14c3ee191cd77ed3314ee1fc676d44cadf3be
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "schedule" |
{ kind: "schedule", form: "notice" }
SHA-256: 312aee2f0c42aabbae6cc60d92d596d8453c0aeb061c5868d1755a69ef49e69a
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "schedule" |
summary |
required | string |
{ kind: "schedule", form: "recall" }
SHA-256: a16e567c8cd2c55cf1e911aed3c200c4e1f6febb1459ff2a9e7adf159afb68cb
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "schedule" |
{ kind: "schedule", form: "relay" }
SHA-256: 5bc66269cfaf614c0ecda8ecb469f23101a7609793fc2b693ac23c4aecdb575e
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "schedule" |
{ kind: "schedule", form: "snapshot" }
SHA-256: 28936c614bd4e7e2774806edcbb3cbfd3ee643ac1cbf0bbdff43d915505a8fe3
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "schedule" |
sections |
required | ContextSnapshotSection[] |
{ kind: "stop" }
SHA-256: 1d76406cbb2ddadb0dbbb51e9d8bc6cf678fed455cf8eb512f36f7c86d37a62f
Sources: packages/llm/llm/src/types.ts:164
| Property | Presence | Type |
|---|---|---|
kind |
required | "stop" |
{ kind: "time-context" }
SHA-256: b79641a9d25e756636dc0c706fdf3c4583ccb7d4920e009e6e86c0759cf4de4c
| Property | Presence | Type |
|---|---|---|
kind |
required | "time-context" |
{ kind: "time-context", form: "catalog" }
SHA-256: 85fe96bf15d5c7559eec3bae4d6cf1a76fda9f5be05a29c2830cff560cab0c0d
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "time-context" |
{ kind: "time-context", form: "instructions" }
SHA-256: f6afe41e3926f422fe849debe90819fddd739f0f59e20be9c71018b9554a7f09
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "time-context" |
{ kind: "time-context", form: "notice" }
SHA-256: ee577a0cc18664c9daee50e9455153321155604f8f1817362f8f4a4b6fb9e1ad
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "time-context" |
summary |
required | string |
{ kind: "time-context", form: "recall" }
SHA-256: 756b5e23a5cb2c7f486f366a828f7461c88902af21125bd6810881f4ccbff6cc
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "time-context" |
{ kind: "time-context", form: "relay" }
SHA-256: 5d7a64ed6aac5551ebf998dc25e1e7b48a144769913f89702840180e61dc3995
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "time-context" |
{ kind: "time-context", form: "snapshot" }
SHA-256: f230c0b583e23b25ee0a61dbe4c05e95c1e2ae44b27939501eb9e03696f0c278
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "time-context" |
sections |
required | ContextSnapshotSection[] |
{ kind: "tmux-context" }
SHA-256: 8a046b52331959aa3394680d6acbe09b8a5447c6b61375f263445bfcef19b7f1
| Property | Presence | Type |
|---|---|---|
kind |
required | "tmux-context" |
{ kind: "tmux-context", form: "catalog" }
SHA-256: 7df62978a2b7de8540e714152297743e0a622209a46a5ac9513fc0fad73ca23b
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "tmux-context" |
{ kind: "tmux-context", form: "instructions" }
SHA-256: 9f65c43e340bba31cdc0fc37bd93ccb68d5e9b36f47a68c207e95a8e68620a5d
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "tmux-context" |
{ kind: "tmux-context", form: "notice" }
SHA-256: b3681c026a0b98e98b103f057dfd217fbe904129c090efd668253ec9aea7fece
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "tmux-context" |
summary |
required | string |
{ kind: "tmux-context", form: "recall" }
SHA-256: fcf81d3c58c13593bf2594e342e31734f4ab2d24938dc610875194c6079749c7
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "tmux-context" |
{ kind: "tmux-context", form: "relay" }
SHA-256: f97f47b0eb87905ed77cc27c5e4ed75ef805cb372c98905253709de1aab9b63c
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "tmux-context" |
{ kind: "tmux-context", form: "snapshot" }
SHA-256: 49dab019d00e8c26f27ad2ccff7b604d69e323ae4d17e0d2a7b6b8a830b1ade2
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "tmux-context" |
sections |
required | ContextSnapshotSection[] |
{ kind: "tool-calls" }
SHA-256: 287211846beea1eccb5f9acee00d20388a38fcb2e95858fa2332d6f58529379a
Sources: packages/llm/llm/src/types.ts:165
| Property | Presence | Type |
|---|---|---|
kind |
required | "tool-calls" |
{ kind: "tool-goal" }
SHA-256: a2066bd52f61218ba15b758def2641cc6a8bd3d4a594a488ee4c65be356d7e39
| Property | Presence | Type |
|---|---|---|
kind |
required | "tool-goal" |
{ kind: "tool-goal", form: "catalog" }
SHA-256: 260523b412c19ad8c2bb00093b07f64245ff8ba6b2f76c5b545303772ac9704c
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "tool-goal" |
{ kind: "tool-goal", form: "instructions" }
SHA-256: 6085488d223aeffdef51d7ae17655fc26ab22ee13cbed82a50e62e2b6fb5b918
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "tool-goal" |
{ kind: "tool-goal", form: "notice" }
SHA-256: 8c627d7a45fa406cea879a3922105e27ed4c3c7966e264afaf11ea7a330f2dd1
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "tool-goal" |
summary |
required | string |
{ kind: "tool-goal", form: "recall" }
SHA-256: 7554565be416b0342053ee6a46256c9dab07c487349b4a5f10bab1edc151c619
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "tool-goal" |
{ kind: "tool-goal", form: "relay" }
SHA-256: 8f324cea3916c0517261e88167def8efb3a9994c1135e23d40ed9fd48f8c7bd4
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "tool-goal" |
{ kind: "tool-goal", form: "snapshot" }
SHA-256: 11638dc58a31496fb6706ced3e23e3a2db1f3b2a8845968c810827a72b5fc811
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "tool-goal" |
sections |
required | ContextSnapshotSection[] |
{ kind: "tool-jobs" }
SHA-256: 24ce31aa528272e59f21cd26da9eca08968bcc97529756a749bfdab71746d9c8
| Property | Presence | Type |
|---|---|---|
kind |
required | "tool-jobs" |
{ kind: "tool-jobs", form: "catalog" }
SHA-256: dd5ee8762bd8a14b6c6bffedd1753e4e78505bb0f9ea1621018d03a54eef59d5
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "tool-jobs" |
{ kind: "tool-jobs", form: "instructions" }
SHA-256: 53cf1704ae0709c7678bcf070c83c619fc48ca1b5c173b74cfa8702f22a8e492
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "tool-jobs" |
{ kind: "tool-jobs", form: "notice" }
SHA-256: 5bb69b88517f6214f2af4d1a6d2b771e271ad3ad695cc9c2c272069ae698c9bc
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "tool-jobs" |
summary |
required | string |
{ kind: "tool-jobs", form: "recall" }
SHA-256: dd6cc2bb2a8f28248347021ad93565360b196a042360b4cd16b569d3a2a91f2d
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "tool-jobs" |
{ kind: "tool-jobs", form: "relay" }
SHA-256: ade057f4fdc387aec6426f48704a1f9359cfc6fee13f27735b07f9b215ec16ca
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "tool-jobs" |
{ kind: "tool-jobs", form: "snapshot" }
SHA-256: c5228b7a55498d84f529591744a0ab26e0b93ade18a70a26db1377a1ecfa6b49
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "tool-jobs" |
sections |
required | ContextSnapshotSection[] |
{ kind: "tool-registry" }
SHA-256: 8fcb0b44a575e998665c053643d1ab04c82f39253ebd190ac0c975b78e40b543
Sources: packages/core/tools/src/index.ts:28
| Property | Presence | Type |
|---|---|---|
kind |
required | "tool-registry" |
{ kind: "user" }
SHA-256: a4afec59b75aad5d13ef82d6931f35cc2d98918503916cf069355b77c5e42302
Sources: packages/api/session-controller/src/types.ts:397
| Property | Presence | Type |
|---|---|---|
clientTimeZone |
optional | string |
kind |
required | "user" |
principal |
optional | union (2 variants) |
rpcId |
required | string |
{ kind: "user-approval" }
SHA-256: 6292bcbedaa97feaec5b48a03bb8144b581b93309d9d6c905f26da7a6a7a0a4f
| Property | Presence | Type |
|---|---|---|
kind |
required | "user-approval" |
{ kind: "user-approval", form: "catalog" }
SHA-256: 825ca23416b1ea9d81442afead5cf9229a6fa05842f042135cc3aa9710a6a2d8
| Property | Presence | Type |
|---|---|---|
form |
required | "catalog" |
kind |
required | "user-approval" |
{ kind: "user-approval", form: "instructions" }
SHA-256: aa2bf9e82b9fdeb94a42af20031fffa30e4e23f01f4ac39757427d4c64c407f0
| Property | Presence | Type |
|---|---|---|
form |
required | "instructions" |
kind |
required | "user-approval" |
{ kind: "user-approval", form: "notice" }
SHA-256: 6ccb6bc423fb3952458abf9c1b1c3284208b7e660344b612cc55da773d61afe4
| Property | Presence | Type |
|---|---|---|
form |
required | "notice" |
kind |
required | "user-approval" |
summary |
required | string |
{ kind: "user-approval", form: "recall" }
SHA-256: 022623b9ef98ec47ec3c3bae0c51027c70d2601141c5e92e26a0d83d1b4cef06
| Property | Presence | Type |
|---|---|---|
form |
required | "recall" |
kind |
required | "user-approval" |
{ kind: "user-approval", form: "relay" }
SHA-256: 5cdbf342b7748d152bc987b68f58e565e5bba4b227e076e2d2120d87662e45cd
| Property | Presence | Type |
|---|---|---|
form |
required | "relay" |
kind |
required | "user-approval" |
{ kind: "user-approval", form: "snapshot" }
SHA-256: 5654685d7557ec747e74887237065e626a5bdfa426ca43f7fbb0b6fee9b0916c
| Property | Presence | Type |
|---|---|---|
form |
required | "snapshot" |
kind |
required | "user-approval" |
sections |
required | ContextSnapshotSection[] |
{ kind: "user-question-reply" }
SHA-256: c55827fba7018198772c50e37cb7d3f60a3d8bb6e94b07de72dee0d9f8968005
Sources: packages/interaction/user-questions/src/types.ts:134
| Property | Presence | Type |
|---|---|---|
callId |
required | string |
kind |
required | "user-question-reply" |
outcome |
required | "answered" |
{ kind: "webhook", form: "notice" }
SHA-256: 9edc162949abf93bd5ff049191b345454ba104f583937ce5580fb50f067d2b94
Sources: packages/experimental/webhook/src/types.ts:74
| Property | Presence | Type |
|---|---|---|
deliveryId |
required | string |
form |
required | "notice" |
kind |
required | "webhook" |
provider |
required | string |
ruleId |
required | string |
source |
required | string |
summary |
required | string |
{ kind: "working-directory" }
SHA-256: 2235d957bf4b7c6cf959231d480f0ba1f3a6d72d82981493fb6c7c963021d3d5
Sources: packages/session/working-directory/src/index.ts:29
| Property | Presence | Type |
|---|---|---|
kind |
required | "working-directory" |
{ max_tokens, messages, model, thinking?, … }
SHA-256: 9c001ecb5e1d3c3894410db2a1e383842e5f8454fb52182338686158abc1b3ee
Sources: packages/web/web-search-deepseek/src/provider.ts:61
| Property | Presence | Type |
|---|---|---|
max_tokens |
required | number |
messages |
required | tuple (1 positions) |
model |
required | string |
thinking |
optional | { type: "disabled" } |
tools |
required | tuple (1 positions) |
{ member, teamId, version }
SHA-256: b1ebd5cda47d90d980bb05bffc3f970c51537b9aff15b3bc3d639811727741b1
Sources: packages/experimental/agent-team/src/types.ts:230
| Property | Presence | Type |
|---|---|---|
member |
required | TeamMemberSnapshot |
teamId |
required | string |
version |
required | 2 |
{ message, step, turn }
SHA-256: 6bc8e51124d0874bc89e1d0ceff381a9c3cd0fc240667d69f841ce4f60f65fe5
Sources: packages/core/session/src/types.ts:338
| Property | Presence | Type |
|---|---|---|
message |
required | SystemMessage |
step |
required | number |
turn |
required | number |
{ message, teamId, version }
SHA-256: ea08ec1df0c33108fd03345b9af199cf04dea450aa045d3c683f216311403403
Sources: packages/experimental/agent-team/src/types.ts:234
| Property | Presence | Type |
|---|---|---|
message |
required | TeamMessageSnapshot |
teamId |
required | string |
version |
required | 2 |
{ messageId, targetId, teamId, version }
SHA-256: 0bcfaf5566d271028429ac7b562cb59053c9d78b8ae14708c35fac835108d1b1
Sources: packages/experimental/agent-team/src/types.ts:236
| Property | Presence | Type |
|---|---|---|
messageId |
required | string |
targetId |
required | string |
teamId |
required | string |
version |
required | 2 |
{ mode, source? }
SHA-256: 9890113e97dd3541787bfe6704f2b223d3a890b5325ca0acae2b0398909b413e
Sources: packages/sandbox/sandbox-policy/src/session-mode.ts:33
| Property | Presence | Type |
|---|---|---|
mode |
required | SandboxMode |
source |
optional | "delegation" |
{ policy, source? }
SHA-256: 11f70b595aa76897fc4e25a352bfa718c659f44b799e5aa14e84e5a38fe72912
Sources: packages/interaction/user-approval/src/index.ts:41
| Property | Presence | Type |
|---|---|---|
policy |
required | ApprovalPolicy |
source |
optional | "delegation" |
{ preset }
SHA-256: 8a9c990773f798eac10ca8878e6bcc531ee080bc589cac956730e462cc6a09ad
Sources: packages/interaction/permission-presets/src/index.ts:53
| Property | Presence | Type |
|---|---|---|
preset |
required | string |
{ reason, turn }
SHA-256: e481c46af3813e0010558e93f578b2986acd658404cec2d1679e3ac2a6c48654
Sources: packages/core/session/src/types.ts:303
| Property | Presence | Type |
|---|---|---|
reason |
required | TurnEndReason |
turn |
required | number |
{ role: "user" }
SHA-256: 9a2a9029f8d7ede05336980d8342737557f487b913bfd28853d0ab5214600ab5
Sources: packages/web/web-search-deepseek/src/provider.ts:64
| Property | Presence | Type |
|---|---|---|
content |
required | tuple (1 positions) |
role |
required | "user" |
{ sessionFormatVersion?, sessionId, throughSeq }
SHA-256: 8bb8c3751a6ce64b61aba1ec7ae798c00a5803c4d868a0430873216c6569ed52
Sources: packages/session/session-log-deepseek/src/types.ts:81
| Property | Presence | Type |
|---|---|---|
sessionFormatVersion |
optional | number |
sessionId |
required | string |
throughSeq |
required | number |
{ shadowedRange, shadowedSeqs, shadowedTokenCount }
SHA-256: 5dd766ccd1702a1142ad8b4bd44f2242f8e8a6752669ad3de0a5d224329b1438
Sources: packages/compaction/compaction/src/types.ts:82
| Property | Presence | Type |
|---|---|---|
shadowedRange |
required | { end, start } |
shadowedSeqs |
required | number[] |
shadowedTokenCount |
required | number |
{ step, stream, turn }
SHA-256: 54f9276a1617d7c12594722c89cfe864bcbe4517e9a6f9c98bab14f199a135e0
Sources: packages/core/session/src/types.ts:363
| Property | Presence | Type |
|---|---|---|
step |
required | number |
stream |
required | AssistantStreamRecord[] |
turn |
required | number |
{ step, turn }
SHA-256: ef11a3b7fa2033ae4279545ff8a8a2ee4e301b9b73e5b91654c48e6d08283545
Sources: packages/core/session/src/types.ts:305 · packages/core/session/src/types.ts:307
| Property | Presence | Type |
|---|---|---|
step |
required | number |
turn |
required | number |
{ targets }
SHA-256: 477614bca595a9e7adb5a1870be446b9a8684f3ba8950259d6289f2d3b74f028
Sources: packages/compaction/compaction-image-offload/src/projection.ts:25
| Property | Presence | Type |
|---|---|---|
targets |
required | ImageOffloadTarget[] |
{ task, teamId, version }
SHA-256: a40d12070f6f4a124f32fb3cc86e7857554702e32f0eda3080a25c4b9ac9b18c
Sources: packages/experimental/agent-team/src/types.ts:232
| Property | Presence | Type |
|---|---|---|
task |
required | TeamTaskSnapshot |
teamId |
required | string |
version |
required | 2 |
{ todos }
SHA-256: 79ddc907312f97cf9553d4841e8b3fc937097bd8d97900a790efad3c05255e99
Sources: packages/todo/tool-todo/src/types.ts:33
| Property | Presence | Type |
|---|---|---|
todos |
required | TodoItem[] |
{ turn }
SHA-256: f90eb4ab2d3897bc20c521a038e3119d581f791ec974b1a0004f63a8ab9e232d
Sources: packages/core/session/src/types.ts:294 · packages/deliverables/workspace-changes/src/types.ts:106
| Property | Presence | Type |
|---|---|---|
turn |
required | number |
{ type: "agent-preset/selected" }
SHA-256: a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b
| Property | Presence | Type |
|---|---|---|
data |
required | { agentPreset } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "agent-preset/selected" |
{ type: "agent/inbox/spliced" }
SHA-256: cdf988172b589b230f2bce868489def1bb575eb0501076ac757a8f369ac5c64e
| Property | Presence | Type |
|---|---|---|
data |
required | { inserted, outcome?, removedCount?, start, … } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "agent/inbox/spliced" |
{ type: "approval/asked" }
SHA-256: 3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1
| Property | Presence | Type |
|---|---|---|
data |
required | { callId?, id, reason?, toolName } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "approval/asked" |
{ type: "approval/decided" }
SHA-256: bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3
| Property | Presence | Type |
|---|---|---|
data |
required | { id, outcome } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "approval/decided" |
{ type: "approval/policy" }
SHA-256: 26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78
| Property | Presence | Type |
|---|---|---|
data |
required | { policy, source? } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "approval/policy" |
{ type: "assistant/attempt" }
SHA-256: 15d5dfdd822aa35e115afd74a8982825a493880457774e6850bc1520b50875e4
| Property | Presence | Type |
|---|---|---|
data |
required | { step, stream, turn } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "assistant/attempt" |
{ type: "assistant/message" }
SHA-256: 1033093edd0db80ff410e00830b523405e00bb0c7684948e531ff65095799625
| Property | Presence | Type |
|---|---|---|
data |
required | { interrupted?, message, step, stream, … } |
ignorable |
optional | true |
seq |
required | number |
surfaceOp |
required | SurfaceOp |
time |
required | number |
type |
required | "assistant/message" |
{ type: "block-end" }
SHA-256: d4b739491689cc6bb13d07ffac1a32239875abda364c0d5edd8f74faf5e9c00d
Sources: packages/llm/llm/src/types.ts:501
| Property | Presence | Type |
|---|---|---|
block |
required | ContentBlock |
index |
required | number |
type |
required | "block-end" |
{ type: "block-start" }
SHA-256: 3bec87f9e6ab3da03346f49923d3c51621debc0159df68605e543c3b2a026f90
Sources: packages/llm/llm/src/types.ts:497
| Property | Presence | Type |
|---|---|---|
blockType |
required | ContentBlockType |
index |
required | number |
type |
required | "block-start" |
{ type: "chunk" }
SHA-256: 487b65c37bfedb8b72088c4107a0a90a6249701f6b26745f6d98f9b8a22b07c7
Sources: packages/llm/llm/src/assistant-stream.ts:44
| Property | Presence | Type |
|---|---|---|
chunk |
required | StreamChunk |
time |
required | number |
type |
required | "chunk" |
{ type: "command/done" }
SHA-256: 15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff
| Property | Presence | Type |
|---|---|---|
data |
required | { commandId, kind, sourceEventSeq?, text? } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "command/done" |
{ type: "command/run" }
SHA-256: 37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006
| Property | Presence | Type |
|---|---|---|
data |
required | { args?, commandId, name, source } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "command/run" |
{ type: "compaction/end" }
SHA-256: b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d
| Property | Presence | Type |
|---|---|---|
data |
required | { compactionId, error?, sourceCommandId?, turn } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "compaction/end" |
{ type: "compaction/prune" }
SHA-256: 7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04
| Property | Presence | Type |
|---|---|---|
data |
required | { shadowedRange, shadowedSeqs, shadowedTokenCount } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "compaction/prune" |
{ type: "compaction/start" }
SHA-256: db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965
| Property | Presence | Type |
|---|---|---|
data |
required | { compactionId, sourceCommandId?, turn } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "compaction/start" |
{ type: "compaction/summary" }
SHA-256: e2f9a41e0989f54ed8cee80f8db2bcf9d60a5c810dc9d45b83fa050b9dce7602
| Property | Presence | Type |
|---|---|---|
data |
required | union (2 variants) |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "compaction/summary" |
{ type: "deliverables/presented" }
SHA-256: 13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176
| Property | Presence | Type |
|---|---|---|
data |
required | { callId, files, turn } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "deliverables/presented" |
{ type: "developer/message" }
SHA-256: 70d2acdec1ebcfea56d02f7233ebb9ec0f7f494447fb952884c22c3afdc01d6f
| Property | Presence | Type |
|---|---|---|
data |
required | { headerSeq?, message, step, turn } |
ignorable |
optional | true |
seq |
required | number |
sourceEventSeqs |
optional | number[] |
surfaceOp |
required | SurfaceOp |
time |
required | number |
type |
required | "developer/message" |
{ type: "disabled" }
SHA-256: 37ff65426bcf130f045d3a59ef2a4648eb170cd30280cbd024108a2e9b4401d1
Sources: packages/web/web-search-deepseek/src/provider.ts:82
| Property | Presence | Type |
|---|---|---|
type |
required | "disabled" |
{ type: "feedback/message-delete" }
SHA-256: 3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796
| Property | Presence | Type |
|---|---|---|
data |
required | MessageFeedbackDelete |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "feedback/message-delete" |
{ type: "feedback/message-put" }
SHA-256: b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf
| Property | Presence | Type |
|---|---|---|
data |
required | MessageFeedbackPut |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "feedback/message-put" |
{ type: "feedback/record" }
SHA-256: b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8
| Property | Presence | Type |
|---|---|---|
data |
required | FeedbackRecord |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "feedback/record" |
{ type: "finish" }
SHA-256: a2b49331716ba0a7078b026d145306a70eae64b7313c3e6204bd931e75ec3bb1
Sources: packages/llm/llm/src/types.ts:503
| Property | Presence | Type |
|---|---|---|
reason |
required | FinishReason |
replayState |
optional | ReplayEnvelope |
type |
required | "finish" |
{ type: "goal/change" }
SHA-256: 763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d
| Property | Presence | Type |
|---|---|---|
data |
required | GoalChangeMeta |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "goal/change" |
{ type: "hook/invoked" }
SHA-256: 8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0
| Property | Presence | Type |
|---|---|---|
data |
required | { dialect, handlerId, matcher?, point, … } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "hook/invoked" |
{ type: "hook/result" }
SHA-256: e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4
| Property | Presence | Type |
|---|---|---|
data |
required | { decision, durationMs, exitCode?, handlerId, … } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "hook/result" |
{ type: "image/offload" }
SHA-256: b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e
| Property | Presence | Type |
|---|---|---|
data |
required | { targets } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "image/offload" |
{ type: "job/registered" }
SHA-256: f5520c1d261ca86ea03735799c311a0a9ede8babb588cf0a65422576d2ee0ad1
| Property | Presence | Type |
|---|---|---|
data |
required | JobRegisteredData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "job/registered" |
{ type: "job/settled" }
SHA-256: edd37b1e4974af648633014435572089b1e8fb71910468a0767a7e28fdd22abf
| Property | Presence | Type |
|---|---|---|
data |
required | JobSettledData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "job/settled" |
{ type: "llm/retry" }
SHA-256: 525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336
| Property | Presence | Type |
|---|---|---|
data |
required | LlmRetryEventData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "llm/retry" |
{ type: "llm/retry-started" }
SHA-256: 48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3
| Property | Presence | Type |
|---|---|---|
data |
required | LlmRetryStartedEventData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "llm/retry-started" |
{ type: "model/selection" }
SHA-256: 35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc
| Property | Presence | Type |
|---|---|---|
data |
required | ModelSelection |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "model/selection" |
{ type: "permission/preset" }
SHA-256: 5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b
| Property | Presence | Type |
|---|---|---|
data |
required | { preset } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "permission/preset" |
{ type: "plan/mode" }
SHA-256: a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f
| Property | Presence | Type |
|---|---|---|
data |
required | { active } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "plan/mode" |
{ type: "reasoning-chunks" }
SHA-256: 71bb3254ec8f1e491ce63b762a7b5f18709de23aa4e8abcc8b886f4b6ce051dd
Sources: packages/llm/llm/src/assistant-stream.ts:28
| Property | Presence | Type |
|---|---|---|
dt |
required | number[] |
index |
required | number |
texts |
required | string[] |
time0 |
required | number |
type |
required | "reasoning-chunks" |
{ type: "reasoning-delta" }
SHA-256: 2abb711460e6238d851c30f3e4bdd87a2aa1887ee70575b3d3b7b25610673095
Sources: packages/llm/llm/src/types.ts:499
| Property | Presence | Type |
|---|---|---|
index |
required | number |
text |
required | string |
type |
required | "reasoning-delta" |
{ type: "request/context" }
SHA-256: 37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf
| Property | Presence | Type |
|---|---|---|
data |
required | RequestContext |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "request/context" |
{ type: "request/header" }
SHA-256: 4208123b50df5006b181481ab45fcf1cde807b88d3fd4d340090bc2e202fac41
| Property | Presence | Type |
|---|---|---|
data |
required | { header, reason, startsSeries? } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "request/header" |
{ type: "sandbox/mode" }
SHA-256: 516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415
| Property | Presence | Type |
|---|---|---|
data |
required | { mode, source? } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "sandbox/mode" |
{ type: "schedule/change" }
SHA-256: a0a2e5c42e1c929445ecd1cd70f49be6b66441894ec72c08e8ae332821d4a3cb
| Property | Presence | Type |
|---|---|---|
data |
required | ScheduleChange |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "schedule/change" |
{ type: "session-log-deepseek/delivery-accepted" }
SHA-256: d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9
| Property | Presence | Type |
|---|---|---|
data |
required | { sessionFormatVersion?, sessionId, throughSeq } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "session-log-deepseek/delivery-accepted" |
{ type: "session/end-seed" }
SHA-256: 5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e
| Property | Presence | Type |
|---|---|---|
data |
required | { inherited? } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "session/end-seed" |
{ type: "session/title" }
SHA-256: 1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5
| Property | Presence | Type |
|---|---|---|
data |
required | SessionTitleEventData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "session/title" |
{ type: "session/title-llm-request" }
SHA-256: 2e505098f9209e52eebd577f1a6f9d4e773ec4d78987aff28a7c786442b9f54c
| Property | Presence | Type |
|---|---|---|
data |
required | SessionTitleLlmRequestEventData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "session/title-llm-request" |
{ type: "step/end" }
SHA-256: e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05
| Property | Presence | Type |
|---|---|---|
data |
required | { step, turn } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "step/end" |
{ type: "step/start" }
SHA-256: 4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986
| Property | Presence | Type |
|---|---|---|
data |
required | { step, turn } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "step/start" |
{ type: "subagent/catalog" }
SHA-256: 53750b9abf61efb7992b0aadc3e247ec927449c63266df28230fd1139f5590ac
| Property | Presence | Type |
|---|---|---|
data |
required | SubagentCatalogEvent |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "subagent/catalog" |
{ type: "subagent/descriptor" }
SHA-256: b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5
| Property | Presence | Type |
|---|---|---|
data |
required | SubagentDescriptorData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "subagent/descriptor" |
{ type: "subagent/model-selection-policy" }
SHA-256: a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc
| Property | Presence | Type |
|---|---|---|
data |
required | { allowedModels } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "subagent/model-selection-policy" |
{ type: "system/message" }
SHA-256: 69081694be231d56fd9580ba14645fd5e35373202605d5c5c841a9435b5fa3b1
| Property | Presence | Type |
|---|---|---|
data |
required | { message, step, turn } |
ignorable |
optional | true |
seq |
required | number |
sourceEventSeqs |
optional | number[] |
surfaceOp |
required | SurfaceOp |
time |
required | number |
type |
required | "system/message" |
{ type: "team/member" }
SHA-256: 4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc
| Property | Presence | Type |
|---|---|---|
data |
required | { member, teamId, version } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "team/member" |
{ type: "team/message/delivered" }
SHA-256: 48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb
| Property | Presence | Type |
|---|---|---|
data |
required | { messageId, targetId, teamId, version } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "team/message/delivered" |
{ type: "team/message/queued" }
SHA-256: 21fb6a90d5068f6a0003b7ab316ed2f56342477146a65c00db0f13c4d8df667d
| Property | Presence | Type |
|---|---|---|
data |
required | { message, teamId, version } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "team/message/queued" |
{ type: "team/task" }
SHA-256: d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a
| Property | Presence | Type |
|---|---|---|
data |
required | { task, teamId, version } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "team/task" |
{ type: "text-chunks" }
SHA-256: e72269f931559e901e5e8fe1cfcbd0669fb795f43cc038ff39fba62f60403c33
Sources: packages/llm/llm/src/assistant-stream.ts:21
| Property | Presence | Type |
|---|---|---|
dt |
required | number[] |
index |
required | number |
texts |
required | string[] |
time0 |
required | number |
type |
required | "text-chunks" |
{ type: "text-delta" }
SHA-256: 95080295115fbd83544520ba247b68a03790131f6a2eac323d388758cb542f65
Sources: packages/llm/llm/src/types.ts:498
| Property | Presence | Type |
|---|---|---|
index |
required | number |
text |
required | string |
type |
required | "text-delta" |
{ type: "todo/write" }
SHA-256: b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26
| Property | Presence | Type |
|---|---|---|
data |
required | { todos } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "todo/write" |
{ type: "tool-call-chunks" }
SHA-256: 3860b4757d512a2869be833acb0faf834335b1b056bf3f83df5474dce95f8fa6
Sources: packages/llm/llm/src/assistant-stream.ts:35
| Property | Presence | Type |
|---|---|---|
args |
required | string[] |
dt |
required | number[] |
id |
required | string |
index |
required | number |
name |
optional | string |
time0 |
required | number |
type |
required | "tool-call-chunks" |
{ type: "tool-call-delta" }
SHA-256: 88a610b831be6d92612a464be5c7d0b88ec24d97bd299837bf74bf7672183c9a
Sources: packages/llm/llm/src/types.ts:500
| Property | Presence | Type |
|---|---|---|
argumentsDelta |
required | string |
id |
required | string |
index |
required | number |
name |
optional | string |
type |
required | "tool-call-delta" |
{ type: "tool-workflow/agent-end" }
SHA-256: babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7
| Property | Presence | Type |
|---|---|---|
data |
required | ToolWorkflowAgentEndData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "tool-workflow/agent-end" |
{ type: "tool-workflow/agent-start" }
SHA-256: 5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627
| Property | Presence | Type |
|---|---|---|
data |
required | ToolWorkflowAgentStartData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "tool-workflow/agent-start" |
{ type: "tool-workflow/run-end" }
SHA-256: 42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f
| Property | Presence | Type |
|---|---|---|
data |
required | ToolWorkflowRunEndData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "tool-workflow/run-end" |
{ type: "tool-workflow/run-start" }
SHA-256: c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058
| Property | Presence | Type |
|---|---|---|
data |
required | ToolWorkflowRunStartData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "tool-workflow/run-start" |
{ type: "tool/call" }
SHA-256: 3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48
| Property | Presence | Type |
|---|---|---|
data |
required | { arguments, callId, name, step, … } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "tool/call" |
{ type: "tool/ptc-dispatch" }
SHA-256: d66e11dddf5dfa3c71547e2cbd7b0608824cd8d6243fc16f532017ff28e8fba5
| Property | Presence | Type |
|---|---|---|
data |
required | PtcDispatchEventData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "tool/ptc-dispatch" |
{ type: "tool/ptc-dispatch-start" }
SHA-256: ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93
| Property | Presence | Type |
|---|---|---|
data |
required | PtcDispatchStartEventData |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "tool/ptc-dispatch-start" |
{ type: "tool/result" }
SHA-256: 7c9f44e90a0058f4cc532ae20dad0c10afa6eba22e70a6c79fc79490bad64397
| Property | Presence | Type |
|---|---|---|
data |
required | { error?, message, meta?, step, … } |
ignorable |
optional | true |
seq |
required | number |
sourceEventSeqs |
optional | number[] |
surfaceOp |
required | SurfaceOp |
time |
required | number |
type |
required | "tool/result" |
{ type: "turn/end" }
SHA-256: 0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce
| Property | Presence | Type |
|---|---|---|
data |
required | { reason, turn } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "turn/end" |
{ type: "turn/start" }
SHA-256: aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8
| Property | Presence | Type |
|---|---|---|
data |
required | { turn } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "turn/start" |
{ type: "usage" }
SHA-256: f1a96afe7503ac1817de769cd0ba13d9b80111c7034c50106b3344ecc14cc515
Sources: packages/llm/llm/src/types.ts:502
| Property | Presence | Type |
|---|---|---|
type |
required | "usage" |
usage |
required | TokenUsage |
{ type: "user/message" }
SHA-256: 5bb231bc5afdb532a6898a20604e76bf0c1db438bfcdc17d4847dceaddc02451
| Property | Presence | Type |
|---|---|---|
data |
required | UserMessage |
ignorable |
optional | true |
seq |
required | number |
sourceEventSeqs |
optional | number[] |
surfaceOp |
required | SurfaceOp |
time |
required | number |
type |
required | "user/message" |
{ type: "web/deepseek-search-llm-request" }
SHA-256: 0c556c9b9f2a96238a6b9bbb99e748206cbff2ed6203041c9571f04ae5802f52
| Property | Presence | Type |
|---|---|---|
data |
required | DeepSeekSearchLlmRequest |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "web/deepseek-search-llm-request" |
{ type: "web_search_20250305" }
SHA-256: 2d11ca7b0d4493e244b74eba093227866b33249841e59a1e9bf56afed38604c3
Sources: packages/web/web-search-deepseek/src/provider.ts:71
| Property | Presence | Type |
|---|---|---|
max_uses |
required | number |
name |
required | "web_search" |
type |
required | "web_search_20250305" |
{ type: "working-directory/change" }
SHA-256: 124aa62078ca3311353b39cc3bf6c75da281338be6bbf672f8b361d828cddca3
| Property | Presence | Type |
|---|---|---|
data |
required | { cwd } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "working-directory/change" |
{ type: "workspace/changes" }
SHA-256: e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72
| Property | Presence | Type |
|---|---|---|
data |
required | { turn } |
ignorable |
optional | true |
seq |
required | number |
time |
required | number |
type |
required | "workspace/changes" |
{}
SHA-256: 0aa62ab51b36c0e64b134bd03ba8725d758744180a1a447da49beaad194f219f
| Property | Presence | Type |
|---|---|---|
[string] |
index signature | unknown (opaque) |
{}
SHA-256: 529e0ccd0e34079ab4ff21ed87f810cee0388246263bf22e8aba5986b56fae05
Sources: packages/util/values/src/index.ts:4
| Property | Presence | Type |
|---|---|---|
[string] |
index signature | JsonValue |