@jianxx/dsh-cc-model-aliases 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write packages/compat/cc-model-aliases/README.md
5
- README.md: 3b8fb6f22176a9e87eb137f9f3a2b5442f4917de
6
- README.zh.md: df9e7ff2eee16a757155c5eac994d50dc50a1854
5
+ README.md: 282a1cfbed8630fc15c525dfb95b48ef38f911dc
6
+ README.zh.md: 8471c4e71f9f1a004d79240a0355a35b49eb24f8
package/README.md CHANGED
@@ -3,8 +3,8 @@
3
3
  English | [中文](README.zh.md)
4
4
 
5
5
  Claude Code-compatible model alias resolution for the DeepSeek Harness. It maps Claude Code
6
- frontmatter model aliases (`model: opus`, `model: sonnet`) onto dsh `{provider, model}`
7
- routes. The package now ships in two shapes:
6
+ frontmatter model aliases (`model: opus`, `model: sonnet`) onto dsh
7
+ `{provider, model, reasoningEffort?}` routes. The package now ships in two shapes:
8
8
 
9
9
  - a **`ccModelRoutes` host service** (the cordis plugin entry) that owns the `model-aliases`
10
10
  settings namespace registration and exposes a spawn-time resolver, and
@@ -19,7 +19,7 @@ adapter that does not know the id (e.g. `llm-pi-ai`) threw `UNKNOWN_MODEL`, and
19
19
  `model: inherit` — a valid CC sentinel meaning "use my parent's model" — was
20
20
  also handed to `prepareCall` as a literal id and errored.
21
21
 
22
- This package adds that layer: an alias resolves to a `{provider, model}` route,
22
+ This package adds that layer: an alias resolves to a `{provider, model, reasoningEffort?}` route,
23
23
  the unresolvable cases fall back to *inheriting the parent route* (no override),
24
24
  and literal ids like `deepseek-chat` keep passing through untouched.
25
25
 
@@ -86,10 +86,37 @@ lowercase at merge and at lookup).
86
86
  | `undefined` / blank | no override — child inherits the parent route |
87
87
  | `inherit` (any case) | no override — child inherits the parent route (**fixes the old pass-through bug**) |
88
88
  | configured alias (string form) | `{ model: <target> }` |
89
- | configured alias (object form) | `{ provider: <p>, model: <m> }` |
89
+ | configured alias (object form) | `{ provider?: <p>, model: <m>, reasoningEffort?: <effort> }` |
90
90
  | builtin alias unconfigured (`fable`/`opus`/`sonnet`/`haiku`) | no override — child inherits the parent route ("current model") |
91
+ | dsh-cc lane unconfigured (`sketch`/`draft`/`blueprint`/`masterplan`) | follows the CC peer (`haiku`/`sonnet`/`opus`/`fable`); inherit if that peer is also unconfigured |
92
+ | `architect` unconfigured | no override — inherit the parent (main-thread) route |
91
93
  | anything else | passed through **verbatim** as a literal model id; a bare-lowercase-word form (e.g. `turbo`) logs a warning that it looks like an unconfigured alias |
92
94
 
95
+ ### `reasoningEffort` on object-form aliases
96
+
97
+ An object-form alias may declare an optional `reasoningEffort`: an opaque
98
+ non-empty string whose legal spellings belong to the **target model's adapter**
99
+ (`max`, `xhigh`, `high`, … — not validated against any adapter catalog here).
100
+ When present, the spawn (the Task tool and the plugin-loader's
101
+ `AgentProvider`) stamps it onto the child's options, and the routes service's
102
+ host `agent/request` listener applies it to **every** request of that child,
103
+ overriding any effort restored from a forked parent header. String-form
104
+ aliases cannot carry an effort; `inherit` / unconfigured builtins stamp
105
+ nothing. An effort the target model does not support fails the request with
106
+ `UNSUPPORTED_REASONING_EFFORT` — fail-loud, by design.
107
+
108
+ ```jsonc
109
+ // settings namespace "model-aliases"
110
+ {
111
+ "opus": { "provider": "orchestrix", "model": "glm-5.3", "reasoningEffort": "max" },
112
+ "sonnet": { "provider": "orchestrix", "model": "glm-5.3-flash", "reasoningEffort": "max" }
113
+ }
114
+ ```
115
+
116
+ Changing the opus target to a model with a different effort vocabulary is a
117
+ single settings edit (`"reasoningEffort": "xhigh"`); the agent markdown is
118
+ untouched.
119
+
93
120
  ### Null deletion
94
121
 
95
122
  Only the **settings** layer may set an entry to `null`; that deletes a
@@ -115,10 +142,11 @@ never hold `null` (rejected by the config schema).
115
142
  ### Builtin fallback
116
143
 
117
144
  Fresh installs with **zero configuration** still work: `model: sonnet` /
