Follow Discord
Sweep 06 Nov 2026 · 01:32Z Build v2.1.319 537 read Stable v2.1.311 Latest v2.1.318 Next v2.1.319 Feeds RSS JSON llms.txt llms-full.txt Unofficial
Mods API · 02 of 03

Events

Every event a hook can be registered for, with the payload it arrives with and the result it may return.

Events92on this page
Mined from2.1.319the shipped binary

An event is a name a hook can be registered for. When it fires your function is handed the payload below, along with the next it may pass control to, and what it returns has to be the result type on the same row or the runtime treats the hook as having said nothing.

The declarations keep these as two maps, one from event name to payload and one from event name to result. They are joined here by name, because somebody reading about tool.pre wants both halves at once. The map each group came from is on its heading, so a name can be traced back to the declaration it was mined from.

EngineEventOf # 47 events

Results come from EngineResultOf.

tool.call #

In the first published surface (2.1.259)

Payload
ToolCallInput
Result
ToolCallResult

Fires when the engine is about to run a tool. Each next(e) runs the hooks beneath, then core (the permission prompt, the tool itself).

{ deny: reason } refuses and { result } answers in place of next: a deny after next(e) resolved undoes nothing it ran; returning with next pending aborts what runs beneath. Managed-settings hooks' deny comes first.

tool.check #

Added in 2.1.269

Payload
ToolCheckInput
Result
ToolCheckResult

Fires when the engine decides whether a tool call may run, after the tool.call and PreToolUse hooks and before the mode settles an ask.

next(e) resolves to the engine's verdict (rules, mode, the tool's own check, PreToolUse's decision) and runs no tool: return any { decision }, a deny after it too. $.tool.check runs the same chain, executing nothing.

on("tool.check", { tool: "Read" }, () => ({ decision: "allow" }))

ui.render #

In the first published surface (2.1.259)

Payload
RenderInput
Result
RenderElement

Fires when the engine is about to draw a component: once per input value (props, viewport width), plugin load or $.ui.invalidate("ui.render").

A repaint reuses the answer; a clock invalidates. next(e) resolves to the drawing: return it, wrap it, draw your own, or rewrite props. An invalid tree, or a throw while drawn, draws the engine's; --plugin-dir is told.

ui.resolve #

In the first published surface (2.1.259) · changed in 2.1.267

Payload
ResolveInput
Result
ElementTable

Fires when the plugins load (not per draw), once per surface, component and plugin: e names the surface and component, never the props.

next(e) resolves to the surface's table, which $.ui.resolve(e) then reads. Return it, one with an element restyled for every other plugin, or one with a key left out (a fragment there); own table: hook skipped.

ui.press #

In the first published surface (2.1.259) · changed in 2.1.268

Payload
UiPressArgument
Result
UiPressResult

Fires when a Button a render hook drew is pressed on a surface; e is { plugin, element, component, surface }, element the button's key.

next(e) runs the hooks beneath, then core: the element's own onPress closure, in its plugin's environment, resolving to { element }. Return next(e) to let the press through, or { element } to take it.

ui.input #

Added in 2.1.260

Payload
UiInputArgument
Result
UiInputResult

Fires when an Input a render hook drew changes or is submitted; e is { plugin, element, component, surface, kind, value }.

next(e) runs the hooks beneath, then the element's own onInput or onSubmit with e.value as the chain left it, resolving to { element, value }; next({ ...e, value }) rewrites the typing, an answer takes it.

ui.select #

Added in 2.1.260

Payload
UiSelectArgument
Result
UiSelectResult

Fires when a Select a render hook drew is picked from; e is { plugin, element, component, surface, value }.

next(e) runs the hooks beneath, then the element's own onSelect with e.value as the chain left it, resolving to { element, value }; next({ ...e, value }) rewrites the pick, an answer takes it.

ui.message #

Added in 2.1.267

Payload
UiMessageArgument
Result
UiMessageResult

Fires when a Client THIS plugin drew posts from its surface module (surface.post(data)); only this plugin's hooks see it.

next.origin names client: data came from code. Core answers {}; next({ ...e, data }) rewrites the data; { props } hands the posting instance its next props without a redraw. One per instance per frame.

