openfusion-mcp 0.2.0 → 0.2.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.
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  </p>
8
8
 
9
9
  <p align="center">
10
- <a href="https://github.com/hashangit/openfusion/releases"><img alt="Version" src="https://img.shields.io/badge/version-0.2.0-4cd0b0.svg" /></a>
10
+ <a href="https://github.com/hashangit/openfusion/releases"><img alt="Version" src="https://img.shields.io/badge/version-0.2.1-4cd0b0.svg" /></a>
11
11
  <a href="./LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-blue.svg" /></a>
12
12
  <a href="https://nodejs.org"><img alt="Node" src="https://img.shields.io/badge/node-%E2%89%A522-3498db.svg" /></a>
13
13
  <a href="https://www.typescriptlang.org/"><img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-5.7-3178c6.svg" /></a>
@@ -59,46 +59,43 @@ And when *not* to: routine coding, simple lookups, single-turn Q&A. Fusion is 2
59
59
 
60
60
  ## Install
61
61
 
62
- Requires **Node.js 22+**. (Published to npm — no clone needed for most users.)
62
+ Requires **Node.js 22+**. Published to npm — no clone or build needed.
63
63
 
64
- ### One-command setup (recommended)
64
+ **Quick start (3 steps):**
65
65
 
66
- ```bash
67
- npx openfusion-setup
68
- ```
69
-
70
- This asks which MCP client you use, generates the correct config snippet (`npx -y openfusion-mcp` as the server command), writes it to the right file when safe, and offers to install the agent skill.
71
-
72
- ### Or: register manually
66
+ 1. **Register OpenFusion with your MCP client:**
67
+ ```bash
68
+ npx openfusion-setup # interactive: picks your client, writes its config, installs the agent skill
69
+ ```
70
+ 2. **Restart your MCP client** so it loads OpenFusion. The client spawns the server, which on first run prints a banner and **opens the dashboard** at `http://localhost:9077`.
71
+ 3. **Configure in the dashboard:** add 2–5 candidate models + a judge + an API key per provider (use **Test** to validate each). The **● Configured** badge turns green and `fusion` works immediately.
73
72
 
74
- Point your MCP client at `npx -y openfusion-mcp` (or `node /path/to/openfusion/dist/index.js` if you cloned). See **[INSTALL.md](./INSTALL.md)** for exact recipes for 18+ clients (Claude Code, Cursor, Cline, Zed, Codex, Gemini CLI, ZCode, Claude Desktop, …). For **Claude Code** and **ZCode**, the repo's [`.mcp.json`](./.mcp.json) auto-loads when you open the project.
73
+ That's it the `fusion` + `open_dashboard` tools are now available to your agent.
75
74
 
76
- ### First run
75
+ ---
77
76
 
78
- Start the server and, on first run, OpenFusion prints a banner to stderr and **opens the dashboard**:
77
+ ### Detailed paths
79
78
 
80
- ```bash
81
- npx -y openfusion-mcp
82
- # → a browser opens at http://localhost:9077 to configure candidates, judge, and API keys
83
- ```
79
+ **One-command (recommended):** `npx openfusion-setup` writes the correct snippet for your client (Claude Code, Cursor, Cline, Zed, Codex, Gemini CLI, ZCode, Claude Desktop, …) and installs the skill.
84
80
 
