agim-cli 1.2.119 → 1.2.121

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/CHANGELOG.md CHANGED
@@ -4,6 +4,99 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [1.2.121] - 2026-05-31
8
+
9
+ ### Added (主流对账批 3/4:fan-out 子 agent + 搜索全家桶)
10
+
11
+ #### Item 7 — in-process call_agent native 自旋(fan-out 关键)
12
+ 之前 `call_agent('native', ...)` 走 subprocess CLI 启动(~5s 冷启),完全没法做 fan-out。
13
+ 本版加入 in-process fast path:
14
+ - 当 target=='native' → 跳过 subprocess,直接在同 JS 堆里 `nativeAgentAdapter.sendPrompt()`
15
+ - 共享 cwd / MCP fleet / 同一 LLM 后端,但开**全新 session id** 避免污染父对话
16
+ - 仍按 `IMHUB_A2A_MAX_DEPTH`(默认 1)做深度检查 + 走 callerDepth+1 入子层
17
+ - `IMHUB_NATIVE_CALL_AGENT_IN_PROCESS=off` 是 kill switch(强制走 subprocess 老路)
18
+ - 子层若再 call_agent 会被 depth 拦下,避免无限递归
19
+ - 完整 trace 链:parent traceId → `a2a-{call.id}` → child native loop 内每个 tool
20
+
21
+ #### Item 8 — Brave / Serper / Exa search providers
22
+ 扩展 v1.2.118 的 SearchProvider chain。新增 3 个 provider:
23
+ - **Brave** (`BRAVE_API_KEY`):实际 web index,2000 req/月免费档
24
+ - **Serper** (`SERPER_API_KEY`):Google SERP 中继,cheap
25
+ - **Exa** (`EXA_API_KEY`):语义/向量搜索,适合"找类似页"
26
+ - 新默认链:`tavily,brave,serper,exa,duckduckgo,metaso`
27
+ - 缺 key 仍然静默跳过,env override `IMHUB_WEB_SEARCH_PROVIDERS` 不变
28
+
29
+ ### Affected paths
30
+
31
+ - `src/core/llm/web-dispatcher.ts`:新增 `searchBrave/parseBraveResults` /
32
+ `searchSerper/parseSerperResults` / `searchExa/parseExaResults` + 注册到
33
+ `PROVIDERS`;默认 chain 更新;工具描述更新
34
+ - `src/core/llm/imhub-dispatcher.ts`:`isInProcessSpawnDisabled` helper +
35
+ call_agent 分支检测 `agentName === 'native'` → in-process fast path
36
+ - `test/unit/web-search-providers.test.ts`:新增 3 个 parse 测试 + 1 个默认
37
+ chain 顺序测试 + 1 个三 provider 同时启用测试
38
+ - `src/core/llm/imhub-dispatcher.test.ts`:新增 4 个 case(depth 拒绝 / A2A
39
+ disabled / 非 native 不走 in-process / kill switch 强制 subprocess)
40
+
41
+ ### Test status
42
+
43
+ - 159/159 bun pass(新增 9:5 search + 4 self-spawn)
44
+ - typecheck clean
45
+
46
+ ### What's next
47
+
48
+ 剩余 v1.2.122+(高级特性,全是 M-L effort):
49
+ - semantic stuck-loop(goal-critic 判断"同一意图"再 stop)
50
+ - TCP-drop retry on streaming chat(mid-stream ECONNRESET)
51
+ - TodoWrite-style native tool(对话内 plan 跟踪)
52
+ - LLM-summary auto-compact(替代字节裁切)
53
+
54
+ ## [1.2.120] - 2026-05-31
55
+
56
+ ### Changed (PlanMode 取消重启依赖——可运行时切换)
57
+
58
+ 用户反馈:"Plan模式下,退出Plan 需要重启Agim,感觉太严格了,不合适"。修正:
59
+
60
+ - 新增 `src/core/plan-mode-state.ts`:sqlite 表 `native_plan_mode(thread_key PK,
61
+ enabled, updated_at)`,per-thread 持久化覆盖;DB 默认 `~/.agim/plan-mode.db`,
62
+ env `IMHUB_PLAN_MODE_DB` 可指定路径
63
+ - 三态优先级 `effectivePlanModeOn(threadKey)`:
64
+ 1. per-thread = **true** → on(即使 env=off)
65
+ 2. per-thread = **false** → off(即使 env=on——一个线程可单独 opt-out)
66
+ 3. per-thread = null(未设置)→ 回退到 env `IMHUB_NATIVE_PLAN_MODE`
67
+ - `/plan on|off` 现在**同时**写 sessionManager.planMode(claude-code / codex /
68
+ opencode 用)和 plan-mode-state.db(native 用),native 加入 PLAN_CAPABLE_AGENTS
69
+ 集合,提示文案里移除"native 不读 planMode"的警告
70
+ - `resolvePolicy(threadKey?)` / `buildSystemPrompt(..., threadKey?)` /
71
+ `isPlanModeOn(threadKey?)` 三个 native 函数加 threadKey 参数;sendPrompt
72
+ 内用 `threadKey(platform, channelId, threadId)` 算出来传下去
73
+ - 现在切换 PlanMode **不需要重启**——`/plan off` 下一个 turn 就生效
74
+
75
+ ### Affected paths
76
+
77
+ - `src/core/plan-mode-state.ts`(新 ~130 行)
78
+ - `src/core/commands/plan.ts`:加 native 到 PLAN_CAPABLE_AGENTS、on/off 分支
79
+ 调 `setPlanModeForThread` / `clearPlanModeForThread`
80
+ - `src/plugins/agents/native/index.ts`:`resolvePolicy` / `buildSystemPrompt` /
81
+ `isPlanModeOn` 改签名;sendPrompt 计算并传入 planThreadKey
82
+ - `test/unit/plan-mode-state.test.ts`(新,4 个 case:env 解析 / no-threadKey
83
+ env-only / 落空回退到 env)。SQLite CRUD + per-thread precedence 在生产
84
+ (node) 跑,bun 测试因为 better-sqlite3 兼容降级为 no-op,所以这一层在
85
+ production 验证不在 bun 单测里 assert
86
+
87
+ ### Test status
88
+
89
+ - 137/137 bun pass(新增 4 个 plan-mode-state;其余 9 个 plan.test.ts +
90
+ 14 个 plan-mode.test.ts + 之前批次的 110+ 个都依旧绿)
91
+ - typecheck clean
92
+
93
+ ### What's next
94
+
95
+ 剩下 v1.2.121+:
96
+ - in-process call_agent self-spawn(fan-out 关键)
97
+ - Brave/Serper/Exa search adapter
98
+ - 语义 stuck-loop / TCP 重试 / TodoWrite / LLM 摘要 compact
99
+
7
100
  ## [1.2.119] - 2026-05-31
