Files
akushonkamen 87d8687f3f fix(ruflo-agentdb): stop the secret screen treating a hyphen-named memory key as a credential field (#4202) (#4211)
* fix(ruflo-agentdb): stop the secret screen treating a hyphen-named memory key as a credential field

assignmentSecret() ran the KEY_NAME key-assignment check on every match, so
any entry whose name starts with auth (auth-flow-notes) plus up to 40 name
characters looked like a config field, and keyedSecret()/plausibleSecret()
then judged the entry's value as a credential: a write of
{ key: 'auth-flow-notes', value: 'getUser-not-getSession' } was refused
(#4202). A key that is itself a multi-word hyphenated name is an entry's
name, not a field, so the keyed check now skips it; the secret shapes still
screen the whole text, and single-word credential keys (auth, api_key,
token) keep blocking keyed literals.

Synced to the 39 plugin copies with scripts/sync-mod-screen.mjs.

Fixes #4202
Assisted-by: AI (automated contributor session, disclosed on the issue)

* chore(ci): exclude plugins/ruflo-agentdb/tests/guard-keys.test.ts from the root vitest run

The new test imports claude-code/testing like its six siblings, so the root
ratchet run (scripts/ci-test-ratchet.mjs) cannot collect it outside Claude
Code; list it in scripts/ci-test-excluded.txt per the documented convention
so ci.yml stays green until 'claude plugin test plugins/ruflo-agentdb' runs
it in all-plugins-smoke.

Follow-up to #4202
Assisted-by: AI (automated contributor session, disclosed on the issue)
2026-10-17 14:58:08 +01:00
..

ruflo-daa

Dynamic Agentic Architecture with cognitive patterns, knowledge sharing, and adaptive agents.

Install

/plugin marketplace add ruvnet/ruflo
/plugin install ruflo-daa@ruflo

Features

  • Adaptive agents: Agents that learn and evolve from interactions
  • Cognitive patterns: Structured reasoning strategies for decision-making
  • Knowledge sharing: Cross-agent learning and collective improvement
  • Performance tracking: Efficiency and accuracy metrics over time

Commands

  • /daa -- DAA dashboard with learning metrics and active agents

Skills

  • daa-agent -- Create and adapt Dynamic Agentic Architecture agents
  • cognitive-pattern -- Define cognitive patterns for agent reasoning

MCP surface (8 tools)

All defined at v3/@claude-flow/cli/src/mcp-tools/daa-tools.ts:

Tool Purpose
daa_agent_create Initialize an adaptive agent
daa_agent_adapt Trigger manual adaptation from feedback
daa_workflow_create Define a cognitive workflow
daa_workflow_execute Run a cognitive workflow
daa_knowledge_share Propagate learnings across agents
daa_learning_status Adaptation progress metrics
daa_cognitive_pattern Define a reasoning pattern
daa_performance_metrics Efficiency / accuracy stats

Compatibility

  • CLI: pinned to @claude-flow/cli v3.6 major+minor.
  • Verification: bash plugins/ruflo-daa/scripts/smoke.sh is the contract.

Intelligence-pipeline alignment

DAA cognitive patterns feed the JUDGE phase of the 4-step intelligence pipeline (RETRIEVE → JUDGE → DISTILL → CONSOLIDATE) defined by ruflo-intelligence ADR-0001. When a task is routed via hooks_route and a similar past trajectory is retrieved, DAA cognitive patterns provide the structured reasoning to evaluate fit before adaptation.

daa_knowledge_share writes pattern propagation events that hooks_intelligence_learn can consume during the DISTILL phase.

Namespace coordination

This plugin owns the daa-patterns AgentDB namespace (kebab-case, follows the convention from ruflo-agentdb ADR-0001 §"Namespace convention"). Reserved namespaces (pattern, claude-memories, default) MUST NOT be shadowed.

daa-patterns is accessed via memory_* tools (which route by namespace). The agent file's CLI examples are correct (memory store --namespace daa-patterns).

Verification

bash plugins/ruflo-daa/scripts/smoke.sh
# Expected: "13 passed, 0 failed"

Architecture Decisions

As a mod

Since this version the plugin is also a function-hook mod (ADR-445 pattern; needs Claude Code 2.1.287 or later). It never calls the network or spawns a process, and it only tightens: it can refuse a call, never allow one.

  • Guard (default on): refuses daa_* tool calls that hold a key, token or password. The reason names the kind of secret, never the value.
  • /daa-mod: answered locally, no model turn: status, scan <text> (would the guard refuse this?), and tools (the connected daa_* tools).
  • Status file: .claude-flow/daa-mod/status.json ({version, updatedMs, guard, blocked}), written at session start and when a call is blocked.
  • Option: guard (on | off, default on) in the plugin's userConfig.

Test it: claude plugin test plugins/ruflo-daa and bash plugins/ruflo-daa/scripts/smoke.sh.