tests\counts-of.test.ts: (pass) counts-of > counts agents, running, waiting and unlisted, never the root [3.52ms] (pass) counts-of > a root waiting for approval counts as waiting [0.49ms] (pass) counts-of > token totals read compactly [1.57ms] tests\elapsed-of.test.ts: (pass) elapsed-of > durations read as seconds below a minute and m/ss above [2.43ms] (pass) elapsed-of > a spawned node counts from its spawn to its end or now [0.98ms] (pass) elapsed-of > a node the list added counts from first sight with a ~ prefix [0.71ms] tests\flow-state.test.ts: (pass) flow-state > the initial state holds an idle root and nothing else [3.36ms] (pass) flow-state > withNode replaces by id without touching the old state [1.94ms] (pass) flow-state > withEvent keeps only the newest EVENT_LOG_SIZE events [1.56ms] (pass) flow-state > ensureNode adds an event-sourced node for an unknown id and nothing for a known one [1.93ms] (pass) flow-state > prune drops the oldest finished leaves once MAX_NODES is exceeded [19.34ms] (pass) flow-state > prune keeps a completed parent whose child is still running [6.98ms] tests\names.test.ts: (pass) names and limits > the pane, command and store names are the ones the spec fixes [3.48ms] (pass) names and limits > the limits are the ones the spec fixes [0.86ms] tests\on-permission.test.ts: (pass) on-permission > a permission request marks the agent as waiting, naming the tool [5.16ms] (pass) on-permission > without an agent id the root waits [0.47ms] (pass) on-permission > the next tool event clears the wait [0.94ms] (pass) on-permission > a wait inside a tool call keeps the call's start, so its duration survives approval [0.64ms] (pass) on-permission > turn.complete clears the wait [0.54ms] tests\on-spawn.test.ts: (pass) on-spawn > a spawn under main becomes a running node with the spawn facts [4.76ms] (pass) on-spawn > a spawn inside a subagent hangs under that parent [0.49ms] (pass) on-spawn > a spawn of an id the list already added keeps the listed status [1.13ms] (pass) on-spawn > a refused spawn only logs an event [0.49ms] tests\on-tool.test.ts: (pass) on-tool > a call marks the agent busy in that tool, and its end records the call [4.30ms] (pass) on-tool > the main loop's calls land on the root node [1.35ms] (pass) on-tool > a call from an unknown loop creates an event-sourced node [0.64ms] (pass) on-tool > a call from a finished agent puts it back to running [0.95ms] (pass) on-tool > only the newest RECENT_TOOLS calls are kept [0.73ms] (pass) on-tool > an end without a start is still counted [0.39ms] tests\on-turn.test.ts: (pass) on-turn > turn.start and turn.complete on the main loop toggle the root between busy and idle [4.09ms] (pass) on-turn > a subagent turn ends its node by reason and sums its usage [2.50ms] (pass) on-turn > reasons map to statuses [2.15ms] (pass) on-turn > an unrecognized reason leaves the node unknown and without an end time [0.44ms] (pass) on-turn > a turn of an unknown loop creates an event-sourced node that is then finished [0.33ms] tests\pane-toggle.test.ts: (pass) pane-toggle > /flow closes only a pane believed open that still draws, else opens [3.84ms] (pass) pane-toggle > auto-open needs a terminal, a first time, no earlier close and enough columns [1.84ms] (pass) pane-toggle > a person who kept it open before gets it from the narrower width [1.16ms] tests\pane-view.test.ts: (pass) pane-view > one column Box holds one child per row [3.70ms] (pass) pane-view > plain rows are Texts styled from the row [1.16ms] (pass) pane-view > an expandable row is a row Box with its Text and a toggle Button that reports the id [2.37ms] (pass) pane-view > an expanded row shows [-] [0.69ms] tests\reconcile.test.ts: (pass) reconcile > agents the list names and the tree lacks are added as list-sourced [5.25ms] (pass) reconcile > the list has the last word on status and fills a missing parent [1.72ms] (pass) reconcile > an unmapped status is kept raw and shown as unknown [0.45ms] (pass) reconcile > a running node missing from the list is gone after GONE_AFTER_MISSES reconciles [0.54ms] (pass) reconcile > a miss streak resets when the list names the node again [0.54ms] (pass) reconcile > event-sourced and root nodes never go missing, and a listed event node is upgraded [0.83ms] (pass) reconcile > an unlisted loop silent for QUIET_MS ages to unknown instead of running forever [0.73ms] (pass) reconcile > statuses map from the engine's words [0.51ms] tests\reset-session.test.ts: (pass) reset-session > resetSession starts the tree over, keeping the pane [2.51ms] tests\rows-of.test.ts: (pass) rows-of > the header counts and the root row say what main is doing [2.46ms] (pass) rows-of > the tree nests children under parents with box prefixes, in spawn order [0.41ms] (pass) rows-of > node rows carry their id, color and expandability; a waiting row is magenta and bold [0.41ms] (pass) rows-of > an expanded node shows its details indented under it [0.52ms] (pass) rows-of > a slow tool call is marked, a failed node is red with its status [0.33ms] (pass) rows-of > the call count shows during a call, and one agent is singular [0.23ms] (pass) rows-of > unknown, quiet and named nodes render their own glyph, text and color [0.37ms] (pass) rows-of > the header counts unlisted loops [0.16ms] (pass) rows-of > with no agents the tree is one dim empty row [0.22ms] (pass) rows-of > unlisted loops sit in a collapsed group that expands by its key [0.36ms] (pass) rows-of > the last event closes the list, dim [0.27ms] (pass) rows-of > inline rows keep the header, the rows that need attention and a hint, at most INLINE_MAX_ROWS [0.43ms] (pass) rows-of > inline rows fall back to running agents when nothing needs attention [0.21ms] tests\signal-of.test.ts: (pass) signal-of > a permission wait is the waiting signal [1.57ms] (pass) signal-of > a tool call longer than SLOW_TOOL_MS is slow, a shorter one is nothing [0.33ms] (pass) signal-of > a running idle agent with no event for QUIET_MS is quiet; a finished one is not [0.59ms] tests\text-view.test.ts: (pass) text-view > the text tree is the rows, one per line, in order [2.47ms] (pass) text-view > an empty tree still prints the header, the root and the note [0.35ms] 68 pass 0 fail Ran 68 tests across 15 files. [0.69s]