dual-brain 0.2.30 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dual-brain/docs/claude-code-extension-points.md +32 -0
- package/.dual-brain/docs/data-tools-capabilities.md +181 -0
- package/.dual-brain/docs/ecosystem-tools.md +91 -0
- package/.dual-brain/docs/panel-handoff.md +124 -0
- package/.dual-brain/docs/ruflo-analysis.md +48 -0
- package/bin/dual-brain.mjs +56 -56
- package/dist/mcp-server/index.d.ts +27 -0
- package/dist/mcp-server/index.js +359 -0
- package/dist/mcp-server/index.js.map +1 -0
- package/dist/src/agent-protocol.d.ts +163 -0
- package/dist/src/agent-protocol.js +368 -0
- package/dist/src/agent-protocol.js.map +1 -0
- package/dist/src/agents/registry.d.ts +52 -0
- package/dist/src/agents/registry.js +393 -0
- package/dist/src/agents/registry.js.map +1 -0
- package/dist/src/awareness.d.ts +93 -0
- package/dist/src/awareness.js +406 -0
- package/dist/src/awareness.js.map +1 -0
- package/dist/src/brief.d.ts +48 -0
- package/dist/src/brief.js +179 -0
- package/dist/src/brief.js.map +1 -0
- package/dist/src/calibration.d.ts +32 -0
- package/dist/src/calibration.js +133 -0
- package/dist/src/calibration.js.map +1 -0
- package/dist/src/checkpoint.d.ts +33 -0
- package/dist/src/checkpoint.js +99 -0
- package/dist/src/checkpoint.js.map +1 -0
- package/dist/src/ci-triage.d.ts +33 -0
- package/dist/src/ci-triage.js +193 -0
- package/dist/src/ci-triage.js.map +1 -0
- package/dist/src/cognitive-loop.d.ts +56 -0
- package/dist/src/cognitive-loop.js +495 -0
- package/dist/src/cognitive-loop.js.map +1 -0
- package/dist/src/collaboration.d.ts +147 -0
- package/dist/src/collaboration.js +438 -0
- package/dist/src/collaboration.js.map +1 -0
- package/dist/src/context-intel.d.ts +47 -0
- package/dist/src/context-intel.js +156 -0
- package/dist/src/context-intel.js.map +1 -0
- package/dist/src/context.d.ts +53 -0
- package/dist/src/context.js +332 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/continuity.d.ts +89 -0
- package/dist/src/continuity.js +230 -0
- package/dist/src/continuity.js.map +1 -0
- package/dist/src/cost-tracker.d.ts +47 -0
- package/dist/src/cost-tracker.js +170 -0
- package/dist/src/cost-tracker.js.map +1 -0
- package/dist/src/debrief.d.ts +53 -0
- package/dist/src/debrief.js +222 -0
- package/dist/src/debrief.js.map +1 -0
- package/dist/src/decide.d.ts +96 -0
- package/dist/src/decide.js +744 -0
- package/dist/src/decide.js.map +1 -0
- package/dist/src/decompose.d.ts +39 -0
- package/dist/src/decompose.js +218 -0
- package/dist/src/decompose.js.map +1 -0
- package/dist/src/detect.d.ts +91 -0
- package/dist/src/detect.js +544 -0
- package/dist/src/detect.js.map +1 -0
- package/dist/src/dispatch.d.ts +154 -0
- package/dist/src/dispatch.js +1306 -0
- package/dist/src/dispatch.js.map +1 -0
- package/dist/src/doctor.d.ts +421 -0
- package/dist/src/doctor.js +1689 -0
- package/dist/src/doctor.js.map +1 -0
- package/dist/src/engine.d.ts +70 -0
- package/dist/src/engine.js +155 -0
- package/dist/src/engine.js.map +1 -0
- package/dist/src/envelope.d.ts +36 -0
- package/dist/src/envelope.js +80 -0
- package/dist/src/envelope.js.map +1 -0
- package/dist/src/failure-memory.d.ts +55 -0
- package/dist/src/failure-memory.js +175 -0
- package/dist/src/failure-memory.js.map +1 -0
- package/dist/src/fx.d.ts +87 -0
- package/dist/src/fx.js +272 -0
- package/dist/src/fx.js.map +1 -0
- package/dist/src/governance.d.ts +93 -0
- package/dist/src/governance.js +261 -0
- package/dist/src/governance.js.map +1 -0
- package/dist/src/handoff.d.ts +11 -0
- package/dist/src/handoff.js +90 -0
- package/dist/src/handoff.js.map +1 -0
- package/dist/src/head-protocol.d.ts +76 -0
- package/dist/src/head-protocol.js +109 -0
- package/dist/src/head-protocol.js.map +1 -0
- package/dist/src/head.d.ts +222 -0
- package/dist/src/head.js +765 -0
- package/dist/src/head.js.map +1 -0
- package/dist/src/health.d.ts +132 -0
- package/dist/src/health.js +435 -0
- package/dist/src/health.js.map +1 -0
- package/dist/src/inbox.d.ts +70 -0
- package/dist/src/inbox.js +218 -0
- package/dist/src/inbox.js.map +1 -0
- package/dist/src/index.d.ts +33 -0
- package/dist/src/index.js +38 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/install-hooks.d.ts +13 -0
- package/dist/src/install-hooks.js +88 -0
- package/dist/src/install-hooks.js.map +1 -0
- package/dist/src/integrity.d.ts +59 -0
- package/dist/src/integrity.js +206 -0
- package/dist/src/integrity.js.map +1 -0
- package/dist/src/intelligence.d.ts +104 -0
- package/dist/src/intelligence.js +391 -0
- package/dist/src/intelligence.js.map +1 -0
- package/dist/src/ledger.d.ts +54 -0
- package/dist/src/ledger.js +179 -0
- package/dist/src/ledger.js.map +1 -0
- package/dist/src/living-docs.d.ts +14 -0
- package/dist/src/living-docs.js +197 -0
- package/dist/src/living-docs.js.map +1 -0
- package/dist/src/memory-tiers.d.ts +37 -0
- package/dist/src/memory-tiers.js +160 -0
- package/dist/src/memory-tiers.js.map +1 -0
- package/dist/src/model-profiles.d.ts +65 -0
- package/dist/src/model-profiles.js +568 -0
- package/dist/src/model-profiles.js.map +1 -0
- package/dist/src/models.d.ts +58 -0
- package/dist/src/models.js +327 -0
- package/dist/src/models.js.map +1 -0
- package/dist/src/narrative.d.ts +54 -0
- package/dist/src/narrative.js +163 -0
- package/dist/src/narrative.js.map +1 -0
- package/dist/src/nextstep.d.ts +16 -0
- package/dist/src/nextstep.js +103 -0
- package/dist/src/nextstep.js.map +1 -0
- package/dist/src/observer.d.ts +18 -0
- package/dist/src/observer.js +251 -0
- package/dist/src/observer.js.map +1 -0
- package/dist/src/outcome.d.ts +110 -0
- package/dist/src/outcome.js +377 -0
- package/dist/src/outcome.js.map +1 -0
- package/dist/src/pipeline.d.ts +167 -0
- package/dist/src/pipeline.js +1503 -0
- package/dist/src/pipeline.js.map +1 -0
- package/dist/src/playbook.d.ts +59 -0
- package/dist/src/playbook.js +238 -0
- package/dist/src/playbook.js.map +1 -0
- package/dist/src/pr-agent.d.ts +97 -0
- package/dist/src/pr-agent.js +195 -0
- package/dist/src/pr-agent.js.map +1 -0
- package/dist/src/predictive.d.ts +57 -0
- package/dist/src/predictive.js +230 -0
- package/dist/src/predictive.js.map +1 -0
- package/dist/src/profile.d.ts +294 -0
- package/dist/src/profile.js +1347 -0
- package/dist/src/profile.js.map +1 -0
- package/dist/src/prompt-audit.d.ts +22 -0
- package/dist/src/prompt-audit.js +194 -0
- package/dist/src/prompt-audit.js.map +1 -0
- package/dist/src/prompt-intel.d.ts +12 -0
- package/dist/src/prompt-intel.js +321 -0
- package/dist/src/prompt-intel.js.map +1 -0
- package/dist/src/provider-context.d.ts +121 -0
- package/dist/src/provider-context.js +222 -0
- package/dist/src/provider-context.js.map +1 -0
- package/dist/src/provider-manager.d.ts +92 -0
- package/dist/src/provider-manager.js +428 -0
- package/dist/src/provider-manager.js.map +1 -0
- package/dist/src/receipt.d.ts +87 -0
- package/dist/src/receipt.js +326 -0
- package/dist/src/receipt.js.map +1 -0
- package/dist/src/recommendations.d.ts +13 -0
- package/dist/src/recommendations.js +291 -0
- package/dist/src/recommendations.js.map +1 -0
- package/dist/src/redact.d.ts +15 -0
- package/dist/src/redact.js +129 -0
- package/dist/src/redact.js.map +1 -0
- package/dist/src/replit.d.ts +397 -0
- package/dist/src/replit.js +1160 -0
- package/dist/src/replit.js.map +1 -0
- package/dist/src/repo.d.ts +149 -0
- package/dist/src/repo.js +416 -0
- package/dist/src/repo.js.map +1 -0
- package/dist/src/revert.d.ts +30 -0
- package/dist/src/revert.js +166 -0
- package/dist/src/revert.js.map +1 -0
- package/dist/src/room.d.ts +102 -0
- package/dist/src/room.js +212 -0
- package/dist/src/room.js.map +1 -0
- package/dist/src/routing-advisor.d.ts +57 -0
- package/dist/src/routing-advisor.js +221 -0
- package/dist/src/routing-advisor.js.map +1 -0
- package/dist/src/self-correct.d.ts +40 -0
- package/dist/src/self-correct.js +137 -0
- package/dist/src/self-correct.js.map +1 -0
- package/dist/src/session-lock.d.ts +35 -0
- package/dist/src/session-lock.js +134 -0
- package/dist/src/session-lock.js.map +1 -0
- package/dist/src/session.d.ts +267 -0
- package/dist/src/session.js +1660 -0
- package/dist/src/session.js.map +1 -0
- package/dist/src/settings-tui.d.ts +5 -0
- package/dist/src/settings-tui.js +422 -0
- package/dist/src/settings-tui.js.map +1 -0
- package/dist/src/setup-flow.d.ts +63 -0
- package/dist/src/setup-flow.js +233 -0
- package/dist/src/setup-flow.js.map +1 -0
- package/dist/src/signal.d.ts +19 -0
- package/dist/src/signal.js +122 -0
- package/dist/src/signal.js.map +1 -0
- package/dist/src/simmer.d.ts +85 -0
- package/dist/src/simmer.js +224 -0
- package/dist/src/simmer.js.map +1 -0
- package/dist/src/state-export.d.ts +129 -0
- package/dist/src/state-export.js +233 -0
- package/dist/src/state-export.js.map +1 -0
- package/dist/src/strategy.d.ts +54 -0
- package/dist/src/strategy.js +95 -0
- package/dist/src/strategy.js.map +1 -0
- package/dist/src/subscription.d.ts +40 -0
- package/dist/src/subscription.js +189 -0
- package/dist/src/subscription.js.map +1 -0
- package/dist/src/templates.d.ts +208 -0
- package/dist/src/templates.js +238 -0
- package/dist/src/templates.js.map +1 -0
- package/dist/src/test.d.ts +9 -0
- package/dist/src/test.js +1173 -0
- package/dist/src/test.js.map +1 -0
- package/dist/src/think-engine.d.ts +67 -0
- package/dist/src/think-engine.js +412 -0
- package/dist/src/think-engine.js.map +1 -0
- package/dist/src/tui.d.ts +71 -0
- package/dist/src/tui.js +242 -0
- package/dist/src/tui.js.map +1 -0
- package/dist/src/types.d.ts +177 -0
- package/dist/src/types.js +6 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/update-check.d.ts +7 -0
- package/dist/src/update-check.js +36 -0
- package/dist/src/update-check.js.map +1 -0
- package/dist/src/wave-planner.d.ts +30 -0
- package/dist/src/wave-planner.js +281 -0
- package/dist/src/wave-planner.js.map +1 -0
- package/hooks/head-guard.sh +41 -0
- package/hooks/task-classifier.mjs +328 -0
- package/hooks/vibe-router.mjs +387 -0
- package/package.json +29 -153
- package/src/agents/registry.mjs +0 -405
- package/src/awareness.mjs +0 -425
- package/src/brief.mjs +0 -266
- package/src/calibration.mjs +0 -148
- package/src/checkpoint.mjs +0 -109
- package/src/ci-triage.mjs +0 -191
- package/src/cognitive-loop.mjs +0 -562
- package/src/collaboration.mjs +0 -545
- package/src/context-intel.mjs +0 -158
- package/src/context.mjs +0 -389
- package/src/continuity.mjs +0 -298
- package/src/cost-tracker.mjs +0 -184
- package/src/debrief.mjs +0 -228
- package/src/decide.mjs +0 -1099
- package/src/decompose.mjs +0 -331
- package/src/detect.mjs +0 -702
- package/src/dispatch.mjs +0 -1447
- package/src/doctor.mjs +0 -1607
- package/src/envelope.mjs +0 -139
- package/src/failure-memory.mjs +0 -178
- package/src/fx.mjs +0 -276
- package/src/governance.mjs +0 -279
- package/src/handoff.mjs +0 -87
- package/src/head-protocol.mjs +0 -128
- package/src/head.mjs +0 -952
- package/src/health.mjs +0 -528
- package/src/inbox.mjs +0 -195
- package/src/index.mjs +0 -44
- package/src/install-hooks.mjs +0 -100
- package/src/integrity.mjs +0 -245
- package/src/intelligence.mjs +0 -447
- package/src/ledger.mjs +0 -196
- package/src/living-docs.mjs +0 -210
- package/src/memory-tiers.mjs +0 -193
- package/src/models.mjs +0 -363
- package/src/narrative.mjs +0 -169
- package/src/nextstep.mjs +0 -100
- package/src/observer.mjs +0 -241
- package/src/outcome.mjs +0 -400
- package/src/pipeline.mjs +0 -1711
- package/src/playbook.mjs +0 -257
- package/src/pr-agent.mjs +0 -214
- package/src/predictive.mjs +0 -250
- package/src/profile.mjs +0 -1411
- package/src/prompt-audit.mjs +0 -231
- package/src/prompt-intel.mjs +0 -325
- package/src/provider-context.mjs +0 -257
- package/src/receipt.mjs +0 -344
- package/src/recommendations.mjs +0 -296
- package/src/redact.mjs +0 -192
- package/src/replit.mjs +0 -1210
- package/src/repo.mjs +0 -445
- package/src/revert.mjs +0 -149
- package/src/routing-advisor.mjs +0 -204
- package/src/self-correct.mjs +0 -147
- package/src/session-lock.mjs +0 -160
- package/src/session.mjs +0 -1655
- package/src/settings-tui.mjs +0 -373
- package/src/setup-flow.mjs +0 -223
- package/src/signal.mjs +0 -115
- package/src/simmer.mjs +0 -241
- package/src/strategy.mjs +0 -235
- package/src/subscription.mjs +0 -212
- package/src/templates.mjs +0 -260
- package/src/think-engine.mjs +0 -428
- package/src/tui.mjs +0 -276
- package/src/update-check.mjs +0 -35
- package/src/wave-planner.mjs +0 -294
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Claude Code Extension Points (Verified May 2026)
|
|
2
|
+
|
|
3
|
+
**NOTE**: Claude Code does NOT have a plugin system. No manifest, no marketplace, no `.claude-plugin/` format.
|
|
4
|
+
|
|
5
|
+
## Actual Extension Points
|
|
6
|
+
|
|
7
|
+
| Mechanism | Location | What It Does |
|
|
8
|
+
|-----------|----------|-------------|
|
|
9
|
+
| Hooks | `.claude/settings.json` → hooks | Shell commands at lifecycle events (PreToolUse, PostToolUse, Stop, SessionStart, etc.) |
|
|
10
|
+
| Skills | `.claude/skills/*.md` | Instruction injection when skill is matched |
|
|
11
|
+
| Custom commands | `.claude/commands/*.md` | Become `/project:command-name` slash commands |
|
|
12
|
+
| MCP servers | `.claude/settings.json` → mcpServers | External tool servers |
|
|
13
|
+
| Custom agents | `.claude/agents/*.md` | Subagent definitions |
|
|
14
|
+
| CLAUDE.md | `.claude/CLAUDE.md` | Project instructions loaded every session |
|
|
15
|
+
|
|
16
|
+
## Distribution Pattern
|
|
17
|
+
|
|
18
|
+
No higher-level abstraction exists. The proven pattern:
|
|
19
|
+
|
|
20
|
+
1. **npm package** with hook scripts + install CLI
|
|
21
|
+
2. `npx dual-brain install` merges hooks into settings.json, copies skills/commands/agents
|
|
22
|
+
3. `npx dual-brain uninstall` reverses the above
|
|
23
|
+
4. Version the settings merge to avoid clobbering user config
|
|
24
|
+
|
|
25
|
+
Our existing `dual-brain install --global` is already the right approach.
|
|
26
|
+
|
|
27
|
+
## What We Ship
|
|
28
|
+
|
|
29
|
+
- `~/.claude/hooks/` — 30+ hook scripts (head-guard, enforce-tier, cost-logger, etc.)
|
|
30
|
+
- `~/.claude/settings.json` — hook event bindings
|
|
31
|
+
- `~/.claude/CLAUDE.md` — global instructions
|
|
32
|
+
- npm postinstall wires everything up
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# DATA Tools (data-remote) — Complete Capability Reference
|
|
2
|
+
|
|
3
|
+
**Package**: data-remote on npm
|
|
4
|
+
**Author**: Steve Moraco (stevemoraco/DATAtools)
|
|
5
|
+
**Version**: 1.2.42
|
|
6
|
+
**Location**: `/home/runner/workspace/.replit-tools/`
|
|
7
|
+
**Last audited**: 2026-05-17
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Core Scripts
|
|
12
|
+
|
|
13
|
+
### 1. setup-claude-code.sh (522 lines)
|
|
14
|
+
Master initialization — runs on every container startup.
|
|
15
|
+
|
|
16
|
+
| Capability | Detail |
|
|
17
|
+
|------------|--------|
|
|
18
|
+
| Auto-update | Checks npm for newer data-remote, self-updates |
|
|
19
|
+
| Symlink management | ~/.claude, ~/.codex, ~/.ssh, ~/.local/share/claude/versions |
|
|
20
|
+
| Binary management | Finds/caches/symlinks Claude Code binary |
|
|
21
|
+
| Persistence sync | Applies config.json to Claude cleanupPeriodDays + Codex max_bytes |
|
|
22
|
+
| Mirror sync | Appends sessions to .session-archive/ (append-only) |
|
|
23
|
+
| OAuth refresh | Proactively refreshes tokens < 2h from expiry |
|
|
24
|
+
| Install fallback | Runs official install.sh if Claude not found |
|
|
25
|
+
| Env exports | CLAUDE_PERSISTENT, CODEX_PERSISTENT, REPLIT_TOOLS, PATH |
|
|
26
|
+
|
|
27
|
+
### 2. claude-session-manager.sh (792 lines)
|
|
28
|
+
Interactive multi-terminal session picker + state tracker.
|
|
29
|
+
|
|
30
|
+
| Capability | Detail |
|
|
31
|
+
|------------|--------|
|
|
32
|
+
| Terminal ID | Gets TTY/PID to track per-terminal state |
|
|
33
|
+
| Session enumeration | Reads history.jsonl + project JSONL + Codex hierarchy |
|
|
34
|
+
| Recent filtering | configurable window (default 48h), skips system/agent prompts |
|
|
35
|
+
| Terminal state | Per-terminal JSON: last session ID + tool used |
|
|
36
|
+
| Interactive menu | [1-9] quick-pick, [r] full list, [n] new, [c] resume |
|
|
37
|
+
| Running instance count | Counts active claude/codex processes |
|
|
38
|
+
| Aliases | cr, claude-resume, claude-pick, j, k, cm, claude-menu |
|
|
39
|
+
|
|
40
|
+
### 3. claude-auth-refresh.sh (231 lines)
|
|
41
|
+
OAuth token lifecycle management.
|
|
42
|
+
|
|
43
|
+
| Capability | Detail |
|
|
44
|
+
|------------|--------|
|
|
45
|
+
| Token status | Reads .credentials.json, returns hours remaining |
|
|
46
|
+
| Proactive refresh | Threshold: 2h, calls Anthropic OAuth endpoint |
|
|
47
|
+
| Failure handling | Backup before update, retry cooldown (.auth-refresh-failed marker) |
|
|
48
|
+
| API key support | Detects permanent keys, skips refresh |
|
|
49
|
+
| Commands | --status, --force, --auto |
|
|
50
|
+
| Client ID | 9d1c250a-e61b-44d9-88ed-5944d1962f5e |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Persistence Directories
|
|
55
|
+
|
|
56
|
+
### .claude-persistent/
|
|
57
|
+
| Path | Contents |
|
|
58
|
+
|------|----------|
|
|
59
|
+
| settings.json | Model config, hooks, cleanup period |
|
|
60
|
+
| .claude.json | OAuth account, telemetry, feature flags, session tracking |
|
|
61
|
+
| .credentials.json | OAuth tokens (access, refresh, expiresAt) |
|
|
62
|
+
| history.jsonl | Global session history (539 events) |
|
|
63
|
+
| sessions/ | Per-process state (PID.json: sessionId, cwd, status) |
|
|
64
|
+
| projects/ | Workspace-specific session JSONL + memory system |
|
|
65
|
+
| file-history/ | Per-session edit snapshots (790 files across 12+ sessions) |
|
|
66
|
+
| tasks/ | Per-session task queue |
|
|
67
|
+
| paste-cache/ | Clipboard cache (88 files, session-scoped) |
|
|
68
|
+
| shell-snapshots/ | Bash state captures (740 files) |
|
|
69
|
+
| session-env/ | Per-session env var snapshots (216 files) |
|
|
70
|
+
| plugins/marketplaces/ | MCP plugins (discord, telegram, github, etc.) |
|
|
71
|
+
| cache/ | Changelog (310KB), GitHub issues metadata |
|
|
72
|
+
| backups/ | Rolling .claude.json backups (5 recent, timestamped) |
|
|
73
|
+
| mcp-needs-auth-cache.json | MCP server auth status (Gmail, Calendar, Drive) |
|
|
74
|
+
|
|
75
|
+
### .codex-persistent/
|
|
76
|
+
| Path | Contents |
|
|
77
|
+
|------|----------|
|
|
78
|
+
| auth.json | OpenAI/ChatGPT OAuth (Google-based) |
|
|
79
|
+
| config.toml | Trust levels, history persistence, max_bytes |
|
|
80
|
+
| models_cache.json | Cached model list from OpenAI API |
|
|
81
|
+
| sessions/YYYY/MM/DD/ | Hierarchical session JSONL |
|
|
82
|
+
| skills/.system/ | Built-in: imagegen, openai-docs, plugin-creator, skill-creator, skill-installer |
|
|
83
|
+
| cache/codex_apps_tools/ | Plugin ecosystem cache |
|
|
84
|
+
| shell_snapshots/ | Context captures |
|
|
85
|
+
| memories/ | Per-session memory |
|
|
86
|
+
|
|
87
|
+
### .gh-persistent/
|
|
88
|
+
| Path | Contents |
|
|
89
|
+
|------|----------|
|
|
90
|
+
| config.yml | Protocol: https, aliases: co=pr checkout |
|
|
91
|
+
| hosts.yml | OAuth token for 1xmint, repo+user scoped |
|
|
92
|
+
|
|
93
|
+
### .npm-persistent/
|
|
94
|
+
| Path | Contents |
|
|
95
|
+
|------|----------|
|
|
96
|
+
| .npmrc | Auth token for npmjs.org (enables publish) |
|
|
97
|
+
|
|
98
|
+
### .ssh-persistent/
|
|
99
|
+
SSH keys + config, permissions maintained (700/600/644).
|
|
100
|
+
|
|
101
|
+
### .session-archive/ (Append-Only Mirror)
|
|
102
|
+
```
|
|
103
|
+
claude/history.jsonl
|
|
104
|
+
claude/projects/-home-runner-workspace/{sessionId}.jsonl
|
|
105
|
+
claude/projects/memory/*.md
|
|
106
|
+
codex/(similar)
|
|
107
|
+
```
|
|
108
|
+
Files ONLY GROW. Preserves deleted sessions. Synced on every startup.
|
|
109
|
+
|
|
110
|
+
### .claude-sessions/
|
|
111
|
+
Per-terminal state files ({TERMINAL_ID}.json) for session manager.
|
|
112
|
+
|
|
113
|
+
### .logs/
|
|
114
|
+
auth-refresh.log (174KB) — timestamped token checks on every startup.
|
|
115
|
+
|
|
116
|
+
### .claude-versions/
|
|
117
|
+
Binary copies of Claude Code versions. Only latest symlinked.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Configuration
|
|
122
|
+
|
|
123
|
+
### config.json
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"recentWindowHours": 48,
|
|
127
|
+
"persistenceDays": 365250,
|
|
128
|
+
"mirror": { "enabled": true }
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Hooks Defined (in settings.json)
|
|
133
|
+
| Event | Matcher | Script |
|
|
134
|
+
|-------|---------|--------|
|
|
135
|
+
| PreToolUse | Edit/Write/NotebookEdit/Bash | head-guard.mjs |
|
|
136
|
+
| PreToolUse | Agent | enforce-tier.mjs |
|
|
137
|
+
| PostToolUse | * | cost-logger.mjs |
|
|
138
|
+
| PostToolUse | * | auto-update-wrapper.mjs |
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## What Dual-Brain Currently Uses
|
|
143
|
+
|
|
144
|
+
| Capability | How |
|
|
145
|
+
|------------|-----|
|
|
146
|
+
| Session persistence | .claude-sessions/*.json tracks active sessions |
|
|
147
|
+
| OAuth auto-refresh | Keeps tokens alive across long agent runs |
|
|
148
|
+
| Multi-terminal sessions | Independent Claude instances per TTY |
|
|
149
|
+
| Credential persistence | Survives container restarts |
|
|
150
|
+
| Auto-update | Self-updates from npm on shell startup |
|
|
151
|
+
| Binary management | Handles Claude symlinks/install/versioning |
|
|
152
|
+
| Codex integration | .codex-persistent/ for GPT-side auth |
|
|
153
|
+
| Mirror config | Append-only session backup |
|
|
154
|
+
| Memory persistence | .claude-persistent/projects/ memory system |
|
|
155
|
+
| Session archiving | .session-archive/ long-term history |
|
|
156
|
+
|
|
157
|
+
## What Dual-Brain Should Leverage More
|
|
158
|
+
|
|
159
|
+
| Opportunity | Rationale |
|
|
160
|
+
|-------------|-----------|
|
|
161
|
+
| Session manager for Manager agents | Steve's per-terminal tracking → register persistent managers |
|
|
162
|
+
| Mirror for dual-brain debate | mirror.enabled syncs between Claude+Codex → route debate through it |
|
|
163
|
+
| Auth refresh → Provider Manager | Integrate token expiry into health/failover |
|
|
164
|
+
| Terminal tracking → agent hierarchy | HEAD on pts-0, Manager on pts-1 |
|
|
165
|
+
| Shell snapshots → context loading | 740 snapshots = rich context for new agents |
|
|
166
|
+
| File history → undo/revert | 790 edit snapshots = built-in time travel |
|
|
167
|
+
| Append-only archive → audit trail | Compliance/debugging across sessions |
|
|
168
|
+
| Codex skills system | Plugin architecture we could mirror |
|
|
169
|
+
|
|
170
|
+
## What Dual-Brain Built (Not In DATA Tools)
|
|
171
|
+
|
|
172
|
+
| Module | Why |
|
|
173
|
+
|--------|-----|
|
|
174
|
+
| Room system (room.ts) | File-based inter-agent messaging |
|
|
175
|
+
| Provider Manager (provider-manager.ts) | Cross-provider failover + rate limit tracking |
|
|
176
|
+
| Agent Protocol (agent-protocol.ts) | Typed hierarchy contracts |
|
|
177
|
+
| Model Profiles (model-profiles.ts) | Capability taxonomy for routing |
|
|
178
|
+
| Signal Scoring (signal.ts) | Outcome quality measurement |
|
|
179
|
+
| Routing Advisor (routing-advisor.ts) | EMA-based learned routing |
|
|
180
|
+
| Pipeline (pipeline.ts) | Gated execution with principle checks |
|
|
181
|
+
| Cognitive Loop (cognitive-loop.ts) | Multi-wave parallel agent orchestration |
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# AI Orchestration Ecosystem — Tool Audit
|
|
2
|
+
|
|
3
|
+
**Audited**: 2026-05-17
|
|
4
|
+
**Purpose**: Tools/packages relevant to dual-brain's multi-provider orchestration
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Direct Competitors / Analogs
|
|
9
|
+
|
|
10
|
+
### Ruflo (formerly claude-flow)
|
|
11
|
+
- **npm**: claude-flow | **GitHub**: ruvnet/ruflo
|
|
12
|
+
- 100+ specialized agents, multi-provider routing (Claude, GPT, Gemini, Cohere, Ollama)
|
|
13
|
+
- SQLite-backed shared memory, swarm coordination
|
|
14
|
+
- 27-hook lifecycle system, MCP server layer
|
|
15
|
+
- **Maturity**: v3.5+, actively developed
|
|
16
|
+
- **Borrow**: Router architecture, hook taxonomy (27 hooks covering full agent lifecycle)
|
|
17
|
+
- **Difference from us**: Heavily opinionated, monolithic. We're lighter, file-based, subscription-only.
|
|
18
|
+
|
|
19
|
+
### claude-code-flow (INTGworld)
|
|
20
|
+
- Lighter swarm orchestration for Claude Code
|
|
21
|
+
- Code-first, recursive agent cycles
|
|
22
|
+
- Less mature than Ruflo, simpler
|
|
23
|
+
- **Borrow**: Pattern study only
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Cost Tracking Tools
|
|
28
|
+
|
|
29
|
+
### ai-cost-tracker
|
|
30
|
+
- TypeScript/Node.js, SQLite-backed
|
|
31
|
+
- Per-user/per-feature token costs across models
|
|
32
|
+
- Production-ready
|
|
33
|
+
- **Borrow**: SQLite cost schema with per-model pricing tables
|
|
34
|
+
|
|
35
|
+
### CodeBurn
|
|
36
|
+
- `npm i -g codeburn`
|
|
37
|
+
- Terminal dashboard for Claude Code / Codex cost monitoring
|
|
38
|
+
- **Borrow**: TUI/UX reference for our frontend overhaul
|
|
39
|
+
|
|
40
|
+
### Tokscale (junhoyeo)
|
|
41
|
+
- Tracks token usage across Claude Code, Codex, Gemini
|
|
42
|
+
- Global leaderboard, contribution graphs
|
|
43
|
+
- **Borrow**: Multi-provider cost comparison patterns
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Claude Code Plugin System
|
|
48
|
+
|
|
49
|
+
Claude Code has a formal plugin system:
|
|
50
|
+
- `.claude-plugin/plugin.json` manifests
|
|
51
|
+
- Skills, agents, hooks, MCP servers
|
|
52
|
+
- Curated: awesome-claude-code-plugins (ccplugins)
|
|
53
|
+
- **Action**: Package dual-brain hooks as a `.claude-plugin` for distribution
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Multi-Agent Frameworks (learn-from)
|
|
58
|
+
|
|
59
|
+
### CrewAI
|
|
60
|
+
- Role-based DSL, enterprise observability (2026)
|
|
61
|
+
- Our HEAD/Manager/Supervisor/Worker maps to CrewAI's role model
|
|
62
|
+
- **Borrow**: Role hierarchy patterns, observability approach
|
|
63
|
+
|
|
64
|
+
### AutoGen/AG2
|
|
65
|
+
- Event-driven, async-first since v1.0 GA
|
|
66
|
+
- Microsoft shifting to maintenance mode — caution
|
|
67
|
+
- **Borrow**: Event-driven patterns only
|
|
68
|
+
|
|
69
|
+
### LangGraph v0.4
|
|
70
|
+
- State persistence and checkpointing
|
|
71
|
+
- State machine approach mirrors our head.ts
|
|
72
|
+
- **Borrow**: State machine persistence patterns for HEAD brain
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Replit-Specific
|
|
77
|
+
|
|
78
|
+
### @replit/database
|
|
79
|
+
- Official KV store for Replit
|
|
80
|
+
- Simple persistence, no relational queries
|
|
81
|
+
- **Note**: data-remote may be unpublished/internal npm package
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Priority Actions
|
|
86
|
+
|
|
87
|
+
1. Study Ruflo's 27-hook taxonomy — see if we're missing lifecycle hooks
|
|
88
|
+
2. Look at ai-cost-tracker's SQLite schema — could replace our JSON cost tracking
|
|
89
|
+
3. Package as Claude Code plugin — distribution path for non-Replit users
|
|
90
|
+
4. Study CodeBurn's TUI — UX reference for our frontend overhaul
|
|
91
|
+
5. LangGraph state persistence — validate our HEAD state machine approach
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Dual-Brain Panel Handoff — For HeyVera Session
|
|
2
|
+
|
|
3
|
+
## What This Is
|
|
4
|
+
|
|
5
|
+
Dual-brain is an AI orchestration CLI that routes between Claude and GPT. It writes its state to JSON files that an external web panel can consume. This doc tells you how to build that panel.
|
|
6
|
+
|
|
7
|
+
## Your Task
|
|
8
|
+
|
|
9
|
+
1. Find the existing "Pulse" panel (X.com marketing agent dashboard)
|
|
10
|
+
2. Make TWO copies:
|
|
11
|
+
- **Copy A**: Social marketing panel → integrate into heyvera.org (DO LATER, just copy it clean for now)
|
|
12
|
+
- **Copy B**: Strip all X.com/marketing code → rebuild as dual-brain orchestration portal
|
|
13
|
+
3. Copy B becomes a page on heyvera.org
|
|
14
|
+
|
|
15
|
+
## Data Contract
|
|
16
|
+
|
|
17
|
+
Dual-brain writes JSON files to `.dual-brain/state/`. The panel reads these.
|
|
18
|
+
|
|
19
|
+
### File: `providers.json`
|
|
20
|
+
```typescript
|
|
21
|
+
interface ProvidersState {
|
|
22
|
+
timestamp: string;
|
|
23
|
+
providers: Record<string, {
|
|
24
|
+
score: number; // 0-1 health score
|
|
25
|
+
cooldownUntil?: number; // unix ms, if rate-limited
|
|
26
|
+
lastError?: string;
|
|
27
|
+
degraded?: boolean;
|
|
28
|
+
dispatchCount: number;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### File: `routing.json`
|
|
34
|
+
```typescript
|
|
35
|
+
interface RoutingState {
|
|
36
|
+
timestamp: string;
|
|
37
|
+
totalObservations: number;
|
|
38
|
+
cells: Record<string, Record<string, {
|
|
39
|
+
ema: number; // 0-1 performance score
|
|
40
|
+
observations: number;
|
|
41
|
+
}>>;
|
|
42
|
+
topPerformers: Array<{ cell: string; model: string; ema: number; observations: number }>;
|
|
43
|
+
worstPerformers: Array<{ cell: string; model: string; ema: number; observations: number }>;
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### File: `rooms.json`
|
|
48
|
+
```typescript
|
|
49
|
+
interface RoomsState {
|
|
50
|
+
timestamp: string;
|
|
51
|
+
rooms: Array<{
|
|
52
|
+
id: string;
|
|
53
|
+
project: string;
|
|
54
|
+
status: 'active' | 'closed';
|
|
55
|
+
createdAt: string;
|
|
56
|
+
workerCount: number;
|
|
57
|
+
}>;
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### File: `decisions.json` (ring buffer, max 50)
|
|
62
|
+
```typescript
|
|
63
|
+
interface Decision {
|
|
64
|
+
timestamp: string;
|
|
65
|
+
promptSummary: string; // first 100 chars
|
|
66
|
+
provider: string;
|
|
67
|
+
model: string;
|
|
68
|
+
tier: string;
|
|
69
|
+
reason: string;
|
|
70
|
+
explored: boolean; // was this an exploration pick?
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### File: `outcomes.json` (ring buffer, max 200)
|
|
75
|
+
```typescript
|
|
76
|
+
interface Outcome {
|
|
77
|
+
timestamp: string;
|
|
78
|
+
roomId: string;
|
|
79
|
+
success: boolean;
|
|
80
|
+
score: number; // 0-1 composite quality
|
|
81
|
+
durationMs: number;
|
|
82
|
+
provider: string;
|
|
83
|
+
model: string;
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### File: `costs.json`
|
|
88
|
+
```typescript
|
|
89
|
+
interface CostsState {
|
|
90
|
+
timestamp: string;
|
|
91
|
+
session: {
|
|
92
|
+
totalTokens: number;
|
|
93
|
+
inputTokens: number;
|
|
94
|
+
outputTokens: number;
|
|
95
|
+
estimatedCostUsd: number;
|
|
96
|
+
};
|
|
97
|
+
byProvider: Record<string, {
|
|
98
|
+
tokens: number;
|
|
99
|
+
estimatedCostUsd: number;
|
|
100
|
+
}>;
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## What the Panel Should Show
|
|
105
|
+
|
|
106
|
+
### Dashboard View (Copy B — Orchestration Portal)
|
|
107
|
+
1. **Provider Health** — two cards (Claude / GPT), each showing health score, cooldown status, dispatch count
|
|
108
|
+
2. **Routing Intelligence** — which model is winning for which task type (EMA scores), exploration rate
|
|
109
|
+
3. **Live Feed** — scrolling list of recent decisions and outcomes
|
|
110
|
+
4. **Cost Gauge** — session cost, per-provider breakdown
|
|
111
|
+
5. **Active Rooms** — current agent tasks in flight
|
|
112
|
+
6. **Performance Chart** — outcome scores over time
|
|
113
|
+
|
|
114
|
+
### Future: Voice Input
|
|
115
|
+
The panel will eventually accept voice input (browser Speech API), transcribe it, and send it to dual-brain's HEAD. For now, just build the read-only dashboard.
|
|
116
|
+
|
|
117
|
+
### Future: Multi-Repo View
|
|
118
|
+
The panel will show multiple repos with a manager-per-repo. Each repo card shows its active manager, workers, and costs.
|
|
119
|
+
|
|
120
|
+
## Tech Notes
|
|
121
|
+
- Poll the JSON files every 2-5 seconds (they're small)
|
|
122
|
+
- Or use `fs.watch` if same machine
|
|
123
|
+
- All files use atomic writes (write .tmp then rename) so reads never get partial data
|
|
124
|
+
- The `getExportedState()` function in dual-brain returns all state as one object if you want an API instead of file polling
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Ruflo (claude-flow) — Competitive Analysis
|
|
2
|
+
|
|
3
|
+
**Audited**: 2026-05-17
|
|
4
|
+
**Package**: claude-flow on npm, ruvnet/ruflo on GitHub
|
|
5
|
+
**Version**: v3.5+
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Reality vs Marketing
|
|
10
|
+
|
|
11
|
+
| Claim | Reality |
|
|
12
|
+
|-------|---------|
|
|
13
|
+
| "27 hooks" | 8 Claude Code lifecycle events with multiple matchers. All exit 0, never block. |
|
|
14
|
+
| "210 MCP tools" | Real MCP layer, but tool count inflated. Express proxy to stdio backends. |
|
|
15
|
+
| "Vector DB / HNSW" | JSON files with a Map. Vector features may be in npm binary, not open source. |
|
|
16
|
+
| "Intelligent routing" | Regex pattern matcher. Static confidence (0.8 match, 0.5 default). No learning. |
|
|
17
|
+
|
|
18
|
+
## Where We're Ahead
|
|
19
|
+
|
|
20
|
+
| Area | Ruflo | Dual-Brain |
|
|
21
|
+
|------|-------|------------|
|
|
22
|
+
| Routing | Static regex → hardcoded agent maps | EMA-based learned routing with exploration |
|
|
23
|
+
| Hook enforcement | All `|| true`, never block | head-guard blocks HEAD from implementing |
|
|
24
|
+
| Type safety | Markdown agents, no runtime validation | TypeScript contracts, typed protocols |
|
|
25
|
+
| Architecture honesty | Marketing > codebase | What we claim = what we ship |
|
|
26
|
+
|
|
27
|
+
## Where Ruflo's Ahead
|
|
28
|
+
|
|
29
|
+
| Area | What They Have | What We Should Build |
|
|
30
|
+
|------|---------------|---------------------|
|
|
31
|
+
| MCP server | Orchestration exposed as MCP tools — any Claude Code session can use it | Yes — expose routing/dispatch/status as MCP tools |
|
|
32
|
+
| Plugin format | `.claude-plugin/plugin.json` manifest with agents/commands/skills/scripts | Study as model for future extension system |
|
|
33
|
+
| Session lifecycle | Automatic save/restore with clean start/end | Improve our session.ts persistence |
|
|
34
|
+
|
|
35
|
+
## Their Architecture
|
|
36
|
+
|
|
37
|
+
- **Router**: `router.cjs` — regex keyword-to-agent maps ("implement|create|build" → coder)
|
|
38
|
+
- **Agent comms**: File-based mailbox via bash scripts (`.claude-flow/swarm/queue/`, `.claude-flow/swarm/mailbox/{agent}/`)
|
|
39
|
+
- **Memory**: Flat JSON files (memory.json, auto-memory-store.json, ranked-context.json)
|
|
40
|
+
- **MCP bridge**: Express server proxying to stdio backends
|
|
41
|
+
- **Plugins**: 32 plugins in `plugins/ruflo-*`, each with manifest + agents + commands
|
|
42
|
+
|
|
43
|
+
## Action Items
|
|
44
|
+
|
|
45
|
+
1. **Build MCP server layer** — expose dual-brain orchestration as MCP tools (highest value)
|
|
46
|
+
2. **Study their plugin manifest** — good pattern for extension packaging
|
|
47
|
+
3. **Don't copy their routing** — ours is fundamentally better (learned vs static)
|
|
48
|
+
4. **Don't copy their hooks** — ours actually enforce boundaries, theirs are cosmetic
|