Commit Graph
3816 Commits
Author SHA1 Message Date
randRuFlo c09d44cfd5 chore(release): @claude-flow/swarm 3.0.2 (carries #3929 broadcast-retry fix)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 20:40:29 -04:00
randRuFlo 873c5a1007 fix(swarm): skip broadcast retry re-queue for a subscriber that unsubscribed during backoff (#3928)
Without the guard the fix would recreate an orphaned queue for the departed agent. Adds a discriminating test.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 18:07:38 -04:00
r b03e7e21a1 Merge main into dream/2026-10-09-swarm 2026-10-09 18:06:38 -04:00
rUv 22b90b7ed0 Merge pull request #3959 from ruvnet/feat/session-workspace
feat(console,mods): session workspace on the Room: attention queue, browser, preview (ADR-486)
2026-10-09 15:00:12 -07:00
randRuFlo 11a8cf79a7 release: re-sign helpers manifest for 3.56.3
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:34:28 -04:00
randRuFlo c6fa271756 fix(v3): declare onnxruntime-common for transformers 4.2.0 in the pnpm tree; recall test tolerates alpha.20 borderline neighbour
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:33:49 -04:00
randRuFlo dffb5171e0 chore(release): 3.56.3 versions and changelog (memory 3.0.3, AgentDB alpha.20)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:26:16 -04:00
randRuFlo dd8fd3cda8 fix(memory): settle hybrid shutdown, real-path sql.js lock test for AgentDBBackend
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:25:23 -04:00
randRuFlo f047a545f0 fix(console): fold the Sessions list, honest wording, read budget for first reads, Codex sub-agent lineage
- Sessions list starts folded; jumping from the queue opens it.
- First reads past a pass's byte budget wait for the next pass ("not read yet").
- A Codex sub-agent rollout's trailing parent session_meta is lineage, not a second identity.
- ADR/CHANGELOG/README say discovery spawns nothing; the only write is the four-count summary.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:24:09 -04:00
randRuFlo c53bed71e3 feat(console,mods): session workspace on the Room: attention queue, session browser, preview (ADR-486)
Needs-you queue (approvals, questions, failures, finished-unread) across Claude Code, Codex and Ruflo
sessions, a browser grouped by repository and worktree, and a preview of the selected session. Local,
read-only discovery (no model call, no process); ambiguous identity goes to an unassigned bucket;
finished work clears only after its preview was drawn; transcript text never reaches a model, the
state, the disk or a text answer. ruflo-mods gains an optional counts-only attention row.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:18:27 -04:00
randRuFlo 01fa240e7c wip(memory): agentdb alpha.20 floor + sql.js lock/concurrency guard
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:17:36 -04:00
randRuFlo 733596cc1f feat(x-gateway): read-only GitHub/npm query tools on /mcp (ADR-485)
Adds ruv_github_search, ruv_github_repo, ruv_github_file and ruv_registry_latest
to the legacy /mcp surface: allowlisted owner (default ruvnet), public repos only,
SSRF-pinned URLs, redirects refused, size/time caps, TTL+ETag cache, per-client
and shared upstream budgets, results fenced as untrusted GitHub data. Directory
profiles (/chatgpt/mcp, /claude/mcp) are unchanged at twelve tools.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 14:28:35 -04:00
randRuFlo 0f6a464a7b release: re-sign helpers manifest for 3.56.2
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 13:06:48 -04:00
randRuFlo 183d2d5140 chore(release): 3.56.2 versions and changelog
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 13:06:28 -04:00
Dragan SpiridonovandRuflo & AQE bc14216777 fix(task,console): task_update accepts only the five statuses; a task stored as "complete" is never shown pending or re-dispatched
task_update stored any string as a task's status, so an agent writing
"complete" left a finished task every reader misread: the ruflo-console
Automation kanban listed it under PENDING (offering assign/cancel), and
Mission Control derived it as ready, so nextTask() would hand finished work
to Claude again as a new billed turn.

CLI (mcp-tools/task-tools.ts)
- statusOf(): trimmed, case-insensitive, aliases complete/done/canceled/
  running/in-progress; anything else (incl. "" and prototype keys) is
  refused with the allowed list and the task is left unchanged.
- No schema enum on purpose: the HTTP/WebSocket registry validates enums
  before the handler, which would refuse aliases there but not over stdio.
- Completing through task_update now finishes the task as task_complete
  does (progress 100, completedAt, worker idle and counted once per
  hand-out); cancelling frees workers as failing already did. Worker
  effects run after the task store is saved.

Console
- taskStatusOf() reads the spellings older CLIs already stored; used by the
  kanban lanes and verbs, Mission Control derive (no re-dispatch), mission
  cancel, workflow links and the workflow guide.

Co-Authored-By: Ruflo & AQE
Claude-Session: https://claude.ai/code/session_01CGoza3gyxBjpaiMPhGHcHs
2026-10-09 15:54:18 +02:00
ClaudeandRuFlo 86af231f6d dream(swarm): #3928 MessageBus broadcast-retry re-queues under the real subscriber agentId, not the 'broadcast' sentinel
handleDeliveryError()'s retry re-queue used message.to ('broadcast') as the
queue key for a broadcast message instead of the per-subscriber agentId
enqueue() actually fanned the message out to. processQueues() skips any
unsubscribed queue, so a failing broadcast subscriber's retries -- and
eventual message.failed -- were silently dropped into an orphaned queue
leaking until shutdown(). Explicitly disclosed as a known limitation by the
preceding #3562/#3563 MessageBus rewrite; closed by threading
subscription.agentId through deliverMessage() -> handleDeliveryError() ->
the re-queue.

2 new discriminating tests (stash-isolated baseline-fails/candidate-passes,
independently reproduced by an adversarial critic). Full swarm suite
274/274 -> 276/276, 0 regressions, tsc clean both ways.

Co-Authored-By: RuFlo <ruv@ruv.net>
Claude-Session: https://claude.ai/code/session_016qkoWKmaupqNEJwqiedzsX
2026-10-09 06:24:53 +00:00
randRuFlo 133b3a4735 release: re-sign helpers manifest for 3.56.1
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 23:49:19 -04:00
randRuFlo 6ecabbbe42 chore(release): 3.56.1 versions and changelog
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 23:48:55 -04:00
rUv 6287f19938 Merge pull request #3901 from rudycelekli/fix/config-reset-section-20261007
fix(config): preserve unrelated sections during targeted reset
2026-10-08 20:42:02 -07:00
rUv f49ddd4f78 Merge pull request #3923 from ruvnet/fix/3918-encrypted-store-rewrite
fix(cli): ensureSchemaColumns no longer rewrites an up-to-date (encrypted) store (#3918)
2026-10-08 20:25:40 -07:00
rUv 9f8e37dac3 Merge pull request #3922 from ruvnet/fix/3919-policy-anchor-home
fix(cli): policy trust mirror/key honour HOME and XDG_CONFIG_HOME (#3919)
2026-10-08 20:25:37 -07:00
rUv 961f5b4d75 Merge pull request #3924 from ruvnet/fix/3920-approvals-badge-notices
fix(console): approvals badge counts only actionable rows (0.40.3) (#3920)
2026-10-08 20:24:47 -07:00
rUv 1a84aece9e Merge branch 'main' into fix/config-reset-section-20261007 2026-10-08 20:10:18 -07:00
randRuFlo ba810a05fb fix(console): approvals badge counts only rows with an approve/deny action (0.40.3, #3920)
A refused mod or a permission deny has no action, so it held 'n to approve' up
with nothing to press. The band, menu badge, change notices and the Approvals
header now count waitingApprovalsOf(); notices stay listed, named apart.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 22:54:19 -04:00
randRuFlo 6625465a50 fix(cli): ensureSchemaColumns rewrites the store only when something changed (#3918)
The status backfill set modified=true even when the UPDATE touched 0 rows, so
every open of an up-to-date store re-exported and rewrote the whole image; with
encryption at rest each write uses a fresh nonce, so read-only commands such as
'memory stats' changed the RFE1 bytes every call. Gate on getRowsModified().

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 22:50:40 -04:00
randRuFlo 1c10601716 fix(cli): policy trust mirror and key honour HOME/XDG_CONFIG_HOME; guardrail test runs in a scratch project (#3919)
The anchor mirror and trust key were resolved with userInfo().homedir, which
ignores a throwaway HOME, so tests wrote into the developer's real
~/.config/ruflo/policy-trust and later failed closed on a reused path.
Resolve from the environment at call time (XDG_CONFIG_HOME when absolute,
else os.homedir()/.config; legacy location kept for XDG users who already
have trust state there). mcp-client-guardrail.test.ts now uses a scratch
cwd and HOME.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 22:47:14 -04:00
rUv 7ae3a6481e Merge branch 'main' into fix/config-reset-section-20261007 2026-10-08 19:46:50 -07:00
rUv 438f9189fb Merge branch 'main' into fix/config-cli-mcp-interop-20261007 2026-10-08 19:46:47 -07:00
rUv 54628be615 Merge branch 'main' into fix/console-0.40.2-security 2026-10-08 15:02:44 -07:00
3991f40670 fix(console): card-bound confirm, one model-facing sanitiser, linear escape stripping, own-key lookups, wrapped Approvals (0.40.2)
- A Yes runs only the card it was pressed on: every pending card has an id,
  the Yes / Always allow / Always accept buttons carry it, runner.confirm(seen)
  runs nothing (and says so) when another card took its place. A card Claude
  raised is re-checked against the level and Stop when it lands and when the
  Yes arrives.
- Everything returned to the model goes through modelLine (escapes, then
  control and invisible characters removed, cut, withheld whole when it holds
  a secret shape or an invite code) and every answer leaves through
  modelLines; a version such as v2.1.0-beta.3 is not an invite.
- ESCAPES is linear: an unterminated OSC ends at the next introducer or the
  end of the text (7.7 s on the old pattern became milliseconds on 1 MB).
- Mission state/status, hive role, audit severity and Settings plugin names
  that are Object.prototype keys read as unknown (own()).
- Approvals and a mission objective wrap at 80 columns instead of being cut
  with an ellipsis (#3899).

Specs ported from #3820, #3821 and #3822, adapted to main.

Co-authored-by: Dragan Spiridonov <spiridonovdragan@gmail.com>
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 17:38:02 -04:00
randRuFlo abb1449ef0 chore(deps): bump handlebars lock entries to 4.7.10 (new critical advisories against 4.7.9)
The v3 critical-blocking npm audit started failing on 4.7.9 (GHSA-xw65-4hp5-5hc7, GHSA-8r5x-fm3f-whwj, GHSA-p8wg-vrv2-v86f). The existing >=4.7.9 override already admits 4.7.10; only the lock entries change. npm audit --audit-level=critical now reports 0 critical.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 17:24:11 -04:00
randRuFlo b5f529567e release: re-sign helpers manifest for 3.56.0
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 17:18:42 -04:00
randRuFlo 6991551f8a chore(release): 3.56.0 versions, leaf pins (memory 3.0.2, security 3.0.3), lockfiles, changelog
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 17:17:31 -04:00
randRuFlo 5c49d55c51 chore(cli): drop the empty .claude/agents/tmp.json that shipped in the package tarball
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 17:10:06 -04:00
randRuFlo ec00eed619 chore(release): bump leaf packages for 3.56.0 (memory 3.0.2, security 3.0.3)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 17:06:13 -04:00
randRuFlo 67b06b2877 test(cli): resolve the vitest runner via package.json and isolate pnpm NODE_PATH in subprocess fixtures
vitest 4.1.8 does not export ./vitest.mjs, and pnpm's .bin shim exports NODE_PATH with
every workspace dependency, so the optional-package absence guards in the #3904, #3907
and #3910 fixtures failed under 'pnpm test'.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 17:05:25 -04:00
randRuFlo e201290385 style(memory): move append-conditions imports below the file header (#3750 review nit)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 16:56:05 -04:00
r fa7e4a966c Merge branch 'pr-3750' into feat/release-3.56.0-batch 2026-10-08 16:55:50 -04:00
r d821c22653 Merge branch 'pr-3498' into feat/release-3.56.0-batch 2026-10-08 16:55:50 -04:00
r be5da99198 Merge branch 'pr-3904' into feat/release-3.56.0-batch 2026-10-08 16:55:50 -04:00
r a52b7877a1 Merge branch 'pr-3505' into feat/release-3.56.0-batch
# Conflicts:
#	v3/@claude-flow/cli/src/mcp-tools/workflow-tools.ts
2026-10-08 16:55:21 -04:00
r 8129a3d6f7 Merge branch 'pr-3495' into feat/release-3.56.0-batch
# Conflicts:
#	v3/@claude-flow/cli/src/mcp-tools/agent-execute-core.ts
2026-10-08 16:55:05 -04:00
r 74b8e7bf1c Merge branch 'pr-3687' into feat/release-3.56.0-batch 2026-10-08 16:54:43 -04:00
r 20f91b0e8b Merge branch 'pr-3679' into feat/release-3.56.0-batch 2026-10-08 16:54:43 -04:00
r 3fb09bc31c Merge branch 'pr-3528' into feat/release-3.56.0-batch 2026-10-08 16:54:43 -04:00
r aac9d733e2 Merge branch 'pr-3507' into feat/release-3.56.0-batch 2026-10-08 16:54:35 -04:00
r c1812d206b Merge branch 'pr-3504' into feat/release-3.56.0-batch 2026-10-08 16:54:35 -04:00
r c2fc22ef1e Merge branch 'pr-3506' into feat/release-3.56.0-batch 2026-10-08 16:54:35 -04:00
r 9abd649b79 Merge branch 'pr-3502' into feat/release-3.56.0-batch 2026-10-08 16:54:35 -04:00
r 92c93ae9a8 Merge branch 'pr-3501' into feat/release-3.56.0-batch 2026-10-08 16:54:35 -04:00