v0.8.0: Information Radiator, Command Palette, TrueColor Themes, Setup Wizard
- Sidebar: permanent 42-col panel with 7 data panels (Gate Trace, Focus, Rules, Context gauge, Files, Cost, Protection); 4-window Croatoan layout at >=120 cols, toggle via Ctrl+X+B - Command palette: Ctrl+P overlay with fuzzy-filtered categorized items, keyboard navigation, Enter to execute; view-palette rendering - TrueColor themes: 4 new presets (nord, tokyonight, catppuccin, monokai) with 27 hex keys via theme-hex-to-rgb - Setup wizard: Ctrl+\ /setup 4-step overlay (provider, key, memory, save) writing .env with in-TUI rendering - Daemon enrichment: dispatcher block counts, cost session summary, modified files tracking, context usage percentage - Daemon fixes: fboundp guards for count-tokens/provider-token-cost, tool registry save/restore in safety tests, SELF_BUILD_MODE cleanup - 139 tests pass across all suites (0 failures)
This commit is contained in:
@@ -30,7 +30,13 @@ Because a skill's deterministic gate runs during Reason, but between Reason and
|
||||
~action-dispatch~, sets ~:status :acted~, returns feedback.
|
||||
2. (act-gate signal): thin alias for ~loop-gate-act~.
|
||||
3. (action-dispatch approved signal): routes approved actions to
|
||||
registered actuators by ~:target~ keyword.
|
||||
registered actuators by ~:target~ keyword.
|
||||
4. (tui-enrich-response action context): enriches the outgoing action
|
||||
plist with sidebar fields — ~:block-counts~, ~:context-usage~,
|
||||
~:modified-files~, ~:session-cost~ (v0.8.0) — plus existing
|
||||
~:rule-count~ and ~:foveal-id~ (v0.4.0). Each field is
|
||||
~fboundp~-guarded; missing skills produce nil. Called from the
|
||||
~:tui~ actuator lambda.
|
||||
|
||||
* Implementation
|
||||
|
||||
@@ -87,18 +93,44 @@ Because a skill's deterministic gate runs during Reason, but between Reason and
|
||||
0))
|
||||
(setf (getf (getf action :payload) :foveal-id)
|
||||
(getf context :foveal-id))
|
||||
;; v0.8.0: sidebar enrichment via fboundp guards
|
||||
(when (fboundp 'dispatcher-block-counts-summary)
|
||||
(setf (getf (getf action :payload) :block-counts)
|
||||
(dispatcher-block-counts-summary)))
|
||||
(when (fboundp 'context-usage-percentage)
|
||||
(setf (getf (getf action :payload) :context-usage)
|
||||
(context-usage-percentage)))
|
||||
(when (fboundp 'tool-modified-files-summary)
|
||||
(setf (getf (getf action :payload) :modified-files)
|
||||
(tool-modified-files-summary)))
|
||||
(when (fboundp 'cost-session-summary)
|
||||
(setf (getf (getf action :payload) :session-cost)
|
||||
(cost-session-summary)))
|
||||
(format stream "~a" (frame-message action))
|
||||
(finish-output stream))))))
|
||||
#+end_src
|
||||
|
||||
** TUI Differentiator Enrichment (v0.4.0)
|
||||
** TUI Differentiator Enrichment (v0.4.0, extended v0.8.0)
|
||||
|
||||
The TUI actuator is the last point in the pipeline before the response leaves the daemon. It enriches the action plist with fields that power the TUI's differentiator visualizations:
|
||||
|
||||
- ~:rule-count~ = ~(hash-table-count *hitl-pending*)~ — the number of pending HITL actions. The user watches this counter tick as they teach the agent their preferences.
|
||||
- ~:foveal-id~ = the current foveal focus from the signal context — enables the TUI's focus map status line.
|
||||
- ~:gate-trace~ — already attached by ~cognitive-verify~, flows through the action plist unchanged.
|
||||
#+end_src
|
||||
- ~:rule-count~ = ~(hash-table-count *hitl-pending*)~ — the number of pending HITL actions. The user watches this counter tick as they teach the agent their preferences. (v0.4.0)
|
||||
- ~:foveal-id~ = the current foveal focus from the signal context — enables the TUI's focus map status line. (v0.4.0)
|
||||
- ~:gate-trace~ — already attached by ~cognitive-verify~, flows through the action plist unchanged. (v0.4.0)
|
||||
|
||||
v0.8.0 adds four sidebar fields via ~fboundp~ guards — same pattern as
|
||||
~core-reason.lisp~'s calls into token-economics, awareness, and time skills.
|
||||
Each field degrades gracefully to nil when its source skill is not loaded:
|
||||
|
||||
- ~:block-counts~ = ~(dispatcher-block-counts-summary)~ — per-gate block tallies from ~security-dispatcher~. Powers the sidebar's Protection panel.
|
||||
- ~:context-usage~ = ~(context-usage-percentage)~ — token budget percentage from ~token-economics~. Powers the sidebar's Context gauge.
|
||||
- ~:modified-files~ = ~(tool-modified-files-summary)~ — files modified this turn from ~programming-tools~. Powers the sidebar's Files panel.
|
||||
- ~:session-cost~ = ~(cost-session-summary)~ — cumulative cost data from ~cost-tracker~. Powers the sidebar's Cost panel.
|
||||
|
||||
The enrichment is added inside the existing ~:tui~ actuator lambda (one block
|
||||
after the ~:rule-count~ and ~:foveal-id~ enrichment). No new actuator is
|
||||
registered; no new ASDF component is added. The contract is: each field
|
||||
arrives via ~fboundp~ guard and is silently nil when unavailable.
|
||||
|
||||
** Action Dispatch (action-dispatch)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user