Commit Graph
117 Commits
Author SHA1 Message Date
ruv 56a638190d fix(console): CLI launcher resolution and cold-start handling for settings writes (fixes #3914)
With the ruflo CLI option on npx, a confirmed action ran a cold online npx under the 90 s default and aborted with 'still running after 90000ms'. Resolve ruflo on PATH, a project-local bin or the cached npx copy first; give a cold download a 300 s limit and a first-run label; turn a timeout or ENOTCACHED into an error naming the fix. Console 0.40.1; ADR-407 update.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 15:25:08 -04:00
ruv aeaa51e99a feat(console): advisor checkpoints for mission loops (ADR-483)
Default-off Settings rows: a read-only claude -p consult (asked first, exact argv, turn budget, mission spend cap) before a plan locks, when the same check fails twice in a row, and before done; a third failure pauses the mission. Honest about not being the in-session advisor tool. Console 0.40.0.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 12:20:26 -04:00
ruv 817dcfe0e3 fix(console): manually entered text is never silently truncated (ADR-481)
The mission goal was cut at 500 characters and drawn on one clipped line; the host Input is one line and hides the rest. A live mirror
under every field shows all lines, views draw text in full with an explicit marker, limits are checked before sending with the exact
count, and every silent slice/plain cap on typed text is removed or made a counted refusal. console 0.39.1.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-07 18:20:32 -04:00
ruv aed428c43e feat(console,adr): ADR management registry, page and mission/loop/swarm integration (ADR-480)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-07 17:08:41 -04:00
ruv 9cef4cb070 feat(console): What's new page under TOOLS, plugin changelog parser and marker (ADR-478), console 0.38.0
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-07 14:37:28 -04:00
ruv 146febd999 feat(mods): shared toast system with levels, dedupe, persistence and Settings (ADR-477)
One dependency-free policy (canonical in ruflo-mods, byte-identical copies in console,
swarm and protector, checked by scripts/sync-toast-policy.mjs and each smoke.sh): level
prefixes, one washed line of at most 120 characters, 60 s de-duplication, four toasts a
minute per source with errors held and counted, the person's all/important/off setting and
per-source mute (console Settings, mirrored to a file the others read), and a digest of
every toast kept for the console's Events page. All call sites migrated; new toasts for a
mission that finishes or fails and a swarm subagent that fails or a loop that is stuck.

Versions: console 0.37.0, swarm 0.3.4, protector 0.1.1, mods 0.3.16.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-07 12:50:30 -04:00
ruv 5a0e5bff4a feat(console): Settings puts Claude control and spending first, folds ruflo config and plugin options to the end
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-07 10:29:40 -04:00
ruv 1ac200432c feat(console): 0.36.0 integration: eventsPersist option, shared whole-batch append argv, hostile-time hardening, init ignores console/
- plugin.json declares eventsPersist (default true); version 0.36.0 in plugin.json, version.ts, smoke.sh
- data/append-argv.ts: one dd argv (bs=1M iflag=fullblock) shared by the Events store and the autopilot journal; real-dd 8-writer test fails on the old argv
- history decoders and Events/Timeline displays use #3874's timeOf/countOf/isoOf, so a hostile time or count cannot throw
- cli init: .claude-flow/.gitignore template lists console/
- ADR-474 updated to the reviewed behaviour and the open low items

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-07 02:19:20 -04:00
ruv b17a497916 chore(console): 0.35.0; re-sign the helpers manifest for the recall-log hook changes (ADR-472)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-06 19:19:42 -04:00
ruv 0406f27b4b merge feat/recall-log-vectors-0.35 2026-10-06 19:17:27 -04:00
ruv b531aa9279 perf(console): incremental transcript parsing, kit-seq runner, tsc clean for specs (ADR-473)
A transcript that grew is parsed from where its last parse ended, not from its
first line: checked resume (head + anchor), unfinished last line taken back,
bounded ring and id set, LRU memo, tail windows by unique anchor. Reference
parsers untouched and used as the oracle by a seeded property test plus
mutation checks. Refresh warms the parse memo for the search (400k chars a tick).

scripts/kit-seq.sh runs the 25 kit tests one file at a time in a temp copy;
scripts/typecheck.sh makes tsc find the ambient types in a fresh worktree; the
specs' type errors are fixed (sources of other lanes listed in the report).

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-06 19:16:55 -04:00
ruv 0d94fdb4dd feat(ruflo-console): recorded recalls, real vectors on the memory map, log-based stale (ADR-472)
Learning Lab explains a recall from the hook's recall log (scores as recorded,
recomputation kept as the labelled fallback) and shows real surfaced counts.
The memory map reads stored vectors (memory list --embeddings, int8+scale) and
drops 'NOT similarity' only when they drove the layout. Memory health judges
stale by the log where it can speak and adds similar-by-meaning clusters when
vectors were read. ADR-472 documents the log schema, privacy, vector path and
rollback.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-06 18:34:43 -04:00
ruv d4e85e087a fix(console): triage re-run text no longer says the console cannot stop a run (0.34.1)
The Control tab's Stop asks first and calls TaskStop; it is unverified for a
workflow run's own id, so the text names Claude Code's Workflows panel as the
sure way. Found by looking at the demo GIF frames.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-06 09:36:40 -04:00
ruv 9df7e0f88b bench(console): startup bench separating engine module-load cost from plugin runtime
Measured: the 3-8 kit-test timeouts on this branch are the engine transpiling and scanning the larger value-reachable module graph (189 -> 265 modules, 248k -> 353k AST nodes) on every test's plugin load; plugin-side start, refresh and render are unchanged. The engine refuses dynamic import(), so the graph cannot be loaded lazily.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-06 01:54:09 -04:00
ruv 6b17188cad merge verify/bench; ADR-468 for the bench optimisations; console 0.34.0
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-06 01:23:57 -04:00
ruv 15933793f1 perf(console): fix per-frame transcript re-parse, quadratic journal fold, repeated tail reads; add workflow and autopilot benchmarks (ADR-467)
Frame 64 ms -> 0.06 ms, drill/search frames 1.4 s -> 0.1 ms, foldJournal 100k events 15 s -> 53 ms,
unchanged journal not replayed, unchanged oversized transcripts not re-read. Digests identical before/after.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-06 01:12:01 -04:00
ruv 116ee09a81 feat(console): wire control plane, conversation and mission autopilot into the Workflows page (ADR-465, ADR-466)
Registers the control tab, Conversation board and autopilot panel; wireWfControl/wireWfConvo/wireAutopilot in wf-wire; convoTargets option; /ruflo autopilot command; smoke step 5 now allows the conversation bridge's one extra send; ap-core spec split for the 500-line limit.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-06 00:36:19 -04:00
ruv 107e9aac0a merge feat/swarm-management-ui 2026-10-05 21:57:43 -04:00
ruv 8b4630ccb7 merge feat/mind-memory-health 2026-10-05 21:57:43 -04:00
ruv 793d2e11dc merge feat/mind-explain-recall 2026-10-05 21:57:43 -04:00
ruv d020462392 merge feat/mind-pipeline-router 2026-10-05 21:57:43 -04:00
ruv 2169b620b9 perf(console): memoize transcript parses and bound page cells; add bench-swarmui (ADR-458)
Refresh of 6 runs x 60 agents 158 ms -> 3.4 ms; 10k-agent page draw 1.5 ms -> 0.02 ms.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 21:50:28 -04:00
ruv a8544dfe13 perf(console): memoize recall explain and per-refresh parses; add bench-recall (ADR-456)
Profile showed trigrams() rebuilt per entry on every render with a prompt picked (70% of CPU).

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 21:49:59 -04:00
ruv 67ce7a2c18 perf(console): memory map embedding layout 28x faster, one layout per frame (bench-memmap)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 21:45:33 -04:00
ruv b0767e0df0 perf(console): bound route-candidate parsing to the five the picture draws; add bench-pipeline (ADR-455)
10k-line route query: 1.03 ms -> 0.0006 ms parse, 1.27 ms -> 0.065 ms parse+draw.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 21:42:39 -04:00
ruv 4355f7bd8b perf(console): memory health analysis computed once per probe result, per-entry key work hoisted; bench-health.mjs
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 21:40:53 -04:00
ruv 616a7ebb01 feat(console): band notices, tone border, /ruflo band|notices|quiet (0.33.23)
The band now announces approvals, alerts, finished missions, long turns
ending and Anatole blocks on a notice row (linked, dismissable, 20s),
colours its border by state, can go compact, and labels subagents by a
short id instead of the raw one.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 20:01:52 -04:00
ruv 6ab6b395f6 merge origin/main (console 0.33.21); version per merge order 2026-10-05 19:18:58 -04:00
ruv b2d030c88d feat(ruflo-console): the band shows how long Claude has been working, the tool-call rhythm and the context gauge (0.33.24)
The two-row band above the prompt now carries three live signals, each shown only while it has something to say:
- "▶ Claude working 41s": how long the current turn has run (the turn's start is now recorded at turn.start);
- a sparkline of tool calls per minute over the last ten minutes ("·▃▅·▃█▃▅█▅ tool calls, 10m"), so an unattended session's rhythm is
  visible at a glance; silent for fewer than three calls, and it counts only what the console observed;
- "ctx 83%" from the session's context fill: quiet under 60%, plain to 79%, amber from 80%, "· /compact soon" from 85%.
Also fixed: the standing row began "↳  · …" with a doubled separator.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 16:54:51 -04:00
ruv 1a2318f084 fix(ruflo-console): smoke step 12 accepts the excluded list as well as the CI baseline for kit tests
A new kit test belongs on scripts/ci-test-excluded.txt (the baseline only shrinks), which step 12 did not know about.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 16:05:48 -04:00
ruv d1d4dab56d fix(ruflo-console): sentries start /loop as a command, and every result is a bordered status card with aligned tables (0.33.21)
Sentry "▶ start" confirmed but created no loop: the console sent "/loop …" with $.prompt.submit, which gives the model a message that merely
looks like a command. It now runs as the /loop command ($.command.run, as if typed); mid-turn it is placed in the prompt box and says so;
a refusal is reported. The Security page shows the outcome under the sentries as a card (✓/✗, title, age, wrapped detail, next step).

Results in general: every view's Result panel (Security, Dev Tools, Automate, Evolve, Memory lab, MetaHarness lab, Vector, x.ruv, Plugin
catalog) is now one round border coloured by how the run went (green, red, amber while running, dim when idle). The CLI's ASCII tables
had lost their padding by the time they were shown; they are read back as cells and drawn again with box characters and aligned columns
at the one place results are stored (runner.ts), and blank-line runs are collapsed.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 15:09:02 -04:00
ruv dc1ada1b12 feat(ruflo-console): the ask-first confirm is one bordered card with a header, a rule and labelled sections (0.33.20)
The confirm that every ask-first action shows was a stack of loose lines: a header, a long "Confirm: …?" line clipped mid-sentence, the
command, the note, and the buttons hard against them. It is now one round bordered box in the warning colour: "▶ CONFIRM NEEDED" with
"click Yes or press y" beside it, a rule, the question, the exact command ("runs: …", wrapped so all of it shows), the note labelled
"Effect:" (wrapped, alarm colour for money or models), and the buttons set apart by a blank line. Text inside is clipped to the width
within the border. Every string the existing kit tests read is unchanged.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 14:36:33 -04:00
ruv e8384b5e56 feat(ruflo-console): Claude can read the console by default — modelControl read, modelConfirm ask (0.33.18)
At the owner's request the four console_* tools are available by default at the read level: Claude can open pages and read console state,
and cannot act. A missing confirm mode is now ask; a saved "off" stays off and a saved "auto" stays auto. ADR-444 and ADR-450 record it and
resolve the open "default to ask" decision.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 12:53:52 -04:00
ruv 8612da1ed9 fix(ruflo-console): a Dev Tools entry's own cost is the floor of its class; jsonAfter stops at the JSON's own end (0.33.17)
#3788: Claude's confirm gate re-derived the action class from English words and ignored each Dev Tools entry's declared cost, so the
network entry dt-prov-test read as a plain write and could auto-run at write + auto. The entry's cost now travels with the ask
(`declared`) and the gate takes the stricter of the two classes. Live drive: at level write the entry is now refused as a network
action (needs manage); before, it was not asked about.

