dsh-advisor 0.5.3 → 0.5.4

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
@@ -5,7 +5,7 @@
5
5
  [![npm](https://img.shields.io/npm/dt/dsh-advisor)](https://www.npmjs.com/package/dsh-advisor)
6
6
  [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
7
  ![node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-339933.svg)
8
- ![dsh](https://img.shields.io/badge/dsh-0.2.0--rc.1-4B32C3.svg)
8
+ ![dsh](https://img.shields.io/badge/dsh-0.2.0--rc.2-4B32C3.svg)
9
9
  ![dsh tui](https://img.shields.io/badge/dsh%20tui-compatible-4B32C3.svg)
10
10
  [![dshfind](https://dshfind.com/api/badge/omdsh-dev/dsh-advisor)](https://dshfind.com/plugins/omdsh-dev/dsh-advisor?ref=badge)
11
11
 
@@ -28,7 +28,7 @@ Same plugin, either front end — the only difference is the `--profile` flag. P
28
28
 
29
29
  ### Configuration
30
30
 
31
- Edit the `config` of the `advisor` row in your profile's patch layer (`~/.dsh/profiles/<profile>/cordis.patch.yml`). All five fields are schema-volatile live fields (dsh ≥ 0.1.7-rc.1): the web card and the TUI `/settings` screen write this same entry config — persisted in the profile patch, committed without a remount. (A pre-0.1.7 `$DSH_HOME/settings.yaml` `advisor:` section no longer exists: dsh imports it into the active profile once and renames the file `.imported`.)
31
+ Edit the `config` of the `advisor` row in your profile's patch layer (`~/.dsh/profiles/<profile>/cordis.patch.yml`). All seven fields are schema-volatile live fields (dsh ≥ 0.1.7-rc.1): the web card and the TUI `/settings` screen write this same entry config — persisted in the profile patch, committed without a remount. (A pre-0.1.7 `$DSH_HOME/settings.yaml` `advisor:` section no longer exists: dsh imports it into the active profile once and renames the file `.imported`.)
32
32
 
33
33
  > **Breaking change (2026-09-26): the `enabled` config key was removed.** The plugin-row enable/disable toggle in the host UI is the master switch — a running row is enabled, and there is nothing left to configure for it. A stored profile still carrying an `enabled:` line keeps working: the line is **silently ignored** (accepted, never read, never re-persisted — 2026-09-27 ruling, no manual deletion needed); the key is deprecated and the write paths no longer persist it.
34
34
 
@@ -41,17 +41,21 @@ Edit the `config` of the `advisor` row in your profile's patch layer (`~/.dsh/pr
41
41
  systemPrompt: "" # optional; "" = built-in reviewer prompt
42
42
  immuneTurns: 3 # int ≥ 0, default 3 — cooldown after a delivered steer
43
43
  maxDeltaMessages: 60 # int ≥ 0, default 60 — delta window; 0 = unbounded
44
+ maxTokens: 768 # int 128..16384, default 768 — token budget for one advisor review (issue #102)
45
+ proseFallback: false # boolean, default false — deliver a frame-less prose reply as a nit note (opt-in)
44
46
  ```
45
47
 
46
48
  `provider` and `model` are **mandatory**: either missing or empty is a hard gate — the advisor never starts a model call and reports a disabled-with-reason status; unknown config keys are rejected.
47
49
 
50
+ If the advisor is enabled and its runtime looks healthy but it never speaks, check `/advisor status`: a non-zero `Dropped:` line names the class — `empty` replies mean a thinking model is exhausting the token budget on reasoning (raise `maxTokens`, int 128..16384; the issue reporter verified 4096 restores output), `unparsed` replies mean prose without a JSON frame is being dropped (enable `proseFallback`, which delivers the cleaned prose as a low-severity note; JSON frames stay primary). Details → [docs/configuration.md](docs/configuration.md).
51
+
48
52
  The same keys are read and edited from **three surfaces** (one store — the advisor entry config above; every surface shares the same key set and the same hard gate, with the host-side gate as the final line of defense on every path):
49
53
 
50
54
  1. **Plugin-row config** — the profile patch layer (`~/.dsh/profiles/<profile>/cordis.patch.yml`). This is where the config lives.
51
55
  2. **dsh web Plugins page — the dsh-advisor bundle's own page** — the Advisor **card** (bundle key `dsh-advisor`), a flat settings form (the page's title/description come from the plugin's locale meta) with provider / model selects restricted to system-configured providers and their models, and the optional fields. Saving writes the advisor entry's config (landed through the config editor into the profile patch) and applies to running sessions immediately — no restart. The card requires a dsh web build whose shell declares the `plugins.bundle.config` card slot (dsh ≥ 0.1.7-rc.1) and loads packages that declare `dsh.client`; it reads and writes the config through the official `GatewayService` RPC channel (`/api/advisor/get` + `/api/advisor/set`), which is not gated by the settings exposure allowlist. It additionally blocks saving while a required field is empty.
52
56
  3. **`/advisor` command** — per-session and ephemeral: it flips a session override and pins a per-session reviewer model, never the persisted config (see [Verify](#verify)).
53
57
 
54
- In a **dsh-tui** profile the same four keys are editable in the TUI `/settings` screen: run `dsh --profile dsh-tui`, open `/settings`, and edit the **Advisor** section (`provider` / `model` / `immuneTurns` / `maxDeltaMessages`, each with zh/en label + hint). Edits are staged and written on save through the revision-fenced `settings.mutate` into the same advisor entry config the web card writes, and re-apply live without a restart. `systemPrompt` is NOT a TUI field (the TUI text control is single-line; a multi-line prompt would be truncated) — edit it via the web card or the profile patch layer. The section requires dsh-tui ≥ v0.8.0 (shipped in the `dsh-tui-settings-sections` row of the v0.8.0+ bundle); older dsh-tui versions no-op it cleanly and the profile patch layer remains the edit path. `/advisor config` stays a read-only readback whose edit hint names the `/settings` screen when the seam is mounted. Save behavior differs from the web card: the TUI seam has no cross-field validation, so a save may leave `provider`/`model` empty — the explicit model gate resolves that to disabled-with-reason at runtime (visible via `/advisor status` and `/advisor config`); the web card blocks such a save outright. Full reference → [docs/configuration.md](docs/configuration.md).
58
+ In a **dsh-tui** profile the same six keys are editable in the TUI `/settings` screen: run `dsh --profile dsh-tui`, open `/settings`, and edit the **Advisor** section (`provider` / `model` / `immuneTurns` / `maxDeltaMessages` / `maxTokens` / `proseFallback`, each with zh/en label + hint). Edits are staged and written on save through the revision-fenced `settings.mutate` into the same advisor entry config the web card writes, and re-apply live without a restart. `systemPrompt` is NOT a TUI field (the TUI text control is single-line; a multi-line prompt would be truncated) — edit it via the web card or the profile patch layer. The section requires dsh-tui ≥ v0.8.0 (shipped in the `dsh-tui-settings-sections` row of the v0.8.0+ bundle); older dsh-tui versions no-op it cleanly and the profile patch layer remains the edit path. `/advisor config` stays a read-only readback whose edit hint names the `/settings` screen when the seam is mounted. Save behavior differs from the web card: the TUI seam has no cross-field validation, so a save may leave `provider`/`model` empty — the explicit model gate resolves that to disabled-with-reason at runtime (visible via `/advisor status` and `/advisor config`); the web card blocks such a save outright. Full reference → [docs/configuration.md](docs/configuration.md).
55
59
 
56
60
  ![Advisor card on the dsh web Plugins page (the dsh-advisor bundle page)](docs/screenshots/advisor-settings-card.webp)
57
61
 
@@ -67,7 +71,7 @@ With the advisor installed and its plugin row enabled (the row switch on the Plu
67
71
  /advisor toggle the advisor for this session
68
72
  /advisor on enable the advisor for this session
69
73
  /advisor off disable the advisor for this session
70
- /advisor status show state, model, runtime status, pending count, last activity
74
+ /advisor status show state, model, runtime status, pending count, last activity, and drop counters when non-zero
71
75
  /advisor model show the effective reviewer model and its source (session override or global default)
72
76
  /advisor model set <provider> <model> pin a reviewer model for this session only
73
77
  /advisor model reset drop the session pin and re-inherit the global defaults
package/README.zh.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![npm](https://img.shields.io/npm/dt/dsh-advisor)](https://www.npmjs.com/package/dsh-advisor)
6
6
  [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
7
  ![node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-339933.svg)
8
- ![dsh](https://img.shields.io/badge/dsh-0.2.0--rc.1-4B32C3.svg)
8
+ ![dsh](https://img.shields.io/badge/dsh-0.2.0--rc.2-4B32C3.svg)
9
9
  ![dsh tui](https://img.shields.io/badge/dsh%20tui-compatible-4B32C3.svg)
10
10
  [![dshfind](https://dshfind.com/api/badge/omdsh-dev/dsh-advisor?lang=zh)](https://dshfind.com/zh/plugins/omdsh-dev/dsh-advisor?ref=badge)
11
11
 
@@ -28,7 +28,7 @@ dsh plugin --profile dsh-tui add dsh-advisor # dsh-tui 终端 profile
28
28
 
29
29
  ### 配置
30
30
 
31
- 编辑 profile 补丁层(`~/.dsh/profiles/<profile>/cordis.patch.yml`)里 `advisor` 行的 `config`。五个字段全部是 schema-volatile 的 live 字段(dsh ≥ 0.1.7-rc.1):web 卡片与 TUI `/settings` 屏幕写入的就是这同一份 entry config——持久化在 profile 补丁层,无需重挂载即生效。(pre-0.1.7 的 `$DSH_HOME/settings.yaml` `advisor:` 分节已不存在:dsh 会在首次启动时把它导入活跃 profile 一次,并将该文件改名为 `.imported`。)
31
+ 编辑 profile 补丁层(`~/.dsh/profiles/<profile>/cordis.patch.yml`)里 `advisor` 行的 `config`。七个字段全部是 schema-volatile 的 live 字段(dsh ≥ 0.1.7-rc.1):web 卡片与 TUI `/settings` 屏幕写入的就是这同一份 entry config——持久化在 profile 补丁层,无需重挂载即生效。(pre-0.1.7 的 `$DSH_HOME/settings.yaml` `advisor:` 分节已不存在:dsh 会在首次启动时把它导入活跃 profile 一次,并将该文件改名为 `.imported`。)
32
32
 
33
33
  > **破坏性变更(2026-09-26):`enabled` 配置键已移除。** 宿主 UI 中插件行的启用/停用开关就是总开关——插件行在运行即启用,无需任何配置键。存量 profile 若仍携带 `enabled:` 行**继续正常工作**:该行会被**静默忽略**(接受但剥离,永不读取、永不回写——2026-09-27 裁决,无需手工删除);该键已废弃,写入路径不再持久化它。
34
34
 
@@ -41,17 +41,21 @@ dsh plugin --profile dsh-tui add dsh-advisor # dsh-tui 终端 profile
41
41
  systemPrompt: "" # 可选;"" = 内置评审 prompt
42
42
  immuneTurns: 3 # 整数 ≥ 0,默认 3 —— 打断性送达后的冷却步数
43
43
  maxDeltaMessages: 60 # 整数 ≥ 0,默认 60 —— delta 窗口;0 = 无上限
44
+ maxTokens: 768 # 整数 128..16384,默认 768 —— 单次评审的 token 预算(issue #102)
45
+ proseFallback: false # 布尔,默认 false —— 无 JSON 帧时将散文回复作为 nit note 投递(opt-in)
44
46
  ```
45
47
 
46
48
  `provider` 与 `model` 为**必填**:任一缺失或为空是一个硬门禁——advisor 不会发起任何模型调用,并报告带原因的禁用状态(disabled-with-reason);未知配置键会被拒绝。
47
49
 
50
+ 若 advisor 已启用、runtime 状态正常却从不说话,请运行 `/advisor status`:非零的 `Dropped:` 行会指明类别——`empty`(空回复)表示思考型模型把 token 预算耗在了 reasoning 上(调高 `maxTokens`,整数 128..16384;issue 报告者实测 4096 可恢复产出);`unparsed`(无帧散文)表示正文不含 JSON 帧的回复被丢弃(开启 `proseFallback`,将清理后的散文作为低严重级 note 投递;JSON 帧始终优先)。详见 [docs/configuration.md](docs/configuration.md)。
51
+
48
52
  同一组键可在**三个配置面**读取与编辑(只有一份存储——上面的 advisor entry config;各处使用同一组键与同一个硬门禁,宿主侧门禁始终是所有路径上的最后防线):
49
53
 
50
54
  1. **插件行 config** —— profile 补丁层(`~/.dsh/profiles/<profile>/cordis.patch.yml`)。配置就存放在这里。
51
55
  2. **dsh web 的「插件」页 —— dsh-advisor 组合包自己的页面** —— Advisor **卡片**(bundle key `dsh-advisor`),一个**平铺**的设置表单(页面标题/描述来自插件 locale 元数据),含只列出系统内已配置 provider 及其模型的 provider/model 选择框与可选字段。保存写入 advisor entry 的 config(经 config editor 落入 profile 补丁层),运行中的会话立即生效,无需重启。卡片要求 dsh web 构建的 shell 声明了 `plugins.bundle.config` 卡片 slot(dsh ≥ 0.1.7-rc.1)并能加载 `dsh.client` 声明包;它通过官方 `GatewayService` RPC 通道读写该配置(`/api/advisor/get` + `/api/advisor/set`),不受 settings 暴露白名单门控。卡片还会在必填字段为空时阻止保存。
52
56
  3. **`/advisor` 指令** —— 按会话且临时:翻转的是会话级 override、并为会话钉住评审模型,从不修改持久化配置(见[验证](#验证))。
53
57
 
54
- 在 **dsh-tui** profile 中,同样的四个键可在 TUI `/settings` 屏幕编辑:运行 `dsh --profile dsh-tui`、打开 `/settings`,编辑 **Advisor** 分节(`provider` / `model` / `immuneTurns` / `maxDeltaMessages`,每项均带中英文标签与提示)。编辑先暂存,保存时经 revision 栅栏保护的 `settings.mutate` 写入 web 卡片所写的同一份 advisor entry config,并 live 重应用、无需重启。`systemPrompt` **不是** TUI 字段(TUI text 控件为单行;多行 prompt 会被截断)——请经 web 卡片或 profile 补丁层编辑。该分节要求 dsh-tui ≥ v0.8.0(随 v0.8.0+ 组合包的 `dsh-tui-settings-sections` 行提供);旧版 dsh-tui 会干净地 no-op,profile 补丁层仍是编辑路径。`/advisor config` 仍是只读回读,seam 挂载时其编辑提示指向 `/settings` 屏幕。保存行为与 web 卡片不同:TUI seam 没有跨字段校验,一次保存可能把空 `provider`/`model` 写入——显式模型门禁会在运行时把它解析为 disabled-with-reason(可见于 `/advisor status` 与 `/advisor config`);web 卡片则会直接阻止这样的保存。完整参考 → [docs/configuration.md](docs/configuration.md)。
58
+ 在 **dsh-tui** profile 中,同样的六个键可在 TUI `/settings` 屏幕编辑:运行 `dsh --profile dsh-tui`、打开 `/settings`,编辑 **Advisor** 分节(`provider` / `model` / `immuneTurns` / `maxDeltaMessages` / `maxTokens` / `proseFallback`,每项均带中英文标签与提示)。编辑先暂存,保存时经 revision 栅栏保护的 `settings.mutate` 写入 web 卡片所写的同一份 advisor entry config,并 live 重应用、无需重启。`systemPrompt` **不是** TUI 字段(TUI text 控件为单行;多行 prompt 会被截断)——请经 web 卡片或 profile 补丁层编辑。该分节要求 dsh-tui ≥ v0.8.0(随 v0.8.0+ 组合包的 `dsh-tui-settings-sections` 行提供);旧版 dsh-tui 会干净地 no-op,profile 补丁层仍是编辑路径。`/advisor config` 仍是只读回读,seam 挂载时其编辑提示指向 `/settings` 屏幕。保存行为与 web 卡片不同:TUI seam 没有跨字段校验,一次保存可能把空 `provider`/`model` 写入——显式模型门禁会在运行时把它解析为 disabled-with-reason(可见于 `/advisor status` 与 `/advisor config`);web 卡片则会直接阻止这样的保存。完整参考 → [docs/configuration.md](docs/configuration.md)。
55
59
 
56
60
  ![dsh web「插件」页(dsh-advisor 组合包页面)上的 Advisor 卡片](docs/screenshots/advisor-settings-card.webp)
57
61
 
@@ -67,7 +71,7 @@ dsh --profile web --dump-config # 显示带 advisor 配置行的 "# == dsh-adv
67
71
  /advisor toggle the advisor for this session
68
72
  /advisor on enable the advisor for this session
69
73
  /advisor off disable the advisor for this session
70
- /advisor status show state, model, runtime status, pending count, last activity
74
+ /advisor status show state, model, runtime status, pending count, last activity, and drop counters when non-zero
71
75
  /advisor model show the effective reviewer model and its source (session override or global default)
72
76
  /advisor model set <provider> <model> pin a reviewer model for this session only
73
77
  /advisor model reset drop the session pin and re-inherit the global defaults
@@ -10,9 +10,10 @@
10
10
  * - a FIFO queue of pending transcript deltas (bounded — spec §6 "bounded
11
11
  * backlog"; drop-newest when full);
12
12
  * - a serialized async drain loop: one `llm.stream` call per delta with
13
- * `{ provider, model, system, messages: [user delta], maxTokens: 768 }` and
14
- * `purpose` left UNSET (KD-5 — an advisor call is an ordinary conversation
15
- * request);
13
+ * `{ provider, model, system, messages: [user delta], maxTokens }` (the
14
+ * configured budget — {@link AdvisorRuntimeOptions.maxTokens}, default
15
+ * `ADVISOR_MAX_TOKENS`) and `purpose` left UNSET (KD-5 — an advisor call is
16
+ * an ordinary conversation request);
16
17
  * - a call-level deadline on every `llm.stream` call (dsh-timeout `deadline`,
17
18
  * fused with the dispose signal and raced per chunk): a hung provider stream
18
19
  * times out instead of wedging the drain, and a timeout is a transient
@@ -20,6 +21,19 @@
20
21
  * - KD-2 JSON-frame extraction: the first balanced `{…}` in the reply is
21
22
  * parsed (tolerant of prose/fences), `note` must be non-empty (else
22
23
  * drop+log), `severity` missing/invalid defaults to `nit`, no parse retry;
24
+ * the KD-I2 prose fallback (issue #102, opt-in — see
25
+ * {@link extractProseFallbackNote}) lets a reply that yields no valid
26
+ * frame note through as a nit note when the `proseFallback` option is on —
27
+ * no parseable frame at all, or frames whose note is empty/invalid; the
28
+ * JSON frame keeps priority (a usable frame note blocks the fallback), and
29
+ * the default (off) preserves the KD-2 drop semantics;
30
+ * - KD-I3 drop visibility (issue #102): a completed call whose reply yields
31
+ * no note is classified — EMPTY (body empty after trim; the classic case is
32
+ * a thinking model exhausting the token budget) vs UNPARSED (text present,
33
+ * no parseable frame, fallback off/rescued nothing) — counted with
34
+ * timestamps and warn-once hints, readable via the `emptyReplies` /
35
+ * `unparsedReplies` / `lastEmptyReplyAt` / `lastUnparsedReplyAt` getters
36
+ * (the T7 `/advisor status` surface);
23
37
  * - the KD-5 failure policy: transient → 1 retry with a short backoff → drop;
24
38
  * 3 consecutive dropped deltas → flush the pending backlog (never stall);
25
39
  * permanent errors (`invalid_request_error`, model-not-found, "is not
@@ -90,6 +104,24 @@ export interface AdvisorRuntimeOptions {
90
104
  readonly callTimeoutMs?: number;
91
105
  /** Bounded backlog (spec §6); default 32 — drop-newest with a log when full. */
92
106
  readonly maxQueued?: number;
107
+ /**
108
+ * Token budget for one advisor call (KD-I1, issue #102 — the config key
109
+ * `maxTokens` threaded through): when omitted the code default
110
+ * {@link ADVISOR_MAX_TOKENS} (768) applies, keeping every pre-existing
111
+ * 768 pin valid. Bounds (128..16384) are enforced by the config schema;
112
+ * the runtime threads the value as-is.
113
+ */
114
+ readonly maxTokens?: number;
115
+ /**
116
+ * Opt-in prose fallback (KD-I2, issue #102): when true, a completed call
117
+ * whose reply has text but yields NO valid note from its JSON frames — no
118
+ * parseable frame at all, or frames whose note is empty/invalid — delivers
119
+ * the cleaned prose body ({@link extractProseFallbackNote}: trim → strip a
120
+ * surrounding fence → cap) as a `nit` note through the normal
121
+ * guard/delivery pipeline. Default false — the KD-2 drop semantics stay
122
+ * byte-identical.
123
+ */
124
+ readonly proseFallback?: boolean;
93
125
  /** The llm service (`ctx.llm`); injectable for tests. */
94
126
  readonly llm: AdvisorLlm;
95
127
  /**
@@ -121,13 +153,23 @@ export interface AdvisorRuntimeOptions {
121
153
  * guard stays re-bounded downstream: `extractAdviceNote` caps the note at
122
154
  * `ADVISOR_NOTE_MAX_CHARS` and `buildAdvisorMessage` bounds the notice
123
155
  * summary via `boundContextSummary`.
156
+ *
157
+ * KD-I1 (issue #102, user direction 2026-09-29): KD-6's "code invariant, not
158
+ * an operator switch" ruling was superseded again — the budget is now
159
+ * operator-configurable (config key `maxTokens`, bounds 128..16384, Settings
160
+ * UI in Task 3) because thinking models behind third-party gateways exhaust a
161
+ * fixed budget on reasoning and return an EMPTY body (finish: max-tokens).
162
+ * This constant remains the CODE DEFAULT for unconfigured/plain entries: the
163
+ * runtime falls back to it, so default behavior (and every existing 768 pin)
164
+ * is unchanged.
124
165
  */
125
166
  export declare const ADVISOR_MAX_TOKENS = 768;
126
167
  /**
127
168
  * One extracted note's length cap (qc3 F-2 / qc2 S-1): a verbose/rogue advisor
128
169
  * reply must not inject an unbounded user-role message into the primary
129
170
  * session (the token budget is now matched to this cap — 768). Truncated with
130
- * a '…' marker.
171
+ * a '…' marker. The KD-I2 prose fallback note is capped by the same bound —
172
+ * a raised generation budget must not enlarge the injection surface.
131
173
  */
132
174
  export declare const ADVISOR_NOTE_MAX_CHARS = 768;
133
175
  /**
@@ -144,6 +186,25 @@ export declare const ADVISOR_NOTE_MAX_CHARS = 768;
144
186
  * session). Never throws.
145
187
  */
146
188
  export declare function extractAdviceNote(reply: string): AdviceNote | undefined;
189
+ /**
190
+ * The KD-I2 prose fallback cleanup (issue #102; opt-in — see
191
+ * {@link AdvisorRuntimeOptions.proseFallback}). Frozen-spec supersession
192
+ * note: the strict KD-2 JSON-frame requirement stays the DEFAULT — this
193
+ * function is applied at the extraction call site ONLY when
194
+ * {@link extractAdviceNote} extracted no valid note (no parseable frame, or
195
+ * every frame's note empty/invalid) AND the flag is on, so a reply whose
196
+ * frame yields a usable note still delivers that note.
197
+ *
198
+ * Cleanup: trim → strip ONE surrounding markdown fence (an unterminated or
199
+ * non-surrounding fence is kept as-is) → cap at {@link ADVISOR_NOTE_MAX_CHARS}
200
+ * with a '…' marker (the same injection bound as {@link extractAdviceNote} —
201
+ * a raised generation budget must not enlarge the primary session's injection
202
+ * surface). An empty result (whitespace-only reply, fence-only reply) is NOT
203
+ * prose: the caller classifies it as an EMPTY drop (KD-I3), never as an
204
+ * unparsed/prose case. Severity is always `nit` — prose carries no structured
205
+ * severity. Never throws.
206
+ */
207
+ export declare function extractProseFallbackNote(reply: string): AdviceNote | undefined;
147
208
  /**
148
209
  * Per-session advisor runtime: queue deltas, async drain, `llm.stream` call,
149
210
  * JSON-frame note extraction, and the KD-5 failure policy. All async work is
@@ -153,6 +214,8 @@ export declare class AdvisorRuntime {
153
214
  private readonly provider;
154
215
  private readonly model;
155
216
  private readonly systemPrompt;
217
+ private readonly maxTokens;
218
+ private readonly proseFallback;
156
219
  private readonly retryBackoffMs;
157
220
  private readonly callTimeoutMs;
158
221
  private readonly maxQueued;
@@ -181,6 +244,20 @@ export declare class AdvisorRuntime {
181
244
  private drainPromise;
182
245
  /** Epoch-ms of the last note accepted by the emission guard (T7 status). */
183
246
  private lastActivityAt;
247
+ /**
248
+ * KD-I3 drop counters (issue #102): EMPTY vs UNPARSED no-note drops with
249
+ * their last-occurrence timestamps — the "advisor is running but never
250
+ * speaks" visibility surface (T2 renders them on `/advisor status`). Only
251
+ * COMPLETED model calls are classified here; transport drops stay in the
252
+ * KD-5 consecutive-drop path.
253
+ */
254
+ private emptyReplyCount;
255
+ private unparsedReplyCount;
256
+ private lastEmptyReplyTimestamp;
257
+ private lastUnparsedReplyTimestamp;
258
+ /** Warn-once latches, one per drop class per runtime (KD-I3). */
259
+ private emptyReplyWarned;
260
+ private unparsedReplyWarned;
184
261
  constructor(options: AdvisorRuntimeOptions);
185
262
  /** Current per-session status (T7 `/advisor status` surface). */
186
263
  status(): AdvisorRuntimeStatus;
@@ -191,6 +268,23 @@ export declare class AdvisorRuntime {
191
268
  * emission guard, or `undefined` before the first accepted note.
192
269
  */
193
270
  get lastActivity(): number | undefined;
271
+ /**
272
+ * KD-I3 (issue #102) — replies dropped because the body was empty after
273
+ * trim (mostly a reasoning model exhausting the token budget). Read-only
274
+ * status outlet, same style as `pendingCount`/`lastActivity`.
275
+ */
276
+ get emptyReplies(): number;
277
+ /**
278
+ * KD-I3 (issue #102) — replies dropped because no valid note was extracted
279
+ * (no parseable JSON frame, or frames whose note is empty/invalid) and the
280
+ * prose fallback delivered nothing (`proseFallback` off, or on with an
281
+ * empty cleanup result). Read-only status outlet.
282
+ */
283
+ get unparsedReplies(): number;
284
+ /** KD-I3 — epoch-ms of the last EMPTY-reply drop, `undefined` before the first. */
285
+ get lastEmptyReplyAt(): number | undefined;
286
+ /** KD-I3 — epoch-ms of the last UNPARSED-reply drop, `undefined` before the first. */
287
+ get lastUnparsedReplyAt(): number | undefined;
194
288
  /**
195
289
  * Queue one rendered transcript delta (from the T3 observer's `onDelta`).
196
290
  * While `quota_exhausted`, deltas queue up (bounded) but the drain is never
@@ -226,6 +320,19 @@ export declare class AdvisorRuntime {
226
320
  private processDelta;
227
321
  /** One model call: build options, stream text, extract the note (KD-2). */
228
322
  private callModel;
323
+ /**
324
+ * KD-I3: count + timestamp an EMPTY-reply drop and warn ONCE per runtime
325
+ * with the fix hint (raise the budget); repeats fall back to a debug line.
326
+ * The finish reason rides along — `max-tokens` vs `stop` is the
327
+ * budget-exhausted vs genuinely-empty tell (issue #102 evidence).
328
+ */
329
+ private recordEmptyReply;
330
+ /**
331
+ * KD-I3: count + timestamp an UNPARSED-reply drop and warn ONCE per runtime
332
+ * with the fix hint (enable the prose fallback); repeats fall back to the
333
+ * original KD-2 debug line.
334
+ */
335
+ private recordUnparsedReply;
229
336
  private buildOptions;
230
337
  /**
231
338
  * Capability-gate the `reasoningEffort: 'off'` option (qc2 W-1 / qc1 W-1 /
@@ -10,9 +10,10 @@
10
10
  * - a FIFO queue of pending transcript deltas (bounded — spec §6 "bounded
11
11
  * backlog"; drop-newest when full);
12
12
  * - a serialized async drain loop: one `llm.stream` call per delta with
13
- * `{ provider, model, system, messages: [user delta], maxTokens: 768 }` and
14
- * `purpose` left UNSET (KD-5 — an advisor call is an ordinary conversation
15
- * request);
13
+ * `{ provider, model, system, messages: [user delta], maxTokens }` (the
14
+ * configured budget — {@link AdvisorRuntimeOptions.maxTokens}, default
15
+ * `ADVISOR_MAX_TOKENS`) and `purpose` left UNSET (KD-5 — an advisor call is
16
+ * an ordinary conversation request);
16
17
  * - a call-level deadline on every `llm.stream` call (dsh-timeout `deadline`,
17
18
  * fused with the dispose signal and raced per chunk): a hung provider stream
18
19
  * times out instead of wedging the drain, and a timeout is a transient
@@ -20,6 +21,19 @@
20
21
  * - KD-2 JSON-frame extraction: the first balanced `{…}` in the reply is
21
22
  * parsed (tolerant of prose/fences), `note` must be non-empty (else
22
23
  * drop+log), `severity` missing/invalid defaults to `nit`, no parse retry;
24
+ * the KD-I2 prose fallback (issue #102, opt-in — see
25
+ * {@link extractProseFallbackNote}) lets a reply that yields no valid
26
+ * frame note through as a nit note when the `proseFallback` option is on —
27
+ * no parseable frame at all, or frames whose note is empty/invalid; the
28
+ * JSON frame keeps priority (a usable frame note blocks the fallback), and
29
+ * the default (off) preserves the KD-2 drop semantics;
30
+ * - KD-I3 drop visibility (issue #102): a completed call whose reply yields
31
+ * no note is classified — EMPTY (body empty after trim; the classic case is
32
+ * a thinking model exhausting the token budget) vs UNPARSED (text present,
33
+ * no parseable frame, fallback off/rescued nothing) — counted with
34
+ * timestamps and warn-once hints, readable via the `emptyReplies` /
35
+ * `unparsedReplies` / `lastEmptyReplyAt` / `lastUnparsedReplyAt` getters
36
+ * (the T7 `/advisor status` surface);
23
37
  * - the KD-5 failure policy: transient → 1 retry with a short backoff → drop;
24
38
  * 3 consecutive dropped deltas → flush the pending backlog (never stall);
25
39
  * permanent errors (`invalid_request_error`, model-not-found, "is not
@@ -106,13 +120,23 @@ import { createEmissionGuard } from './emission-guard.js';
106
120
  * guard stays re-bounded downstream: `extractAdviceNote` caps the note at
107
121
  * `ADVISOR_NOTE_MAX_CHARS` and `buildAdvisorMessage` bounds the notice
108
122
  * summary via `boundContextSummary`.
123
+ *
124
+ * KD-I1 (issue #102, user direction 2026-09-29): KD-6's "code invariant, not
125
+ * an operator switch" ruling was superseded again — the budget is now
126
+ * operator-configurable (config key `maxTokens`, bounds 128..16384, Settings
127
+ * UI in Task 3) because thinking models behind third-party gateways exhaust a
128
+ * fixed budget on reasoning and return an EMPTY body (finish: max-tokens).
129
+ * This constant remains the CODE DEFAULT for unconfigured/plain entries: the
130
+ * runtime falls back to it, so default behavior (and every existing 768 pin)
131
+ * is unchanged.
109
132
  */
110
133
  export const ADVISOR_MAX_TOKENS = 768;
111
134
  /**
112
135
  * One extracted note's length cap (qc3 F-2 / qc2 S-1): a verbose/rogue advisor
113
136
  * reply must not inject an unbounded user-role message into the primary
114
137
  * session (the token budget is now matched to this cap — 768). Truncated with
115
- * a '…' marker.
138
+ * a '…' marker. The KD-I2 prose fallback note is capped by the same bound —
139
+ * a raised generation budget must not enlarge the injection surface.
116
140
  */
117
141
  export const ADVISOR_NOTE_MAX_CHARS = 768;
118
142
  const DEFAULT_RETRY_BACKOFF_MS = 1_000;
@@ -207,6 +231,42 @@ export function extractAdviceNote(reply) {
207
231
  }
208
232
  return undefined;
209
233
  }
234
+ /**
235
+ * A reply fully wrapped in ONE markdown fence: an opening fence line (with or
236
+ * without an info string) and a closing fence at the very end. Trailing prose
237
+ * after the closing fence means the fence is not surrounding — no match.
238
+ */
239
+ const SURROUNDING_FENCE_PATTERN = /^```[^\n]*\n([\s\S]*?)\n?```$/;
240
+ /**
241
+ * The KD-I2 prose fallback cleanup (issue #102; opt-in — see
242
+ * {@link AdvisorRuntimeOptions.proseFallback}). Frozen-spec supersession
243
+ * note: the strict KD-2 JSON-frame requirement stays the DEFAULT — this
244
+ * function is applied at the extraction call site ONLY when
245
+ * {@link extractAdviceNote} extracted no valid note (no parseable frame, or
246
+ * every frame's note empty/invalid) AND the flag is on, so a reply whose
247
+ * frame yields a usable note still delivers that note.
248
+ *
249
+ * Cleanup: trim → strip ONE surrounding markdown fence (an unterminated or
250
+ * non-surrounding fence is kept as-is) → cap at {@link ADVISOR_NOTE_MAX_CHARS}
251
+ * with a '…' marker (the same injection bound as {@link extractAdviceNote} —
252
+ * a raised generation budget must not enlarge the primary session's injection
253
+ * surface). An empty result (whitespace-only reply, fence-only reply) is NOT
254
+ * prose: the caller classifies it as an EMPTY drop (KD-I3), never as an
255
+ * unparsed/prose case. Severity is always `nit` — prose carries no structured
256
+ * severity. Never throws.
257
+ */
258
+ export function extractProseFallbackNote(reply) {
259
+ const match = SURROUNDING_FENCE_PATTERN.exec(reply.trim());
260
+ const text = (match?.[1] ?? reply).trim();
261
+ if (text.length === 0)
262
+ return undefined;
263
+ return {
264
+ note: text.length > ADVISOR_NOTE_MAX_CHARS
265
+ ? `${text.slice(0, ADVISOR_NOTE_MAX_CHARS - 1)}…`
266
+ : text,
267
+ severity: 'nit',
268
+ };
269
+ }
210
270
  /**
211
271
  * omp's permanent-rejection wording (see the advisor runtime it ports): a
212
272
  * request the provider refuses outright for this advisor configuration — no
@@ -275,6 +335,8 @@ export class AdvisorRuntime {
275
335
  provider;
276
336
  model;
277
337
  systemPrompt;
338
+ maxTokens;
339
+ proseFallback;
278
340
  retryBackoffMs;
279
341
  callTimeoutMs;
280
342
  maxQueued;
@@ -303,10 +365,26 @@ export class AdvisorRuntime {
303
365
  drainPromise;
304
366
  /** Epoch-ms of the last note accepted by the emission guard (T7 status). */
305
367
  lastActivityAt;
368
+ /**
369
+ * KD-I3 drop counters (issue #102): EMPTY vs UNPARSED no-note drops with
370
+ * their last-occurrence timestamps — the "advisor is running but never
371
+ * speaks" visibility surface (T2 renders them on `/advisor status`). Only
372
+ * COMPLETED model calls are classified here; transport drops stay in the
373
+ * KD-5 consecutive-drop path.
374
+ */
375
+ emptyReplyCount = 0;
376
+ unparsedReplyCount = 0;
377
+ lastEmptyReplyTimestamp;
378
+ lastUnparsedReplyTimestamp;
379
+ /** Warn-once latches, one per drop class per runtime (KD-I3). */
380
+ emptyReplyWarned = false;
381
+ unparsedReplyWarned = false;
306
382
  constructor(options) {
307
383
  this.provider = options.provider;
308
384
  this.model = options.model;
309
385
  this.systemPrompt = options.systemPrompt;
386
+ this.maxTokens = options.maxTokens ?? ADVISOR_MAX_TOKENS;
387
+ this.proseFallback = options.proseFallback ?? false;
310
388
  this.retryBackoffMs = options.retryBackoffMs ?? DEFAULT_RETRY_BACKOFF_MS;
311
389
  this.callTimeoutMs = options.callTimeoutMs ?? DEFAULT_CALL_TIMEOUT_MS;
312
390
  this.maxQueued = options.maxQueued ?? DEFAULT_MAX_QUEUED;
@@ -330,6 +408,31 @@ export class AdvisorRuntime {
330
408
  get lastActivity() {
331
409
  return this.lastActivityAt;
332
410
  }
411
+ /**
412
+ * KD-I3 (issue #102) — replies dropped because the body was empty after
413
+ * trim (mostly a reasoning model exhausting the token budget). Read-only
414
+ * status outlet, same style as `pendingCount`/`lastActivity`.
415
+ */
416
+ get emptyReplies() {
417
+ return this.emptyReplyCount;
418
+ }
419
+ /**
420
+ * KD-I3 (issue #102) — replies dropped because no valid note was extracted
421
+ * (no parseable JSON frame, or frames whose note is empty/invalid) and the
422
+ * prose fallback delivered nothing (`proseFallback` off, or on with an
423
+ * empty cleanup result). Read-only status outlet.
424
+ */
425
+ get unparsedReplies() {
426
+ return this.unparsedReplyCount;
427
+ }
428
+ /** KD-I3 — epoch-ms of the last EMPTY-reply drop, `undefined` before the first. */
429
+ get lastEmptyReplyAt() {
430
+ return this.lastEmptyReplyTimestamp;
431
+ }
432
+ /** KD-I3 — epoch-ms of the last UNPARSED-reply drop, `undefined` before the first. */
433
+ get lastUnparsedReplyAt() {
434
+ return this.lastUnparsedReplyTimestamp;
435
+ }
333
436
  /**
334
437
  * Queue one rendered transcript delta (from the T3 observer's `onDelta`).
335
438
  * While `quota_exhausted`, deltas queue up (bounded) but the drain is never
@@ -557,10 +660,33 @@ export class AdvisorRuntime {
557
660
  }
558
661
  // stop | max-tokens | tool-calls: extract from the collected text (KD-2;
559
662
  // no retry on parse failures — the frame must simply be absent/valid).
560
- const note = extractAdviceNote(text);
663
+ // KD-I3 drop classification (issue #102): an EMPTY trimmed reply is an
664
+ // empty drop (the classic case is a thinking model exhausting the token
665
+ // budget — finish: max-tokens); a reply with text but no parseable frame
666
+ // is an unparsed drop unless the opt-in prose fallback rescues it. Both
667
+ // classes are counted with a timestamp and warn once per runtime, so
668
+ // "the advisor is running but never speaks" is discoverable instead of
669
+ // debug-only. Drops still return 'no-note': KD-2 extraction failures are
670
+ // output-quality issues, not transport failures (no KD-5 retry, no
671
+ // consecutive-drop counting).
672
+ let note = extractAdviceNote(text);
561
673
  if (note === undefined) {
562
- this.logger.debug('advisor: reply yielded no note — dropped (no parseable non-empty JSON note in the reply)');
563
- return { kind: 'no-note' };
674
+ if (text.trim().length === 0) {
675
+ this.recordEmptyReply(finish);
676
+ return { kind: 'no-note' };
677
+ }
678
+ // KD-I2 prose fallback (opt-in, default off): the JSON frame keeps
679
+ // priority — only when NO frame yields a usable note (an empty- or
680
+ // invalid-note frame included) AND the flag is on does the cleaned
681
+ // prose body become a nit note and re-enter the normal guard/delivery
682
+ // pipeline below. With the flag off the reply is dropped exactly as
683
+ // before (default behavior unchanged).
684
+ if (this.proseFallback)
685
+ note = extractProseFallbackNote(text);
686
+ if (note === undefined) {
687
+ this.recordUnparsedReply();
688
+ return { kind: 'no-note' };
689
+ }
564
690
  }
565
691
  try {
566
692
  // The T5 emission guard sits between extraction and delivery: only
@@ -598,6 +724,37 @@ export class AdvisorRuntime {
598
724
  __disposeResources(env_1);
599
725
  }
600
726
  }
727
+ /**
728
+ * KD-I3: count + timestamp an EMPTY-reply drop and warn ONCE per runtime
729
+ * with the fix hint (raise the budget); repeats fall back to a debug line.
730
+ * The finish reason rides along — `max-tokens` vs `stop` is the
731
+ * budget-exhausted vs genuinely-empty tell (issue #102 evidence).
732
+ */
733
+ recordEmptyReply(finish) {
734
+ this.emptyReplyCount++;
735
+ this.lastEmptyReplyTimestamp = Date.now();
736
+ if (this.emptyReplyWarned) {
737
+ this.logger.debug('advisor: empty reply dropped', { finish: finish.kind });
738
+ return;
739
+ }
740
+ this.emptyReplyWarned = true;
741
+ this.logger.warn('advisor: empty reply dropped — reasoning may be exhausting the token budget; consider raising maxTokens', { finish: finish.kind });
742
+ }
743
+ /**
744
+ * KD-I3: count + timestamp an UNPARSED-reply drop and warn ONCE per runtime
745
+ * with the fix hint (enable the prose fallback); repeats fall back to the
746
+ * original KD-2 debug line.
747
+ */
748
+ recordUnparsedReply() {
749
+ this.unparsedReplyCount++;
750
+ this.lastUnparsedReplyTimestamp = Date.now();
751
+ if (this.unparsedReplyWarned) {
752
+ this.logger.debug('advisor: reply yielded no note — dropped (no parseable non-empty JSON note in the reply)');
753
+ return;
754
+ }
755
+ this.unparsedReplyWarned = true;
756
+ this.logger.warn('advisor: reply yielded no note — dropped (no parseable non-empty JSON note in the reply); consider enabling proseFallback');
757
+ }
601
758
  buildOptions(delta, signal, reasoningEffort) {
602
759
  return {
603
760
  provider: this.provider,
@@ -622,9 +779,14 @@ export class AdvisorRuntime {
622
779
  // UNSUPPORTED_REASONING_EFFORT, silently killing the advisor for
623
780
  // non-deepseek models — pre-n4 these worked because no effort was sent).
624
781
  ...(reasoningEffort === undefined ? {} : { reasoningEffort }),
625
- // user-directed budget (256 -> 5120 -> 768): with thinking-off the
626
- // default, a modest cap that fits one bounded note plus the JSON frame.
627
- maxTokens: ADVISOR_MAX_TOKENS,
782
+ // Token budget (KD-I1, issue #102): operator-configurable via the
783
+ // config key `maxTokens` (128..16384) — KD-6's code invariant was
784
+ // superseded because thinking models behind third-party gateways can
785
+ // exhaust a fixed budget on reasoning and return an empty body. The
786
+ // default stays the user-directed 768 (ADVISOR_MAX_TOKENS — see its
787
+ // supersession chain: 256 -> 5120 -> 768), so unconfigured runtimes
788
+ // behave exactly as before.
789
+ maxTokens: this.maxTokens,
628
790
  signal,
629
791
  // KD-5: `purpose` is a closed union ('compaction' | 'session-title'); an
630
792
  // advisor call is an ordinary conversation request and leaves it unset.
@@ -1 +1 @@
1
- {"version":3,"file":"advisor-runtime.js","sourceRoot":"","sources":["../src/advisor-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAQnF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAkFzD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AACrC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;AACzC,MAAM,wBAAwB,GAAG,KAAK,CAAA;AACtC,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAC7B,yFAAyF;AACzF,MAAM,uBAAuB,GAAG,MAAM,CAAA;AACtC,uEAAuE;AACvE,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,yEAAyE;AACzE,MAAM,sBAAsB,GAAG,CAAC,CAAA;AAChC,oFAAoF;AACpF,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAE/B,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E;;;GAGG;AACH,QAAQ,CAAC,CAAC,eAAe,CAAC,IAAY;IACpC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA;IACd,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAE,CAAA;QACzB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,OAAO;gBAAE,OAAO,GAAG,KAAK,CAAA;iBACvB,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,GAAG,IAAI,CAAA;iBACjC,IAAI,IAAI,KAAK,GAAG;gBAAE,QAAQ,GAAG,KAAK,CAAA;YACvC,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,QAAQ,GAAG,IAAI,CAAA;QACjB,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,KAAK,GAAG,KAAK,CAAA;gBACb,KAAK,GAAG,CAAC,CAAA;YACX,CAAC;iBAAM,CAAC;gBACN,KAAK,EAAE,CAAA;YACT,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBAClC,KAAK,GAAG,CAAC,CAAC,CAAA;YACZ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,MAAe,CAAA;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ,CAAC,0CAA0C;QACrD,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,SAAQ;QACpF,MAAM,MAAM,GAAG,MAAiC,CAAA;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ,CAAC,wBAAwB;QAC3F,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC3B,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,sBAAsB;gBAC3C,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,GAAG,CAAC,CAAC,GAAG;gBACpD,CAAC,CAAC,OAAO;YACX,QAAQ,EAAE,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;SAC9E,CAAA;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAQD;;;;GAIG;AACH,MAAM,yBAAyB,GAAG,mFAAmF,CAAA;AAErH,2FAA2F;AAC3F,SAAS,eAAe,CAAC,OAAmB;IAC1C,IACE,OAAO,CAAC,IAAI,KAAK,mBAAmB;WACjC,OAAO,CAAC,IAAI,KAAK,YAAY;WAC7B,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,EACxC,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,IACE,OAAO,CAAC,IAAI,KAAK,uBAAuB;WACrC,OAAO,CAAC,IAAI,KAAK,YAAY;WAC7B,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAClD,CAAC;QACD,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,qEAAqE;AACrE,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAA;QAC/C,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SACrE,CAAA;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AACpD,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,QAA0B,EAC1B,MAAmB;IAEnB,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACrD,OAAO,IAAI,OAAO,CAAgC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACxC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,OAAO,CAAC,OAAO,EAAE;aACd,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aAC3B,IAAI,CACH,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC5C,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC5C,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC,CACF,CAAA;IACL,CAAC,CAAC,CAAA;AACJ,CAAC;AAsBD;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACR,QAAQ,CAAQ;IAChB,KAAK,CAAQ;IACb,YAAY,CAAQ;IACpB,cAAc,CAAQ;IACtB,aAAa,CAAQ;IACrB,SAAS,CAAQ;IACjB,GAAG,CAAY;IACf,KAAK,CAAe;IACpB,MAAM,CAA4B;IAClC,MAAM,CAAsB;IAC5B,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACnD;;;;;;;;OAQG;IACc,oBAAoB,GAAG,IAAI,GAAG,EAAyC,CAAA;IACxF,kFAAkF;IAC1E,iBAAiB,GAAG,KAAK,CAAA;IAEhB,KAAK,GAAY,EAAE,CAAA;IAC5B,KAAK,GAAyB,SAAS,CAAA;IACvC,QAAQ,GAAG,KAAK,CAAA;IAChB,QAAQ,GAAG,KAAK,CAAA;IAChB,gBAAgB,GAAG,CAAC,CAAA;IACpB,YAAY,CAA2B;IAC/C,4EAA4E;IACpE,cAAc,CAAoB;IAE1C,YAAY,OAA8B;QACxC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;QACxC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,wBAAwB,CAAA;QACxE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,uBAAuB,CAAA;QACrE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAA;QACxD,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,mBAAmB,EAAE,CAAA;QACnD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAA;IACzC,CAAC;IAED,iEAAiE;IACjE,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,uEAAuE;IACvE,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,KAAY;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAA;YAChE,OAAM;QACR,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAC9D,OAAM;QACR,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACxC,0EAA0E;YAC1E,mEAAmE;YACnE,0DAA0D;YAC1D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;YAC3F,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtB,IAAI,IAAI,CAAC,KAAK,KAAK,iBAAiB;YAAE,OAAM,CAAC,oCAAoC;QACjF,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC;IAED,oFAAoF;IACpF,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACzC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED;;;;;OAKG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAM;QACpD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACtB,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC;IAED;;;;;;OAMG;IACH,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,YAAY,CAAA;IACzB,CAAC;IAEO,SAAS;QACf,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QAC1C,IAAI,IAAI,CAAC,KAAK,KAAK,iBAAiB,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAM;QACvE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/C,sEAAsE;YACtE,oEAAoE;YACpE,sEAAsE;YACtE,oDAAoD;YACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QACvE,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,oEAAoE;IAC5D,KAAK,CAAC,KAAK;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC;YACH,OACE,CAAC,IAAI,CAAC,QAAQ;mBACX,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;mBACrB,IAAI,CAAC,KAAK,KAAK,iBAAiB;mBAChC,IAAI,CAAC,KAAK,KAAK,QAAQ,EAC1B,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAA;gBACjC,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC9C,KAAK,MAAM,CAAC;oBACZ,KAAK,SAAS;wBACZ,gEAAgE;wBAChE,iEAAiE;wBACjE,sDAAsD;wBACtD,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;wBACzB,MAAK;oBACP,KAAK,MAAM;wBACT,IAAI,CAAC,gBAAgB,EAAE,CAAA;wBACvB,IAAI,IAAI,CAAC,gBAAgB,IAAI,qBAAqB;4BAAE,IAAI,CAAC,YAAY,EAAE,CAAA;wBACvE,MAAK;oBACP,KAAK,SAAS;wBACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAC,iDAAiD;wBAC3E,OAAM;oBACR,KAAK,MAAM;wBACT,IAAI,CAAC,YAAY,EAAE,CAAA,CAAC,yCAAyC;wBAC7D,OAAM;oBACR,KAAK,SAAS;wBACZ,OAAM;gBACV,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACvB,CAAC;IACH,CAAC;IAED,gFAAgF;IACxE,YAAY;QAClB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;QACzB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;QACjC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6DAA6D,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9F,CAAC;IAED,yFAAyF;IACjF,KAAK,CAAC,YAAY,CAAC,KAAY;QACrC,wEAAwE;QACxE,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;QACxB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,sBAAsB,EAAE,OAAO,EAAE,EAAE,CAAC;YACnE,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,QAAQ;oBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;gBAC7C,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;gBAChC,IAAI,IAAI,CAAC,QAAQ;oBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;YAC/C,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAA;YACnG,QAAQ,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,KAAK,OAAO;oBACV,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAA;oBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;oBAC3G,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;gBAC5B,KAAK,WAAW;oBACd,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;oBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;oBACxF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;gBACzB,KAAK,WAAW;oBACd,MAAK,CAAC,yCAAyC;YACnD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,EAAE,QAAQ,EAAE,sBAAsB,GAAG,CAAC,EAAE,CAAC,CAAA;QAC9G,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC;IAED,2EAA2E;IACnE,KAAK,CAAC,SAAS,CAAC,KAAY;;;YAClC,IAAI,IAAI,GAAG,EAAE,CAAA;YACb,IAAI,MAAgC,CAAA;YACpC,wEAAwE;YACxE,sEAAsE;YACtE,2EAA2E;YAC3E,0EAA0E;YAC1E,kEAAkE;YAClE,MAAM,cAAc,kCAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,QAAA,CAAA;YACjG,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAA;YAC5C,IAAI,CAAC;gBACH,mEAAmE;gBACnE,sEAAsE;gBACtE,sEAAsE;gBACtE,yEAAyE;gBACzE,wEAAwE;gBACxE,sEAAsE;gBACtE,sEAAsE;gBACtE,eAAe;gBACf,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;gBACzE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CAAA;gBACzF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;gBAC/C,SAAS,CAAC;oBACR,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;oBAC7D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;wBACvB,mEAAmE;wBACnE,qDAAqD;wBACrD,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;wBACnC,IAAI,SAAS,CAAC,cAAc,EAAE,oBAAoB,CAAC,KAAK,SAAS,EAAE,CAAC;4BAClE,OAAO;gCACL,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,EAAE,OAAO,EAAE,gCAAgC,IAAI,CAAC,aAAa,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;6BAC9F,CAAA;wBACH,CAAC;wBACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA,CAAC,qCAAqC;oBAClE,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI;wBAAE,MAAK;oBACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;oBACxB,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;wBAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA;yBAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;wBAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;gBACzD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAA;YAC9D,CAAC;YACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,6CAA6C,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAA;YAClH,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;gBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;YAChF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,wEAAwE;gBACxE,oEAAoE;gBACpE,uEAAuE;gBACvE,mDAAmD;gBACnD,IAAI,SAAS,CAAC,cAAc,EAAE,oBAAoB,CAAC,KAAK,SAAS,EAAE,CAAC;oBAClE,OAAO;wBACL,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,EAAE,OAAO,EAAE,gCAAgC,IAAI,CAAC,aAAa,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;qBAC9F,CAAA;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;gBAC/E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;YACrD,CAAC;YACD,yEAAyE;YACzE,uEAAuE;YACvE,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAA;gBAC7G,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;YAC5B,CAAC;YACD,IAAI,CAAC;gBACH,mEAAmE;gBACnE,kEAAkE;gBAClE,sEAAsE;gBACtE,sEAAsE;gBACtE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,mEAAmE;oBACnE,+DAA+D;oBAC/D,8DAA8D;oBAC9D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;oBAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACnB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE;wBAC9D,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,qEAAqE;gBACrE,gEAAgE;gBAChE,sEAAsE;gBACtE,0CAA0C;gBAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gEAAgE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;YAC/F,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;;;;;;;KAC9B;IAEO,YAAY,CAAC,KAAY,EAAE,MAAmB,EAAE,eAA8C;QACpG,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,YAAY;YACzB,QAAQ,EAAE,CAAC,iBAAiB,CAAC;oBAC3B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACjD,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;iBACzB,CAAC,CAAC;YACH,2EAA2E;YAC3E,yEAAyE;YACzE,oEAAoE;YACpE,yEAAyE;YACzE,kEAAkE;YAClE,uEAAuE;YACvE,qEAAqE;YACrE,2EAA2E;YAC3E,qEAAqE;YACrE,wEAAwE;YACxE,0EAA0E;YAC1E,iEAAiE;YACjE,iEAAiE;YACjE,yEAAyE;YACzE,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;YAC7D,mEAAmE;YACnE,wEAAwE;YACxE,SAAS,EAAE,kBAAkB;YAC7B,MAAM;YACN,yEAAyE;YACzE,wEAAwE;SACzE,CAAA;IACH,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACK,KAAK,CAAC,sBAAsB,CAAC,MAAoB;QACvD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,SAAS,IAAI,CAAC,KAAK,EAAE,CAAA;QACjD,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACjF,yEAAyE;QACzE,uEAAuE;QACvE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC5C,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;YAC7C,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,CAAA;YACnD,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,MAAqC,CAAA;QACzC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC/E,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACtF,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAC1B,CAAC,CAAC,SAAS,CAAA;QACf,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,yEAAyE;YACzE,kDAAkD;YAClD,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC1C,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,yBAAyB,CAAC,uCAAuC,CAAC,CAAA;QACjG,OAAO,MAAM,CAAA;IACf,CAAC;IAED,kEAAkE;IAC1D,yBAAyB,CAAC,MAAc;QAC9C,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAM;QAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAA;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAChH,CAAC;CACF"}
1
+ {"version":3,"file":"advisor-runtime.js","sourceRoot":"","sources":["../src/advisor-runtime.ts"],"names":[],"mappings":"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"}