Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Thinking Observer

Marker observer for thinking.step and plan.progress events. The plugin no longer writes derived JSONL files — the per-session journal is the single source of truth for both event types, alongside every other event on the bus.

When this plugin is in plugins.active, terminal and browser shells turn on thinking-related UI affordances (e.g. dedicated “thinking” message styling). Without it, the events still flow on the bus and land in the journal — only the optional UI surface differs.

Details

IDnexus.observe.thinking
DependenciesNone

Configuration

No configuration options.

Events

Subscribes To

EventPriorityPurpose
thinking.step90Marker subscription (no side effects)
plan.progress90Marker subscription (no side effects)

Emits

None.

Reading the thinking history

Thinking steps and plan progress live in <session>/journal/active.jsonl (and rotated *.jsonl.zst segments) exactly like every other event. Two ways to consume them:

  • Live, in-process: subscribe to envelopes via journal.Writer.SubscribeProjection(["thinking.step", "plan.progress"], handler). Handlers fire synchronously after the writer has flushed each envelope to disk.
  • Post-mortem, walking the journal directory: journal.ProjectFile(journalDir, []string{"thinking.step", "plan.progress"}, handler). Useful for regenerating derived views after a recall or crash.

Thinking Step Payload

{
  "turn_id": "abc123",
  "source": "nexus.agent.react",
  "content": "The user wants to refactor the auth module...",
  "phase": "reasoning",
  "timestamp": "2026-04-08T10:30:00Z"
}

Phases: planning, executing, reasoning.

Example Configuration

# Just activate it — no config needed
nexus.observe.thinking: {}