#3789: jsonAfter sliced to the LAST } or ] in the output, so a trailing log line holding one dropped valid JSON. It now finds the
bracket that closes the first one, skipping strings.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 11:51:32 -04:00
ruv 2c5a9f6534 fix(ruflo-console): never read a link, FIFO or folder named status.json (ADR-450 T2, 0.33.16)
Engine probe: fs.read follows symlinks, even outside the project; stat reports isLink and kind.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 06:19:39 -04:00
rUv 5b029146d5 Merge pull request #3783 from ruvnet/loop/t14-attribution
feat(console): a pending confirm says when Claude asked, and the action class (ADR-450 T14, 0.33.15)
2026-10-05 03:15:04 -07:00
ruv c829121b1c fix(console): smoke step 14 retries once and names the failing spec
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 06:01:25 -04:00
ruv 2f1692b1ff feat(console): a pending confirm says who asked and the action class (ADR-450 T14)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 05:49:50 -04:00
ruv 58ffe6aa67 fix(console): console_run resolves only an exact palette id (ADR-450 T13)
Model path passes exact:true to runById; person palette keeps fuzzy. Console 0.33.14.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 05:30:11 -04:00
rUv 040c703260 Merge pull request #3775 from ruvnet/loop/drive-installed
feat(console): drive.sh can run with an installed plugin in its throwaway config; the ruflo-mods option rows are now seen live (0.33.13)
2026-10-05 02:20:43 -07:00
rUv f1bcc87fb5 Merge pull request #3772 from ruvnet/loop/smoke-timeout
fix(console): smoke step 14 no longer times out under fleet load (reproduced: 4/4 fail before, 4/4 pass after)
2026-10-05 02:08:23 -07:00
ruv 5710dc7ee3 fix(console): smoke step 14 no longer times out under fleet load (vitest 30 s test timeout)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 04:54:25 -04:00
ruv 5c7b0da4f6 feat(console): drive.sh CONSOLE_DRIVE_INSTALL installs a plugin in the throwaway config (0.33.13)
Registers a directory marketplace and installs the named plugin inside the isolated config only, so the Settings view's plugin option rows can be driven live. The real plugins and settings are never touched.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 04:37:13 -04:00
ruv 25c3724234 feat(ruflo-console): console_open takes a Settings chip so a model can read a plugin's options (0.33.12)
console_open gains an optional chip (settings only), validated against the
Plugin options chips that exist and routed through the same action a chip
press uses. It stays a read: no setting is written and no write class changes.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 04:30:02 -04:00
ruv 79cdf571ad feat(ruflo-console): list the ruflo-mods tool hints, agent trim and delivery screen switches in Settings (0.33.11)
Show toolHints, agentTrim, agentTrimKeep and deliveryScreen at the simple level of Settings with a one-line honest note each; changes stay the same confirm-gated plugin option write, in the install class.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 03:43:51 -04:00
ruv d9a226913e feat(console): Mods reader shows calls from seen/checked/calls-object and refusal class from lastReason/lastBlocked (console 0.33.10)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 02:47:11 -04:00
ruv deaa2220e4 feat(console): scripts/drive.sh drives the console from a headless Claude (0.33.9); isolated config
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 01:48:48 -04:00
ruv 9f2e76bcb0 Merge origin/main into loop/ux-room; console 0.33.8
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 01:21:14 -04:00
rUv 86f68f7875 Merge pull request #3738 from ruvnet/loop/optimize-console
docs(console): optimization measurements and two benches — no code change justified
2026-10-04 22:20:21 -07:00
ruv e83b9cfe62 chore(console): 0.33.7 for the degraded-probe message
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 00:58:59 -04:00