ui.fault #

Added in 2.1.289

Payload
UiFaultInput
Result
UiFaultResult

Fires when a Client THIS plugin drew failed on a surface: its module did not load, its drawing failed, or its code failed after it had drawn.

Only this plugin's hooks see it; e.phase says when, e.reason why. Observe only: core answers {}. The engine then draws that site again, unasked: fall back by leaving the Client out.

on("ui.fault", ($, e, next) => ($.ui.log(e.reason), next(e)))

ui.scroll #

Added in 2.1.271

Payload
UiScrollInput
Result
UiScrollResult

Fires before a site's window moves: the person's wheel or scroll keys on a Pane body or the AbovePrompt band, at its edges too; $.ui.scroll.

next(e) moves it to e.offset and draws: {}; next({ ...e, offset }) elsewhere; no next ({} or { deny }) leaves it undrawn, so a hook drawing its own rows under a header moves them by e.by and invalidates.

on("ui.scroll", { requestId: "log" }, ($, e) => (scrollOwnRows(e.by), {}))

ui.focus #

Added in 2.1.271

Payload
UiFocusInput
Result
UiFocusResult

Fires before a site's focus ring moves: the person's Tab, arrows or click in a Pane or the band; an autoFocus element taking it; $.ui.focus.

next(e) lands it on e.element (absent: one of the engine's stops) and draws: {}; next({ ...e, element }) on another of e.plugin's; no next ({} or { deny }) keeps it where it was, drawn as it was.

on("ui.focus", { requestId: "list" }, ($, e, next) => (mark(e), next(e)))

agent.offer #

In the first published surface (2.1.259)

Payload
AgentOfferInput
Result
AgentOfferResult

Fires when the engine offers an agent type to the model, in the agent listing and again at dispatch; next(e) resolves to { isOffered: true }.

Return { isOffered: false } to keep the type out of the listing and refuse its dispatch. A hook that fails passes it through.

on("agent.offer", { agent: "Plan" }, () => ({ isOffered: false }))

agent.spawn #

In the first published surface (2.1.259)

Payload
AgentSpawnInput
Result
AgentSpawnResult

Fires when the Agent tool, or a workflow script's agent() (e.workflow), is about to start an agent, its model not yet resolved.

next(e) resolves to { model }. Return it, next({ ...e, model }), { model } of your own (an alias resolves like the tool's parameter), or { deny: reason }.

prompt.submit #

In the first published surface (2.1.259)

Payload
PromptSubmitInput
Result
PromptSubmitResult

Fires when a prompt is submitted, before the turn starts. next(e) runs the hooks beneath and the UserPromptSubmit settings hooks, then it enters.

Rewrite with next({ ...e, text }) (the user message on screen follows) or, in its place, stop it with { drop: reason }; a broken plugin never blocks one. Typed while a turn ran, it fires at Enter, with that turn's id.

prompt.fill #

Added in 2.1.268

Payload
PromptFillInput
Result
PromptFillResult

Fires when a text is about to be put in the prompt box as the person's draft (a plugin's $.prompt.fill); next(e) writes it by e.mode.

replace over the draft, append after it, insert at the cursor; rewrite text or mode going down, or answer { isFilled: false } without next to keep it out, as core does under a dialog or headless.

on("prompt.fill", ($, e, next) => next({ ...e, text: e.text.trim() }))

prompt.suggest #

Added in 2.1.268

Payload
PromptSuggestInput
Result
PromptSuggestResult

Fires when a text is proposed as the prompt box's dim suggestion, Tab to take: the engine's guess after a turn, or a plugin's $.prompt.suggest.

next(e) shows it: { isShown }. Rewrite with next({ ...e, text }), or answer { isShown: false } without next to drop it; core answers that too while the box holds text or a turn runs.

on("prompt.suggest", () => ({ isShown: false }))

prompt.edit #

Added in 2.1.277

Payload
PromptEditInput
Result
PromptEditResult

Fires when the person edits the main prompt box: a key the editor took as an edit, or a paste; next(e) resolves the box the editor shows.

e is the draft before and the splice (start, end, inputText); a burst of keys is one edit. Rewrite inputText going down or the box coming up; { text: e.text, cursor: e.cursor } without next consumes.

on("prompt.edit", ($, e) => ({ text: e.text, cursor: e.cursor }))

prompt.change #

Added in 2.1.300

Payload
PromptChangeInput
Result
PromptChangeResult

Fires after the main prompt box's text changed and no prompt.edit carried it: a recalled history entry, a clear, a plugin's fill.

e is the box as it stands and e.origin who changed it. Observe only: the change is in the box. One per batch of changes, one at a time.

on("prompt.change", ($, e, next) => ($.ui.status(e.origin.kind), next(e)))

prompt.autocomplete #

Added in 2.1.292

Payload
PromptAutocompleteInput
Result
PromptAutocompleteResult

Fires as the person types in the main prompt box, for the token at the cursor; next(e) resolves to { suggestions }, rows for the typeahead.

Nothing waits on it: the engine's own rows draw first and these join beneath them, unhighlighted, for the word still being typed. Taking one writes its text over the token. Only while a plugin hooks it.

on("prompt.autocomplete", () => ({ suggestions: [{ text: "#123" }] }))

prompt.section #

In the first published surface (2.1.259)

Payload
PromptSectionInput
Result
PromptSectionResult

Fires once per named section of the system prompt, when the engine assembles it; next(e) resolves to { text } as core computed it.

e.name is the section's id, on every model the one prompt.compose lists. Cached, so keep it steady: after $.ui.invalidate("prompt.section") a changed answer goes out next turn over the text the main thread sent, which loses its thinking and the cache. A failed hook passes through.

on("prompt.section", { name: "memory" }, () => ({ text: null }))

prompt.context #

In the first published surface (2.1.259)

Payload
PromptContextInput
Result
PromptContextResult

Fires once per conversation, when the engine computes the context blocks its first user message carries; next(e) resolves to { blocks }.

Append, drop, reorder or rewrite with next({ ...e, blocks }); the answer stands until $.ui.invalidate("prompt.context") or a re-read (compaction, /clear). PromptContextResult says what the model is sent.

on("prompt.context", () => ({ blocks: [] }))

prompt.compose #

Added in 2.1.286

Payload
PromptComposeInput
Result
PromptComposeResult

Fires when the engine renders a system prompt; next(e) resolves to { sections }, each { id, text, scope }, in the order they are sent.

The ids depend on the prompt composed (lean, bare in e.traits): read them off next(e). Append (as session), replace, reorder or drop; a list with a shared section after a session one skips the hook.

prompt.attachment #

Added in 2.1.277

Payload
PromptAttachmentInput
Result
PromptAttachmentResult

Fires once per message the engine injects for the model on its own (a reminder, a mode transition, a mentioned file), as a request carries it.

next(e) resolves to { text }; { text: null } leaves it out. The answer holds per attachment for the process (asked again on resume or $.ui.invalidate); the transcript keeps the engine's record.

on("prompt.attachment", { type: "todo_reminder" }, () => ({ text: null }))

prompt.mention #

Added in 2.1.290

Payload
PromptMentionInput
Result
PromptMentionResult

Fires once per path a prompt names after an @, a directory aside, before the engine reads it; next(e) reads it and resolves { type }.

No tool.call is raised for this read. Add context to what next gave, read another path with next({ ...e, path }), or answer { deny: reason } so nothing is read.

on("prompt.mention", { path: /\.env$/ }, () => ({ deny: "a secret" }))

tool.describe #

In the first published surface (2.1.259)

Payload
ToolDescribeInput
Result
ToolDescribeResult

Fires when the engine first renders the tool's schema in a session; next(e) resolves to { description, isDeferred? }.

An MCP tool behind ToolSearch fires twice: its short text, then the one loaded. Cached until $.ui.invalidate("tool.describe"): a changed answer for a tool a thread has sent goes out next turn over that text, which loses its thinking and the whole prompt cache.

on("tool.describe", { tool: "Bash" }, ($, e) => ({ ...e, description }))
on("tool.describe", { tool: "Monitor" }, pin) // {...e, isDeferred: false}

command.run #

Added in 2.1.265

Payload
CommandRunInput
Result
CommandRunResult

Fires when a slash command is about to run (/name args typed, or a plugin's $.command.run); next(e) resolves to { text }, its output.

Core is the engine's command (a registered one has none). Rewrite args with next, or return { text } without it to answer in its place; one after next replaces a printed output, not a panel or prompt it opened.

on("command.run", { command: "hello" }, () => ({ text: "hello" }))

command.describe #

Added in 2.1.265

Payload
CommandDescribeInput
Result
CommandDescribeResult

Fires once per command, when the engine lists it for the typeahead and /help; next(e) resolves to { description, argumentHint, isHidden }.

Listed answers are cached for the session until $.ui.invalidate("command.describe"). A hook that fails passes it through.

on("command.describe", ($, e, next) => next({ ...e, isHidden: true }))

config.set #

Added in 2.1.269

Payload
ConfigSetInput
Result
ConfigSetResult

Fires when a /config row is about to change, from the menu or a plugin's $.config.set; next(e) resolves to { value } once written.

Return { deny: reason } to leave the row as it is (the menu says why), or next({ ...e, value }) to clamp it; a value of the wrong kind for the row is refused. A row a trusted source owns is core's to refuse.

on("config.set", { key: "theme" }, () => ({ deny: "the theme stays" }))

config.describe #

Added in 2.1.269

Payload
ConfigDescribeInput
Result
ConfigDescribeResult

Fires once per /config row, when the menu lists it and for $.config.list; next(e) resolves to { label, description, isHidden }.

Relabel, re-describe or hide with next({ ...e, isHidden: true }); the answers are cached until $.ui.invalidate("config.describe") or the loaded plugins change. A hook that fails passes the row through.

on("config.describe", { key: "tips" }, hide) // answers isHidden: true

telemetry.log #

Added in 2.1.284

Payload
TelemetryLogInput
Result
TelemetryLogResult

Fires when a record is about to be logged to the destination e.to names: a built-in's $.telemetry.log, or the engine's own events.

e.to is pinned: a hook rewrites what the record carries, never where it goes. next(e) resolves { value: undefined }; { deny } rejects the caller. Beneath the hooks the engine exports its own collector records.

on("telemetry.log", { to: "collector" }, ($, e, next) => next(e))

telemetry.mark #

Added in 2.1.284

Payload
TelemetryMarkInput
Result
TelemetryMarkResult

Fires when one use of a feature is marked ($.telemetry.mark), as the CLI's own feature events mark one; always for anthropic, no to.

next(e) resolves { value: undefined }; { deny } rejects the caller. The engine does nothing with a mark: the built-ins hooked here do.

on("telemetry.mark", { kind: "bad" }, ($, e, next) => next(e))

skill.prompt #

In the first published surface (2.1.259)

Payload
SkillPromptInput
Result
SkillPromptResult

Fires when the engine expands a skill's prompt for the model (/name, the Skill tool, a preload); next(e) resolves to { text } as computed.

Return { text } with the text the model reads instead. A hook that fails passes it through.

on("skill.prompt", { skill: "commit" }, () => ({ text: "A haiku." }))

attribution.text #

In the first published surface (2.1.259)

Payload
AttributionTextInput
Result
AttributionTextResult

Fires when the engine composes a git text the model is to write (kind: commit, pr, exemption, remedy); next(e) resolves to { text }.

Return { text } with the text the model reads instead. A hook that fails passes it through.

on("attribution.text", { kind: "commit" }, () => ({ text: "" }))

session.start #

In the first published surface (2.1.259)

Payload
SessionStartInput
Result
SessionStartResult

Fires once per process for each loaded plugin, before the first prompt, then once per fresh load of one (never /clear); next(e) is { cwd }.

Observe. The first is awaited: a $.tool.register is listed by turn one. A later one runs its hooks alone: an enable, a worker respawn, or a reload (changed modules only; all if one hooks engine.create/plugin.register).

on("session.start", ($, e, next) => $.tool.register(t).then(() => next(e)))

session.receive #

Added in 2.1.267

Payload
SessionReceiveInput
Result
SessionReceiveResult

Fires when a delivery reaches the session, before it is queued: a relay's event, a peer's message, a Remote Control prompt, room events; { text }.

Rewrite with next({ ...e, text }), or return { consumed: reason } to take it: nothing is queued, shown or read by the model. origin, event and agentId pass on as received; session.send is its dual.

on("session.receive", { origin: "peer" }, () => ({ consumed: "muted" }))

session.append #

Added in 2.1.285

Payload
SessionAppendInput
Result
SessionAppendResult

Fires once per row a conversation of this session keeps (a prompt, a response block, a tool result, a notice), before it is stored.

next({ ...e, message }) rewrites content: stored and sent after. The screen, an SDK stream or Remote Control may show the row just before its rewrite; the model and the transcript file never read that form.

on("session.append", { door: "tool-result" }, ($, e, n) => n(scrub(e)))

session.send #

Added in 2.1.280

Payload
SessionSendInput
Result
SessionSendResult

Fires when a plain-text message is about to leave this conversation for another agent or session (the SendMessage tool, or $.session.send).

e.origin says who sends, e.agentId which loop. Rewrite text or readdress to with next (a new to is judged again); { isDelivered: false, reason } without next refuses it. next(e) resolves queued.

on("session.send", ($, e, next) => next({ ...e, text: redact(e.text) }))

session.compact #

Added in 2.1.267

Payload
SessionCompactInput
Result
SessionCompactResult

Fires when the conversation is about to be compacted (/compact, the threshold, a plugin, or ahead of time); next(e) resolves { messages }.

Rewrite instructions or messages on the way down, the messages on the way up, or answer { messages } of your own; { skip: reason } leaves the conversation as it is. trigger passes on as received.

on("session.compact", { trigger: "precompute" }, () => ({ skip: "off" }))

session.attach #

Added in 2.1.269

Payload
SessionAttachInput
Result
SessionAttachResult

Fires when a remote client joins the session's roster of attached surfaces: it said so (ui_attach), or it first asked to draw.

Observe (a phone joined: draw the lobby); next(e) resolves to { clientId }, a different return changes nothing. $.session.surfaces() reads the roster; a render hook still reads e.surface per ask.

on("session.attach", { surface: "mobile" }, ($, e, next) => next(e))

session.detach #

Added in 2.1.269

Payload
SessionDetachInput
Result
SessionDetachResult

Fires when a client leaves the roster: it detached, or the session ended with it attached (e.reason). Observe; next(e) echoes { clientId }.

With reason end it runs inside session.end's one short bound: there next.budget reads that bound and next.signal aborts at it.

session.measure #

Added in 2.1.275

Payload
SessionMeasureInput
Result
SessionMeasureResult

Fires when the engine measures the session and a unit moved: after each main-thread turn, and when a rate-limit window moves a whole point.

Observe; next(e) echoes { changed }. $.session.usage()'s figures, pushed, not polled: compare them with your own threshold here, call the op for the breakdown. One at a time, a burst folding into one more.

on("session.measure", ($, e, next) => (toastPast90(e.rateLimits), next(e)))

session.end #

Added in 2.1.275

Payload
SessionEndInput
Result
SessionEndResult

Fires once when the session ends (exit, /clear, resume, logout, signal, a -p run done), after its SessionEnd settings hooks; e.reason says which.

next(e) runs the engine's end step, { sessionId }; e.resume.id is --resume's. Exits stay fast whatever is loaded: the whole chain shares one short wall-clock bound, which next.budget reads (SessionEndInput).

on("session.end", async ($, e, next) => (await save(next.budget), next(e)))

plugin.register #

Added in 2.1.269

Payload
PluginRegisterInput
Result
PluginRegisterResult

Fires once per hooks module about to join the chain, at load (the set folded and built, nothing swapped in) and at reload; core allows.

Return { refuse: reason } and it never joins: no hook, no noun, no tool of it; the debug log names who refused. Its judges, $ whole, are the plugins admitted before it and the binary's; judge by tier and uses.

on("plugin.register", { tier: "user" }, () => ({ refuse: "managed only" }))

turn.start #

In the first published surface (2.1.259)

Payload
TurnStartInput
Result
TurnStartResult

Fires when a model turn begins, main's or a subagent's (e.agentId), before its first model call; next(e) resolves to { turnId }.

Observe: a different return changes nothing. For the main loop alone, return next(e) first when e.agentId !== undefined. An agent's start skips the hooks its spawn was nested in, as its turn.steps do.

turn.step #

In the first published surface (2.1.259)

Payload
TurnStepInput
Result
TurnStepResult

Fires when the engine is about to send a model request of a turn, main's or a subagent's (e.agentId); next(e) resolves to the whole response.

next({ ...e, model }) or effort sends another; the turn, the index and the message count are pinned. An answer without next sends no request. It streams (StreamNext): the hook's budget counts its own code alone.

turn.complete #

In the first published surface (2.1.259)

Payload
TurnCompleteInput
Result
TurnCompleteResult

Fires when a model turn has ended, at the point its duration is reported; next(e) resolves to { text }, the answer. e.reason says why.

Return { text } with a different text to show it beneath the answer (a synopsis, a TL;DR line); the transcript's record is never rewritten. A hook that fails leaves the answer as it was.

engine.create #

In the first published surface (2.1.259)

Payload
EngineCreateInput
Result
EngineCreateResult

Runs while $ is being built, once per load or reload of this plugin and before any other hook of it; next(e) resolves to $ built so far.

A step may ADD nouns and, outside user, WITHHOLD them (leave one out, or return without next). It fails, and its plugin unloads, when it REPLACES another's; in user, also past its own stub, or adding a seated name.

OpEventOf # 45 events

No result map is declared for these, so a hook here returns nothing the runtime reads.

model.complete #

In the first published surface (2.1.259) · changed in 2.1.292

Payload
ModelCompleteInput

The argument of $.model.complete(request, { signal }), its text as strings and its blocks beside them (ModelCompleteInput).

The signal does not cross, it aborts the call.

model.fork #

In the first published surface (2.1.259)

Payload
ModelForkRequest

The argument of $.model.fork(request).

audio.speak #

In the first published surface (2.1.259)

Payload
SpeakRequest

The argument of $.audio.speak(text, { voice }).

session.cwd #

In the first published surface (2.1.259)

Payload
NoArgs

The argument of $.session.cwd().

session.root #

Added in 2.1.275

Payload
NoArgs

The argument of $.session.root().

session.model #

In the first published surface (2.1.259)

Payload
NoArgs

The argument of $.session.model().

session.turns #

Added in 2.1.268

Payload
NoArgs

The argument of $.session.turns().

session.id #

In the first published surface (2.1.259)

Payload
NoArgs

The argument of $.session.id().

session.messages #

In the first published surface (2.1.259) · changed in 2.1.280

Payload
SessionMessagesArgs

The argument of $.session.messages(args): {} for the main conversation, { agentId } for one of its agents, as for the form.

session.repo #

In the first published surface (2.1.259)

Payload
NoArgs

The argument of $.session.repo().

session.surface #

In the first published surface (2.1.259)

Payload
NoArgs

The argument of $.session.surface().

session.surfaces #

Added in 2.1.269

Payload
NoArgs

The argument of $.session.surfaces().

session.authorize #

Added in 2.1.268

Payload
NoArgs

The argument of $.session.authorize().

session.identity #

Added in 2.1.299

Payload
NoArgs

The argument of $.session.identity().

session.usage #

Added in 2.1.267 · changed in 2.1.271

Payload
SessionUsageArgs

The argument of $.session.usage({ breakdown, columns }).

session.version #

Added in 2.1.281

Payload
NoArgs

The argument of $.session.version().

prompt.read #

Added in 2.1.275

Payload
NoArgs

The argument of $.prompt.read().

prompt.paint #

Added in 2.1.311

Payload
PromptPaintArgs

The argument of $.prompt.paint(...): the draft and this plugin's runs.

tool.list #

In the first published surface (2.1.259)

Payload
NoArgs

The argument of $.tool.list().

tool.register #

Added in 2.1.268 · changed in 2.1.293

Payload
RegisteredToolSpec

The argument of $.tool.register(spec).

command.list #

Added in 2.1.265

Payload
NoArgs

The argument of $.command.list().

command.register #

Added in 2.1.265

Payload
CommandSpec

The argument of $.command.register(spec).

config.list #

Added in 2.1.269

Payload
NoArgs

The argument of $.config.list().

agent.list #

In the first published surface (2.1.259)

Payload
NoArgs

The argument of $.agent.list().

agent.register #

Added in 2.1.274

Payload
AgentSpec

The argument of $.agent.register(spec): the agent type as the plugin defined it. A hook above rewrites any of it; the type stays the caller's.

ui.open #

Added in 2.1.265

Payload
PaneOpenArgs

The argument of $.ui.open({ id, title, focus }); a hook above the opener may retitle it or refuse it with { deny }, never rename it.

ui.close #

Added in 2.1.265

Payload
PaneCloseInput

The argument of $.ui.close({ id }) with origin plugin; the engine raises it too, for the person (person) and an unload (unload).

ui.panes #

Added in 2.1.275

Payload
NoArgs

The argument of $.ui.panes().

ui.place #

Added in 2.1.314

Payload
UiPlaceArgs

The argument of $.ui.place({ id }).

theme.set #

Added in 2.1.319

Payload
ThemeSetArgs

The argument of $.theme.set(attributes): the attributes themselves.

theme.clear #

Added in 2.1.319

Payload
NoArgs

The argument of $.theme.clear().

ui.selection #

Added in 2.1.288

Payload
NoArgs

The argument of $.ui.selection().

ui.copy #

Added in 2.1.280

Payload
UiCopyArgs

The argument of $.ui.copy({ text, surface }), surface filled with the session's first when left out; rewritable, deniable, answerable.

ui.view #

Added in 2.1.300

Payload
SiteView

The argument of $.ui.view({ agentId }): whose transcript the main view is to show, none for the main conversation; rewritable and deniable.

ui.blit #

Added in 2.1.271

Payload
UiBlitArgs

The argument of $.ui.blit(...): a Raster's cells or a keyed Image's source; a hook above may rewrite either with next, or { deny }.

fs.ancestors #

In the first published surface (2.1.259)

Payload
FsAncestorsRequest

The argument of $.fs.ancestors({ names, of, below }).

store.keys #

In the first published surface (2.1.259)

Payload
NoArgs

The argument of $.store.keys().

state.get #

Added in 2.1.281

Payload
StateGetEvent

The argument of $.state.get(ref): the reference itself, plugin, key and a family member's id; identity, pinned.

state.set #

Added in 2.1.281

Payload
StateSetEvent

The argument of $.state.set(ref, value, { ifVersion }): the reference, the value, the condition, and previous, what stood there (the host's).

A hook above rewrites value with next({ ...e, value }); the reference is identity, pinned. Raised by the value's owner alone. A { deny } after next(e) was answered, a .catch's too, fails the hook.

clock.now #

Added in 2.1.271

Payload
NoArgs

The argument of $.clock.now().

clock.sleep #

Added in 2.1.271

Payload
ClockWait

The argument of $.clock.sleep(ms, { signal }); the signal does not cross, it aborts the dispatch.

clock.after #

Added in 2.1.271

Payload
ClockWait

The argument of $.clock.after(ms, fn): the wait before fn, which stays in the plugin's environment and runs once the dispatch resolves.

clock.every #

Added in 2.1.271

Payload
ClockWait

The argument of $.clock.every(ms, fn), dispatched once per period: fn runs each time a dispatch resolves, and the next period is asked.

process.spawn #

Added in 2.1.280

Payload
ProcessSpawnRequest

The argument of $.process.spawn(request): the request itself.

A hook's { deny } rejects the caller's stream and lets the child go (one still running is killed). Once a child of the call handed up a piece or its exit, the rejection says it started or ran.

settings.read #

Added in 2.1.267 · changed in 2.1.304

Payload
SettingsReadInput

The argument of $.settings.read({ source }), and the layers the read is made of, which the engine fills; rewritable, deniable.

Feedback