dual-brain 0.2.30 → 0.3.1

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.
Files changed (312) hide show
  1. package/.dual-brain/docs/claude-code-extension-points.md +32 -0
  2. package/.dual-brain/docs/data-tools-capabilities.md +181 -0
  3. package/.dual-brain/docs/ecosystem-tools.md +91 -0
  4. package/.dual-brain/docs/panel-handoff.md +124 -0
  5. package/.dual-brain/docs/ruflo-analysis.md +48 -0
  6. package/bin/dual-brain.mjs +56 -56
  7. package/dist/mcp-server/index.d.ts +27 -0
  8. package/dist/mcp-server/index.js +359 -0
  9. package/dist/mcp-server/index.js.map +1 -0
  10. package/dist/src/agent-protocol.d.ts +163 -0
  11. package/dist/src/agent-protocol.js +368 -0
  12. package/dist/src/agent-protocol.js.map +1 -0
  13. package/dist/src/agents/registry.d.ts +52 -0
  14. package/dist/src/agents/registry.js +393 -0
  15. package/dist/src/agents/registry.js.map +1 -0
  16. package/dist/src/awareness.d.ts +93 -0
  17. package/dist/src/awareness.js +406 -0
  18. package/dist/src/awareness.js.map +1 -0
  19. package/dist/src/brief.d.ts +48 -0
  20. package/dist/src/brief.js +179 -0
  21. package/dist/src/brief.js.map +1 -0
  22. package/dist/src/calibration.d.ts +32 -0
  23. package/dist/src/calibration.js +133 -0
  24. package/dist/src/calibration.js.map +1 -0
  25. package/dist/src/checkpoint.d.ts +33 -0
  26. package/dist/src/checkpoint.js +99 -0
  27. package/dist/src/checkpoint.js.map +1 -0
  28. package/dist/src/ci-triage.d.ts +33 -0
  29. package/dist/src/ci-triage.js +193 -0
  30. package/dist/src/ci-triage.js.map +1 -0
  31. package/dist/src/cognitive-loop.d.ts +56 -0
  32. package/dist/src/cognitive-loop.js +495 -0
  33. package/dist/src/cognitive-loop.js.map +1 -0
  34. package/dist/src/collaboration.d.ts +147 -0
  35. package/dist/src/collaboration.js +438 -0
  36. package/dist/src/collaboration.js.map +1 -0
  37. package/dist/src/context-intel.d.ts +47 -0
  38. package/dist/src/context-intel.js +156 -0
  39. package/dist/src/context-intel.js.map +1 -0
  40. package/dist/src/context.d.ts +53 -0
  41. package/dist/src/context.js +332 -0
  42. package/dist/src/context.js.map +1 -0
  43. package/dist/src/continuity.d.ts +89 -0
  44. package/dist/src/continuity.js +230 -0
  45. package/dist/src/continuity.js.map +1 -0
  46. package/dist/src/cost-tracker.d.ts +47 -0
  47. package/dist/src/cost-tracker.js +170 -0
  48. package/dist/src/cost-tracker.js.map +1 -0
  49. package/dist/src/debrief.d.ts +53 -0
  50. package/dist/src/debrief.js +222 -0
  51. package/dist/src/debrief.js.map +1 -0
  52. package/dist/src/decide.d.ts +96 -0
  53. package/dist/src/decide.js +744 -0
  54. package/dist/src/decide.js.map +1 -0
  55. package/dist/src/decompose.d.ts +39 -0
  56. package/dist/src/decompose.js +218 -0
  57. package/dist/src/decompose.js.map +1 -0
  58. package/dist/src/detect.d.ts +91 -0
  59. package/dist/src/detect.js +544 -0
  60. package/dist/src/detect.js.map +1 -0
  61. package/dist/src/dispatch.d.ts +154 -0
  62. package/dist/src/dispatch.js +1306 -0
  63. package/dist/src/dispatch.js.map +1 -0
  64. package/dist/src/doctor.d.ts +421 -0
  65. package/dist/src/doctor.js +1689 -0
  66. package/dist/src/doctor.js.map +1 -0
  67. package/dist/src/engine.d.ts +70 -0
  68. package/dist/src/engine.js +155 -0
  69. package/dist/src/engine.js.map +1 -0
  70. package/dist/src/envelope.d.ts +36 -0
  71. package/dist/src/envelope.js +80 -0
  72. package/dist/src/envelope.js.map +1 -0
  73. package/dist/src/failure-memory.d.ts +55 -0
  74. package/dist/src/failure-memory.js +175 -0
  75. package/dist/src/failure-memory.js.map +1 -0
  76. package/dist/src/fx.d.ts +87 -0
  77. package/dist/src/fx.js +272 -0
  78. package/dist/src/fx.js.map +1 -0
  79. package/dist/src/governance.d.ts +93 -0
  80. package/dist/src/governance.js +261 -0
  81. package/dist/src/governance.js.map +1 -0
  82. package/dist/src/handoff.d.ts +11 -0
  83. package/dist/src/handoff.js +90 -0
  84. package/dist/src/handoff.js.map +1 -0
  85. package/dist/src/head-protocol.d.ts +76 -0
  86. package/dist/src/head-protocol.js +109 -0
  87. package/dist/src/head-protocol.js.map +1 -0
  88. package/dist/src/head.d.ts +222 -0
  89. package/dist/src/head.js +765 -0
  90. package/dist/src/head.js.map +1 -0
  91. package/dist/src/health.d.ts +132 -0
  92. package/dist/src/health.js +435 -0
  93. package/dist/src/health.js.map +1 -0
  94. package/dist/src/inbox.d.ts +70 -0
  95. package/dist/src/inbox.js +218 -0
  96. package/dist/src/inbox.js.map +1 -0
  97. package/dist/src/index.d.ts +33 -0
  98. package/dist/src/index.js +38 -0
  99. package/dist/src/index.js.map +1 -0
  100. package/dist/src/install-hooks.d.ts +13 -0
  101. package/dist/src/install-hooks.js +88 -0
  102. package/dist/src/install-hooks.js.map +1 -0
  103. package/dist/src/integrity.d.ts +59 -0
  104. package/dist/src/integrity.js +206 -0
  105. package/dist/src/integrity.js.map +1 -0
  106. package/dist/src/intelligence.d.ts +104 -0
  107. package/dist/src/intelligence.js +391 -0
  108. package/dist/src/intelligence.js.map +1 -0
  109. package/dist/src/ledger.d.ts +54 -0
  110. package/dist/src/ledger.js +179 -0
  111. package/dist/src/ledger.js.map +1 -0
  112. package/dist/src/living-docs.d.ts +14 -0
  113. package/dist/src/living-docs.js +197 -0
  114. package/dist/src/living-docs.js.map +1 -0
  115. package/dist/src/memory-tiers.d.ts +37 -0
  116. package/dist/src/memory-tiers.js +160 -0
  117. package/dist/src/memory-tiers.js.map +1 -0
  118. package/dist/src/model-profiles.d.ts +65 -0
  119. package/dist/src/model-profiles.js +568 -0
  120. package/dist/src/model-profiles.js.map +1 -0
  121. package/dist/src/models.d.ts +58 -0
  122. package/dist/src/models.js +327 -0
  123. package/dist/src/models.js.map +1 -0
  124. package/dist/src/narrative.d.ts +54 -0
  125. package/dist/src/narrative.js +163 -0
  126. package/dist/src/narrative.js.map +1 -0
  127. package/dist/src/nextstep.d.ts +16 -0
  128. package/dist/src/nextstep.js +103 -0
  129. package/dist/src/nextstep.js.map +1 -0
  130. package/dist/src/observer.d.ts +18 -0
  131. package/dist/src/observer.js +251 -0
  132. package/dist/src/observer.js.map +1 -0
  133. package/dist/src/outcome.d.ts +110 -0
  134. package/dist/src/outcome.js +377 -0
  135. package/dist/src/outcome.js.map +1 -0
  136. package/dist/src/pipeline.d.ts +167 -0
  137. package/dist/src/pipeline.js +1503 -0
  138. package/dist/src/pipeline.js.map +1 -0
  139. package/dist/src/playbook.d.ts +59 -0
  140. package/dist/src/playbook.js +238 -0
  141. package/dist/src/playbook.js.map +1 -0
  142. package/dist/src/pr-agent.d.ts +97 -0
  143. package/dist/src/pr-agent.js +195 -0
  144. package/dist/src/pr-agent.js.map +1 -0
  145. package/dist/src/predictive.d.ts +57 -0
  146. package/dist/src/predictive.js +230 -0
  147. package/dist/src/predictive.js.map +1 -0
  148. package/dist/src/profile.d.ts +294 -0
  149. package/dist/src/profile.js +1347 -0
  150. package/dist/src/profile.js.map +1 -0
  151. package/dist/src/prompt-audit.d.ts +22 -0
  152. package/dist/src/prompt-audit.js +194 -0
  153. package/dist/src/prompt-audit.js.map +1 -0
  154. package/dist/src/prompt-intel.d.ts +12 -0
  155. package/dist/src/prompt-intel.js +321 -0
  156. package/dist/src/prompt-intel.js.map +1 -0
  157. package/dist/src/provider-context.d.ts +121 -0
  158. package/dist/src/provider-context.js +222 -0
  159. package/dist/src/provider-context.js.map +1 -0
  160. package/dist/src/provider-manager.d.ts +92 -0
  161. package/dist/src/provider-manager.js +428 -0
  162. package/dist/src/provider-manager.js.map +1 -0
  163. package/dist/src/receipt.d.ts +87 -0
  164. package/dist/src/receipt.js +326 -0
  165. package/dist/src/receipt.js.map +1 -0
  166. package/dist/src/recommendations.d.ts +13 -0
  167. package/dist/src/recommendations.js +291 -0
  168. package/dist/src/recommendations.js.map +1 -0
  169. package/dist/src/redact.d.ts +15 -0
  170. package/dist/src/redact.js +129 -0
  171. package/dist/src/redact.js.map +1 -0
  172. package/dist/src/replit.d.ts +397 -0
  173. package/dist/src/replit.js +1160 -0
  174. package/dist/src/replit.js.map +1 -0
  175. package/dist/src/repo.d.ts +149 -0
  176. package/dist/src/repo.js +416 -0
  177. package/dist/src/repo.js.map +1 -0
  178. package/dist/src/revert.d.ts +30 -0
  179. package/dist/src/revert.js +166 -0
  180. package/dist/src/revert.js.map +1 -0
  181. package/dist/src/room.d.ts +102 -0
  182. package/dist/src/room.js +212 -0
  183. package/dist/src/room.js.map +1 -0
  184. package/dist/src/routing-advisor.d.ts +57 -0
  185. package/dist/src/routing-advisor.js +221 -0
  186. package/dist/src/routing-advisor.js.map +1 -0
  187. package/dist/src/self-correct.d.ts +40 -0
  188. package/dist/src/self-correct.js +137 -0
  189. package/dist/src/self-correct.js.map +1 -0
  190. package/dist/src/session-lock.d.ts +35 -0
  191. package/dist/src/session-lock.js +134 -0
  192. package/dist/src/session-lock.js.map +1 -0
  193. package/dist/src/session.d.ts +267 -0
  194. package/dist/src/session.js +1660 -0
  195. package/dist/src/session.js.map +1 -0
  196. package/dist/src/settings-tui.d.ts +5 -0
  197. package/dist/src/settings-tui.js +422 -0
  198. package/dist/src/settings-tui.js.map +1 -0
  199. package/dist/src/setup-flow.d.ts +63 -0
  200. package/dist/src/setup-flow.js +233 -0
  201. package/dist/src/setup-flow.js.map +1 -0
  202. package/dist/src/signal.d.ts +19 -0
  203. package/dist/src/signal.js +122 -0
  204. package/dist/src/signal.js.map +1 -0
  205. package/dist/src/simmer.d.ts +85 -0
  206. package/dist/src/simmer.js +224 -0
  207. package/dist/src/simmer.js.map +1 -0
  208. package/dist/src/state-export.d.ts +129 -0
  209. package/dist/src/state-export.js +233 -0
  210. package/dist/src/state-export.js.map +1 -0
  211. package/dist/src/strategy.d.ts +54 -0
  212. package/dist/src/strategy.js +95 -0
  213. package/dist/src/strategy.js.map +1 -0
  214. package/dist/src/subscription.d.ts +40 -0
  215. package/dist/src/subscription.js +189 -0
  216. package/dist/src/subscription.js.map +1 -0
  217. package/dist/src/templates.d.ts +208 -0
  218. package/dist/src/templates.js +238 -0
  219. package/dist/src/templates.js.map +1 -0
  220. package/dist/src/test.d.ts +9 -0
  221. package/dist/src/test.js +1173 -0
  222. package/dist/src/test.js.map +1 -0
  223. package/dist/src/think-engine.d.ts +67 -0
  224. package/dist/src/think-engine.js +412 -0
  225. package/dist/src/think-engine.js.map +1 -0
  226. package/dist/src/tui.d.ts +71 -0
  227. package/dist/src/tui.js +242 -0
  228. package/dist/src/tui.js.map +1 -0
  229. package/dist/src/types.d.ts +177 -0
  230. package/dist/src/types.js +6 -0
  231. package/dist/src/types.js.map +1 -0
  232. package/dist/src/update-check.d.ts +7 -0
  233. package/dist/src/update-check.js +36 -0
  234. package/dist/src/update-check.js.map +1 -0
  235. package/dist/src/wave-planner.d.ts +30 -0
  236. package/dist/src/wave-planner.js +281 -0
  237. package/dist/src/wave-planner.js.map +1 -0
  238. package/hooks/head-guard.sh +41 -0
  239. package/hooks/precompact.mjs +3 -3
  240. package/hooks/session-end.mjs +3 -3
  241. package/hooks/task-classifier.mjs +328 -0
  242. package/hooks/vibe-router.mjs +387 -0
  243. package/install.mjs +2 -2
  244. package/package.json +29 -153
  245. package/src/agents/registry.mjs +0 -405
  246. package/src/awareness.mjs +0 -425
  247. package/src/brief.mjs +0 -266
  248. package/src/calibration.mjs +0 -148
  249. package/src/checkpoint.mjs +0 -109
  250. package/src/ci-triage.mjs +0 -191
  251. package/src/cognitive-loop.mjs +0 -562
  252. package/src/collaboration.mjs +0 -545
  253. package/src/context-intel.mjs +0 -158
  254. package/src/context.mjs +0 -389
  255. package/src/continuity.mjs +0 -298
  256. package/src/cost-tracker.mjs +0 -184
  257. package/src/debrief.mjs +0 -228
  258. package/src/decide.mjs +0 -1099
  259. package/src/decompose.mjs +0 -331
  260. package/src/detect.mjs +0 -702
  261. package/src/dispatch.mjs +0 -1447
  262. package/src/doctor.mjs +0 -1607
  263. package/src/envelope.mjs +0 -139
  264. package/src/failure-memory.mjs +0 -178
  265. package/src/fx.mjs +0 -276
  266. package/src/governance.mjs +0 -279
  267. package/src/handoff.mjs +0 -87
  268. package/src/head-protocol.mjs +0 -128
  269. package/src/head.mjs +0 -952
  270. package/src/health.mjs +0 -528
  271. package/src/inbox.mjs +0 -195
  272. package/src/index.mjs +0 -44
  273. package/src/install-hooks.mjs +0 -100
  274. package/src/integrity.mjs +0 -245
  275. package/src/intelligence.mjs +0 -447
  276. package/src/ledger.mjs +0 -196
  277. package/src/living-docs.mjs +0 -210
  278. package/src/memory-tiers.mjs +0 -193
  279. package/src/models.mjs +0 -363
  280. package/src/narrative.mjs +0 -169
  281. package/src/nextstep.mjs +0 -100
  282. package/src/observer.mjs +0 -241
  283. package/src/outcome.mjs +0 -400
  284. package/src/pipeline.mjs +0 -1711
  285. package/src/playbook.mjs +0 -257
  286. package/src/pr-agent.mjs +0 -214
  287. package/src/predictive.mjs +0 -250
  288. package/src/profile.mjs +0 -1411
  289. package/src/prompt-audit.mjs +0 -231
  290. package/src/prompt-intel.mjs +0 -325
  291. package/src/provider-context.mjs +0 -257
  292. package/src/receipt.mjs +0 -344
  293. package/src/recommendations.mjs +0 -296
  294. package/src/redact.mjs +0 -192
  295. package/src/replit.mjs +0 -1210
  296. package/src/repo.mjs +0 -445
  297. package/src/revert.mjs +0 -149
  298. package/src/routing-advisor.mjs +0 -204
  299. package/src/self-correct.mjs +0 -147
  300. package/src/session-lock.mjs +0 -160
  301. package/src/session.mjs +0 -1655
  302. package/src/settings-tui.mjs +0 -373
  303. package/src/setup-flow.mjs +0 -223
  304. package/src/signal.mjs +0 -115
  305. package/src/simmer.mjs +0 -241
  306. package/src/strategy.mjs +0 -235
  307. package/src/subscription.mjs +0 -212
  308. package/src/templates.mjs +0 -260
  309. package/src/think-engine.mjs +0 -428
  310. package/src/tui.mjs +0 -276
  311. package/src/update-check.mjs +0 -35
  312. package/src/wave-planner.mjs +0 -294