85
- ### From source
81
+ **Manual registration:** point your MCP client at `npx -y openfusion-mcp`. See **[INSTALL.md](./INSTALL.md)** for exact recipes for 18+ clients. (Claude Code and ZCode also auto-load the repo's [`.mcp.json`](./.mcp.json) when you open the project.)
86
82
 
83
+ **From source** (if you cloned):
87
84
  ```bash
88
- git clone https://github.com/hashangit/openfusion.git && cd openfusion
89
85
  pnpm install && pnpm build # tsc -> dist/ ; vite -> ui-dist/
90
- node dist/index.js
86
+ node dist/index.js # start the server + dashboard
87
+ # then register with `node /abs/path/to/openfusion/dist/index.js` in your client
91
88
  ```
92
89
 
93
90
  > **Native build note:** `better-sqlite3` compiles a native addon at install. On most platforms a prebuilt binary is fetched automatically. If install fails, run `npm rebuild better-sqlite3` (requires Python 3 + a C++ toolchain — Xcode CLT on macOS, `build-essential` on Linux). If the addon is missing at runtime, OpenFusion prints a clear fix-it message instead of a cryptic stack trace.
94
91
 
95
- ## Where data lives
92
+ ### Where data lives
96
93
 
97
- OpenFusion stores config, encrypted keys, and the SQLite DB under `OPENFUSION_HOME` — defaulting to your OS data dir (`~/Library/Application Support/openfusion` on macOS, `~/.local/share/openfusion` on Linux). The **path is printed on every startup**, so you always know where your config/secrets are. Set `OPENFUSION_HOME` to override (e.g. for a separate profile). Restart the server after changing it — two servers with different `OPENFUSION_HOME`s see different configs.
94
+ OpenFusion stores config, encrypted keys, and the SQLite DB under `OPENFUSION_HOME` — defaulting to your OS data dir (`~/Library/Application Support/openfusion` on macOS, `~/.local/share/openfusion` on Linux). The **path is printed on every startup**, so you always know where your config/secrets are. Set `OPENFUSION_HOME` to override (e.g. for a separate profile), and restart the server after changing it — two servers with different `OPENFUSION_HOME`s see different configs.
98
95
 
99
- ## Configure
96
+ ### Configure
100
97
 
101
- 1. Open **http://localhost:9077** (start the dashboard anytime with `node dist/ui-only.js`).
98
+ 1. Open **http://localhost:9077** (or start the dashboard anytime with `npx openfusion-ui`, or `node dist/ui-only.js` from source).
102
99
  2. Add **2–5 candidate models** (provider + model each), pick a **judge**, and enter an **API key** per referenced provider. Use **Test** to validate each before saving.
103
100
  3. The **● Configured** badge turns green → the `fusion` tool works immediately (no restart).
104
101
 
@@ -1,11 +1,10 @@
1
1
  // Zod schemas for config.json (plaintext model choices — no secrets).
2
2
  // See data-model.md E1 and contracts/config-schema.md.
3
3
  //
4
- // v2 (0.1.1): candidates carry an `enabled` flag; `judge` is now `judges[]`
5
- // (each enabled); settings gained `benchmarkMode`. v1 files are migrated on
6
- // load (see store.ts migrate()).
4
+ // v2 (0.1.1): candidates carry `enabled`; `judge` `judges[]`; benchmarkMode.
5
+ // v3 (0.1.1): personas (worker/analysis/synthesis prompt bundles) + activePersona.
7
6
  import { z } from "zod";
8
- export const CONFIG_VERSION = 2;
7
+ export const CONFIG_VERSION = 3;
9
8
  const LOOPBACK = /^(127\.|localhost$|::1$|0:0:0:0:0:0:0:1$)/;
10
9
  export const CandidateSlotSchema = z.object({
11
10
  id: z.string().min(1),
@@ -18,37 +17,44 @@ export const JudgeConfigSchema = z.object({
18
17
  model: z.string().min(1),
19
18
  enabled: z.boolean().default(true),
20
19
  });
20
+ export const PersonaSchema = z.object({
21
+ id: z.string().min(1),
22
+ name: z.string().min(1),
23
+ description: z.string().optional(),
24
+ builtin: z.boolean().optional(),
25
+ workerPrompt: z.string().min(1),
26
+ analysisPrompt: z.string().min(1),
27
+ synthesisPrompt: z.string().min(1),
28
+ });
21
29
  export const SettingsSchema = z
22
30
  .object({
23
- // Per-call timeout, reset on each retry. Default 5 min so slow providers
24
- // have room; users hitting a client tool-call ceiling can lower this.
25
31
  workerTimeoutMs: z.number().int().min(5_000).max(600_000).default(300_000),
26
32
  uiPort: z.number().int().min(1).max(65535).default(9077),
27
33
  bind: z.string().regex(LOOPBACK, "must be a loopback address").default("127.0.0.1"),
28
- // When true: no max-candidate limit, candidate timeout forced to 10 min.
29
34
  benchmarkMode: z.boolean().default(false),
35
+ activePersona: z.string().default("generalist"),
30
36
  })
31
- .default({ workerTimeoutMs: 300_000, uiPort: 9077, bind: "127.0.0.1", benchmarkMode: false });
37
+ .default({ workerTimeoutMs: 300_000, uiPort: 9077, bind: "127.0.0.1", benchmarkMode: false, activePersona: "generalist" });
32
38
  /** Strict, fully-configured config (what isConfigured() ultimately wants). */
33
39
  export const AppConfigSchema = z.object({
34
40
  version: z.literal(CONFIG_VERSION).default(CONFIG_VERSION),
35
41
  candidates: z.array(CandidateSlotSchema),
36
42
  judges: z.array(JudgeConfigSchema).min(1, "need at least 1 judge configured"),
43
+ personas: z.array(PersonaSchema),
37
44
  settings: SettingsSchema,
38
45
  });
39
46
  /**
40
47
  * Lenient schema for parsing a saved/partial file (may be empty or mid-setup).
41
- * `judges`/`enabled`/`benchmarkMode` are all optional with defaults so a v1
42
- * file or a fresh install parses without error. isConfigured() enforces the
43
- * real rules (>=2 enabled candidates, >=1 enabled judge) at fusion time.
44
- * Candidates capped at 5 even when lenient — except benchmark mode lifts it.
48
+ * `personas`/`activePersona` optional with defaults so older files parse cleanly;
49
+ * isConfigured() enforces the real rules (>=2 enabled candidates, >=1 enabled judge).
45
50
  */
46
51
  export const RawConfigSchema = z
47
52
  .object({
48
53
  version: z.number().optional(),
49
54
  candidates: z.array(CandidateSlotSchema).optional().default([]),
50
55
  judges: z.array(JudgeConfigSchema).optional().default([]),
56
+ personas: z.array(PersonaSchema).optional().default([]),
51
57
  settings: SettingsSchema,
52
58
  })
53
- .default({ settings: { workerTimeoutMs: 300_000, uiPort: 9077, bind: "127.0.0.1", benchmarkMode: false } });
59
+ .default({ settings: { workerTimeoutMs: 300_000, uiPort: 9077, bind: "127.0.0.1", benchmarkMode: false, activePersona: "generalist" } });
54
60
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,uDAAuD;AACvD,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,iCAAiC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAU,CAAC;AAEzC,MAAM,QAAQ,GAAG,2CAA2C,CAAC;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,yEAAyE;IACzE,sEAAsE;IACtE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC1E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IACnF,yEAAyE;IACzE,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC1C,CAAC;KACD,OAAO,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;AAGhG,8EAA8E;AAC9E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC1D,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,kCAAkC,CAAC;IAC7E,QAAQ,EAAE,cAAc;CACzB,CAAC,CAAC;AAGH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACzD,QAAQ,EAAE,cAAc;CACzB,CAAC;KACD,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  import { existsSync, readFileSync, writeFileSync, renameSync, copyFileSync } from "node:fs";
4
4
  import { dirname, join } from "node:path";
5
5
  import { AppConfigSchema, RawConfigSchema, CONFIG_VERSION } from "./schema.js";
6
+ import { BUILTIN_PERSONAS } from "../fusion/personas.js";
6
7
  import { ensureHome, paths } from "../util/paths.js";
7
8
  /** Build an empty RawConfig using schema defaults. */
8
9
  export function emptyConfig() {
@@ -25,10 +26,10 @@ export function loadConfig(path = paths.config()) {
25
26
  return RawConfigSchema.parse(migrate(json));
26
27
  }
27
28
  /**
28
- * v1 -> v2 migration: map the old single `judge` object to `judges: [{...judge, enabled}]`,
29
- * and backfill `enabled: true` on any candidates missing it. Runs on every load;
30
- * idempotent for v2 files (no `judge` key => no-op). Also tolerated: a v2 file
31
- * that still has a stray `judge` key from a downgrade ignored.
29
+ * Migrations run on every load; idempotent for current-version files.
30
+ * - v1 -> v2: single `judge` -> `judges[]`; backfill candidate.enabled.
31
+ * - v2 -> v3: inject builtin personas if `personas` absent/empty; set activePersona.
32
+ * A file with a stray `judge` key from a downgrade is tolerated (ignored).
32
33
  */
33
34
  export function migrate(raw) {
34
35
  if (!raw || typeof raw !== "object")
@@ -36,6 +37,7 @@ export function migrate(raw) {
36
37
  const obj = raw;
37
38
  const out = { ...obj };
38
39
  let migrated = false;
40
+ let migratedTo = 0;
39
41
  // judge (singular, v1) -> judges (plural, v2)
40
42
  if (!Array.isArray(out.judges) && obj.judge && typeof obj.judge === "object") {
41
43
  out.judges = [{ ...obj.judge, enabled: true }];
@@ -57,9 +59,27 @@ export function migrate(raw) {
57
59
  migrated = true;
58
60
  out.candidates = after;
59
61
  }
62
+ if (migrated)
63
+ migratedTo = Math.max(migratedTo, 2);
64
+ // v2 -> v3: ensure personas present (inject builtins) + activePersona set.
65
+ if (!Array.isArray(out.personas) || out.personas.length === 0) {
66
+ out.personas = BUILTIN_PERSONAS.map((p) => ({ ...p }));
67
+ migrated = true;
68
+ }
69
+ const settings = (out.settings ?? {});
70
+ if (!settings.activePersona) {
71
+ settings.activePersona = "generalist";
72
+ out.settings = settings;
73
+ migrated = true;
74
+ }
75
+ if (migrated && migratedTo < 3)
76
+ migratedTo = 3;
60
77
  if (migrated) {
61
- out.version = 2;
62
- console.error("OpenFusion: config upgraded from v1 → v2 (judge→judges, enabled flags). Re-save via the dashboard to persist.");
78
+ out.version = migratedTo;
79
+ const note = migratedTo === 3
80
+ ? "config upgraded (personas added + activePersona set)"
81
+ : "config upgraded from v1 → v2 (judge→judges, enabled flags)";
82
+ console.error(`OpenFusion: ${note}. Re-save via the dashboard to persist.`);
63
83
  }
64
84
  return out;
65
85
  }
@@ -84,6 +104,8 @@ export function mergeAndValidate(base, patch) {
84
104
  merged.candidates = p.candidates;
85
105
  if (Array.isArray(p.judges))
86
106
  merged.judges = p.judges;
107
+ if (Array.isArray(p.personas))
108
+ merged.personas = p.personas;
87
109
  if (p.settings && typeof p.settings === "object") {
88
110
  merged.settings = { ...base.settings, ...p.settings };
89
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { isConfigured } from "../config/completeness.js";
6
6
  import { getKey } from "../config/secrets.js";
7
7
  import { resolveModel } from "../providers/pi-ai-bridge.js";
8
8
  import { runWorker } from "./worker.js";
9
+ import { resolvePersona } from "./personas.js";
9
10
  import { runAnalysis, runSynthesis } from "./judge.js";
10
11
  import { paths } from "../util/paths.js";
11
12
  import { recordActivity, recordSubCall, updateActivity } from "../store/activity.js";
@@ -30,6 +31,18 @@ export async function runFusion(input) {
30
31
  const candidates = (input.config.candidates ?? []).filter((c) => c.enabled !== false);
31
32
  const judge = (input.config.judges ?? []).find((j) => j.enabled !== false);
32
33
  const benchmark = input.config.settings.benchmarkMode === true;
34
+ // Resolve the persona: per-call override -> active persona -> generalist default.
35
+ // Falls back gracefully (never fails) — a missing persona always yields real prompts.
36
+ const persona = resolvePersona({
37
+ override: input.persona,
38
+ personas: input.config.personas ?? [],
39
+ activeId: input.config.settings.activePersona,
40
+ });
41
+ const personaPrompts = {
42
+ worker: persona.workerPrompt,
43
+ analysis: persona.analysisPrompt,
44
+ synthesis: persona.synthesisPrompt,
45
+ };
33
46
  // Benchmark mode forces a 10-min candidate timeout; the judge always uses the
34
47
  // user's configured workerTimeoutMs (a judge is one call, not benchmarked).
35
48
  const candidateTimeoutMs = benchmark ? 600_000 : input.config.settings.workerTimeoutMs;
@@ -60,6 +73,7 @@ export async function runFusion(input) {
60
73
  total_output_tokens: 0,
61
74
  total_cost: 0,
62
75
  total_latency_ms: 0,
76
+ persona: persona.id,
63
77
  status: "error", // pessimistic default; updated on success/partial
64
78
  error: "in-progress",
65
79
  });
@@ -73,6 +87,7 @@ export async function runFusion(input) {
73
87
  context: input.context,
74
88
  apiKey: getKey(c.provider, secretsPath, keyPath) ?? "",
75
89
  timeoutMs: candidateTimeoutMs,
90
+ workerPrompt: personaPrompts.worker,
76
91
  })));
77
92
  // Log each worker sub_call regardless of outcome (Constitution V).
78
93
  for (const w of workerResults) {
@@ -129,7 +144,7 @@ export async function runFusion(input) {
129
144
  if (!judgeModel) {
130
145
  return failWithJudgeError(input, activityId, startedAt, survivorCount, workerResults, "analysis", `could not resolve judge model ${judge.provider}/${judge.model}`);
131
146
  }
132
- const analysis = await runAnalysis(judgeModel, input.prompt, candidateViews, judgeApiKey, judgeTimeoutMs);
147
+ const analysis = await runAnalysis(judgeModel, input.prompt, candidateViews, judgeApiKey, judgeTimeoutMs, personaPrompts.analysis);
133
148
  recordSubCall(input.db, {
134
149
  activity_id: activityId,
135
150
  role: "judge_analysis",
@@ -149,7 +164,7 @@ export async function runFusion(input) {
149
164
  }
150
165
  report(2, 3, "Analysis complete; synthesizing…");
151
166
  // --- Judge step 2: synthesis ---
152
- const synth = await runSynthesis(judgeModel, input.prompt, candidateViews, analysis.value, judgeApiKey, judgeTimeoutMs);
167
+ const synth = await runSynthesis(judgeModel, input.prompt, candidateViews, analysis.value, judgeApiKey, judgeTimeoutMs, personaPrompts.synthesis);
153
168
  recordSubCall(input.db, {
154
169
  activity_id: activityId,
155
170
  role: "judge_synthesis",
@@ -1 +1 @@
1
- {"version":3,"file":"fusion.js","sourceRoot":"","sources":["../../src/fusion/fusion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fusion.js","sourceRoot":"","sources":["../../src/fusion/fusion.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,6 @@
4
4
  import { Type } from "@earendil-works/pi-ai";
5
5
  import { runComplete, extractText, extractToolCall, totalCost } from "../providers/pi-ai-bridge.js";
6
6
  import { withRetryTimeout } from "../util/timeout.js";
7
- import { ANALYSIS_PROMPT, SYNTHESIS_PROMPT } from "./prompts.js";
8
7
  /** The forced tool the analysis step MUST call to emit its structured output. */
9
8
  export const analysisTool = {
10
9
  name: "record_analysis",
@@ -18,9 +17,9 @@ export const analysisTool = {
18
17
  }),
19
18
  };
20
19
  /** Step 1: analysis. Forces the record_analysis tool call. */
21
- export async function runAnalysis(model, prompt, candidates, apiKey, timeoutMs) {
20
+ export async function runAnalysis(model, prompt, candidates, apiKey, timeoutMs, analysisPrompt) {
22
21
  const ctx = {
23
- systemPrompt: ANALYSIS_PROMPT,
22
+ systemPrompt: analysisPrompt,
24
23
  messages: [{ role: "user", content: analysisUserContent(prompt, candidates), timestamp: Date.now() }],
25
24
  tools: [analysisTool],
26
25
  };
@@ -53,9 +52,9 @@ export async function runAnalysis(model, prompt, candidates, apiKey, timeoutMs)
53
52
  }
54
53
  }
55
54
  /** Step 2: synthesis. Writes the final answer from candidates + analysis only. */
56
- export async function runSynthesis(model, prompt, candidates, analysis, apiKey, timeoutMs) {
55
+ export async function runSynthesis(model, prompt, candidates, analysis, apiKey, timeoutMs, synthesisPrompt) {
57
56
  const ctx = {
58
- systemPrompt: SYNTHESIS_PROMPT,
57
+ systemPrompt: synthesisPrompt,
59
58
  messages: [{ role: "user", content: synthesisUserContent(prompt, candidates, analysis), timestamp: Date.now() }],
60
59
  };
61
60
  const startedAt = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/fusion/judge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/fusion/judge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ // Personas: named bundles of the three system prompts (worker + analysis + synthesis).
2
+ // Ships with 4 specialized defaults; users edit/add in the Personas tab and pick an
3
+ // active one per fusion. See specs / contracts for the data model.
4
+ export const DEFAULT_PERSONA_ID = "generalist";
5
+ /** The shipped defaults. The UI resets a builtin to these on demand. */
6
+ export const BUILTIN_PERSONAS = [
7
+ {
8
+ id: "generalist",
9
+ name: "Generalist",
10
+ description: "Balanced all-rounder. Good default for most multi-perspective questions.",
11
+ builtin: true,
12
+ workerPrompt: `You are an independent candidate model in a fusion panel. You are one of several models answering the same prompt in parallel; your answer will later be combined with the others by a judge.
13
+
14
+ Answer the user's prompt directly, completely, and to the best of your ability. Show your reasoning briefly so the judge can weigh it. Do not refer to other models, the fusion process, or how your answer will be used. Do not call any tools — simply produce your best standalone answer.`,
15
+ analysisPrompt: `You are the ANALYSIS step of a fusion judge. You will receive a user's prompt followed by several candidate answers produced independently by different models.
16
+
17
+ Your job is to ANALYZE the candidates — NOT to answer the prompt yourself. You must call the provided "record_analysis" tool exactly once with your structured analysis. The analysis must capture:
18
+
19
+ - consensus: points where the candidates substantially agree
20
+ - contradictions: points where candidates disagree or conflict
21
+ - partialCoverage: aspects of the prompt that only some candidates addressed
22
+ - uniqueInsights: valuable points raised by only one or a few candidates
23
+ - blindSpots: important aspects of the prompt that no candidate addressed well
24
+
25
+ Be precise and concrete; cite specific candidates by their index (Candidate 1, 2, ...) where relevant. Do NOT write a free-text answer — use the tool.`,
26
+ synthesisPrompt: `You are the SYNTHESIS step of a fusion judge. You will receive a user's prompt, the candidate answers, and a structured analysis (consensus, contradictions, partial coverage, unique insights, blind spots) produced in the prior step.
27
+
28
+ Write the single best consolidated answer to the user's prompt. Your answer must:
29
+
30
+ - Reflect and integrate the candidates, prioritizing consensus points.
31
+ - Reconcile contradictions, explaining the resolution when it matters.
32
+ - Where the candidates are wrong, say so and correct it — do not rubber-stamp consensus.
33
+ - Incorporate unique insights and address blind spots identified in the analysis.
34
+ - Introduce NO new external information that was not present in the candidates or analysis. You are synthesizing, not researching.
35
+
36
+ Return only the final answer text (no preamble about the process).`,
37
+ },
38
+ {
39
+ id: "qa",
40
+ name: "QA / Code Reviewer",
41
+ description: "Candidates critique like senior reviewers; judge consolidates a verdict with severities.",
42
+ builtin: true,
43
+ workerPrompt: `You are a meticulous senior code reviewer acting as an independent candidate in a fusion panel. Your job is to find real problems — correctness bugs, edge cases, security issues, concurrency races, and risky assumptions — not to praise.
44
+
45
+ Review the provided code/diff against its stated requirements and constraints. For each issue: state what's wrong, why it matters, the severity (blocker / major / minor / nit), and a concrete fix. Be specific (file:line). If you find nothing of note in an area, say so briefly. Do not call any tools.`,
46
+ analysisPrompt: `You are the ANALYSIS step of a fusion judge reviewing several independent code reviews. You must call the "record_analysis" tool exactly once; do not write a free-text answer. Capture:
47
+
48
+ - consensus: defects every reviewer flagged (likely real)
49
+ - contradictions: disagreements (e.g. one calls it a blocker, another a non-issue) — note who's right and why
50
+ - partialCoverage: code paths/requirements only some reviewers checked
51
+ - uniqueInsights: issues only one reviewer caught
52
+ - blindSpots: important areas (auth, error handling, perf) no reviewer addressed
53
+
54
+ Cite reviewers by index (Reviewer 1, 2, ...). Prioritize correctness and security over style.`,
55
+ synthesisPrompt: `You are the SYNTHESIS step of a fusion judge consolidating several code reviews into one verdict. Write a single prioritized report:
56
+
57
+ Lead with BLOCKERS, then MAJOR, then MINOR/NIT. For each issue: what, why, severity, and the fix. Reconcile contradictions from the analysis (state the resolution). Drop duplicates and praise. Do not invent issues none of the reviewers raised. End with a one-line verdict (ship / fix-blockers-first / needs-rework).`,
58
+ },
59
+ {
60
+ id: "researcher",
61
+ name: "Researcher",
62
+ description: "Candidates argue from the gathered sources; judge reconciles into one well-reasoned answer.",
63
+ builtin: true,
64
+ workerPrompt: `You are an independent researcher acting as a candidate in a fusion panel. You are given a question and a body of gathered material (sources, notes, snippets) in the context.
65
+
66
+ Reason from that material to answer the question. Cite which part of the material supports each claim. Where the material conflicts or is silent, say so explicitly rather than guessing. Distinguish what the evidence supports from your own inference. Do not call any tools or claim sources you weren't given.`,
67
+ analysisPrompt: `You are the ANALYSIS step of a fusion judge reconciling several research answers. Call the "record_analysis" tool exactly once; do not write free text. Capture:
68
+
69
+ - consensus: claims well-supported across answers
70
+ - contradictions: where answers disagree, including conflicting source readings — assess which is better supported
71
+ - partialCoverage: sources/questions only some answers used
72
+ - uniqueInsights: evidence or angles only one answer surfaced
73
+ - blindSpots: parts of the question no answer addressed, and any unverified claims
74
+
75
+ Cite answers by index (Answer 1, 2, ...). Flag anything presented as fact that lacks support.`,
76
+ synthesisPrompt: `You are the SYNTHESIS step of a fusion judge writing the final research answer. Produce one well-reasoned response that:
77
+
78
+ Weighs the evidence per the analysis; resolves conflicts by pointing to the stronger support; incorporates unique insights; covers the blind spots honestly (noting where evidence is thin). Do not introduce facts not present in the candidates or material. Mark remaining uncertainty explicitly rather than papering over it.`,
79
+ },
80
+ {
81
+ id: "pm",
82
+ name: "Project Manager / Strategist",
83
+ description: "Candidates weigh trade-offs and risks; judge consolidates a recommendation with a clear rationale.",
84
+ builtin: true,
85
+ workerPrompt: `You are a pragmatic senior strategist acting as a candidate in a fusion panel. You weigh trade-offs, risks, and sequencing — not just technical correctness.
86
+
87
+ Given the decision/options and constraints, lay out the key trade-offs, the riskiest assumptions, and a recommended path with rationale. Consider cost, timeline, reversibility, and team reality — not only the technically optimal choice. State what would change your mind. Be decisive; do not call any tools.`,
88
+ analysisPrompt: `You are the ANALYSIS step of a fusion judge reconciling several strategic takes. Call the "record_analysis" tool exactly once; do not write free text. Capture:
89
+
90
+ - consensus: trade-offs/risks every take agreed on
91
+ - contradictions: where takes diverge on the recommendation or risk weighting — identify the crux that drives the disagreement
92
+ - partialCoverage: stakeholders, constraints, or options only some considered
93
+ - uniqueInsights: angles or risks only one surfaced
94
+ - blindSpots: obvious alternatives or second-order effects no one raised
95
+
96
+ Cite takes by index (Take 1, 2, ...). Focus on what distinguishes the recommendations.`,
97
+ synthesisPrompt: `You are the SYNTHESIS step of a fusion judge writing the final recommendation. Produce one decisive answer that:
98
+
99
+ States the recommendation up front, then the rationale tied to the consensus trade-offs. Resolve contradictions by pointing to the crux from the analysis. Incorporate the unique risks/insights; surface any blind-spot alternative worth a sanity check. Note what would change the recommendation. Do not invent constraints or facts not in the candidates.`,
100
+ },
101
+ ];
102
+ /** Look up a builtin by id (for resets). */
103
+ export function getBuiltin(id) {
104
+ return BUILTIN_PERSONAS.find((p) => p.id === id);
105
+ }
106
+ /**
107
+ * Resolve the persona to use for a fusion, given an optional per-call override,
108
+ * the stored personas, and the active-persona id. Falls back gracefully:
109
+ * override (by id or name) -> activePersona -> generalist -> first available.
110
+ * Never throws — a missing persona always degrades to a real prompt set.
111
+ */
112
+ export function resolvePersona(args) {
113
+ const { override, personas, activeId } = args;
114
+ const byIdOrName = (key) => key ? personas.find((p) => p.id === key || p.name.toLowerCase() === key.toLowerCase()) : undefined;
115
+ return (byIdOrName(override) ??
116
+ byIdOrName(activeId) ??
117
+ byIdOrName(DEFAULT_PERSONA_ID) ??
118
+ personas[0] ??
119
+ getBuiltin(DEFAULT_PERSONA_ID));
120
+ }
121
+ //# sourceMappingURL=personas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/fusion/personas.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,oFAAoF;AACpF,mEAAmE;AAanE,MAAM,CAAC,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAE/C,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,0EAA0E;QACvF,OAAO,EAAE,IAAI;QACb,YAAY,EAAE;;8RAE4Q;QAC1R,cAAc,EAAE;;;;;;;;;;uJAUmI;QACnJ,eAAe,EAAE;;;;;;;;;;mEAU8C;KAChE;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,0FAA0F;QACvG,OAAO,EAAE,IAAI;QACb,YAAY,EAAE;;6SAE2R;QACzS,cAAc,EAAE;;;;;;;;8FAQ0E;QAC1F,eAAe,EAAE;;4TAEuS;KACzT;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,6FAA6F;QAC1G,OAAO,EAAE,IAAI;QACb,YAAY,EAAE;;oTAEkS;QAChT,cAAc,EAAE;;;;;;;;8FAQ0E;QAC1F,eAAe,EAAE;;mUAE8S;KAChU;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,oGAAoG;QACjH,OAAO,EAAE,IAAI;QACb,YAAY,EAAE;;oTAEkS;QAChT,cAAc,EAAE;;;;;;;;uFAQmE;QACnF,eAAe,EAAE;;gWAE2U;KAC7V;CACF,CAAC;AAEF,4CAA4C;AAC5C,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAI9B;IACC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC9C,MAAM,UAAU,GAAG,CAAC,GAAuB,EAAE,EAAE,CAC7C,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrG,OAAO,CACL,UAAU,CAAC,QAAQ,CAAC;QACpB,UAAU,CAAC,QAAQ,CAAC;QACpB,UAAU,CAAC,kBAAkB,CAAC;QAC9B,QAAQ,CAAC,CAAC,CAAC;QACX,UAAU,CAAC,kBAAkB,CAAE,CAChC,CAAC;AACJ,CAAC"}
@@ -1,7 +1,6 @@
1
1
  // Worker: a single-shot candidate generation. No tools (Constitution I).
2
2
  import { runComplete, extractText, totalCost } from "../providers/pi-ai-bridge.js";
3
3
  import { withRetryTimeout, TimeoutError } from "../util/timeout.js";
4
- import { WORKER_PROMPT } from "./prompts.js";
5
4
  /** Run one candidate. Returns a structured result; never throws (errors -> status error/timeout). */
6
5
  export async function runWorker(input) {
7
6
  const startedAt = Date.now();
@@ -22,7 +21,7 @@ export async function runWorker(input) {
22
21
  }
23
22
  // Retry on failure (timeout OR error), resetting the timeout each attempt.
24
23
  const msg = await withRetryTimeout(() => runComplete(input.model, {
25
- systemPrompt: WORKER_PROMPT,
24
+ systemPrompt: input.workerPrompt,
26
25
  messages: [{ role: "user", content: userContent, timestamp: startedAt }],
27
26
  }, input.apiKey), { timeoutMs: input.timeoutMs, label: `worker ${input.slotId}`, attempts: 3 });
28
27
  const text = extractText(msg);
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/fusion/worker.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAiB,MAAM,8BAA8B,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAyB7C,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAiB;QACzB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,OAAO;QACpB,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,OAAO;KAChB,CAAC;IACF,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO;QAC/B,CAAC,CAAC,wBAAwB,KAAK,CAAC,OAAO,uBAAuB,KAAK,CAAC,MAAM,EAAE;QAC5E,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IACjB,MAAM,MAAM,GAAG,CAAC,CAAwB,EAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IAElH,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,2BAA2B,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1G,CAAC;QACD,2EAA2E;QAC3E,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAChC,GAAG,EAAE,CACH,WAAW,CAAC,KAAK,CAAC,KAAM,EAAE;YACxB,YAAY,EAAE,aAAa;YAC3B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;SACzE,EAAE,KAAK,CAAC,MAAM,CAAC,EAClB,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAC7E,CAAC;QACF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC;YACZ,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,KAAK,EAAE;gBACL,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;gBACtB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;gBACxB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;aAC3B;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/fusion/worker.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAiB,MAAM,8BAA8B,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA2BpE,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAiB;QACzB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,OAAO;QACpB,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,OAAO;KAChB,CAAC;IACF,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO;QAC/B,CAAC,CAAC,wBAAwB,KAAK,CAAC,OAAO,uBAAuB,KAAK,CAAC,MAAM,EAAE;QAC5E,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IACjB,MAAM,MAAM,GAAG,CAAC,CAAwB,EAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IAElH,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,2BAA2B,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1G,CAAC;QACD,2EAA2E;QAC3E,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAChC,GAAG,EAAE,CACH,WAAW,CAAC,KAAK,CAAC,KAAM,EAAE;YACxB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;SACzE,EAAE,KAAK,CAAC,MAAM,CAAC,EAClB,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAC7E,CAAC;QACF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC;YACZ,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,KAAK,EAAE;gBACL,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;gBACtB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;gBACxB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;aAC3B;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}