8
101
 
9
102
  ### Added (native agent stability + 安全栏 — 主流对账批 2/4)
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/core/commands/plan.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAahD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAwDxF"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/core/commands/plan.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAqBhD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAoExF"}
@@ -5,24 +5,33 @@
5
5
  // • opencode → routes through the built-in `plan` agent
6
6
  // • codex → spawns with `-s read-only` sandbox (OS-level write fence;
7
7
  // not a true approval gate, see codex/index.ts header)
8
+ // • native (v1.2.120) → resolvePolicy() hard-denies native_write_file +
9
+ // native_exec; system prompt gets a PlanMode banner
8
10
  // • other agents → ignore the flag (no-op)
9
11
  //
10
12
  // Persisted on session.planMode so it survives across turns and across the
11
13
  // /oc ↔ /cc agent switch (intent travels with the conversation, not with
12
- // the chosen CLI).
14
+ // the chosen CLI). v1.2.120 also writes to plan-mode-state.db so the native
15
+ // adapter can apply the override even when the conversation hasn't yet
16
+ // rebuilt its in-memory session row (e.g. after a process restart).
13
17
  //
14
18
  // Emergency kill switch: `IMHUB_DISABLE_PLAN_MODE=1` makes /plan return a
15
19
  // "disabled" message without touching session state. Useful for ops to roll
16
20
  // back the feature without redeploying.
17
21
  import { sessionManager } from '../session.js';
22
+ import { threadKey as makeThreadKey } from '../approval-bus.js';
23
+ import { setPlanModeForThread, clearPlanModeForThread, } from '../plan-mode-state.js';
18
24
  const ON_TOKENS = new Set(['on', 'enter', 'start', 'enable', '开', '开启']);
19
25
  const OFF_TOKENS = new Set(['off', 'exit', 'stop', 'disable', '关', '关闭']);