@@ -0,0 +1,393 @@
1
+ import { readFileSync, readdirSync, existsSync } from 'node:fs';
2
+ import { join, dirname } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ const __dirname = dirname(fileURLToPath(import.meta.url));
5
+ const AGENTS_DIR = __dirname;
6
+ const SKILLS_DIR = join(AGENTS_DIR, '..', '..', 'skills');
7
+ let _agents = null;
8
+ let _skills = null;
9
+ export function getAgents() {
10
+ if (_agents)
11
+ return _agents;
12
+ _agents = new Map();
13
+ // Load built-in agents
14
+ for (const agent of BUILT_IN_AGENTS) {
15
+ _agents.set(agent.id, agent);
16
+ }
17
+ // Load custom agents from .claude/agents/ if they exist
18
+ const customDir = join(AGENTS_DIR, '..', '..', '.claude', 'agents');
19
+ if (existsSync(customDir)) {
20
+ for (const file of readdirSync(customDir).filter(f => f.endsWith('.md'))) {
21
+ try {
22
+ const content = readFileSync(join(customDir, file), 'utf8');
23
+ const parsed = parseAgentMd(content);
24
+ if (parsed)
25
+ _agents.set(parsed.id, parsed);
26
+ }
27
+ catch { }
28
+ }
29
+ }
30
+ return _agents;
31
+ }
32
+ export function getSkills() {
33
+ if (_skills)
34
+ return _skills;
35
+ _skills = new Map();
36
+ for (const skill of BUILT_IN_SKILLS) {
37
+ _skills.set(skill.command, skill);
38
+ }
39
+ return _skills;
40
+ }
41
+ export function matchAgent(intent, risk, taskType) {
42
+ const agents = getAgents();
43
+ const matches = [];
44
+ for (const [id, agent] of agents) {
45
+ let score = 0;
46
+ if (agent.intents && agent.intents.includes(intent))
47
+ score += 10;
48
+ if (agent.taskTypes && agent.taskTypes.some((t) => taskType.includes(t)))
49
+ score += 5;
50
+ if (agent.minRisk && riskLevel(risk) >= riskLevel(agent.minRisk))
51
+ score += 3;
52
+ if (score > 0)
53
+ matches.push({ ...agent, score });
54
+ }
55
+ return matches.sort((a, b) => b.score - a.score);
56
+ }
57
+ export function matchSkill(command) {
58
+ const skills = getSkills();
59
+ const cmd = command.replace(/^\//, '').split(' ')[0].toLowerCase();
60
+ return skills.get(cmd) || null;
61
+ }
62
+ export function skillToTaskBrief(command, args) {
63
+ const skill = matchSkill(command);
64
+ if (!skill)
65
+ return null;
66
+ return {
67
+ objective: skill.objective(args),
68
+ scope: skill.scope || [],
69
+ tier: skill.tier,
70
+ model: skill.model,
71
+ risk: skill.risk || 'low',
72
+ acceptanceCriteria: skill.acceptanceCriteria || [],
73
+ agentId: skill.agent,
74
+ cost: skill.cost,
75
+ };
76
+ }
77
+ function riskLevel(r) {
78
+ return { low: 1, medium: 2, high: 3, critical: 4 }[r] || 0;
79
+ }
80
+ function parseAgentMd(content) {
81
+ // Parse YAML frontmatter from .claude/agents/*.md
82
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
83
+ if (!match)
84
+ return null;
85
+ const meta = {};
86
+ for (const line of match[1].split('\n')) {
87
+ const [key, ...rest] = line.split(':');
88
+ if (key && rest.length)
89
+ meta[key.trim()] = rest.join(':').trim();
90
+ }
91
+ return {
92
+ id: meta.name || 'unknown',
93
+ name: meta.name || 'Unknown Agent',
94
+ tier: meta.tier || 'execute',
95
+ model: meta.model || 'sonnet',
96
+ intents: (meta.intents || '').split(',').map((s) => s.trim()),
97
+ taskTypes: (meta.taskTypes || '').split(',').map((s) => s.trim()),
98
+ prompt: content.replace(/^---[\s\S]*?---\n/, ''),
99
+ };
100
+ }
101
+ // ── Built-in Agents ──────────────────────────────────────────────────────
102
+ const BUILT_IN_AGENTS = [
103
+ {
104
+ id: 'reviewer',
105
+ name: 'Code Reviewer',
106
+ tier: 'execute',
107
+ model: 'sonnet',
108
+ cost: 'cheap',
109
+ intents: ['review', 'audit', 'check'],
110
+ taskTypes: ['code-review', 'pr-review', 'diff-review'],
111
+ contract: {
112
+ inputs: ['diff', 'base_branch', 'focus_areas'],
113
+ outputs: ['findings', 'severity', 'suggestions', 'verdict'],
114
+ },
115
+ prompt: `You are a code reviewer. Review the provided diff for: correctness, security issues, performance problems, code style, and test coverage gaps. For each finding, provide: severity (critical/high/medium/low), file and line, description, and suggested fix. Return structured JSON: { "verdict": "approve|request_changes|comment", "findings": [...], "summary": "..." }`,
116
+ },
117
+ {
118
+ id: 'debugger',
119
+ name: 'Debugger',
120
+ tier: 'execute',
121
+ model: 'sonnet',
122
+ cost: 'cheap',
123
+ intents: ['debug', 'fix', 'investigate', 'error'],
124
+ taskTypes: ['bug-fix', 'error-investigation', 'crash-analysis'],
125
+ contract: {
126
+ inputs: ['error_message', 'stack_trace', 'reproduction_steps', 'relevant_files'],
127
+ outputs: ['root_cause', 'patch', 'tests', 'confidence'],
128
+ },
129
+ prompt: `You are a debugger. Given an error, stack trace, or bug description: 1) Reproduce or trace the issue, 2) Identify root cause, 3) Implement the fix, 4) Add a regression test. Return: { "root_cause": "...", "files_changed": [...], "tests_added": [...], "confidence": "high|medium|low" }`,
130
+ },
131
+ {
132
+ id: 'test-writer',
133
+ name: 'Test Writer',
134
+ tier: 'execute',
135
+ model: 'sonnet',
136
+ cost: 'cheap',
137
+ intents: ['test', 'coverage', 'spec'],
138
+ taskTypes: ['test-generation', 'test-coverage', 'fixture-creation'],
139
+ contract: {
140
+ inputs: ['target_file', 'test_framework', 'existing_tests'],
141
+ outputs: ['test_file', 'test_count', 'coverage_areas', 'edge_cases'],
142
+ },
143
+ prompt: `You are a test writer. Given a source file, generate comprehensive tests covering: happy path, edge cases, error conditions, and boundary values. Match the existing test framework and style. Return: { "test_file": "...", "tests": [...], "edge_cases_covered": [...] }`,
144
+ },
145
+ {
146
+ id: 'architect',
147
+ name: 'Architect',
148
+ tier: 'think',
149
+ model: 'opus',
150
+ cost: 'full',
151
+ intents: ['design', 'architect', 'plan', 'structure'],
152
+ taskTypes: ['architecture', 'system-design', 'api-design', 'module-design'],
153
+ contract: {
154
+ inputs: ['goal', 'constraints', 'existing_architecture', 'scale_requirements'],
155
+ outputs: ['design', 'modules', 'interfaces', 'tradeoffs', 'risks'],
156
+ },
157
+ prompt: `You are a software architect. Design the system or module with: clear module boundaries, well-defined interfaces, explicit tradeoffs, and identified risks. Return: { "design": "...", "modules": [...], "interfaces": [...], "tradeoffs": [...], "risks": [...] }`,
158
+ },
159
+ {
160
+ id: 'security',
161
+ name: 'Security Auditor',
162
+ tier: 'execute',
163
+ model: 'sonnet',
164
+ cost: 'full',
165
+ intents: ['security', 'vulnerability', 'owasp', 'secrets'],
166
+ taskTypes: ['security-audit', 'vulnerability-scan', 'secret-detection', 'auth-review'],
167
+ minRisk: 'medium',
168
+ contract: {
169
+ inputs: ['scope', 'diff', 'dependencies', 'config_files'],
170
+ outputs: ['vulnerabilities', 'severity', 'remediation', 'compliance'],
171
+ },
172
+ prompt: `You are a security auditor. Scan for: OWASP Top 10 vulnerabilities, hardcoded secrets, insecure dependencies, auth/authz issues, injection vectors, and data exposure. Return: { "vulnerabilities": [{ "type": "...", "severity": "critical|high|medium|low", "file": "...", "line": N, "remediation": "..." }], "clean": true/false }`,
173
+ },
174
+ {
175
+ id: 'refactor',
176
+ name: 'Refactorer',
177
+ tier: 'execute',
178
+ model: 'sonnet',
179
+ cost: 'cheap',
180
+ intents: ['refactor', 'cleanup', 'simplify', 'extract'],
181
+ taskTypes: ['refactoring', 'code-cleanup', 'extraction', 'rename'],
182
+ contract: {
183
+ inputs: ['target', 'goal', 'constraints', 'preserve_behavior'],
184
+ outputs: ['patch', 'behavior_preserved', 'tests_updated'],
185
+ },
186
+ prompt: `You are a refactoring specialist. Improve code structure while preserving behavior. Verify with existing tests. Return: { "changes": [...], "behavior_preserved": true, "tests_passing": true }`,
187
+ },
188
+ {
189
+ id: 'docs',
190
+ name: 'Documentation Writer',
191
+ tier: 'execute',
192
+ model: 'sonnet',
193
+ cost: 'cheap',
194
+ intents: ['document', 'readme', 'api-doc', 'explain'],
195
+ taskTypes: ['documentation', 'readme-update', 'api-docs', 'changelog'],
196
+ contract: {
197
+ inputs: ['files', 'audience', 'format', 'existing_docs'],
198
+ outputs: ['docs_patch', 'sections_updated'],
199
+ },
200
+ prompt: `You are a documentation writer. Generate clear, concise documentation for the specified code. Match existing doc style. Return: { "docs": "...", "sections": [...] }`,
201
+ },
202
+ {
203
+ id: 'researcher',
204
+ name: 'Research Agent',
205
+ tier: 'search',
206
+ model: 'haiku',
207
+ cost: 'cheap',
208
+ intents: ['research', 'lookup', 'find', 'search', 'explore'],
209
+ taskTypes: ['web-search', 'docs-lookup', 'api-exploration', 'codebase-search'],
210
+ contract: {
211
+ inputs: ['query', 'domains', 'freshness_requirement'],
212
+ outputs: ['sources', 'summary', 'references', 'confidence'],
213
+ },
214
+ prompt: `You are a research agent. Find accurate, current information. Cite sources. Distinguish facts from opinions. Return: { "answer": "...", "sources": [...], "confidence": "high|medium|low" }`,
215
+ },
216
+ {
217
+ id: 'performance',
218
+ name: 'Performance Optimizer',
219
+ tier: 'execute',
220
+ model: 'sonnet',
221
+ cost: 'cheap',
222
+ intents: ['optimize', 'performance', 'speed', 'profile', 'bottleneck'],
223
+ taskTypes: ['performance-optimization', 'profiling', 'bottleneck-detection'],
224
+ contract: {
225
+ inputs: ['hot_path', 'metrics', 'budget_ms'],
226
+ outputs: ['bottlenecks', 'optimizations', 'patch', 'expected_improvement'],
227
+ },
228
+ prompt: `You are a performance specialist. Profile, identify bottlenecks, and optimize. Measure before/after. Return: { "bottlenecks": [...], "optimizations": [...], "expected_speedup": "..." }`,
229
+ },
230
+ {
231
+ id: 'devops',
232
+ name: 'DevOps Engineer',
233
+ tier: 'execute',
234
+ model: 'sonnet',
235
+ cost: 'full',
236
+ intents: ['deploy', 'ci', 'docker', 'infrastructure', 'pipeline'],
237
+ taskTypes: ['deployment', 'ci-cd', 'docker', 'infrastructure', 'monitoring'],
238
+ minRisk: 'medium',
239
+ contract: {
240
+ inputs: ['goal', 'environment', 'constraints', 'current_config'],
241
+ outputs: ['config', 'commands', 'risks', 'rollback_plan'],
242
+ },
243
+ prompt: `You are a DevOps engineer. Configure infrastructure, CI/CD, and deployment with: security best practices, rollback plans, and monitoring. Return: { "config_changes": [...], "commands": [...], "risks": [...], "rollback": "..." }`,
244
+ },
245
+ ];
246
+ // ── Built-in Skills ──────────────────────────────────────────────────────
247
+ const BUILT_IN_SKILLS = [
248
+ {
249
+ command: 'review',
250
+ agent: 'reviewer',
251
+ tier: 'execute',
252
+ model: 'sonnet',
253
+ cost: 'cheap',
254
+ description: 'Review current changes or a specific file',
255
+ objective: (args) => args ? `Review changes in ${args}` : 'Review all uncommitted changes',
256
+ acceptanceCriteria: ['All findings include severity and file location', 'Verdict is clear'],
257
+ },
258
+ {
259
+ command: 'debug',
260
+ agent: 'debugger',
261
+ tier: 'execute',
262
+ model: 'sonnet',
263
+ cost: 'cheap',
264
+ description: 'Investigate and fix an error',
265
+ objective: (args) => `Debug: ${args || 'investigate recent error'}`,
266
+ acceptanceCriteria: ['Root cause identified', 'Fix implemented', 'Regression test added'],
267
+ },
268
+ {
269
+ command: 'test',
270
+ agent: 'test-writer',
271
+ tier: 'execute',
272
+ model: 'sonnet',
273
+ cost: 'cheap',
274
+ description: 'Generate tests for a file',
275
+ objective: (args) => `Generate comprehensive tests for ${args || 'changed files'}`,
276
+ acceptanceCriteria: ['Tests cover happy path and edge cases', 'Tests pass'],
277
+ },
278
+ {
279
+ command: 'plan',
280
+ agent: 'architect',
281
+ tier: 'think',
282
+ model: 'opus',
283
+ cost: 'full',
284
+ description: 'Create an execution plan for a task',
285
+ objective: (args) => `Create execution plan: ${args || 'current task'}`,
286
+ acceptanceCriteria: ['Steps are concrete and ordered', 'Risks identified', 'Acceptance criteria per step'],
287
+ },
288
+ {
289
+ command: 'audit',
290
+ agent: 'security',
291
+ tier: 'execute',
292
+ model: 'sonnet',
293
+ cost: 'cheap',
294
+ description: 'Run a security, quality, or dependency audit',
295
+ objective: (args) => `Audit: ${args || 'security scan of current changes'}`,
296
+ acceptanceCriteria: ['All findings include severity', 'Remediation steps provided'],
297
+ },
298
+ {
299
+ command: 'fix',
300
+ agent: 'debugger',
301
+ tier: 'execute',
302
+ model: 'sonnet',
303
+ cost: 'cheap',
304
+ description: 'Fix a specific issue',
305
+ objective: (args) => `Fix: ${args}`,
306
+ acceptanceCriteria: ['Issue resolved', 'Tests pass', 'No regressions'],
307
+ },
308
+ {
309
+ command: 'explain',
310
+ agent: 'researcher',
311
+ tier: 'search',
312
+ model: 'haiku',
313
+ cost: 'cheap',
314
+ description: 'Explain how code works',
315
+ objective: (args) => `Explain: ${args || 'current file'}`,
316
+ },
317
+ {
318
+ command: 'refactor',
319
+ agent: 'refactor',
320
+ tier: 'execute',
321
+ model: 'sonnet',
322
+ cost: 'cheap',
323
+ description: 'Refactor code for clarity or performance',
324
+ objective: (args) => `Refactor: ${args || 'current file'}`,
325
+ acceptanceCriteria: ['Behavior preserved', 'Tests still pass'],
326
+ },
327
+ {
328
+ command: 'doc',
329
+ agent: 'docs',
330
+ tier: 'execute',
331
+ model: 'sonnet',
332
+ cost: 'cheap',
333
+ description: 'Generate or update documentation',
334
+ objective: (args) => `Document: ${args || 'changed files'}`,
335
+ },
336
+ {
337
+ command: 'brainstorm',
338
+ agent: 'architect',
339
+ tier: 'think',
340
+ model: 'sonnet',
341
+ cost: 'cheap',
342
+ description: 'Generate ideas and explore options',
343
+ objective: (args) => `Brainstorm: ${args || 'current challenge'}`,
344
+ },
345
+ {
346
+ command: 'search',
347
+ agent: 'researcher',
348
+ tier: 'search',
349
+ model: 'haiku',
350
+ cost: 'cheap',
351
+ description: 'Search web, docs, or codebase',
352
+ objective: (args) => `Search: ${args}`,
353
+ },
354
+ {
355
+ command: 'status',
356
+ agent: null, // deterministic, no agent needed
357
+ tier: 'free',
358
+ cost: 'free',
359
+ description: 'Show system health and status',
360
+ objective: () => 'Display system status',
361
+ },
362
+ {
363
+ command: 'deploy',
364
+ agent: 'devops',
365
+ tier: 'execute',
366
+ model: 'sonnet',
367
+ cost: 'full',
368
+ risk: 'high',
369
+ description: 'Run deployment workflow',
370
+ objective: (args) => `Deploy: ${args || 'production'}`,
371
+ acceptanceCriteria: ['Deployment successful', 'Health check passes', 'Rollback plan documented'],
372
+ },
373
+ {
374
+ command: 'perf',
375
+ agent: 'performance',
376
+ tier: 'execute',
377
+ model: 'sonnet',
378
+ cost: 'cheap',
379
+ description: 'Profile and optimize performance',
380
+ objective: (args) => `Optimize performance: ${args || 'hot paths'}`,
381
+ },
382
+ {
383
+ command: 'release',
384
+ agent: 'docs',
385
+ tier: 'execute',
386
+ model: 'sonnet',
387
+ cost: 'cheap',
388
+ description: 'Generate changelog and release checklist',
389
+ objective: (args) => `Prepare release: ${args || 'current version'}`,
390
+ acceptanceCriteria: ['Changelog generated', 'Version bumped', 'Doctor passes'],
391
+ },
392
+ ];
393
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agents/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * awareness.ts — Environment awareness layer for dual-brain.
3
+ * Scans runtime environment once on startup and caches results with TTL.
4
+ */
5
+ interface ToolInfo {
6
+ available: boolean;
7
+ version?: string | null;
8
+ }
9
+ interface ContainerInfo {
10
+ type: string;
11
+ hostname: string;
12
+ nodeVersion: string;
13
+ platform: string;
14
+ arch: string;
15
+ }
16
+ interface ReplitToolsInfo {
17
+ installed: boolean;
18
+ version: string | null;
19
+ sessionArchivePath: string | null;
20
+ capabilities: string[];
21
+ }
22
+ interface ReplitInfo {
23
+ isReplit: boolean;
24
+ replId: string | null;
25
+ replSlug: string | null;
26
+ hasDatabase: boolean;
27
+ hasKV: boolean;
28
+ hasObjectStorage: boolean;
29
+ hasAuth: boolean;
30
+ hasDeployments: boolean;
31
+ }
32
+ interface ClaudeCodeInfo {
33
+ isInsideClaude: boolean;
34
+ hooksDir: string | null;
35
+ mcpConfigured: boolean;
36
+ settingsPath: string | null;
37
+ }
38
+ interface DualBrainInfo {
39
+ version: string;
40
+ livingDocsInit: boolean;
41
+ sessionCount: number;
42
+ hasLedger: boolean;
43
+ hasFailureMemory: boolean;
44
+ }
45
+ export interface EnvironmentReport {
46
+ scannedAt: number;
47
+ ttl: number;
48
+ container: ContainerInfo;
49
+ tools: Record<string, ToolInfo>;
50
+ secrets: Record<string, boolean>;
51
+ replitTools: ReplitToolsInfo;
52
+ replit: ReplitInfo;
53
+ claudeCode: ClaudeCodeInfo;
54
+ dualBrain: DualBrainInfo;
55
+ }
56
+ interface ScanOptions {
57
+ ttl?: number;
58
+ force?: boolean;
59
+ }
60
+ interface AmbiguityResult {
61
+ isAmbiguous: boolean;
62
+ reason: string | null;
63
+ }
64
+ interface AmbiguousResult {
65
+ ambiguous: boolean;
66
+ reason: string | null;
67
+ confidence: number;
68
+ }
69
+ export declare function scanEnvironment(cwd: string | undefined, options?: ScanOptions): EnvironmentReport;
70
+ export declare function formatEnvironment(report: EnvironmentReport): string;
71
+ export declare function getCapabilitySummary(report: EnvironmentReport): string[];
72
+ export declare function invalidateCache(): void;
73
+ /**
74
+ * Detect whether a prompt is ambiguous and needs clarification before dispatch.
75
+ *
76
+ * A prompt is considered ambiguous when ALL of the following are true:
77
+ * 1. It is very short (under 4 words)
78
+ * 2. No file context is provided
79
+ * 3. It lacks specific technical terms that narrow the intent
80
+ */
81
+ export declare function detectAmbiguity(prompt: unknown, context?: {
82
+ files?: string[];
83
+ }): AmbiguityResult;
84
+ /**
85
+ * Detect whether a user prompt is too vague to act on confidently.
86
+ *
87
+ * Checks for:
88
+ * - Very short prompts (under 10 chars)
89
+ * - No file paths, function names, or specific identifiers
90
+ * - Pronoun-only references without antecedents ("fix that thing", "change it")
91
+ */
92
+ export declare function isAmbiguous(prompt: unknown): AmbiguousResult;
93
+ export {};