118
- `model: opus` agents resolve to *inherit the parent's current model* instead of
119
- erroring. Only the four builtin names get this fallback; a custom alias
120
- (`turbo`, `gpt`, …) that is unconfigured has **no** fallback and is passed
121
- through verbatim (with the warning above).
145
+ `model: opus` / `model: draft` agents resolve to *inherit the parent's current
146
+ model* (an unconfigured lane follows a configured CC peer) instead of
147
+ erroring. Builtin names (CC family + dsh-cc lanes) get this fallback; a
148
+ custom alias (`turbo`, `gpt`, …) that is unconfigured has **no** fallback
149
+ and is passed through verbatim (with the warning above).
122
150
 
123
151
  ## `inherit` fix note
124
152
 
@@ -138,7 +166,10 @@ cc-shell (and the routes service), so in CC mode the fix is always active.
138
166
  also re-exported as `applyRoutes` / `routesPluginName`). Mounts the service; config shape is
139
167
  `{ modelAliases?: Record<string, AliasTarget> }` (deployment defaults).
140
168
  - `ModelRoutes` — the value type of `ctx.get('ccModelRoutes')` (`resolve(model):
141
- { provider?, model? } | undefined`).
169
+ { provider?, model?, reasoningEffort? } | undefined`).
170
+ - `overlayStampedEffort(resolved, stamped)` / `stampedEffortOf(options)` — the
171
+ host-side effort overlay used by the service's `agent/request` listener;
172
+ exported for tests and host embeddings.
142
173
  - `mergeAliasMaps(config, settings)` — entry-shallow merge with `null` deletion
143
174
  and case-insensitive key folding; returns an effective `ReadonlyMap` of only
144
175
  the configured aliases.
@@ -146,11 +177,58 @@ cc-shell (and the routes service), so in CC mode the fix is always active.
146
177
  `getAliases` is a thunk evaluated **per invocation** (liveness). Optional
147
178
  `warn` replaces the default `console.warn` used for the unconfigured-custom-alias
148
179
  warning.
149
- - `BUILTIN_ALIASES` — `['fable', 'opus', 'sonnet', 'haiku']`.
180
+ - `BUILTIN_ALIASES` — CC family (`fable`/`opus`/`sonnet`/`haiku`) plus dsh-cc lanes (`sketch`/`draft`/`blueprint`/`masterplan`/`architect`).
181
+ - `LANE_PEERS` — unconfigured-lane → CC-family map (`sketch→haiku`, `draft→sonnet`, `blueprint→opus`, `masterplan→fable`; `architect` has no peer).
182
+ - `toAgentOptions(route)` — drop `undefined` fields from a resolved route so
183
+ per-field inheritance survives (never set a field to `undefined` on the child
184
+ request); `undefined` in → `undefined` out, and an all-`undefined` route
185
+ collapses to `undefined` ("no override"). Shared by Task, cc-plugin-loader,
186
+ the hooks bridge, and memory recall.
187
+ - `toOneShotRoute(route, parent?)` — fill a resolved alias into a complete
188
+ `{provider, model}` pair for an independent one-shot `ctx.llm.stream` call:
189
+ alias fields win, missing fields inherit from the parent route, and an
190
+ incomplete pair (no model after inherit) returns `undefined` so callers
191
+ treat it as "unconfigured". Used by the session-title overlay and the
192
+ WebFetch summarizer.
150
193
  - `ConfigAliasesSchema` / `SettingsAliasesSchema` (and their record forms) —
151
194
  schemastery schemas for the config layer (no `null`) and settings layer
152
195
  (`null` allowed), plus `AliasTarget` / `ResolvedRoute` types.
153
196
 
197
+ ## dsh-cc lanes
198
+
199
+ Five extra builtin names sit alongside the Claude Code family. They are
200
+ configuration, not a second settings namespace. Unconfigured, each lane
201
+ except `architect` follows its CC peer, so a deployment that already maps
202
+ `haiku` does not need a duplicate `sketch` entry:
203
+
204
+ | Lane | Role | Unconfigured peer |
205
+ |---|---|---|
206
+ | `sketch` | Fast, lightweight execution | `haiku` |
207
+ | `draft` | Balanced everyday coding | `sonnet` |
208
+ | `blueprint` | Deep reasoning | `opus` |
209
+ | `masterplan` | Maximum reasoning | `fable` |
210
+ | `architect` | Planning and orchestration | inherit (main thread) |
211
+
212
+ A configured string-form target that names another alias is followed **one
213
+ hop** (`sketch: haiku` shares haiku's object route, including
214
+ `reasoningEffort`). Object-form targets are concrete routes and are not
215
+ followed as names. A second hop is not followed, so `sketch: draft` +
216
+ `draft: haiku` stops at the literal `"haiku"` (cycle-safe).
217
+
218
+ Frontmatter can use either vocabulary (`model: opus` or `model: blueprint`).
219
+ The cheap background classifier lane stays `resolve('haiku')` — hooks and
220
+ recall do not switch to `sketch`.
221
+
222
+ ## The cheap (small-fast) lane
223
+
224
+ There is no second alias name and no `ANTHROPIC_SMALL_FAST_MODEL`. The cheap
225
+ background lane **is** the configured `haiku` alias: consumers that need a
226
+ small, independent one-shot classifier model call `resolve('haiku')` — the
227
+ configured haiku route when set, inherit-the-parent when unconfigured (the
228
+ builtin fallback). Current consumers: the hooks bridge (`prompt`/`agent` hooks
229
+ without an authored `model:`), memory recall with `recallUseSmallFast: true`,
230
+ the session-title overlay, and the WebFetch summarizer.
231
+
154
232
  ## Non-goals (tracked in the parity matrix)
155
233
 
156
234
  `/model` interactive command, `ANTHROPIC_MODEL` / `ANTHROPIC_SMALL_FAST_MODEL`
package/README.zh.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](README.md) | 中文
4
4
 
5
- 面向 DeepSeek Harness 的 Claude Code 兼容 model alias 解析。把 CC frontmatter 的 model alias(`model: opus`、`model: sonnet`)映射为 dsh 的 `{provider, model}` 路由。本 package 现在以两种形态提供:
5
+ 面向 DeepSeek Harness 的 Claude Code 兼容 model alias 解析。把 CC frontmatter 的 model alias(`model: opus`、`model: sonnet`)映射为 dsh 的 `{provider, model, reasoningEffort?}` 路由。本 package 现在以两种形态提供:
6
6
 
7
7
  - **`ccModelRoutes` 宿主服务**(cordis 插件入口),拥有 `model-aliases` settings 命名空间的注册,并暴露派发时的解析器;
8
8
  - **纯 helper**(`mergeAliasMaps` / `createModelResolver`),在不挂载服务的情况下内嵌同样的解析语义。
@@ -11,7 +11,7 @@
11
11
 
12
12
  Claude Code 的 agent/CLAUDE.md frontmatter 用 alias 命名模型。没有 alias 层时,`model: opus` 会被原样当作 provider model id 透传,因此不认识该 id 的 adapter(如 `llm-pi-ai`)抛 `UNKNOWN_MODEL`;而 `model: inherit`——CC 中意为「用父模型」的合法哨兵——也会被当作字面 id 交给 `prepareCall` 然后报错。
13
13
 
14
- 本 package 补上这层:alias 解析为 `{provider, model}` 路由,不可解析的情形回退为*继承父路由*(不 override),而 `deepseek-chat` 之类的字面 id 原样透传不受影响。
14
+ 本 package 补上这层:alias 解析为 `{provider, model, reasoningEffort?}` 路由,不可解析的情形回退为*继承父路由*(不 override),而 `deepseek-chat` 之类的字面 id 原样透传不受影响。
15
15
 
16
16
  ## `ccModelRoutes` 服务
17
17
 
@@ -56,10 +56,26 @@ alias 的查找顺序:**settings overlay → config 默认 → builtin fallback*
56
56
  | `undefined` / 空 | 无 override——child 继承父路由 |
57
57
  | `inherit`(任意大小写) | 无 override——child 继承父路由(**修复旧的透传 bug**) |
58
58
  | 已配置 alias(字符串形式) | `{ model: <target> }` |
59
- | 已配置 alias(对象形式) | `{ provider: <p>, model: <m> }` |
59
+ | 已配置 alias(对象形式) | `{ provider?: <p>, model: <m>, reasoningEffort?: <effort> }` |
60
60
  | 未配置的 builtin alias(`fable`/`opus`/`sonnet`/`haiku`) | 无 override——child 继承父路由(「当前模型」) |
61
+ | 未配置的 dsh-cc lane(`sketch`/`draft`/`blueprint`/`masterplan`) | 跟随 CC 对标名(`haiku`/`sonnet`/`opus`/`fable`);对标也未配置则 inherit |
62
+ | 未配置的 `architect` | 无 override——继承父(主线程)路由 |
61
63
  | 其它 | **原样**作为字面 model id 透传;裸小写单词形式(如 `turbo`)记录一条「看起来像未配置 alias」的告警 |
62
64
 
65
+ ### 对象形式 alias 的 `reasoningEffort`
66
+
67
+ 对象形式 alias 可声明可选的 `reasoningEffort`:一个不透明的非空字符串,其合法拼写属于**目标模型的适配器**(`max`、`xhigh`、`high`、…——此处不对任何适配器目录做校验)。存在时,spawn 侧(Task 工具与 plugin-loader 的 `AgentProvider`)把它 stamp 到 child 的 options 上,routes 服务的宿主 `agent/request` listener 会把它应用到该 child 的**每一个**请求上,覆盖任何从 fork 父 header 恢复的 effort。字符串形式 alias 无法携带 effort;`inherit` / 未配置 builtin 不 stamp 任何东西。目标模型不支持的 effort 会让请求以 `UNSUPPORTED_REASONING_EFFORT` 失败——有意 fail-loud。
68
+
69
+ ```jsonc
70
+ // settings 命名空间 "model-aliases"
71
+ {
72
+ "opus": { "provider": "orchestrix", "model": "glm-5.3", "reasoningEffort": "max" },
73
+ "sonnet": { "provider": "orchestrix", "model": "glm-5.3-flash", "reasoningEffort": "max" }
74
+ }
75
+ ```
76
+
77
+ 把 opus 的目标换成 effort 词表不同的模型,只需改这一条 settings(`"reasoningEffort": "xhigh"`);agent markdown 无需改动。
78
+
63
79
  ### 空删除
64
80
 
65
81
  只有 **settings** 层可把条目置为 `null`;这会**整条删除同名 config-default 条目**(entry-shallow)。删除 *builtin* alias 仍落到 builtin fallback——`null` 无法让 `sonnet` 变成错误,因为 builtin fallback 是**继承父路由**。config 层永不允许 `null`(被 config schema 拒绝)。
@@ -71,7 +87,7 @@ alias 的查找顺序:**settings overlay → config 默认 → builtin fallback*
71
87
 
72
88
  ### Builtin fallback
73
89
 
74
- **零配置**的全新安装也能工作:`model: sonnet` / `model: opus` 的 agent 解析为*继承父的当前模型*而非报错。只有四个 builtin 名享受该 fallback;未配置的自定义 alias(`turbo`、`gpt`、…)**没有** fallback,原样透传(带上面的告警)。
90
+ **零配置**的全新安装也能工作:`model: sonnet` / `model: opus` / `model: draft` 的 agent 解析为*继承父的当前模型*(lane 未配置时跟随已配置的 CC 对标)而非报错。builtin 名(CC 家族 + dsh-cc lane)享受该 fallback;未配置的自定义 alias(`turbo`、`gpt`、…)**没有** fallback,原样透传(带上面的告警)。
75
91
 
76
92
  ## `inherit` 修复说明
77
93
 
@@ -80,12 +96,36 @@ alias 的查找顺序:**settings overlay → config 默认 → builtin fallback*
80
96
  ## API
81
97
 
82
98
  - `apply(ctx, config?)` / `name` — **cordis 插件入口**(插件 id `cc-model-routes`,另以 `applyRoutes` / `routesPluginName` 再导出)。挂载服务;config 形状为 `{ modelAliases?: Record<string, AliasTarget> }`(部署默认)。
83
- - `ModelRoutes` — `ctx.get('ccModelRoutes')` 的值类型(`resolve(model): { provider?, model? } | undefined`)。
99
+ - `ModelRoutes` — `ctx.get('ccModelRoutes')` 的值类型(`resolve(model): { provider?, model?, reasoningEffort? } | undefined`)。
100
+ - `overlayStampedEffort(resolved, stamped)` / `stampedEffortOf(options)` — 服务 `agent/request` listener 使用的宿主侧 effort overlay;为测试与宿主内嵌而导出。
84
101
  - `mergeAliasMaps(config, settings)` — 带 `null` 删除与大小写不敏感 key 折叠的 entry-shallow merge;返回只含已配置 alias 的有效 `ReadonlyMap`。
85
102
  - `createModelResolver(getAliases, { warn })` — 构建 `resolveModel` 闭包。`getAliases` 是**每次调用**求值的 thunk(liveness)。可选 `warn` 替换默认的 `console.warn`(用于未配置自定义 alias 告警)。
86
- - `BUILTIN_ALIASES` — `['fable', 'opus', 'sonnet', 'haiku']`。
103
+ - `BUILTIN_ALIASES` — CC 家族(`fable`/`opus`/`sonnet`/`haiku`)加上 dsh-cc lane(`sketch`/`draft`/`blueprint`/`masterplan`/`architect`)。
104
+ - `LANE_PEERS` — 未配置 lane → CC 家族映射(`sketch→haiku`、`draft→sonnet`、`blueprint→opus`、`masterplan→fable`;`architect` 无对标)。
105
+ - `toAgentOptions(route)` — 丢弃 resolved route 中的 `undefined` 字段以保住按字段继承(绝不把 child 请求的字段写成 `undefined`);`undefined` 进 → `undefined` 出,全 `undefined` 的 route 收敛为 `undefined`(「无 override」)。由 Task、cc-plugin-loader、hooks bridge 与 memory recall 共享。
106
+ - `toOneShotRoute(route, parent?)` — 把 resolved alias 填成完整的 `{provider, model}` 二元组,供独立的 one-shot `ctx.llm.stream` 调用使用:alias 字段优先,缺失字段从 `parent` 继承;补不完整(继承后仍无 model)返回 `undefined`,调用方视为「未配置」。session-title overlay 与 WebFetch summarizer 使用。
87
107
  - `ConfigAliasesSchema` / `SettingsAliasesSchema`(及其 record 形式)— config 层(无 `null`)与 settings 层(允许 `null`)的 schemastery schema,外加 `AliasTarget` / `ResolvedRoute` 类型。
88
108
 
109
+ ## dsh-cc lane
110
+
111
+ 五个额外 builtin 名与 Claude Code 家族并列,不是第二套 settings 命名空间。未配置时,除 `architect` 外每个 lane 跟随其 CC 对标,因此已经映射了 `haiku` 的部署不必再写一份 `sketch`:
112
+
113
+ | Lane | 角色 | 未配置时的对标 |
114
+ |---|---|---|
115
+ | `sketch` | 快速轻量执行 | `haiku` |
116
+ | `draft` | 日常均衡编码 | `sonnet` |
117
+ | `blueprint` | 深度推理 | `opus` |
118
+ | `masterplan` | 最强推理 | `fable` |
119
+ | `architect` | 规划与编排 | inherit(主线程) |
120
+
121
+ 已配置的字符串目标若指向另一个 alias,会**跟随一跳**(`sketch: haiku` 共用 haiku 的对象路由,含 `reasoningEffort`)。对象形式目标是具体路由,不作为名字再跟。第二跳不跟,因此 `sketch: draft` + `draft: haiku` 停在字面 `"haiku"`(防环)。
122
+
123
+ frontmatter 两套词都可以写(`model: opus` 或 `model: blueprint`)。后台分类器低价车道仍是 `resolve('haiku')` —— hooks 与 recall 不会改走 `sketch`。
124
+
125
+ ## 低价(small-fast)车道
126
+
127
+ 没有第二个 alias 名,也没有 `ANTHROPIC_SMALL_FAST_MODEL`。低价后台车道**就是**已配置的 `haiku` alias:需要小型独立 one-shot 分类器模型的消费者调用 `resolve('haiku')` —— 配置了 haiku 即其路由,未配置即继承父路由(builtin fallback)。当前消费者:hooks bridge(未写 `model:` 的 `prompt`/`agent` hook)、开启 `recallUseSmallFast: true` 的 memory recall、session-title overlay 与 WebFetch summarizer。
128
+
89
129
  ## 非目标(在 parity matrix 中跟踪)
90
130
 
91
131
  `/model` 交互命令、`ANTHROPIC_MODEL` / `ANTHROPIC_SMALL_FAST_MODEL` 环境变量、以及给主会话默认模型加 alias 仍是 follow-up。
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Convert a resolved alias route into spawn `agentOptions` (`toAgentOptions`)
3
+ * or a complete `{provider, model}` pair for an independent one-shot stream
4
+ * (`toOneShotRoute`). Spawn drops `undefined` fields so per-field inheritance
5
+ * survives; one-shots fill missing fields from a parent route and return
6
+ * `undefined` when the pair is still incomplete.
7
+ *
8
+ * @module @jianxx/dsh-cc-model-aliases/agentOptions
9
+ */
10
+ import type { ResolvedRoute } from './types.ts';
11
+ /**
12
+ * Drop `undefined` fields from a resolved route so per-field inheritance
13
+ * survives (never set a field to `undefined` on the child request).
14
+ * `undefined` in → `undefined` out; an all-`undefined` route → `undefined`.
15
+ * @param route - the resolved route (or `undefined` for no override).
16
+ * @returns the `agentOptions` record, or `undefined` for no override.
17
+ */
18
+ export declare function toAgentOptions(route: ResolvedRoute | undefined): Record<string, string> | undefined;
19
+ export interface OneShotParentRoute {
20
+ readonly provider?: string;
21
+ readonly model?: string;
22
+ }
23
+ /**
24
+ * Fill a resolved alias into a complete `{provider, model}` pair for an
25
+ * independent `ctx.llm.stream` one-shot. Alias fields win; missing fields
26
+ * inherit from `parent`. Returns undefined when the resulting pair is
27
+ * incomplete (no model after inherit) — callers treat that as "unconfigured".
28
+ */
29
+ export declare function toOneShotRoute(route: ResolvedRoute | undefined, parent?: OneShotParentRoute): {
30
+ provider: string;
31
+ model: string;
32
+ } | undefined;
33
+ //# sourceMappingURL=agentOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentOptions.d.ts","sourceRoot":"","sources":["../src/agentOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAQnG;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,MAAM,CAAC,EAAE,kBAAkB,GAC1B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOjD"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Convert a resolved alias route into spawn `agentOptions` (`toAgentOptions`)
3
+ * or a complete `{provider, model}` pair for an independent one-shot stream
4
+ * (`toOneShotRoute`). Spawn drops `undefined` fields so per-field inheritance
5
+ * survives; one-shots fill missing fields from a parent route and return
6
+ * `undefined` when the pair is still incomplete.
7
+ *
8
+ * @module @jianxx/dsh-cc-model-aliases/agentOptions
9
+ */
10
+ /**
11
+ * Drop `undefined` fields from a resolved route so per-field inheritance
12
+ * survives (never set a field to `undefined` on the child request).
13
+ * `undefined` in → `undefined` out; an all-`undefined` route → `undefined`.
14
+ * @param route - the resolved route (or `undefined` for no override).
15
+ * @returns the `agentOptions` record, or `undefined` for no override.
16
+ */
17
+ export function toAgentOptions(route) {
18
+ if (route === undefined)
19
+ return undefined;
20
+ const out = {};
21
+ if (route.provider !== undefined)
22
+ out['provider'] = route.provider;
23
+ if (route.model !== undefined)
24
+ out['model'] = route.model;
25
+ if (route.reasoningEffort !== undefined)
26
+ out['reasoningEffort'] = route.reasoningEffort;
27
+ if (Object.keys(out).length === 0)
28
+ return undefined;
29
+ return out;
30
+ }
31
+ /**
32
+ * Fill a resolved alias into a complete `{provider, model}` pair for an
33
+ * independent `ctx.llm.stream` one-shot. Alias fields win; missing fields
34
+ * inherit from `parent`. Returns undefined when the resulting pair is
35
+ * incomplete (no model after inherit) — callers treat that as "unconfigured".
36
+ */
37
+ export function toOneShotRoute(route, parent) {
38
+ if (route === undefined)
39
+ return undefined;
40
+ const provider = route.provider ?? parent?.provider;
41
+ const model = route.model ?? parent?.model;
42
+ if (provider === undefined || model === undefined)
43
+ return undefined;
44
+ if (provider.length === 0 || model.length === 0)
45
+ return undefined;
46
+ return { provider, model };
47
+ }
48
+ //# sourceMappingURL=agentOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentOptions.js","sourceRoot":"","sources":["../src/agentOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAgC;IAC7D,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAA;IAClE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAA;IACzD,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS;QAAE,GAAG,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,eAAe,CAAA;IACvF,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACnD,OAAO,GAAG,CAAA;AACZ,CAAC;AAOD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAgC,EAChC,MAA2B;IAE3B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,MAAM,EAAE,QAAQ,CAAA;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,MAAM,EAAE,KAAK,CAAA;IAC1C,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACjE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAC5B,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Host-side application of an alias-stamped reasoning effort.
3
+ *
4
+ * Named CC subagents carry `reasoningEffort` on their child options as an
5
+ * undeclared runtime extra key (stamped by the Task tool / plugin-loader when
6
+ * the spawn's alias resolved with one). `buildRequest` deep-freezes its seed
7
+ * config and the fork may have restored an explicit parent `/effort` from the
8
+ * seed `request/header` — the alias contract must win — so the host
9
+ * `agent/request` listener in the routes service overlays the stamp AFTER
10
+ * `next()` via this helper.
11
+ *
12
+ * The overlay is a shallow copy: assigning onto the resolved config in place
13
+ * throws on the frozen seed or is invisible. Any absent/blank/non-string
14
+ * stamp is a no-op returning the input unchanged.
15
+ *
16
+ * @module @jianxx/dsh-cc-model-aliases/effort
17
+ */
18
+ /**
19
+ * Overlay an alias-stamped reasoning effort onto one resolved request config.
20
+ * @param resolved - the config produced by the `agent/request` waterfall.
21
+ * @param stamped - the effort read off the child agent's options (any type;
22
+ * only a non-empty string applies).
23
+ * @returns a shallow copy carrying the stamp, or the input unchanged when the
24
+ * stamp is absent/blank/non-string.
25
+ */
26
+ export declare function overlayStampedEffort<T extends {
27
+ reasoningEffort?: unknown;
28
+ }>(resolved: T, stamped: unknown): T;
29
+ /**
30
+ * Read the effort stamp off a child agent's options. The stamp is an
31
+ * undeclared runtime extra key (`AgentOptions` is merge-extensible and the
32
+ * harness only copies provider/model/maxTokens into `child.options` through
33
+ * its own spread — extra keys survive). Treats the options as unknown: a
34
+ * non-string or absent value yields `undefined`.
35
+ * @param options - the agent's `options` object (untyped on purpose).
36
+ * @returns the stamped effort string, or undefined.
37
+ */
38
+ export declare function stampedEffortOf(options: unknown): string | undefined;
39
+ //# sourceMappingURL=effort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effort.d.ts","sourceRoot":"","sources":["../src/effort.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAK9G;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIpE"}
package/lib/effort.js ADDED
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Host-side application of an alias-stamped reasoning effort.
3
+ *
4
+ * Named CC subagents carry `reasoningEffort` on their child options as an
5
+ * undeclared runtime extra key (stamped by the Task tool / plugin-loader when
6
+ * the spawn's alias resolved with one). `buildRequest` deep-freezes its seed
7
+ * config and the fork may have restored an explicit parent `/effort` from the
8
+ * seed `request/header` — the alias contract must win — so the host
9
+ * `agent/request` listener in the routes service overlays the stamp AFTER
10
+ * `next()` via this helper.
11
+ *
12
+ * The overlay is a shallow copy: assigning onto the resolved config in place
13
+ * throws on the frozen seed or is invisible. Any absent/blank/non-string
14
+ * stamp is a no-op returning the input unchanged.
15
+ *
16
+ * @module @jianxx/dsh-cc-model-aliases/effort
17
+ */
18
+ /**
19
+ * Overlay an alias-stamped reasoning effort onto one resolved request config.
20
+ * @param resolved - the config produced by the `agent/request` waterfall.
21
+ * @param stamped - the effort read off the child agent's options (any type;
22
+ * only a non-empty string applies).
23
+ * @returns a shallow copy carrying the stamp, or the input unchanged when the
24
+ * stamp is absent/blank/non-string.
25
+ */
26
+ export function overlayStampedEffort(resolved, stamped) {
27
+ if (typeof stamped !== 'string' || stamped.length === 0)
28
+ return resolved;
29
+ // Stamp is an opaque adapter spelling; the branded `ReasoningEffortId` on
30
+ // LlmCallConfig is applied at prepareCall, not here.
31
+ return { ...resolved, reasoningEffort: stamped };
32
+ }
33
+ /**
34
+ * Read the effort stamp off a child agent's options. The stamp is an
35
+ * undeclared runtime extra key (`AgentOptions` is merge-extensible and the
36
+ * harness only copies provider/model/maxTokens into `child.options` through
37
+ * its own spread — extra keys survive). Treats the options as unknown: a
38
+ * non-string or absent value yields `undefined`.
39
+ * @param options - the agent's `options` object (untyped on purpose).
40
+ * @returns the stamped effort string, or undefined.
41
+ */
42
+ export function stampedEffortOf(options) {
43
+ if (typeof options !== 'object' || options === null)
44
+ return undefined;
45
+ const effort = options.reasoningEffort;
46
+ return typeof effort === 'string' && effort.length > 0 ? effort : undefined;
47
+ }
48
+ //# sourceMappingURL=effort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effort.js","sourceRoot":"","sources":["../src/effort.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAA0C,QAAW,EAAE,OAAgB;IACzG,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAA;IACxE,0EAA0E;IAC1E,qDAAqD;IACrD,OAAO,EAAE,GAAG,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAO,CAAA;AACvD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IACrE,MAAM,MAAM,GAAI,OAAyC,CAAC,eAAe,CAAA;IACzE,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7E,CAAC"}
package/lib/index.d.ts CHANGED
@@ -12,9 +12,11 @@
12
12
  *
13
13
  * @module @jianxx/dsh-cc-model-aliases
14
14
  */
15
- export { BUILTIN_ALIASES, mergeAliasMaps, createModelResolver } from './resolver.ts';
15
+ export { BUILTIN_ALIASES, CC_ALIASES, LANE_ALIASES, LANE_PEERS, mergeAliasMaps, createModelResolver, createModelInspector, type ModelResolver } from './resolver.ts';
16
+ export { toAgentOptions, toOneShotRoute, type OneShotParentRoute } from './agentOptions.ts';
17
+ export { overlayStampedEffort, stampedEffortOf } from './effort.ts';
16
18
  export { ConfigAliasSchema, ConfigAliasesSchema, SettingsAliasSchema, SettingsAliasesSchema, type ConfigAliasEntry, type SettingsAliasEntry, } from './schema.ts';
17
- export type { AliasTarget, ResolvedRoute } from './types.ts';
18
- export { apply as applyRoutes, name as routesPluginName, type ModelRoutes } from './service.ts';
19
+ export type { AliasTarget, DetailedRoute, ResolvedRoute, AliasInspectKind, AliasInspectVia, AliasInspection } from './types.ts';
20
+ export { apply as applyRoutes, name as routesPluginName, MODEL_ALIASES_NAMESPACE, resolveAlias, resolveDetailedAlias, type ModelRoutes } from './service.ts';
19
21
  export { apply, name } from './service.ts';
20
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACpF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,IAAI,IAAI,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/F,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AACpK,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC/H,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,IAAI,IAAI,gBAAgB,EAAE,uBAAuB,EAAE,YAAY,EAAE,oBAAoB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAC5J,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA"}
package/lib/index.js CHANGED
@@ -12,8 +12,10 @@
12
12
  *
13
13
  * @module @jianxx/dsh-cc-model-aliases
14
14
  */
15
- export { BUILTIN_ALIASES, mergeAliasMaps, createModelResolver } from "./resolver.js";
15
+ export { BUILTIN_ALIASES, CC_ALIASES, LANE_ALIASES, LANE_PEERS, mergeAliasMaps, createModelResolver, createModelInspector } from "./resolver.js";
16
+ export { toAgentOptions, toOneShotRoute } from "./agentOptions.js";
17
+ export { overlayStampedEffort, stampedEffortOf } from "./effort.js";
16
18
  export { ConfigAliasSchema, ConfigAliasesSchema, SettingsAliasSchema, SettingsAliasesSchema, } from "./schema.js";
17
- export { apply as applyRoutes, name as routesPluginName } from "./service.js";
19
+ export { apply as applyRoutes, name as routesPluginName, MODEL_ALIASES_NAMESPACE, resolveAlias, resolveDetailedAlias } from "./service.js";
18
20
  export { apply, name } from "./service.js";
19
21
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACpF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GAGtB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,IAAI,IAAI,gBAAgB,EAAoB,MAAM,cAAc,CAAA;AAC/F,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAsB,MAAM,eAAe,CAAA;AACpK,OAAO,EAAE,cAAc,EAAE,cAAc,EAA2B,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GAGtB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,IAAI,IAAI,gBAAgB,EAAE,uBAAuB,EAAE,YAAY,EAAE,oBAAoB,EAAoB,MAAM,cAAc,CAAA;AAC5J,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA"}
package/lib/resolver.d.ts CHANGED
@@ -10,16 +10,40 @@
10
10
  * live settings edits take effect on the next spawn without re-registering
11
11
  * anything.
12
12
  *
13
- * Only the four builtin alias names have a fallback when they are unconfigured
14
- * — they resolve to "inherit the parent route" (`undefined`), matching the
15
- * deployment decision that a zero-config `model: sonnet` agent silently uses
16
- * the parent's current model. A custom (open-set) alias that is unconfigured
17
- * has no fallback: it passes through verbatim as a literal model id, with a
18
- * warning when it looks like an intended alias.
13
+ * Builtin alias names (Claude Code family plus the dsh-cc lane names) have a
14
+ * fallback when they are unconfigured — they resolve to "inherit the parent
15
+ * route" (`undefined`), matching the deployment decision that a zero-config
16
+ * `model: sonnet` / `model: draft` agent silently uses the parent's current
17
+ * model. A custom (open-set) alias that is unconfigured has no fallback: it
18
+ * passes through verbatim as a literal model id, with a warning when it looks
19
+ * like an intended alias.
19
20
  *
20
21
  * @module @jianxx/dsh-cc-model-aliases/resolver
21
22
  */
22
- import type { AliasTarget, ResolvedRoute } from './types.ts';
23
+ import type { AliasInspection, AliasTarget, DetailedRoute, ResolvedRoute } from './types.ts';
24
+ /**
25
+ * Claude Code family aliases. Unconfigured → inherit the parent route.
26
+ * Case-insensitive; a configured value still wins over this fallback.
27
+ */
28
+ export declare const CC_ALIASES: readonly string[];
29
+ /**
30
+ * dsh-cc lane aliases. Unconfigured, a lane follows its CC peer
31
+ * ({@link LANE_PEERS}) so `model: sketch` shares a configured `haiku`
32
+ * route without a second settings entry. `architect` has no peer and
33
+ * inherits the parent (main-thread) route. A configured string-form
34
+ * target that names another alias is followed one hop.
35
+ *
36
+ * | lane | role | CC peer when unconfigured |
37
+ * |---|---|---|
38
+ * | `sketch` | fast, lightweight execution | haiku |
39
+ * | `draft` | balanced everyday coding | sonnet |
40
+ * | `blueprint` | deep reasoning | opus |
41
+ * | `masterplan` | maximum reasoning | fable |
42
+ * | `architect` | planning / orchestration | inherit (main thread) |
43
+ */
44
+ export declare const LANE_ALIASES: readonly string[];
45
+ /** Unconfigured lane → CC family alias it shares a route with. */
46
+ export declare const LANE_PEERS: Readonly<Record<string, string>>;
23
47
  /**
24
48
  * The builtin alias names that fall back to "inherit the parent route" when
25
49
  * unconfigured. Case-insensitive; a configured value still wins over this
@@ -49,9 +73,28 @@ export declare function mergeAliasMaps(config: Readonly<Record<string, AliasTarg
49
73
  * a configured alias and not a builtin looks like an intended alias (a bare
50
74
  * lowercase alphabetic word) and is passed through verbatim.
51
75
  * @returns the resolution function mapping a frontmatter `model` to a route, or
52
- * `undefined` for no override.
76
+ * `undefined` for no override. The returned function also carries
77
+ * `resolveDetailed`, the atomic provenance-carrying form it is derived from.
53
78
  */
79
+ export interface ModelResolver {
80
+ (model: string | undefined): ResolvedRoute | undefined;
81
+ /** Atomic detailed resolution — one settings snapshot classifies AND routes. */
82
+ resolveDetailed(model: string | undefined): DetailedRoute;
83
+ }
54
84
  export declare function createModelResolver(getAliases: () => ReadonlyMap<string, AliasTarget>, options?: {
55
85
  warn?: (message: string) => void;
56
- }): (model: string | undefined) => ResolvedRoute | undefined;
86
+ }): ModelResolver;
87
+ /**
88
+ * Build an inspector that classifies one frontmatter `model` the same way
89
+ * {@link createModelResolver} resolves it, additionally reporting provenance
90
+ * (kind / via / hop) for tooling like `/doctor`. The `route` field is exactly
91
+ * what `resolve()` returns for the same input.
92
+ * @param getAliases - returns the effective alias map for this invocation.
93
+ * @param options - same warning hook as {@link createModelResolver}.
94
+ * @returns the inspection function mapping a frontmatter `model` to an
95
+ * {@link AliasInspection}.
96
+ */
97
+ export declare function createModelInspector(getAliases: () => ReadonlyMap<string, AliasTarget>, options?: {
98
+ warn?: (message: string) => void;
99
+ }): (model: string | undefined) => AliasInspection;
57
100
  //# sourceMappingURL=resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE5D;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAyC,CAAA;AAKtF;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,SAAS,EACzD,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,GACjE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAalC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAC7C,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,aAAa,GAAG,SAAS,CAyB1D"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE5F;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAAyC,CAAA;AAEjF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAAgE,CAAA;AAE1G,kEAAkE;AAClE,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKvD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAqC,CAAA;AAKlF;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,SAAS,EACzD,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,GACjE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAalC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAA;IACtD,gFAAgF;IAChF,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAAA;CAC1D;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAC7C,aAAa,CAwBf;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAC7C,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,eAAe,CAwDhD"}