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,154 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
interface RuntimeInfo {
|
|
3
|
+
claudeAvailable: boolean;
|
|
4
|
+
codexAvailable: boolean;
|
|
5
|
+
runtime: 'claude-code' | 'codex-cli' | 'none';
|
|
6
|
+
}
|
|
7
|
+
interface TokenUsageInfo {
|
|
8
|
+
inputTokens: number;
|
|
9
|
+
outputTokens: number;
|
|
10
|
+
}
|
|
11
|
+
interface RetryBudgetState {
|
|
12
|
+
perTaskRetries: Record<string, number>;
|
|
13
|
+
recentDispatches: number;
|
|
14
|
+
windowMs: number;
|
|
15
|
+
maxPerTask: number;
|
|
16
|
+
maxPerWindow: number;
|
|
17
|
+
}
|
|
18
|
+
interface WorktreeCheck {
|
|
19
|
+
safe: boolean;
|
|
20
|
+
conflicts?: string[];
|
|
21
|
+
}
|
|
22
|
+
interface PreflightResult {
|
|
23
|
+
ready: boolean;
|
|
24
|
+
provider: string;
|
|
25
|
+
error?: string;
|
|
26
|
+
suggestion?: string;
|
|
27
|
+
}
|
|
28
|
+
interface NativeDispatchDescriptor {
|
|
29
|
+
type: 'native-agent';
|
|
30
|
+
description: string;
|
|
31
|
+
model: 'haiku' | 'sonnet' | 'opus';
|
|
32
|
+
prompt: string;
|
|
33
|
+
isolation: string | undefined;
|
|
34
|
+
maxTurns: number;
|
|
35
|
+
disallowedTools: string[];
|
|
36
|
+
background: boolean;
|
|
37
|
+
}
|
|
38
|
+
interface NormalizedResult {
|
|
39
|
+
status: 'success' | 'failure' | 'partial';
|
|
40
|
+
provider: string;
|
|
41
|
+
model: string;
|
|
42
|
+
tier: string;
|
|
43
|
+
filesChanged: string[];
|
|
44
|
+
filesFound: string[];
|
|
45
|
+
testsRun: number;
|
|
46
|
+
edgeCases: string[];
|
|
47
|
+
tokensUsed: {
|
|
48
|
+
input: number;
|
|
49
|
+
output: number;
|
|
50
|
+
};
|
|
51
|
+
errors: string[];
|
|
52
|
+
rawOutput: string;
|
|
53
|
+
}
|
|
54
|
+
interface DispatchInput {
|
|
55
|
+
prompt?: string;
|
|
56
|
+
decision?: Record<string, unknown>;
|
|
57
|
+
files?: string[];
|
|
58
|
+
cwd?: string;
|
|
59
|
+
dryRun?: boolean;
|
|
60
|
+
verbose?: boolean;
|
|
61
|
+
situationBrief?: string;
|
|
62
|
+
useWorktree?: boolean;
|
|
63
|
+
maxTurns?: number;
|
|
64
|
+
modelSuggestion?: {
|
|
65
|
+
model: string;
|
|
66
|
+
reason: string;
|
|
67
|
+
};
|
|
68
|
+
profile?: Record<string, unknown>;
|
|
69
|
+
_retryAttempt?: number;
|
|
70
|
+
_skipPreDispatchThink?: boolean;
|
|
71
|
+
_skipRelatedContext?: boolean;
|
|
72
|
+
}
|
|
73
|
+
interface DispatchResult {
|
|
74
|
+
status: string;
|
|
75
|
+
provider: string;
|
|
76
|
+
model: string;
|
|
77
|
+
specialist?: string;
|
|
78
|
+
command: string[] | null;
|
|
79
|
+
nativeDispatch?: NativeDispatchDescriptor;
|
|
80
|
+
exitCode: number | null;
|
|
81
|
+
summary: string | null;
|
|
82
|
+
durationMs: number;
|
|
83
|
+
usage: TokenUsageInfo | null;
|
|
84
|
+
worktreeUsed?: boolean;
|
|
85
|
+
autoReview?: {
|
|
86
|
+
triggered: boolean;
|
|
87
|
+
provider?: string;
|
|
88
|
+
status?: string;
|
|
89
|
+
reason?: string;
|
|
90
|
+
};
|
|
91
|
+
authVerified?: boolean;
|
|
92
|
+
error: string | null;
|
|
93
|
+
suggestion?: string;
|
|
94
|
+
type?: string;
|
|
95
|
+
}
|
|
96
|
+
interface DualBrainResult {
|
|
97
|
+
tier: string;
|
|
98
|
+
claude: DispatchResult;
|
|
99
|
+
openai: DispatchResult;
|
|
100
|
+
consensus: 'both-passed' | 'both-failed' | 'split';
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Read agents/specialists/_base.md and agents/specialists/{specialist}.md,
|
|
104
|
+
* concatenate them (base first, specialist second). Falls back gracefully:
|
|
105
|
+
* - If base is missing, only specialist content is returned.
|
|
106
|
+
* - If specialist file is missing, only base content is returned.
|
|
107
|
+
* - If both are missing, returns an empty string.
|
|
108
|
+
*/
|
|
109
|
+
declare function loadSpecialistPrompt(specialist: string): string;
|
|
110
|
+
/**
|
|
111
|
+
* Detect whether we are running inside Claude Code (as a subagent or tool call).
|
|
112
|
+
* Checks the CLAUDE_CODE env var or the presence of .claude/settings.json in the project root.
|
|
113
|
+
*/
|
|
114
|
+
declare function isInsideClaude(): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Build a structured native Agent tool call descriptor instead of a shell command.
|
|
117
|
+
* The caller (CLI or plugin) is responsible for invoking the Agent tool with this object.
|
|
118
|
+
*/
|
|
119
|
+
declare function buildNativeDispatch(decision: Record<string, unknown>, prompt: string, options?: {
|
|
120
|
+
worktree?: boolean;
|
|
121
|
+
maxTurns?: number;
|
|
122
|
+
}): NativeDispatchDescriptor;
|
|
123
|
+
/**
|
|
124
|
+
* Normalize a raw result from either a native Agent call or subprocess stdout
|
|
125
|
+
* into a common result shape.
|
|
126
|
+
*/
|
|
127
|
+
declare function normalizeResult(rawResult: unknown, dispatchType: 'native-agent' | 'subprocess'): NormalizedResult;
|
|
128
|
+
declare function detectRuntime(): Promise<RuntimeInfo>;
|
|
129
|
+
/**
|
|
130
|
+
* Validate a routing decision against CLI availability and valid model lists.
|
|
131
|
+
* Returns either a (possibly corrected) decision object, or an error sentinel
|
|
132
|
+
* `{ _error: string }` when no CLI is available at all.
|
|
133
|
+
*/
|
|
134
|
+
declare function validateDispatch(decision: Record<string, unknown>, rt: RuntimeInfo): Record<string, unknown> & {
|
|
135
|
+
_error?: string;
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Check whether dirty worktree files overlap with the agent's ownership globs.
|
|
139
|
+
*/
|
|
140
|
+
declare function checkWorktreeClean(owns: string[], cwd?: string): Promise<WorktreeCheck>;
|
|
141
|
+
/**
|
|
142
|
+
* Return current retry budget state for status display.
|
|
143
|
+
*/
|
|
144
|
+
declare function getRetryBudget(): RetryBudgetState;
|
|
145
|
+
/**
|
|
146
|
+
* Verify a provider CLI is present and (optionally) responds to --version.
|
|
147
|
+
* Uses `which` for the fast path and a 3s-capped --version call to confirm.
|
|
148
|
+
*/
|
|
149
|
+
declare function preflightAuth(provider: string, _cwd?: string): Promise<PreflightResult>;
|
|
150
|
+
declare function buildCommand(decision: Record<string, unknown>, prompt: string, files?: string[], _cwd?: string): string[];
|
|
151
|
+
declare function compressResult(rawOutput?: string, maxLength?: number): string;
|
|
152
|
+
declare function dispatch(input?: DispatchInput): Promise<DispatchResult>;
|
|
153
|
+
declare function dispatchDualBrain(input?: DispatchInput): Promise<DualBrainResult>;
|
|
154
|
+
export { dispatch, buildCommand, detectRuntime, compressResult, dispatchDualBrain, validateDispatch, checkWorktreeClean, getRetryBudget, isInsideClaude, buildNativeDispatch, normalizeResult, loadSpecialistPrompt, preflightAuth };
|