20
26
  /** Agents that genuinely honor session.planMode at adapter level.
21
27
  * - claude-code: --permission-mode plan
22
28
  * - opencode: --agent plan
23
29
  * - codex: -s read-only sandbox (sandbox-level "safety floor" — see
24
- * plugins/agents/codex/index.ts header for the caveat) */
25
- const PLAN_CAPABLE_AGENTS = new Set(['claude-code', 'opencode', 'codex']);
30
+ * plugins/agents/codex/index.ts header for the caveat)
31
+ * - native (v1.2.120): plan-mode-state.db + resolvePolicy() denies
32
+ * native_write_file + native_exec; system prompt gets
33
+ * a PlanMode banner */
34
+ const PLAN_CAPABLE_AGENTS = new Set(['claude-code', 'opencode', 'codex', 'native']);
26
35
  export async function handlePlanCommand(args, ctx) {
27
36
  if (process.env.IMHUB_DISABLE_PLAN_MODE === '1') {
28
37
  return '🚫 Plan 模式已通过 IMHUB_DISABLE_PLAN_MODE 全局禁用,请联系运维。';
@@ -56,16 +65,27 @@ plan 模式下文件不会被修改,适合先讨论方案再动手。${agentNo
56
65
  const capabilityNote = PLAN_CAPABLE_AGENTS.has(activeAgent)
57
66
  ? ''
58
67
  : `\n\n⚠️ 当前 agent **${activeAgent}** 不读 planMode 标志位(claude-code / opencode 才支持)。标志会保存,但要切到上述 agent 才会生效。`;
68
+ // v1.2.120 — compose the composite key once. native reads from the
69
+ // plan-mode-state.db keyed by this exact composite (matches
70
+ // sendPrompt's makeThreadKey call).
71
+ const tkey = makeThreadKey(ctx.platform, ctx.channelId, ctx.threadId);
59
72
  if (ON_TOKENS.has(token)) {
60
73
  if (existing?.planMode)
61
74
  return `✅ Plan 模式已开启(无变化)。${capabilityNote}`;
62
75
  await sessionManager.patchSession(ctx.platform, ctx.channelId, ctx.threadId, { planMode: true });
76
+ // v1.2.120 — also write to plan-mode-state so the native agent
77
+ // picks it up (session.planMode is read by CLI adapters but
78
+ // native's resolvePolicy() reads plan-mode-state.db).
79
+ setPlanModeForThread(tkey, true);
63
80
  return `✅ Plan 模式已开启 — 接下来 agent 只规划不动手。/plan off 恢复。${capabilityNote}`;
64
81
  }
65
82
  if (OFF_TOKENS.has(token)) {
66
83
  if (!existing?.planMode)
67
84
  return 'ℹ️ Plan 模式本来就是关闭状态。';
68
85
  await sessionManager.patchSession(ctx.platform, ctx.channelId, ctx.threadId, { planMode: false });
86
+ // v1.2.120 — drop the per-thread row so the env default applies
87
+ // again (don't write `false`; that would override env=on too).
88
+ clearPlanModeForThread(tkey);
69
89
  return '✅ Plan 模式已关闭 — 恢复正常执行模式。';
70
90
  }
71
91
  return `⚠️ 无效参数: \`${token}\`
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/core/commands/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/core/commands/plan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"imhub-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/core/llm/imhub-dispatcher.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,sBAAsB,CAAA;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAmBjD;;iBAEiB;AACjB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAA;IACnB,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,UAAU,CAAA;IAC1B,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AA4BD;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,OAAO,EAAE,CA8OzC;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,GAAG,cAAc,CAsO5E"}
1
+ {"version":3,"file":"imhub-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/core/llm/imhub-dispatcher.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,sBAAsB,CAAA;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AA4BjD;;iBAEiB;AACjB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAA;IACnB,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,UAAU,CAAA;IAC1B,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AA4BD;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,OAAO,EAAE,CA8OzC;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,GAAG,cAAc,CAwS5E"}
@@ -41,6 +41,14 @@ import { handleAskOp } from '../ask-user-rpc.js';
41
41
  import { callAgentByName } from '../a2a.js';
42
42
  import { createReminder, listReminders, cancelReminder, snoozeReminder, parseDuration, ReminderError, } from '../reminders.js';
43
43
  const log = rootLogger.child({ component: 'imhub-dispatcher' });
44
+ /** v1.2.121 — kill switch for in-process native self-spawn. When set to
45
+ * 'off' (or '0' / 'no'), call_agent('native', …) falls back to the
46
+ * subprocess CLI boot path. Default is ON (in-process) because
47
+ * fan-out latency is the main reason this feature exists. */
48
+ function isInProcessSpawnDisabled() {
49
+ const raw = (process.env.IMHUB_NATIVE_CALL_AGENT_IN_PROCESS ?? '').toLowerCase().trim();
50
+ return raw === 'off' || raw === '0' || raw === 'no' || raw === 'false';
51
+ }
44
52
  function safeJson(v) {
45
53
  try {
46
54
  return JSON.stringify(v, null, 2);
@@ -409,6 +417,65 @@ export function buildImhubDispatcher(ctx) {
409
417
  cap: callAgentMaxPerTurn,
410
418
  threadId: ctx.threadId,
411
419
  }, `delegating to ${agentName} (attempt ${callAgentCount}/${callAgentMaxPerTurn || '∞'})`);
420
+ // v1.2.121 — in-process self-spawn fast path.
421
+ //
422
+ // When the target is `native` (i.e. caller wants to fan-out
423
+ // research using more native turns), skip the subprocess
424
+ // boot and run another native agent loop in the SAME JS
425
+ // heap. Saves the ~5s claude-code-style boot per fan-out;
426
+ // matches the pattern Claude Code uses for in-process Task
427
+ // agents.
428
+ //
429
+ // Disabled via IMHUB_NATIVE_CALL_AGENT_IN_PROCESS=off
430
+ // (falls back to subprocess via callAgentByName).
431
+ // Depth + A2A_ENABLED checks still apply.
432
+ if (agentName === 'native' && !isInProcessSpawnDisabled()) {
433
+ const { getA2AMaxDepth, isA2AEnabled } = await import('../a2a.js');
434
+ if (!isA2AEnabled()) {
435
+ return err('call_agent refused: A2A disabled (IMHUB_A2A_ENABLED=0)');
436
+ }
437
+ const callerDepth = ctx.callerDepth ?? 0;
438
+ const nextDepth = callerDepth + 1;
439
+ const maxDepth = getA2AMaxDepth();
440
+ if (nextDepth > maxDepth) {
441
+ log.warn({
442
+ event: 'native.call_agent.in_process_depth_exceeded',
443
+ callerDepth, nextDepth, maxDepth, threadId: ctx.threadId,
444
+ }, `in-process self-spawn refused: depth ${nextDepth} > max ${maxDepth}`);
445
+ return err(`call_agent refused: depth ${nextDepth} > max ${maxDepth}`);
446
+ }
447
+ log.info({
448
+ event: 'native.call_agent.in_process_spawn',
449
+ callerDepth, nextDepth, threadId: ctx.threadId, subTurnCallId: call.id,
450
+ }, `in-process native self-spawn (depth ${nextDepth}); skipping subprocess boot`);
451
+ try {
452
+ // Dynamic import to avoid the circular dep — native
453
+ // index.ts depends on this dispatcher module.
454
+ const native = await import('../../plugins/agents/native/index.js');
455
+ // Fresh sub-session id so the child doesn't pollute
456
+ // the parent's session history but shares the thread
457
+ // context (platform/channelId/threadId/userId) so
458
+ // tools resolve the same workspace, MCP fleet, etc.
459
+ const subSessionId = `${ctx.threadId}-spawn-${call.id}`;
460
+ const parts = [];
461
+ for await (const chunk of native.nativeAgentAdapter.sendPrompt(subSessionId, prompt, [], {
462
+ platform: ctx.platform,
463
+ channelId: ctx.channelId,
464
+ threadId: ctx.threadId,
465
+ userId: ctx.userId,
466
+ callDepth: nextDepth,
467
+ signal,
468
+ })) {
469
+ parts.push(chunk);
470
+ }
471
+ return ok(parts.join(''));
472
+ }
473
+ catch (e) {
474
+ const msg = e instanceof Error ? e.message : String(e);
475
+ log.warn({ event: 'native.call_agent.in_process_failed', err: msg }, 'in-process self-spawn threw; surfacing error to caller');
476
+ return err(`call_agent (in-process native) failed: ${msg}`);
477
+ }
478
+ }
412
479
  // Construct a minimal RouteContext from the run context so A2A
413
480
  // can audit / route. Lifted to a partial cast because most of
414
481
  // RouteContext's optional fields (intent, agentSessionId, …)
@@ -1 +1 @@
1
- {"version":3,"file":"imhub-dispatcher.js","sourceRoot":"","sources":["../../../src/core/llm/imhub-dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imhub-dispatcher.js","sourceRoot":"","sources":["../../../src/core/llm/imhub-dispatcher.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,oEAAoE;AACpE,sEAAsE;AACtE,iEAAiE;AACjE,wCAAwC;AACxC,EAAE;AACF,uBAAuB;AACvB,uBAAuB;AACvB,qEAAqE;AACrE,oEAAoE;AACpE,qEAAqE;AACrE,oEAAoE;AACpE,sEAAsE;AACtE,kEAAkE;AAClE,gEAAgE;AAChE,mDAAmD;AACnD,EAAE;AACF,sBAAsB;AACtB,sBAAsB;AACtB,mEAAmE;AACnE,iEAAiE;AACjE,qEAAqE;AACrE,cAAc;AACd,iEAAiE;AACjE,kEAAkE;AAClE,0DAA0D;AAC1D,EAAE;AACF,mEAAmE;AACnE,oEAAoE;AACpE,mEAAmE;AACnE,+DAA+D;AAC/D,EAAE;AACF,oDAAoD;AACpD,mEAAmE;AACnE,6DAA6D;AAE7D,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AAGnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,GAEd,MAAM,iBAAiB,CAAA;AAGxB,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAA;AAE/D;;;8DAG8D;AAC9D,SAAS,wBAAwB;IAC/B,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;IACvF,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,OAAO,CAAA;AACxE,CAAC;AAkBD,SAAS,QAAQ,CAAC,CAAU;IAC1B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAS,EAAE,CAAC,IAAY;IACtB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAClD,CAAC;AAED,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AACjD,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,kEAAkE;IAClE,+CAA+C;IAC/C,OAAO;QACL,IAAI,EAAE,qCAAqC,IAAI,GAAG;QAClD,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,SAAS;KAClB,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL;YACE,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EACT,mPAAmP;YACrP,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kEAAkE,EAAE;iBAC1G;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;SACF;QACD;YACE,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EACT,yJAAyJ;YAC3J,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;SAC/C;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EACT,iXAAiX;YACnX,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;oBAC1F,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;oBACjF,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;oBACvF,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yDAAyD,EAAE;oBACnG,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACvB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACvB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;oBACpF,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE;iBACpG;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;SACF;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,WAAW,EACT,yJAAyJ;YAC3J,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kFAAkF,EAAE;oBAC1H,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACvB,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACjC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uEAAuE,EAAE;oBACpH,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;oBAChE,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;iBACrD;aACF;SACF;QACD;YACE,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,wEAAwE;YACrF,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACvB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC3B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACrC;gBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;aACjB;SACF;QACD;YACE,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,sBAAsB;YACnC,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;gBACvC,QAAQ,EAAE,CAAC,IAAI,CAAC;aACjB;SACF;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,WAAW,EACT,uQAAuQ;YACzQ,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;oBAChE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+FAA+F,EAAE;iBAC3I;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;SACF;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EACT,6LAA6L;YAC/L,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;oBAC9E,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBAC9F,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;oBACtE,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,uDAAuD,EAAE;iBACzH;gBACD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;aAClC;SACF;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EACT,gPAAgP;YAClP,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;oBACpF,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;iBAC3D;gBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;aAC9B;SACF;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EACT,yFAAyF;gBACzF,2FAA2F;gBAC3F,4FAA4F;gBAC5F,uFAAuF;gBACvF,2DAA2D;YAC7D,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,sFAAsF;4BACtF,oFAAoF;qBACvF;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,kEAAkE;qBAChF;iBACF;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;SACF;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,WAAW,EACT,wFAAwF;gBACxF,uFAAuF;gBACvF,sFAAsF;gBACtF,kDAAkD;YACpD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE;oBACxF,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;iBAC7D;aACF;SACF;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EACT,sFAAsF;gBACtF,sFAAsF;gBACtF,wEAAwE;gBACxE,wEAAwE;gBACxE,yFAAyF;gBACzF,wEAAwE;gBACxE,yCAAyC;YAC3C,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,yGAAyG;qBACvH;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,6EAA6E;qBAC3F;oBACD,UAAU,EAAE;wBACV,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,6DAA6D;qBAC3E;oBACD,UAAU,EAAE;wBACV,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;wBACxB,WAAW,EAAE,oGAAoG;qBAClH;iBACF;gBACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;aAC7B;SACF;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,WAAW,EACT,gFAAgF;gBAChF,+CAA+C;YACjD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;SAC/C;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EACT,wFAAwF;gBACxF,kCAAkC;YACpC,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE,EAAE;gBACtF,QAAQ,EAAE,CAAC,IAAI,CAAC;aACjB;SACF;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EACT,uFAAuF;gBACvF,8CAA8C;YAChD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;oBAC5D,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;iBACtF;gBACD,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;aAC7B;SACF;KACF,CAAA;AACH,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,oBAAoB,CAAC,GAAuB;IAC1D,MAAM,UAAU,GAAG;QACjB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAA;IAED,sEAAsE;IACtE,uEAAuE;IACvE,6DAA6D;IAC7D,iEAAiE;IACjE,+BAA+B;IAC/B,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAA;QAC5D,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,CAAA;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACrB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC,CAAC,EAAE,CAAA;IACJ,IAAI,cAAc,GAAG,CAAC,CAAA;IAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAA6B,EAAE;QAChE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QACjD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAA4B,CAAA;QAEpH,IAAI,CAAC;YACH,QAAQ,EAAE,EAAE,CAAC;gBACX,KAAK,YAAY,CAAC,CAAC,CAAC;oBAClB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;oBAC/D,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,OAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;oBACtD,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM;wBAAE,OAAO,GAAG,CAAC,2BAA2B,CAAC,CAAA;oBACnE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;wBAAE,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,CAAC,MAAM,CAAC,iBAAiB,IAAI,SAAS,EAAE,CAAC,CAAA;oBACvH,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC1B,CAAC;gBACD,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;oBAC9C,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,OAAO,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;oBACvD,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC/B,CAAC;gBACD,KAAK,WAAW,CAAC,CAAC,CAAC;oBACjB,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;oBACtD,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,OAAO,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;oBACrD,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC/B,CAAC;gBACD,KAAK,cAAc,CAAC,CAAC,CAAC;oBACpB,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;oBACxD,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,OAAO,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;oBACxD,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC/B,CAAC;gBACD,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;oBACxD,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,OAAO,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;oBACvD,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC/B,CAAC;gBACD,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;oBACxD,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,OAAO,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;oBACvD,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC/B,CAAC;gBACD,KAAK,cAAc,CAAC,CAAC,CAAC;oBACpB,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,IAA8D,EAAE,UAAU,CAAC,CAAA;oBACxG,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,OAAO,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;oBACxD,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC/B,CAAC;gBACD,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,MAAM,CAAC,GAAG,MAAM,WAAW,CACzB,IAAiG,EACjG,UAAU,CACX,CAAA;oBACD,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,OAAO,GAAG,CAAC,oBAAoB,CAAC,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;oBAC7E,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC/B,CAAC;gBACD,KAAK,YAAY,CAAC,CAAC,CAAC;oBAClB,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;oBAClE,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;oBACjE,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;wBAAE,OAAO,GAAG,CAAC,kEAAkE,CAAC,CAAA;oBACzG,+DAA+D;oBAC/D,iEAAiE;oBACjE,gEAAgE;oBAChE,4DAA4D;oBAC5D,6DAA6D;oBAC7D,6CAA6C;oBAC7C,IAAI,mBAAmB,GAAG,CAAC,IAAI,cAAc,IAAI,mBAAmB,EAAE,CAAC;wBACrE,GAAG,CAAC,IAAI,CAAC;4BACP,KAAK,EAAE,gCAAgC;4BACvC,WAAW,EAAE,GAAG,CAAC,WAAW;4BAC5B,WAAW,EAAE,SAAS;4BACtB,KAAK,EAAE,cAAc;4BACrB,GAAG,EAAE,mBAAmB;4BACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;yBACvB,EAAE,4BAA4B,cAAc,IAAI,mBAAmB,iCAAiC,CAAC,CAAA;wBACtG,OAAO,GAAG,CACR,kDAAkD,cAAc,qBAAqB;4BACrF,QAAQ,mBAAmB,wDAAwD;4BACnF,oFAAoF;4BACpF,+EAA+E;4BAC/E,sBAAsB,CACvB,CAAA;oBACH,CAAC;oBACD,cAAc,IAAI,CAAC,CAAA;oBACnB,GAAG,CAAC,IAAI,CAAC;wBACP,KAAK,EAAE,6BAA6B;wBACpC,WAAW,EAAE,GAAG,CAAC,WAAW;wBAC5B,WAAW,EAAE,SAAS;wBACtB,OAAO,EAAE,cAAc;wBACvB,GAAG,EAAE,mBAAmB;wBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;qBACvB,EAAE,iBAAiB,SAAS,aAAa,cAAc,IAAI,mBAAmB,IAAI,GAAG,GAAG,CAAC,CAAA;oBAE1F,8CAA8C;oBAC9C,EAAE;oBACF,4DAA4D;oBAC5D,yDAAyD;oBACzD,wDAAwD;oBACxD,0DAA0D;oBAC1D,2DAA2D;oBAC3D,UAAU;oBACV,EAAE;oBACF,sDAAsD;oBACtD,kDAAkD;oBAClD,0CAA0C;oBAC1C,IAAI,SAAS,KAAK,QAAQ,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC;wBAC1D,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;wBAClE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;4BACpB,OAAO,GAAG,CAAC,wDAAwD,CAAC,CAAA;wBACtE,CAAC;wBACD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,CAAC,CAAA;wBACxC,MAAM,SAAS,GAAG,WAAW,GAAG,CAAC,CAAA;wBACjC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAA;wBACjC,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC;4BACzB,GAAG,CAAC,IAAI,CAAC;gCACP,KAAK,EAAE,6CAA6C;gCACpD,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ;6BACzD,EAAE,wCAAwC,SAAS,UAAU,QAAQ,EAAE,CAAC,CAAA;4BACzE,OAAO,GAAG,CAAC,6BAA6B,SAAS,UAAU,QAAQ,EAAE,CAAC,CAAA;wBACxE,CAAC;wBACD,GAAG,CAAC,IAAI,CAAC;4BACP,KAAK,EAAE,oCAAoC;4BAC3C,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE;yBACvE,EAAE,uCAAuC,SAAS,6BAA6B,CAAC,CAAA;wBACjF,IAAI,CAAC;4BACH,oDAAoD;4BACpD,8CAA8C;4BAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,sCAAsC,CAAC,CAAA;4BACnE,oDAAoD;4BACpD,qDAAqD;4BACrD,kDAAkD;4BAClD,oDAAoD;4BACpD,MAAM,YAAY,GAAG,GAAG,GAAG,CAAC,QAAQ,UAAU,IAAI,CAAC,EAAE,EAAE,CAAA;4BACvD,MAAM,KAAK,GAAa,EAAE,CAAA;4BAC1B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAC5D,YAAY,EACZ,MAAM,EACN,EAAE,EACF;gCACE,QAAQ,EAAE,GAAG,CAAC,QAAQ;gCACtB,SAAS,EAAE,GAAG,CAAC,SAAS;gCACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gCACtB,MAAM,EAAE,GAAG,CAAC,MAAM;gCAClB,SAAS,EAAE,SAAS;gCACpB,MAAM;6BACP,CACF,EAAE,CAAC;gCACF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;4BACnB,CAAC;4BACD,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;wBAC3B,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;4BACtD,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qCAAqC,EAAE,GAAG,EAAE,GAAG,EAAE,EACjE,wDAAwD,CAAC,CAAA;4BAC3D,OAAO,GAAG,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAA;wBAC7D,CAAC;oBACH,CAAC;oBAED,+DAA+D;oBAC/D,8DAA8D;oBAC9D,6DAA6D;oBAC7D,mDAAmD;oBACnD,2DAA2D;oBAC3D,0DAA0D;oBAC1D,6DAA6D;oBAC7D,6DAA6D;oBAC7D,uDAAuD;oBACvD,MAAM,WAAW,GAAG,OAAO,EAAE,OAAO,CAAA;oBACpC,MAAM,QAAQ,GAAG,WAAW;wBAC1B,CAAC,CAAC,GAAG,WAAW,QAAQ,IAAI,CAAC,EAAE,EAAE;wBACjC,CAAC,CAAC,cAAc,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;oBAC9B,MAAM,QAAQ,GAAiB;wBAC7B,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,YAAY,EAAE,GAAG,CAAC,WAAW;wBAC7B,OAAO,EAAE,QAAQ;wBACjB,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;qBACnG,CAAA;oBACD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;wBAChE,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC;wBACjC,WAAW,EAAE,GAAG,CAAC,WAAW;qBAC7B,CAAC,CAAA;oBACF,IAAI,CAAC,MAAM,CAAC,EAAE;wBAAE,OAAO,GAAG,CAAC,sBAAsB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;oBAChE,+DAA+D;oBAC/D,yDAAyD;oBACzD,2DAA2D;oBAC3D,mDAAmD;oBACnD,OAAO,EAAE,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;gBACjF,CAAC;gBACD,KAAK,WAAW,CAAC;gBACjB,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,2DAA2D;oBAC3D,qCAAqC;oBACrC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;oBACvD,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE;wBACrC,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,WAAW,EAAE,GAAG,CAAC,WAAW;qBAC7B,CAAC,CAAA;oBACF,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,OAAO,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;oBACjD,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC/B,CAAC;gBACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,4DAA4D;oBAC5D,6DAA6D;oBAC7D,4DAA4D;oBAC5D,6DAA6D;oBAC7D,2CAA2C;oBAC3C,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;oBACpE,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;oBAClE,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI;wBAAE,OAAO,GAAG,CAAC,wCAAwC,CAAC,CAAA;oBAC7E,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAA;oBAClC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBAAE,OAAO,GAAG,CAAC,wCAAwC,SAAS,GAAG,CAAC,CAAA;oBACpG,MAAM,KAAK,GAAwB;wBACjC,MAAM;wBACN,IAAI;wBACJ,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,MAAM,EAAE,KAAK;wBACb,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;wBAChG,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;qBAC9D,CAAA;oBACD,IAAI,CAAC;wBACH,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;wBAChC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;oBACvG,CAAC;oBAAC,OAAO,IAAI,EAAE,CAAC;wBACd,IAAI,IAAI,YAAY,aAAa;4BAAE,OAAO,GAAG,CAAC,4BAA4B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;wBACzF,OAAO,GAAG,CAAC,4BAA4B,IAAI,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAC/F,CAAC;gBACH,CAAC;gBACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;oBACnF,OAAO,EAAE,CAAC,QAAQ,CAAC;wBACjB,KAAK,EAAE,IAAI,CAAC,MAAM;wBAClB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BACrB,EAAE,EAAE,CAAC,CAAC,EAAE;4BACR,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;4BACzC,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;yBACjC,CAAC,CAAC;qBACJ,CAAC,CAAC,CAAA;gBACL,CAAC;gBACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAClE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;wBAAE,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAA;oBAC/F,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;oBACzD,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;gBAC7C,CAAC;gBACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAClE,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;oBACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;wBAAE,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAA;oBAC/F,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;oBACvC,IAAI,CAAC,OAAO;wBAAE,OAAO,GAAG,CAAC,kCAAkC,QAAQ,4BAA4B,CAAC,CAAA;oBAChG,IAAI,CAAC;wBACH,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;wBACpE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;oBACjF,CAAC;oBAAC,OAAO,IAAI,EAAE,CAAC;wBACd,IAAI,IAAI,YAAY,aAAa;4BAAE,OAAO,GAAG,CAAC,4BAA4B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;wBACzF,OAAO,GAAG,CAAC,4BAA4B,IAAI,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAC/F,CAAC;gBACH,CAAC;gBACD;oBACE,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACtD,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;YACxE,OAAO,GAAG,CAAC,SAAS,EAAE,aAAa,GAAG,EAAE,CAAC,CAAA;QAC3C,CAAC;gBAAS,CAAC;YACT,KAAK,MAAM,CAAA,CAAC,gFAAgF;QAC9F,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -32,6 +32,9 @@ interface SearchProvider {
32
32
  * common case is "key not set, skip", not a misconfig.
33
33
  */
34
34
  export declare function resolveSearchProviderChain(): SearchProvider[];
35
+ export declare function parseBraveResults(data: unknown, max: number): SearchHit[];
36
+ export declare function parseSerperResults(data: unknown, max: number): SearchHit[];
37
+ export declare function parseExaResults(data: unknown, max: number): SearchHit[];
35
38
  /** Parse Tavily's `{results: [{title, url, content, score}]}` shape.
36
39
  * Tolerant of missing fields: a hit needs title + url to be usable. */
37
40
  export declare function parseTavilyResults(data: unknown, max: number): SearchHit[];
@@ -1 +1 @@
1
- {"version":3,"file":"web-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/core/llm/web-dispatcher.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAc5E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,WAAW,IAAI,OAAO,EAAE,CA8DvC;AAED,wBAAgB,kBAAkB,IAAI,cAAc,CAcnD;AAgHD,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;GAUG;AACH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,IAAI,OAAO,CAAA;IACpB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;CAC5E;AAoBD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,IAAI,cAAc,EAAE,CAkB7D;AAwED;wEACwE;AACxE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAgB1E;AAiBD;;;;sBAIsB;AACtB,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAgBnE;AA6CD;;4BAE4B;AAC5B,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAwB1E;AAID,UAAU,YAAY;IAAG,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AAEvD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAyCxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAuC1F;AAsED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAgCxD;AAKD,UAAU,KAAK;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAEjD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,EAAE,CAiBnE"}
1
+ {"version":3,"file":"web-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/core/llm/web-dispatcher.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAmB5E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,WAAW,IAAI,OAAO,EAAE,CAgEvC;AAED,wBAAgB,kBAAkB,IAAI,cAAc,CAcnD;AAgHD,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;GAUG;AACH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,IAAI,OAAO,CAAA;IACpB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;CAC5E;AA0CD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,IAAI,cAAc,EAAE,CAkB7D;AAqGD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAgBzE;AA4BD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAgB1E;AA6BD,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAkBvE;AAED;wEACwE;AACxE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAgB1E;AAiBD;;;;sBAIsB;AACtB,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAgBnE;AA6CD;;4BAE4B;AAC5B,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAwB1E;AAID,UAAU,YAAY;IAAG,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AAEvD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAyCxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAuC1F;AAsED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAgCxD;AAKD,UAAU,KAAK;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAEjD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,EAAE,CAiBnE"}
@@ -27,8 +27,13 @@ const DEFAULT_SEARCH_RESULTS = 8;
27
27
  const DDG_SEARCH_URL = 'https://duckduckgo.com/html/?q=';
28
28
  const METASO_API_BASE = 'https://metaso.cn/api/v1'; // adapt if path differs
29
29
  const TAVILY_API_URL = 'https://api.tavily.com/search';
30
+ const BRAVE_API_URL = 'https://api.search.brave.com/res/v1/web/search';
31
+ const SERPER_API_URL = 'https://google.serper.dev/search';
32
+ const EXA_API_URL = 'https://api.exa.ai/search';
30
33
  const JINA_READER_BASE = 'https://r.jina.ai/';
31
- const DEFAULT_PROVIDER_ORDER = 'tavily,duckduckgo,metaso';
34
+ // v1.2.121 chain now spans 6 providers. Order: agent-tuned (Tavily/Exa)
35
+ // → fast-and-cheap (Brave/Serper) → free fallbacks (DDG/Metaso).
36
+ const DEFAULT_PROVIDER_ORDER = 'tavily,brave,serper,exa,duckduckgo,metaso';
32
37
  const WEB_TOOL_NAMES = ['native_web_fetch', 'native_web_search'];
33
38
  export function isWebToolName(name) {
34
39
  return WEB_TOOL_NAMES.includes(name);
@@ -78,8 +83,10 @@ export function getWebTools() {
78
83
  'always start with native_web_search, then optionally native_web_fetch on a result. ' +
79
84
  '\n\n' +
80
85
  'Backend chain configurable via IMHUB_WEB_SEARCH_PROVIDERS '
81
- + '(default "tavily,duckduckgo,metaso"). Tavily needs TAVILY_API_KEY; '
82
- + 'Metaso needs METASO_API_KEY; DuckDuckGo needs none. Providers '
86
+ + '(default "tavily,brave,serper,exa,duckduckgo,metaso"). Key env vars: '
87
+ + 'TAVILY_API_KEY (agent-tuned, recommended), BRAVE_API_KEY (cheap, free 2K/mo), '
88
+ + 'SERPER_API_KEY (Google SERP relay), EXA_API_KEY (semantic), '
89
+ + 'METASO_API_KEY (中文 AI 搜索). DuckDuckGo needs none. Providers '
83
90
  + 'whose key is missing are skipped silently — set the env vars '
84
91
  + 'you want and the chain picks the first that returns ≥1 hit.',
85
92
  parameters: {
@@ -221,6 +228,28 @@ const PROVIDERS = {
221
228
  available: () => !!process.env.TAVILY_API_KEY,
222
229
  search: searchTavily,
223
230
  },
231
+ // v1.2.121 — Brave Search: cheapest "real" web index (free 2K/mo);
232
+ // privacy-positioned. Returns Google-quality results without scrape.
233
+ brave: {
234
+ name: 'brave',
235
+ available: () => !!process.env.BRAVE_API_KEY,
236
+ search: searchBrave,
237
+ },
238
+ // v1.2.121 — Serper: Google SERP via 3rd-party API. Fast + cheap;
239
+ // most useful when you need "what would Google show" results.
240
+ serper: {
241
+ name: 'serper',
242
+ available: () => !!process.env.SERPER_API_KEY,
243
+ search: searchSerper,
244
+ },
245
+ // v1.2.121 — Exa: semantic (vector) search over a curated index.
246
+ // Good for "find similar pages to <description>" agent queries
247
+ // where keyword search would miss intent.
248
+ exa: {
249
+ name: 'exa',
250
+ available: () => !!process.env.EXA_API_KEY,
251
+ search: searchExa,
252
+ },
224
253
  duckduckgo: {
225
254
  name: 'duckduckgo',
226
255
  available: () => true, // no key required
@@ -325,6 +354,156 @@ async function searchTavily(query, n, signal) {
325
354
  const data = await res.json();
326
355
  return parseTavilyResults(data, n);
327
356
  }
357
+ /**
358
+ * v1.2.121 — Brave Search (https://search.brave.com/help/api).
359
+ * Headers carry the X-Subscription-Token API key; query is a `q` query
360
+ * param. Response shape: `{web: {results: [{title, url, description}]}}`.
361
+ * 60req/min on the free tier — we don't pace because the agent loop is
362
+ * iter-bounded and a turn rarely calls search more than 5×.
363
+ */
364
+ async function searchBrave(query, n, signal) {
365
+ const key = process.env.BRAVE_API_KEY;
366
+ if (!key)
367
+ throw new Error('BRAVE_API_KEY not set');
368
+ const url = `${BRAVE_API_URL}?q=${encodeURIComponent(query)}&count=${n}`;
369
+ const res = await fetch(url, {
370
+ method: 'GET',
371
+ signal,
372
+ headers: {
373
+ 'Accept': 'application/json',
374
+ 'Accept-Encoding': 'gzip',
375
+ 'X-Subscription-Token': key,
376
+ 'User-Agent': 'agim-native',
377
+ },
378
+ });
379
+ if (!res.ok) {
380
+ const errBody = await res.text().catch(() => '');
381
+ throw new Error(`brave http ${res.status}: ${errBody.slice(0, 200)}`);
382
+ }
383
+ const data = await res.json();
384
+ return parseBraveResults(data, n);
385
+ }
386
+ export function parseBraveResults(data, max) {
387
+ if (!data || typeof data !== 'object')
388
+ return [];
389
+ const d = data;
390
+ const results = d.web?.results;
391
+ if (!Array.isArray(results))
392
+ return [];
393
+ const out = [];
394
+ for (const item of results) {
395
+ if (out.length >= max)
396
+ break;
397
+ if (!item || typeof item !== 'object')
398
+ continue;
399
+ const it = item;
400
+ const title = typeof it.title === 'string' ? it.title : '';
401
+ const url = typeof it.url === 'string' ? it.url : '';
402
+ const snippet = typeof it.description === 'string' ? it.description : '';
403
+ if (title && url)
404
+ out.push({ title, url, snippet });
405
+ }
406
+ return out;
407
+ }
408
+ /**
409
+ * v1.2.121 — Serper (https://serper.dev). POST with API key in header,
410
+ * returns Google's organic results shape `{organic: [{title, link,
411
+ * snippet}]}`. Cheaper than direct Google API; same surface.
412
+ */
413
+ async function searchSerper(query, n, signal) {
414
+ const key = process.env.SERPER_API_KEY;
415
+ if (!key)
416
+ throw new Error('SERPER_API_KEY not set');
417
+ const res = await fetch(SERPER_API_URL, {
418
+ method: 'POST',
419
+ signal,
420
+ headers: {
421
+ 'Content-Type': 'application/json',
422
+ 'X-API-KEY': key,
423
+ 'User-Agent': 'agim-native',
424
+ },
425
+ body: JSON.stringify({ q: query, num: n }),
426
+ });
427
+ if (!res.ok) {
428
+ const errBody = await res.text().catch(() => '');
429
+ throw new Error(`serper http ${res.status}: ${errBody.slice(0, 200)}`);
430
+ }
431
+ const data = await res.json();
432
+ return parseSerperResults(data, n);
433
+ }
434
+ export function parseSerperResults(data, max) {
435
+ if (!data || typeof data !== 'object')
436
+ return [];
437
+ const d = data;
438
+ if (!Array.isArray(d.organic))
439
+ return [];
440
+ const out = [];
441
+ for (const item of d.organic) {
442
+ if (out.length >= max)
443
+ break;
444
+ if (!item || typeof item !== 'object')
445
+ continue;
446
+ const it = item;
447
+ const title = typeof it.title === 'string' ? it.title : '';
448
+ // Note: Serper uses `link`, not `url`.
449
+ const url = typeof it.link === 'string' ? it.link : '';
450
+ const snippet = typeof it.snippet === 'string' ? it.snippet : '';
451
+ if (title && url)
452
+ out.push({ title, url, snippet });
453
+ }
454
+ return out;
455
+ }
456
+ /**
457
+ * v1.2.121 — Exa (https://exa.ai). Semantic / neural search over a
458
+ * curated index. Returns `{results: [{title, url, text, score}]}`. We
459
+ * request `numResults` and skip `contents` (too verbose for SearchHit
460
+ * shape; agent can web_fetch the URL it cares about).
461
+ */
462
+ async function searchExa(query, n, signal) {
463
+ const key = process.env.EXA_API_KEY;
464
+ if (!key)
465
+ throw new Error('EXA_API_KEY not set');
466
+ const res = await fetch(EXA_API_URL, {
467
+ method: 'POST',
468
+ signal,
469
+ headers: {
470
+ 'Content-Type': 'application/json',
471
+ 'x-api-key': key,
472
+ 'User-Agent': 'agim-native',
473
+ },
474
+ body: JSON.stringify({ query, numResults: n, useAutoprompt: true }),
475
+ });
476
+ if (!res.ok) {
477
+ const errBody = await res.text().catch(() => '');
478
+ throw new Error(`exa http ${res.status}: ${errBody.slice(0, 200)}`);
479
+ }
480
+ const data = await res.json();
481
+ return parseExaResults(data, n);
482
+ }
483
+ export function parseExaResults(data, max) {
484
+ if (!data || typeof data !== 'object')
485
+ return [];
486
+ const d = data;
487
+ if (!Array.isArray(d.results))
488
+ return [];
489
+ const out = [];
490
+ for (const item of d.results) {
491
+ if (out.length >= max)
492
+ break;
493
+ if (!item || typeof item !== 'object')
494
+ continue;
495
+ const it = item;
496
+ const title = typeof it.title === 'string' ? it.title : '';
497
+ const url = typeof it.url === 'string' ? it.url : '';
498
+ // Exa returns `text` (snippet) when requested; usually present but
499
+ // not guaranteed if useAutoprompt rephrased and content was sparse.
500
+ const snippet = typeof it.text === 'string' ? it.text
501
+ : typeof it.summary === 'string' ? it.summary : '';
502
+ if (title && url)
503
+ out.push({ title, url, snippet });
504
+ }
505
+ return out;
506
+ }
328
507
  /** Parse Tavily's `{results: [{title, url, content, score}]}` shape.
329
508
  * Tolerant of missing fields: a hit needs title + url to be usable. */
330
509
  export function parseTavilyResults(data, max) {