@anionex/dsh-tool-search 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +20 -10
- package/README.zh.md +20 -10
- package/docs/benchmark-results.json +1 -1
- package/lib/client.js +13 -2
- package/lib/client.js.map +1 -1
- package/lib/runtime.js +111 -21
- package/lib/runtime.js.map +1 -1
- package/lib/shared.js +12 -1
- package/lib/shared.js.map +1 -1
- package/lib/types/client/index.d.ts +1 -0
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/runtime.d.ts +31 -0
- package/lib/types/runtime.d.ts.map +1 -1
- package/lib/types/shared.d.ts +13 -1
- package/lib/types/shared.d.ts.map +1 -1
- package/package.json +10 -10
- package/scripts/profile-e2e.mjs +169 -11
- package/scripts/validate.mjs +1 -1
- package/src/client/index.tsx +5 -1
- package/src/runtime.ts +123 -16
- package/src/shared.ts +14 -1
- package/tests/client.spec.tsx +10 -1
- package/tests/presentation.spec.ts +273 -0
- package/tests/runtime.spec.ts +18 -3
- package/tests/settings.spec.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.2 - 2026-09-12
|
|
4
|
+
|
|
5
|
+
- Support every DSH tool presentation mode: `native`, `ptc` (the `code` mode of DSH `0.1.1` and earlier), and `both`. The plugin no longer aborts an Agent whose assembly carries a generated `tools:sdk` section.
|
|
6
|
+
- Rebuild the search catalog from the Agent's scoped registry view instead of the assembly, so deferred tools stay searchable when the assembly collapses to the reserved `run_code` transport.
|
|
7
|
+
- Regenerate the `tools:sdk` section with DSH's own renderers (`renderToolsSdk`, `renderToolsSdkPy`, selected by the mounted code runtime language) so the SDK advertises exactly the visible tool set, and keep an empty SDK section (an Agent-scoped native override) untouched.
|
|
8
|
+
- Extend compatibility to DSH `0.1.5-rc.1` and cover PTC in the profile E2E: reserved-transport-only assembly, filtered SDK before selection, SDK exposure after selection, and real dispatch of the selected tool through `run_code`.
|
|
9
|
+
- Add unit coverage for PTC, `both`, Python-flavored SDK rendering, renderer fallback, and unchanged-assembly passthrough.
|
|
10
|
+
|
|
11
|
+
## 0.1.1 - 2026-09-05
|
|
12
|
+
|
|
13
|
+
- Defer the plugin-provided `dsh_im_return_file` tool instead of treating it as a maintained DSH core tool.
|
|
14
|
+
|
|
3
15
|
## 0.1.0 - 2026-09-05
|
|
4
16
|
|
|
5
17
|
- Add deterministic local BM25 discovery for deferred DSH tools.
|
package/README.md
CHANGED
|
@@ -16,26 +16,25 @@ On affected Node.js 24+ standalone DSH launchers, a bare external Profile packag
|
|
|
16
16
|
|
|
17
17
|
Requirements:
|
|
18
18
|
|
|
19
|
-
- DSH `0.1.1-rc.1` through the current `0.1.
|
|
19
|
+
- DSH `0.1.1-rc.1` through the current `0.1.5-rc.1` prerelease line
|
|
20
20
|
- Node.js `^22.19.0 || >=24.0.0`
|
|
21
|
-
-
|
|
21
|
+
- Any tool presentation mode: `native`, `ptc` (DSH ≤ `0.1.1` calls it `code`), or `both`
|
|
22
22
|
|
|
23
23
|
## Behavior
|
|
24
24
|
|
|
25
|
-
The initial
|
|
25
|
+
The initial model-facing tool surface contains:
|
|
26
26
|
|
|
27
27
|
- `tool_search`
|
|
28
28
|
- `apply_patch`
|
|
29
29
|
- DSH core tools maintained in `DEFAULT_CORE_TOOLS`
|
|
30
30
|
- exact names added to `alwaysVisible`
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
The default policy treats these names as core:
|
|
33
33
|
|
|
34
34
|
```text
|
|
35
|
-
apply_patch, ask_user_question, bash, create_goal,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
todo_write, update_goal, workflow
|
|
35
|
+
apply_patch, ask_user_question, bash, create_goal, exit_plan_mode, get_goal,
|
|
36
|
+
interrupt_agent, job_kill, job_list, job_output, list_agents, ralph, report,
|
|
37
|
+
send_message, skill, subagent, subagent_fork, todo_write, update_goal, workflow
|
|
39
38
|
```
|
|
40
39
|
|
|
41
40
|
Every other registered tool is searchable but initially omitted. `neverSearch` hides a name from both the initial surface and the search corpus; it wins a conflict with `alwaysVisible`. `tool_search` itself cannot be blacklisted, preventing a configuration dead end.
|
|
@@ -50,6 +49,16 @@ The selected set is:
|
|
|
50
49
|
|
|
51
50
|
Tool and prompt registry changes invalidate every cached catalog. The next assembly or search rebuilds from current scoped schemas.
|
|
52
51
|
|
|
52
|
+
## Presentation Modes
|
|
53
|
+
|
|
54
|
+
DSH renders the tool surface per scope: `native` lists JSON schemas, `ptc` (`code` before DSH `0.1.2`) collapses that list to the reserved `run_code` transport plus a generated `tools:sdk` prompt section, and `both` renders native schemas and the SDK together. The plugin filters every surface the assembly carries:
|
|
55
|
+
|
|
56
|
+
- `assembly.tools` keeps only the visible names, so `run_code` survives while deferred schemas stay absent;
|
|
57
|
+
- `tool:<name>` guidance sections for hidden tools are dropped;
|
|
58
|
+
- the `tools:sdk` section is regenerated with the same renderer DSH uses (`renderToolsSdk` / `renderToolsSdkPy`, matching the selected code runtime language), so the SDK advertises exactly the visible tool set.
|
|
59
|
+
|
|
60
|
+
The search corpus itself comes from the Agent's scoped registry view, not from the assembly, so under PTC - where the assembly only carries `run_code` - every deferred tool stays searchable. A tool selected by `tool_search` then appears on the next model turn in whatever surface the deployment renders, and becomes callable through `run_code`.
|
|
61
|
+
|
|
53
62
|
## Settings
|
|
54
63
|
|
|
55
64
|
The DSH Web settings page exposes:
|
|
@@ -144,11 +153,12 @@ pnpm validate
|
|
|
144
153
|
pnpm run e2e:profile
|
|
145
154
|
```
|
|
146
155
|
|
|
147
|
-
The test suite covers document construction, exact-name Recall@1, capability Recall@5, stable ties, per-Agent isolation, monotonic growth, registry refresh, result shape, final-success commit, post-execute rejection and rewrite, one-turn loading, resume/fork recovery, live settings, Web controls, and the real DSH approval/guard/event/execution pipeline. The profile E2E installs the packed plugin into a clean `DSH_HOME` and drives a scripted real Agent
|
|
156
|
+
The test suite covers document construction, exact-name Recall@1, capability Recall@5, stable ties, per-Agent isolation, monotonic growth, registry refresh, result shape, final-success commit, post-execute rejection and rewrite, one-turn loading, resume/fork recovery, live settings, Web controls, native/PTC/`both` assembly filtering, and the real DSH approval/guard/event/execution pipeline. The profile E2E installs the packed plugin into a clean `DSH_HOME` and drives a scripted real Agent twice: once in the deployment's default native presentation, and once with `DSH_TOOLS_MODE` set to the PTC presentation name for that DSH version. The PTC pass asserts that the reserved transport is the only direct tool, that the generated SDK hides deferred tools, that a selected tool reaches the next SDK, and that the selection dispatches through `run_code`. Release validation runs this E2E on DSH `0.1.1-rc.1` (`code`), `0.1.2-rc.1`, and `0.1.5-rc.1` (`ptc`).
|
|
148
157
|
|
|
149
158
|
## Known Limits
|
|
150
159
|
|
|
151
|
-
-
|
|
160
|
+
- Regenerating `tools:sdk` depends on the renderers DSH exports (`renderToolsSdk`, `renderToolsSdkPy`). A future DSH that renames the section or stops exporting a renderer makes the plugin fail loudly for that Agent instead of degrading to an unfiltered SDK.
|
|
161
|
+
- Under PTC a model that names a deferred-but-unselected tool resolves to `UNKNOWN_TOOL` inside `run_code`: the plugin withholds the schema, the registry still refuses the dispatch, and no forged definition can reach execution.
|
|
152
162
|
- On some Node.js 24+ builds, the DSH `0.1.2-rc.1` standalone launcher cannot access Node's internal ESM loader and therefore cannot resolve any bare external Profile package. If startup reports `Cannot find package '@anionex/dsh-tool-search'`, launch with `node --expose-internals "$(command -v dsh)" --profile <name> ...`. CI requires standard bare-package loading on Node 22; the Profile E2E records whether a local run needed this launcher workaround.
|
|
153
163
|
- Tool definitions do not expose package provenance. Newly introduced DSH core names default to deferred until this package updates `DEFAULT_CORE_TOOLS` or the user adds an allowlist entry.
|
|
154
164
|
- Exact `tool:<name>` guidance is filtered with a hidden schema. Arbitrary third-party prompt sections have no tool provenance and cannot be safely rewritten.
|
package/README.zh.md
CHANGED
|
@@ -16,26 +16,25 @@ dsh plugin --profile web add @anionex/dsh-tool-search
|
|
|
16
16
|
|
|
17
17
|
要求:
|
|
18
18
|
|
|
19
|
-
- DSH `0.1.1-rc.1` 至当前 `0.1.
|
|
19
|
+
- DSH `0.1.1-rc.1` 至当前 `0.1.5-rc.1` 预发布版本线
|
|
20
20
|
- Node.js `^22.19.0 || >=24.0.0`
|
|
21
|
-
-
|
|
21
|
+
- 任意工具展示模式:`native`、`ptc`(DSH ≤ `0.1.1` 里叫 `code`)或 `both`
|
|
22
22
|
|
|
23
23
|
## 行为
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
初始模型可见工具集合包含:
|
|
26
26
|
|
|
27
27
|
- `tool_search`
|
|
28
28
|
- `apply_patch`
|
|
29
29
|
- `DEFAULT_CORE_TOOLS` 中维护的 DSH 核心工具
|
|
30
30
|
- `alwaysVisible` 中配置的精确名称
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
默认策略把以下名称视为核心工具:
|
|
33
33
|
|
|
34
34
|
```text
|
|
35
|
-
apply_patch, ask_user_question, bash, create_goal,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
todo_write, update_goal, workflow
|
|
35
|
+
apply_patch, ask_user_question, bash, create_goal, exit_plan_mode, get_goal,
|
|
36
|
+
interrupt_agent, job_kill, job_list, job_output, list_agents, ralph, report,
|
|
37
|
+
send_message, skill, subagent, subagent_fork, todo_write, update_goal, workflow
|
|
39
38
|
```
|
|
40
39
|
|
|
41
40
|
其他已注册工具都可搜索,但默认不显示。`neverSearch` 同时从初始集合和搜索语料中隐藏名称,并在与 `alwaysVisible` 冲突时优先。`tool_search` 自身不能被拉黑,避免配置后无工具可发现。
|
|
@@ -50,6 +49,16 @@ todo_write, update_goal, workflow
|
|
|
50
49
|
|
|
51
50
|
工具或提示词注册表变化会让全部缓存目录失效。下一次 assembly 或搜索按当前作用域 schema 重建索引。
|
|
52
51
|
|
|
52
|
+
## 展示模式
|
|
53
|
+
|
|
54
|
+
DSH 按作用域渲染工具面:`native` 直接列出 JSON schema;`ptc`(DSH `0.1.2` 之前叫 `code`)把 schema 列表收缩为保留传输 `run_code`,再加一段生成的 `tools:sdk` 提示词段;`both` 同时渲染原生 schema 与 SDK。插件会过滤 assembly 实际携带的每一层:
|
|
55
|
+
|
|
56
|
+
- `assembly.tools` 只保留可见名称,因此 `run_code` 保留、延迟工具的 schema 不出现;
|
|
57
|
+
- 隐藏工具对应的 `tool:<name>` 指引段被删除;
|
|
58
|
+
- `tools:sdk` 段用 DSH 自己的渲染器(`renderToolsSdk` / `renderToolsSdkPy`,与当前 code runtime 语言一致)重新生成,使 SDK 恰好宣传可见工具集合。
|
|
59
|
+
|
|
60
|
+
搜索语料来自该 Agent 的作用域注册表视图,而不是 assembly;因此即使 PTC 下 assembly 只有 `run_code`,全部延迟工具依然可被搜索。`tool_search` 选中的工具会在下一次模型轮次按当前部署的渲染方式出现,并可通过 `run_code` 调用。
|
|
61
|
+
|
|
53
62
|
## 设置
|
|
54
63
|
|
|
55
64
|
DSH Web 设置页提供:
|
|
@@ -144,11 +153,12 @@ pnpm validate
|
|
|
144
153
|
pnpm run e2e:profile
|
|
145
154
|
```
|
|
146
155
|
|
|
147
|
-
测试覆盖文档构造、精确名称 Recall@1、能力 Recall@5、同分稳定性、Agent 隔离、集合单调增长、注册表刷新、结果形状、最终成功后提交、post-execute 拒绝与改写、只多一轮加载、resume/fork 恢复、实时设置、Web
|
|
156
|
+
测试覆盖文档构造、精确名称 Recall@1、能力 Recall@5、同分稳定性、Agent 隔离、集合单调增长、注册表刷新、结果形状、最终成功后提交、post-execute 拒绝与改写、只多一轮加载、resume/fork 恢复、实时设置、Web 控件、native/PTC/`both` 三种 assembly 过滤,以及真实 DSH approval/guard/event/execute 链。Profile E2E 会把打包产物安装到全新 `DSH_HOME`,并两次驱动脚本化真实 Agent:一次用部署默认的 native 展示,一次把 `DSH_TOOLS_MODE` 设成该 DSH 版本对应的 PTC 名称。PTC 那一轮会断言:直接可见工具只有保留传输 `run_code`、生成的 SDK 隐藏延迟工具、被选中的工具出现在下一轮 SDK、并且该选择确实通过 `run_code` 完成派发。发布验收会在 DSH `0.1.1-rc.1`(`code`)、`0.1.2-rc.1` 与 `0.1.5-rc.1`(`ptc`)上运行该 E2E。
|
|
148
157
|
|
|
149
158
|
## 已知限制
|
|
150
159
|
|
|
151
|
-
-
|
|
160
|
+
- 重新生成 `tools:sdk` 依赖 DSH 导出的渲染器(`renderToolsSdk`、`renderToolsSdkPy`)。若未来 DSH 改名该段或不再导出渲染器,插件会让该 Agent 明确报错,而不是降级成未过滤的 SDK。
|
|
161
|
+
- PTC 下模型若直接点名“延迟但未选中”的工具,会在 `run_code` 内得到 `UNKNOWN_TOOL`:插件不提供其 schema,注册表仍然拒绝派发,伪造的定义无法进入执行。
|
|
152
162
|
- 部分 Node.js 24+ 版本下,DSH `0.1.2-rc.1` 独立启动器无法访问 Node 内部 ESM loader,因而不能解析任何 Profile 中以裸包名安装的外部插件。若启动时报 `Cannot find package '@anionex/dsh-tool-search'`,请改用 `node --expose-internals "$(command -v dsh)" --profile <name> ...`。CI 会在 Node 22 上强制验证标准裸包名加载;Profile E2E 也会记录本地运行是否用到了这一启动器兼容方案。
|
|
153
163
|
- 工具定义不提供包来源。新加入的 DSH 核心工具默认延迟,直到本包更新 `DEFAULT_CORE_TOOLS`,或用户加入白名单。
|
|
154
164
|
- 插件会随隐藏 schema 一起过滤精确 `tool:<name>` 指引。任意第三方提示词段没有工具来源,无法可靠改写。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
|
-
"packageVersion": "0.1.
|
|
3
|
+
"packageVersion": "0.1.1",
|
|
4
4
|
"tokenizer": "gpt-tokenizer 4.0.0 (o200k_base default encode)",
|
|
5
5
|
"fixture": {
|
|
6
6
|
"description": "Deterministic nested function schemas; full surface versus tool_search-only initial surface.",
|
package/lib/client.js
CHANGED
|
@@ -11,6 +11,16 @@ const TOOL_SEARCH_SETTINGS_NAMESPACE = "tool-search";
|
|
|
11
11
|
const TOOL_SEARCH_CATALOG_ROUTE = "/_dsh/tool-search/catalog";
|
|
12
12
|
const DEFAULT_RESULT_LIMIT = 5;
|
|
13
13
|
/**
|
|
14
|
+
* Markers identifying which renderer produced an SDK section we did not
|
|
15
|
+
* assemble ourselves. Used only when the code runtime cannot be read from the
|
|
16
|
+
* context, because the renderer must match the flavor the model was told to
|
|
17
|
+
* program against.
|
|
18
|
+
*/
|
|
19
|
+
const TOOL_SDK_LANGUAGE_MARKERS = Object.freeze({
|
|
20
|
+
typescript: "interface ToolArgsMap",
|
|
21
|
+
python: "class Tools(Protocol)"
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
14
24
|
* Stable bootstrap surface for current DSH releases. Unknown future first-party
|
|
15
25
|
* names are deferred until this list or the user allowlist is updated because
|
|
16
26
|
* ToolDefinition does not expose package provenance.
|
|
@@ -20,7 +30,6 @@ const DEFAULT_CORE_TOOLS = Object.freeze([
|
|
|
20
30
|
"ask_user_question",
|
|
21
31
|
"bash",
|
|
22
32
|
"create_goal",
|
|
23
|
-
"dsh_im_return_file",
|
|
24
33
|
"exit_plan_mode",
|
|
25
34
|
"get_goal",
|
|
26
35
|
"interrupt_agent",
|
|
@@ -60,6 +69,7 @@ const en = {
|
|
|
60
69
|
selected: "Live agents",
|
|
61
70
|
defaultPolicy: "Default",
|
|
62
71
|
alwaysPolicy: "Always",
|
|
72
|
+
deferredPolicy: "Deferred",
|
|
63
73
|
blockedPolicy: "Blocked",
|
|
64
74
|
loading: "Loading...",
|
|
65
75
|
empty: "No matching tools",
|
|
@@ -79,6 +89,7 @@ const zh = {
|
|
|
79
89
|
selected: "活跃 Agent",
|
|
80
90
|
defaultPolicy: "默认",
|
|
81
91
|
alwaysPolicy: "常驻",
|
|
92
|
+
deferredPolicy: "延迟",
|
|
82
93
|
blockedPolicy: "禁用",
|
|
83
94
|
loading: "加载中...",
|
|
84
95
|
empty: "没有匹配工具",
|
|
@@ -313,7 +324,7 @@ function ToolSearchSettingsSection({ scope, t }) {
|
|
|
313
324
|
children: [
|
|
314
325
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
|
|
315
326
|
value: "default",
|
|
316
|
-
children:
|
|
327
|
+
children: `${translate("defaultPolicy")} (${translate(core.has(tool.name) ? "alwaysPolicy" : "deferredPolicy")})`
|
|
317
328
|
}),
|
|
318
329
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
|
|
319
330
|
value: "always",
|
package/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":["useSyncExternalStore","useCallback","useState","useMemo"],"sources":["../src/shared.ts","../src/client/index.tsx"],"sourcesContent":["/** Values shared by the Host runtime and Web settings client. */\n\nexport const TOOL_SEARCH_NAME = 'tool_search'\nexport const TOOL_SEARCH_SETTINGS_NAMESPACE = 'tool-search'\nexport const TOOL_SEARCH_CATALOG_ROUTE = '/_dsh/tool-search/catalog'\nexport const DEFAULT_RESULT_LIMIT = 5\nexport const MAX_RESULT_LIMIT = 20\n\n/**\n * Stable bootstrap surface for current DSH releases. Unknown future first-party\n * names are deferred until this list or the user allowlist is updated because\n * ToolDefinition does not expose package provenance.\n */\nexport const DEFAULT_CORE_TOOLS = Object.freeze([\n 'apply_patch',\n 'ask_user_question',\n 'bash',\n 'create_goal',\n 'dsh_im_return_file',\n 'exit_plan_mode',\n 'get_goal',\n 'interrupt_agent',\n 'job_kill',\n 'job_list',\n 'job_output',\n 'list_agents',\n 'ralph',\n 'report',\n 'send_message',\n 'skill',\n 'subagent',\n 'subagent_fork',\n 'todo_write',\n 'update_goal',\n 'workflow',\n] as const)\n\nexport interface ToolSearchSettings {\n defaultLimit: number\n alwaysVisible: string[]\n neverSearch: string[]\n}\n\nexport const DEFAULT_SETTINGS: Readonly<ToolSearchSettings> = Object.freeze({\n defaultLimit: DEFAULT_RESULT_LIMIT,\n alwaysVisible: [],\n neverSearch: [],\n})\n\nexport type ToolPolicy = 'always' | 'deferred' | 'blocked'\n\nexport interface CatalogToolSummary {\n name: string\n description: string\n policy: ToolPolicy\n selectedBy: string[]\n}\n\nexport interface CatalogSnapshot {\n schemaVersion: 1\n generation: number\n tools: CatalogToolSummary[]\n}\n","/** DSH Web settings surface for deferred tool policy. */\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\nimport {\n DEFAULT_CORE_TOOLS,\n DEFAULT_RESULT_LIMIT,\n MAX_RESULT_LIMIT,\n TOOL_SEARCH_CATALOG_ROUTE,\n TOOL_SEARCH_NAME,\n TOOL_SEARCH_SETTINGS_NAMESPACE,\n type CatalogSnapshot,\n type ToolPolicy,\n type ToolSearchSettings,\n} from '../shared.ts'\n\ninterface SettingsScopeSnapshot<T> {\n status: 'loading' | 'ready' | 'unavailable'\n value: T | undefined\n writable: boolean\n}\n\ninterface SettingsScope<T> {\n getSnapshot(): SettingsScopeSnapshot<T>\n subscribe(listener: () => void): () => void\n set(field: string, value: unknown): Promise<void>\n}\n\ntype Disposer = () => void\n\ninterface ClientContext {\n effect(setup: () => Disposer | void, label: string): void\n locale: {\n register(namespace: string, catalogs: Record<string, Record<string, string>>): Disposer\n bind(namespace: string): (key: string) => string\n }\n settingsScope: {\n bind<T>(options: { namespace: string }): SettingsScope<T>\n }\n slots: {\n inject(name: string, callback: () => Disposer): Disposer\n register<P>(\n options: {\n name: string\n id: string\n order: number\n label: () => string\n inject: () => P\n },\n component: (props: P) => ReactNode,\n ): Disposer\n }\n}\n\ntype Translate = (key: keyof typeof en) => string\n\nconst en = {\n nav: 'Tool Search',\n topK: 'Default results',\n alwaysVisible: 'Always visible',\n neverSearch: 'Never searchable',\n catalog: 'Tool catalog',\n filter: 'Filter tools',\n refresh: 'Refresh',\n tool: 'Tool',\n policy: 'Policy',\n selected: 'Live agents',\n defaultPolicy: 'Default',\n alwaysPolicy: 'Always',\n blockedPolicy: 'Blocked',\n loading: 'Loading...',\n empty: 'No matching tools',\n saved: 'Saved',\n onePerLine: 'One exact tool name per line',\n}\n\nconst zh: typeof en = {\n nav: '工具搜索',\n topK: '默认结果数',\n alwaysVisible: '常驻白名单',\n neverSearch: '搜索黑名单',\n catalog: '工具目录',\n filter: '筛选工具',\n refresh: '刷新',\n tool: '工具',\n policy: '策略',\n selected: '活跃 Agent',\n defaultPolicy: '默认',\n alwaysPolicy: '常驻',\n blockedPolicy: '禁用',\n loading: '加载中...',\n empty: '没有匹配工具',\n saved: '已保存',\n onePerLine: '每行一个精确工具名',\n}\n\nconst EMPTY_SETTINGS: SettingsScopeSnapshot<ToolSearchSettings> = {\n status: 'unavailable',\n value: undefined,\n writable: false,\n}\n\nconst styles = `\n.dts-settings{container-type:inline-size;display:flex;flex-direction:column;gap:20px;width:100%;min-width:0;color:var(--dsw-alias-label-primary)}\n.dts-toolbar{display:grid;grid-template-columns:minmax(160px,220px) minmax(220px,1fr) auto;align-items:end;gap:12px}\n.dts-field{display:flex;flex-direction:column;gap:6px;min-width:0}\n.dts-field>span,.dts-section-title{font-size:13px;font-weight:600;color:var(--dsw-alias-label-primary)}\n.dts-input,.dts-textarea,.dts-select{box-sizing:border-box;width:100%;min-width:0;border:1px solid var(--dsw-alias-border-l2);border-radius:6px;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:inherit}\n.dts-input,.dts-select{height:34px;padding:0 9px}.dts-textarea{min-height:104px;padding:8px 9px;resize:vertical;line-height:20px}\n.dts-input:focus,.dts-textarea:focus,.dts-select:focus{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:1px}\n.dts-lists{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}\n.dts-hint{font-size:11px;color:var(--dsw-alias-label-tertiary)}\n.dts-button{height:34px;padding:0 12px;border:1px solid var(--dsw-alias-border-l2);border-radius:6px;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);cursor:pointer}\n.dts-button:hover{background:var(--dsw-alias-interactive-bg-hover)}.dts-button:disabled{opacity:.5;cursor:not-allowed}\n.dts-status{min-height:18px;font-size:12px;color:var(--dsw-alias-label-secondary)}.dts-status[data-error=true]{color:var(--dsw-alias-state-error-primary)}\n.dts-table-wrap{min-width:0;overflow:auto;border-top:1px solid var(--dsw-alias-border-l2);border-bottom:1px solid var(--dsw-alias-border-l2)}\n.dts-table{width:100%;min-width:620px;border-collapse:collapse;table-layout:fixed}\n.dts-table th,.dts-table td{box-sizing:border-box;padding:9px 10px;border-bottom:1px solid var(--dsw-alias-border-l1);text-align:left;vertical-align:middle;font-size:12px}\n.dts-table th{position:sticky;top:0;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);font-weight:600}\n.dts-table tr:last-child td{border-bottom:0}.dts-tool{width:52%}.dts-tool code{display:block;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere;white-space:nowrap;color:var(--dsw-alias-label-primary)}\n.dts-description{display:block;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-tertiary)}\n.dts-policy{width:26%}.dts-selected{width:22%;color:var(--dsw-alias-label-secondary)}\n@container(max-width:620px){.dts-toolbar{grid-template-columns:1fr auto}.dts-toolbar .dts-limit{grid-column:1/-1}.dts-lists{grid-template-columns:1fr}.dts-table{min-width:0}.dts-table thead{display:none}.dts-table tr{display:grid;grid-template-columns:minmax(0,1fr) 132px;padding:8px 10px;border-bottom:1px solid var(--dsw-alias-border-l1)}.dts-table td{padding:4px 0;border:0}.dts-table .dts-tool,.dts-table .dts-policy{width:auto}.dts-table .dts-selected{grid-column:1/-1;width:auto;font-size:11px}.dts-table .dts-selected::before{content:attr(data-label) \": \";color:var(--dsw-alias-label-tertiary);font-weight:600}}\n`\n\nfunction namesFromText(value: string): string[] {\n return [...new Set(value.split(/\\r?\\n/u).map(name => name.trim()).filter(Boolean))].sort()\n}\n\nfunction overrideFor(name: string, settings: ToolSearchSettings): ToolPolicy | 'default' {\n if (settings.neverSearch.includes(name)) return 'blocked'\n if (settings.alwaysVisible.includes(name)) return 'always'\n return 'default'\n}\n\nfunction decodeCatalog(value: unknown): CatalogSnapshot {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new Error('Invalid catalog response')\n const record = value as Record<string, unknown>\n if (record['schemaVersion'] !== 1 || !Array.isArray(record['tools']) || typeof record['generation'] !== 'number') {\n throw new Error('Invalid catalog response')\n }\n return value as CatalogSnapshot\n}\n\ntype SettingsProps = {\n scope?: SettingsScope<ToolSearchSettings>\n t?: Translate\n}\n\nexport function ToolSearchSettingsSection({ scope, t }: SettingsProps): ReactNode {\n const snapshot = useSyncExternalStore(\n useCallback((notify: () => void) => scope?.subscribe(notify) ?? (() => {}), [scope]),\n useCallback(() => scope?.getSnapshot() ?? EMPTY_SETTINGS, [scope]),\n )\n const [catalog, setCatalog] = useState<CatalogSnapshot>()\n const [filter, setFilter] = useState('')\n const [alwaysText, setAlwaysText] = useState('')\n const [blockedText, setBlockedText] = useState('')\n const [limitText, setLimitText] = useState(String(DEFAULT_RESULT_LIMIT))\n const [status, setStatus] = useState<{ text: string; error: boolean }>()\n const translate = t ?? ((key: keyof typeof en) => en[key])\n const settings = snapshot.value\n\n const refresh = useCallback(async (): Promise<void> => {\n try {\n const response = await fetch(TOOL_SEARCH_CATALOG_ROUTE, { cache: 'no-store' })\n if (!response.ok) throw new Error(`HTTP ${response.status}`)\n setCatalog(decodeCatalog(await response.json()))\n setStatus(undefined)\n } catch (error) {\n setStatus({ text: error instanceof Error ? error.message : String(error), error: true })\n }\n }, [])\n\n useEffect(() => { void refresh() }, [refresh])\n useEffect(() => {\n if (settings === undefined) return\n setAlwaysText(settings.alwaysVisible.join('\\n'))\n setBlockedText(settings.neverSearch.join('\\n'))\n setLimitText(String(settings.defaultLimit))\n }, [settings])\n\n const commit = useCallback((field: keyof ToolSearchSettings, value: unknown): void => {\n if (scope === undefined || !snapshot.writable) return\n setStatus(undefined)\n void scope.set(field, value).then(() => {\n setStatus({ text: translate('saved'), error: false })\n void refresh()\n }, error => {\n setStatus({ text: error instanceof Error ? error.message : String(error), error: true })\n })\n }, [refresh, scope, snapshot.writable, translate])\n\n const visibleTools = useMemo(() => {\n const query = filter.trim().toLowerCase()\n if (query.length === 0) return catalog?.tools ?? []\n return (catalog?.tools ?? []).filter(tool =>\n tool.name.toLowerCase().includes(query) || tool.description.toLowerCase().includes(query),\n )\n }, [catalog, filter])\n\n const changePolicy = (name: string, next: ToolPolicy | 'default'): void => {\n if (settings === undefined || name === TOOL_SEARCH_NAME) return\n const always = new Set(settings.alwaysVisible)\n const blocked = new Set(settings.neverSearch)\n always.delete(name)\n blocked.delete(name)\n if (next === 'always') always.add(name)\n if (next === 'blocked') blocked.add(name)\n commit('alwaysVisible', [...always].sort())\n commit('neverSearch', [...blocked].sort())\n }\n\n const core = new Set<string>(DEFAULT_CORE_TOOLS)\n return <div className=\"dts-settings\">\n <div className=\"dts-toolbar\">\n <label className=\"dts-field dts-limit\">\n <span>{translate('topK')}</span>\n <input\n className=\"dts-input\"\n type=\"number\"\n min={1}\n max={MAX_RESULT_LIMIT}\n value={limitText}\n disabled={!snapshot.writable}\n onChange={event => setLimitText(event.target.value)}\n onBlur={() => {\n const value = Number.parseInt(limitText, 10)\n if (Number.isSafeInteger(value) && value >= 1 && value <= MAX_RESULT_LIMIT) commit('defaultLimit', value)\n else setLimitText(String(settings?.defaultLimit ?? DEFAULT_RESULT_LIMIT))\n }}\n />\n </label>\n <label className=\"dts-field\">\n <span>{translate('filter')}</span>\n <input className=\"dts-input\" type=\"search\" value={filter} onChange={event => setFilter(event.target.value)} />\n </label>\n <button className=\"dts-button\" type=\"button\" onClick={() => { void refresh() }}>{translate('refresh')}</button>\n </div>\n\n <div className=\"dts-lists\">\n <label className=\"dts-field\">\n <span>{translate('alwaysVisible')}</span>\n <textarea\n className=\"dts-textarea\"\n value={alwaysText}\n disabled={!snapshot.writable}\n placeholder={translate('onePerLine')}\n onChange={event => setAlwaysText(event.target.value)}\n onBlur={() => commit('alwaysVisible', namesFromText(alwaysText))}\n />\n </label>\n <label className=\"dts-field\">\n <span>{translate('neverSearch')}</span>\n <textarea\n className=\"dts-textarea\"\n value={blockedText}\n disabled={!snapshot.writable}\n placeholder={translate('onePerLine')}\n onChange={event => setBlockedText(event.target.value)}\n onBlur={() => commit('neverSearch', namesFromText(blockedText).filter(name => name !== TOOL_SEARCH_NAME))}\n />\n </label>\n </div>\n\n <section className=\"dts-field\">\n <div className=\"dts-section-title\">{translate('catalog')}</div>\n <div className=\"dts-table-wrap\">\n <table className=\"dts-table\">\n <thead><tr>\n <th className=\"dts-tool\">{translate('tool')}</th>\n <th className=\"dts-policy\">{translate('policy')}</th>\n <th className=\"dts-selected\">{translate('selected')}</th>\n </tr></thead>\n <tbody>\n {visibleTools.map(tool => <tr key={tool.name}>\n <td className=\"dts-tool\">\n <code title={tool.name}>{tool.name}</code>\n {tool.description.length > 0 ? <span className=\"dts-description\" title={tool.description}>{tool.description}</span> : null}\n </td>\n <td className=\"dts-policy\">\n <select\n className=\"dts-select\"\n aria-label={`${translate('policy')}: ${tool.name}`}\n value={tool.name === TOOL_SEARCH_NAME ? 'always' : overrideFor(tool.name, settings ?? {\n defaultLimit: DEFAULT_RESULT_LIMIT,\n alwaysVisible: [],\n neverSearch: [],\n })}\n disabled={!snapshot.writable || tool.name === TOOL_SEARCH_NAME}\n onChange={event => changePolicy(tool.name, event.target.value as ToolPolicy | 'default')}\n >\n <option value=\"default\">{core.has(tool.name) ? `${translate('defaultPolicy')} (${translate('alwaysPolicy')})` : translate('defaultPolicy')}</option>\n <option value=\"always\">{translate('alwaysPolicy')}</option>\n <option value=\"blocked\">{translate('blockedPolicy')}</option>\n </select>\n </td>\n <td\n className=\"dts-selected\"\n data-label={translate('selected')}\n aria-label={`${translate('selected')}: ${tool.selectedBy.length}`}\n >{tool.selectedBy.length}</td>\n </tr>)}\n {catalog !== undefined && visibleTools.length === 0\n ? <tr><td colSpan={3}>{translate('empty')}</td></tr>\n : null}\n </tbody>\n </table>\n </div>\n <div className=\"dts-status\" data-error={status?.error || undefined}>\n {status?.text ?? (catalog === undefined ? translate('loading') : '')}\n </div>\n </section>\n </div>\n}\n\nexport const inject = ['slots', 'locale', 'settingsScope']\n\nexport function apply(ctx: ClientContext): void {\n ctx.effect(() => {\n if (document.querySelector('style[data-plugin-css=\"@anionex/dsh-tool-search\"]') !== null) return () => {}\n const tag = document.createElement('style')\n tag.dataset.pluginCss = '@anionex/dsh-tool-search'\n tag.textContent = styles\n document.head.append(tag)\n return () => tag.remove()\n }, 'dsh-tool-search: styles')\n ctx.effect(() => ctx.locale.register('settings.toolSearch', { en, zh }), 'dsh-tool-search: locale')\n const t = ctx.locale.bind('settings.toolSearch') as Translate\n const scope = ctx.settingsScope.bind<ToolSearchSettings>({ namespace: TOOL_SEARCH_SETTINGS_NAMESPACE })\n ctx.slots.inject('settings.section', () => ctx.slots.register({\n name: 'settings.section',\n id: 'tool-search',\n order: 34,\n label: () => t('nav'),\n inject: () => ({ scope, t }),\n }, ToolSearchSettingsSection))\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","names":["useSyncExternalStore","useCallback","useState","useMemo"],"sources":["../src/shared.ts","../src/client/index.tsx"],"sourcesContent":["/** Values shared by the Host runtime and Web settings client. */\n\nexport const TOOL_SEARCH_NAME = 'tool_search'\nexport const TOOL_SEARCH_SETTINGS_NAMESPACE = 'tool-search'\nexport const TOOL_SEARCH_CATALOG_ROUTE = '/_dsh/tool-search/catalog'\nexport const DEFAULT_RESULT_LIMIT = 5\nexport const MAX_RESULT_LIMIT = 20\n\n/** Prompt section carrying the generated PTC tool SDK (`ptc` and `both` modes). */\nexport const TOOL_SDK_SECTION_NAME = 'tools:sdk'\n\n/**\n * Markers identifying which renderer produced an SDK section we did not\n * assemble ourselves. Used only when the code runtime cannot be read from the\n * context, because the renderer must match the flavor the model was told to\n * program against.\n */\nexport const TOOL_SDK_LANGUAGE_MARKERS = Object.freeze({\n typescript: 'interface ToolArgsMap',\n python: 'class Tools(Protocol)',\n} as const)\n\n/**\n * Stable bootstrap surface for current DSH releases. Unknown future first-party\n * names are deferred until this list or the user allowlist is updated because\n * ToolDefinition does not expose package provenance.\n */\nexport const DEFAULT_CORE_TOOLS = Object.freeze([\n 'apply_patch',\n 'ask_user_question',\n 'bash',\n 'create_goal',\n 'exit_plan_mode',\n 'get_goal',\n 'interrupt_agent',\n 'job_kill',\n 'job_list',\n 'job_output',\n 'list_agents',\n 'ralph',\n 'report',\n 'send_message',\n 'skill',\n 'subagent',\n 'subagent_fork',\n 'todo_write',\n 'update_goal',\n 'workflow',\n] as const)\n\nexport interface ToolSearchSettings {\n defaultLimit: number\n alwaysVisible: string[]\n neverSearch: string[]\n}\n\nexport const DEFAULT_SETTINGS: Readonly<ToolSearchSettings> = Object.freeze({\n defaultLimit: DEFAULT_RESULT_LIMIT,\n alwaysVisible: [],\n neverSearch: [],\n})\n\nexport type ToolPolicy = 'always' | 'deferred' | 'blocked'\n\nexport interface CatalogToolSummary {\n name: string\n description: string\n policy: ToolPolicy\n selectedBy: string[]\n}\n\nexport interface CatalogSnapshot {\n schemaVersion: 1\n generation: number\n tools: CatalogToolSummary[]\n}\n","/** DSH Web settings surface for deferred tool policy. */\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\nimport {\n DEFAULT_CORE_TOOLS,\n DEFAULT_RESULT_LIMIT,\n MAX_RESULT_LIMIT,\n TOOL_SEARCH_CATALOG_ROUTE,\n TOOL_SEARCH_NAME,\n TOOL_SEARCH_SETTINGS_NAMESPACE,\n type CatalogSnapshot,\n type ToolPolicy,\n type ToolSearchSettings,\n} from '../shared.ts'\n\ninterface SettingsScopeSnapshot<T> {\n status: 'loading' | 'ready' | 'unavailable'\n value: T | undefined\n writable: boolean\n}\n\ninterface SettingsScope<T> {\n getSnapshot(): SettingsScopeSnapshot<T>\n subscribe(listener: () => void): () => void\n set(field: string, value: unknown): Promise<void>\n}\n\ntype Disposer = () => void\n\ninterface ClientContext {\n effect(setup: () => Disposer | void, label: string): void\n locale: {\n register(namespace: string, catalogs: Record<string, Record<string, string>>): Disposer\n bind(namespace: string): (key: string) => string\n }\n settingsScope: {\n bind<T>(options: { namespace: string }): SettingsScope<T>\n }\n slots: {\n inject(name: string, callback: () => Disposer): Disposer\n register<P>(\n options: {\n name: string\n id: string\n order: number\n label: () => string\n inject: () => P\n },\n component: (props: P) => ReactNode,\n ): Disposer\n }\n}\n\ntype Translate = (key: keyof typeof en) => string\n\nconst en = {\n nav: 'Tool Search',\n topK: 'Default results',\n alwaysVisible: 'Always visible',\n neverSearch: 'Never searchable',\n catalog: 'Tool catalog',\n filter: 'Filter tools',\n refresh: 'Refresh',\n tool: 'Tool',\n policy: 'Policy',\n selected: 'Live agents',\n defaultPolicy: 'Default',\n alwaysPolicy: 'Always',\n deferredPolicy: 'Deferred',\n blockedPolicy: 'Blocked',\n loading: 'Loading...',\n empty: 'No matching tools',\n saved: 'Saved',\n onePerLine: 'One exact tool name per line',\n}\n\nconst zh: typeof en = {\n nav: '工具搜索',\n topK: '默认结果数',\n alwaysVisible: '常驻白名单',\n neverSearch: '搜索黑名单',\n catalog: '工具目录',\n filter: '筛选工具',\n refresh: '刷新',\n tool: '工具',\n policy: '策略',\n selected: '活跃 Agent',\n defaultPolicy: '默认',\n alwaysPolicy: '常驻',\n deferredPolicy: '延迟',\n blockedPolicy: '禁用',\n loading: '加载中...',\n empty: '没有匹配工具',\n saved: '已保存',\n onePerLine: '每行一个精确工具名',\n}\n\nconst EMPTY_SETTINGS: SettingsScopeSnapshot<ToolSearchSettings> = {\n status: 'unavailable',\n value: undefined,\n writable: false,\n}\n\nconst styles = `\n.dts-settings{container-type:inline-size;display:flex;flex-direction:column;gap:20px;width:100%;min-width:0;color:var(--dsw-alias-label-primary)}\n.dts-toolbar{display:grid;grid-template-columns:minmax(160px,220px) minmax(220px,1fr) auto;align-items:end;gap:12px}\n.dts-field{display:flex;flex-direction:column;gap:6px;min-width:0}\n.dts-field>span,.dts-section-title{font-size:13px;font-weight:600;color:var(--dsw-alias-label-primary)}\n.dts-input,.dts-textarea,.dts-select{box-sizing:border-box;width:100%;min-width:0;border:1px solid var(--dsw-alias-border-l2);border-radius:6px;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:inherit}\n.dts-input,.dts-select{height:34px;padding:0 9px}.dts-textarea{min-height:104px;padding:8px 9px;resize:vertical;line-height:20px}\n.dts-input:focus,.dts-textarea:focus,.dts-select:focus{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:1px}\n.dts-lists{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}\n.dts-hint{font-size:11px;color:var(--dsw-alias-label-tertiary)}\n.dts-button{height:34px;padding:0 12px;border:1px solid var(--dsw-alias-border-l2);border-radius:6px;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);cursor:pointer}\n.dts-button:hover{background:var(--dsw-alias-interactive-bg-hover)}.dts-button:disabled{opacity:.5;cursor:not-allowed}\n.dts-status{min-height:18px;font-size:12px;color:var(--dsw-alias-label-secondary)}.dts-status[data-error=true]{color:var(--dsw-alias-state-error-primary)}\n.dts-table-wrap{min-width:0;overflow:auto;border-top:1px solid var(--dsw-alias-border-l2);border-bottom:1px solid var(--dsw-alias-border-l2)}\n.dts-table{width:100%;min-width:620px;border-collapse:collapse;table-layout:fixed}\n.dts-table th,.dts-table td{box-sizing:border-box;padding:9px 10px;border-bottom:1px solid var(--dsw-alias-border-l1);text-align:left;vertical-align:middle;font-size:12px}\n.dts-table th{position:sticky;top:0;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);font-weight:600}\n.dts-table tr:last-child td{border-bottom:0}.dts-tool{width:52%}.dts-tool code{display:block;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere;white-space:nowrap;color:var(--dsw-alias-label-primary)}\n.dts-description{display:block;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-tertiary)}\n.dts-policy{width:26%}.dts-selected{width:22%;color:var(--dsw-alias-label-secondary)}\n@container(max-width:620px){.dts-toolbar{grid-template-columns:1fr auto}.dts-toolbar .dts-limit{grid-column:1/-1}.dts-lists{grid-template-columns:1fr}.dts-table{min-width:0}.dts-table thead{display:none}.dts-table tr{display:grid;grid-template-columns:minmax(0,1fr) 132px;padding:8px 10px;border-bottom:1px solid var(--dsw-alias-border-l1)}.dts-table td{padding:4px 0;border:0}.dts-table .dts-tool,.dts-table .dts-policy{width:auto}.dts-table .dts-selected{grid-column:1/-1;width:auto;font-size:11px}.dts-table .dts-selected::before{content:attr(data-label) \": \";color:var(--dsw-alias-label-tertiary);font-weight:600}}\n`\n\nfunction namesFromText(value: string): string[] {\n return [...new Set(value.split(/\\r?\\n/u).map(name => name.trim()).filter(Boolean))].sort()\n}\n\nfunction overrideFor(name: string, settings: ToolSearchSettings): ToolPolicy | 'default' {\n if (settings.neverSearch.includes(name)) return 'blocked'\n if (settings.alwaysVisible.includes(name)) return 'always'\n return 'default'\n}\n\nfunction decodeCatalog(value: unknown): CatalogSnapshot {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new Error('Invalid catalog response')\n const record = value as Record<string, unknown>\n if (record['schemaVersion'] !== 1 || !Array.isArray(record['tools']) || typeof record['generation'] !== 'number') {\n throw new Error('Invalid catalog response')\n }\n return value as CatalogSnapshot\n}\n\ntype SettingsProps = {\n scope?: SettingsScope<ToolSearchSettings>\n t?: Translate\n}\n\nexport function ToolSearchSettingsSection({ scope, t }: SettingsProps): ReactNode {\n const snapshot = useSyncExternalStore(\n useCallback((notify: () => void) => scope?.subscribe(notify) ?? (() => {}), [scope]),\n useCallback(() => scope?.getSnapshot() ?? EMPTY_SETTINGS, [scope]),\n )\n const [catalog, setCatalog] = useState<CatalogSnapshot>()\n const [filter, setFilter] = useState('')\n const [alwaysText, setAlwaysText] = useState('')\n const [blockedText, setBlockedText] = useState('')\n const [limitText, setLimitText] = useState(String(DEFAULT_RESULT_LIMIT))\n const [status, setStatus] = useState<{ text: string; error: boolean }>()\n const translate = t ?? ((key: keyof typeof en) => en[key])\n const settings = snapshot.value\n\n const refresh = useCallback(async (): Promise<void> => {\n try {\n const response = await fetch(TOOL_SEARCH_CATALOG_ROUTE, { cache: 'no-store' })\n if (!response.ok) throw new Error(`HTTP ${response.status}`)\n setCatalog(decodeCatalog(await response.json()))\n setStatus(undefined)\n } catch (error) {\n setStatus({ text: error instanceof Error ? error.message : String(error), error: true })\n }\n }, [])\n\n useEffect(() => { void refresh() }, [refresh])\n useEffect(() => {\n if (settings === undefined) return\n setAlwaysText(settings.alwaysVisible.join('\\n'))\n setBlockedText(settings.neverSearch.join('\\n'))\n setLimitText(String(settings.defaultLimit))\n }, [settings])\n\n const commit = useCallback((field: keyof ToolSearchSettings, value: unknown): void => {\n if (scope === undefined || !snapshot.writable) return\n setStatus(undefined)\n void scope.set(field, value).then(() => {\n setStatus({ text: translate('saved'), error: false })\n void refresh()\n }, error => {\n setStatus({ text: error instanceof Error ? error.message : String(error), error: true })\n })\n }, [refresh, scope, snapshot.writable, translate])\n\n const visibleTools = useMemo(() => {\n const query = filter.trim().toLowerCase()\n if (query.length === 0) return catalog?.tools ?? []\n return (catalog?.tools ?? []).filter(tool =>\n tool.name.toLowerCase().includes(query) || tool.description.toLowerCase().includes(query),\n )\n }, [catalog, filter])\n\n const changePolicy = (name: string, next: ToolPolicy | 'default'): void => {\n if (settings === undefined || name === TOOL_SEARCH_NAME) return\n const always = new Set(settings.alwaysVisible)\n const blocked = new Set(settings.neverSearch)\n always.delete(name)\n blocked.delete(name)\n if (next === 'always') always.add(name)\n if (next === 'blocked') blocked.add(name)\n commit('alwaysVisible', [...always].sort())\n commit('neverSearch', [...blocked].sort())\n }\n\n const core = new Set<string>(DEFAULT_CORE_TOOLS)\n return <div className=\"dts-settings\">\n <div className=\"dts-toolbar\">\n <label className=\"dts-field dts-limit\">\n <span>{translate('topK')}</span>\n <input\n className=\"dts-input\"\n type=\"number\"\n min={1}\n max={MAX_RESULT_LIMIT}\n value={limitText}\n disabled={!snapshot.writable}\n onChange={event => setLimitText(event.target.value)}\n onBlur={() => {\n const value = Number.parseInt(limitText, 10)\n if (Number.isSafeInteger(value) && value >= 1 && value <= MAX_RESULT_LIMIT) commit('defaultLimit', value)\n else setLimitText(String(settings?.defaultLimit ?? DEFAULT_RESULT_LIMIT))\n }}\n />\n </label>\n <label className=\"dts-field\">\n <span>{translate('filter')}</span>\n <input className=\"dts-input\" type=\"search\" value={filter} onChange={event => setFilter(event.target.value)} />\n </label>\n <button className=\"dts-button\" type=\"button\" onClick={() => { void refresh() }}>{translate('refresh')}</button>\n </div>\n\n <div className=\"dts-lists\">\n <label className=\"dts-field\">\n <span>{translate('alwaysVisible')}</span>\n <textarea\n className=\"dts-textarea\"\n value={alwaysText}\n disabled={!snapshot.writable}\n placeholder={translate('onePerLine')}\n onChange={event => setAlwaysText(event.target.value)}\n onBlur={() => commit('alwaysVisible', namesFromText(alwaysText))}\n />\n </label>\n <label className=\"dts-field\">\n <span>{translate('neverSearch')}</span>\n <textarea\n className=\"dts-textarea\"\n value={blockedText}\n disabled={!snapshot.writable}\n placeholder={translate('onePerLine')}\n onChange={event => setBlockedText(event.target.value)}\n onBlur={() => commit('neverSearch', namesFromText(blockedText).filter(name => name !== TOOL_SEARCH_NAME))}\n />\n </label>\n </div>\n\n <section className=\"dts-field\">\n <div className=\"dts-section-title\">{translate('catalog')}</div>\n <div className=\"dts-table-wrap\">\n <table className=\"dts-table\">\n <thead><tr>\n <th className=\"dts-tool\">{translate('tool')}</th>\n <th className=\"dts-policy\">{translate('policy')}</th>\n <th className=\"dts-selected\">{translate('selected')}</th>\n </tr></thead>\n <tbody>\n {visibleTools.map(tool => <tr key={tool.name}>\n <td className=\"dts-tool\">\n <code title={tool.name}>{tool.name}</code>\n {tool.description.length > 0 ? <span className=\"dts-description\" title={tool.description}>{tool.description}</span> : null}\n </td>\n <td className=\"dts-policy\">\n <select\n className=\"dts-select\"\n aria-label={`${translate('policy')}: ${tool.name}`}\n value={tool.name === TOOL_SEARCH_NAME ? 'always' : overrideFor(tool.name, settings ?? {\n defaultLimit: DEFAULT_RESULT_LIMIT,\n alwaysVisible: [],\n neverSearch: [],\n })}\n disabled={!snapshot.writable || tool.name === TOOL_SEARCH_NAME}\n onChange={event => changePolicy(tool.name, event.target.value as ToolPolicy | 'default')}\n >\n <option value=\"default\">\n {`${translate('defaultPolicy')} (${translate(core.has(tool.name) ? 'alwaysPolicy' : 'deferredPolicy')})`}\n </option>\n <option value=\"always\">{translate('alwaysPolicy')}</option>\n <option value=\"blocked\">{translate('blockedPolicy')}</option>\n </select>\n </td>\n <td\n className=\"dts-selected\"\n data-label={translate('selected')}\n aria-label={`${translate('selected')}: ${tool.selectedBy.length}`}\n >{tool.selectedBy.length}</td>\n </tr>)}\n {catalog !== undefined && visibleTools.length === 0\n ? <tr><td colSpan={3}>{translate('empty')}</td></tr>\n : null}\n </tbody>\n </table>\n </div>\n <div className=\"dts-status\" data-error={status?.error || undefined}>\n {status?.text ?? (catalog === undefined ? translate('loading') : '')}\n </div>\n </section>\n </div>\n}\n\nexport const inject = ['slots', 'locale', 'settingsScope']\n\nexport function apply(ctx: ClientContext): void {\n ctx.effect(() => {\n if (document.querySelector('style[data-plugin-css=\"@anionex/dsh-tool-search\"]') !== null) return () => {}\n const tag = document.createElement('style')\n tag.dataset.pluginCss = '@anionex/dsh-tool-search'\n tag.textContent = styles\n document.head.append(tag)\n return () => tag.remove()\n }, 'dsh-tool-search: styles')\n ctx.effect(() => ctx.locale.register('settings.toolSearch', { en, zh }), 'dsh-tool-search: locale')\n const t = ctx.locale.bind('settings.toolSearch') as Translate\n const scope = ctx.settingsScope.bind<ToolSearchSettings>({ namespace: TOOL_SEARCH_SETTINGS_NAMESPACE })\n ctx.slots.inject('settings.section', () => ctx.slots.register({\n name: 'settings.section',\n id: 'tool-search',\n order: 34,\n label: () => t('nav'),\n inject: () => ({ scope, t }),\n }, ToolSearchSettingsSection))\n}\n"],"mappings":"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"}
|
package/lib/runtime.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/** Agent-local selected sets and model-visible tool filtering. */
|
|
2
|
-
import { defineTool, } from '@deepseek-ai/dsh-tools';
|
|
2
|
+
import { defineTool, renderToolsSdk, renderToolsSdkPy, RUN_CODE_NAME, } from '@deepseek-ai/dsh-tools';
|
|
3
3
|
import { Bm25Index } from "./bm25.js";
|
|
4
4
|
import { buildCatalog } from "./catalog.js";
|
|
5
5
|
import { ToolPolicyResolver, normalizeSettings } from "./settings.js";
|
|
6
|
-
import { MAX_RESULT_LIMIT, TOOL_SEARCH_NAME, } from "./shared.js";
|
|
6
|
+
import { MAX_RESULT_LIMIT, TOOL_SEARCH_NAME, TOOL_SDK_LANGUAGE_MARKERS, TOOL_SDK_SECTION_NAME, } from "./shared.js";
|
|
7
7
|
const RESULT_SCHEMA_VERSION = 1;
|
|
8
8
|
const MAX_QUERY_LENGTH = 4096;
|
|
9
9
|
const MAX_DESCRIPTION_LENGTH = 240;
|
|
@@ -257,30 +257,120 @@ export class ToolSearchRuntime {
|
|
|
257
257
|
throw new Error(`${TOOL_SEARCH_NAME}: Agent state could not be initialized`);
|
|
258
258
|
return state;
|
|
259
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* The searchable registry view for one Agent: every tool it could reach,
|
|
262
|
+
* whether or not the current presentation shows it.
|
|
263
|
+
*
|
|
264
|
+
* The reserved PTC transport is excluded: it is never searchable, never
|
|
265
|
+
* constrained by policy, and never part of the generated SDK it carries.
|
|
266
|
+
* Reading the registry (rather than the assembled schemas) is what keeps the
|
|
267
|
+
* corpus complete under PTC presentation, where the assembly itself carries
|
|
268
|
+
* only `run_code`.
|
|
269
|
+
*/
|
|
260
270
|
refreshCatalog(state) {
|
|
261
|
-
if (state.catalogGeneration
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
271
|
+
if (state.catalogGeneration !== this.generation) {
|
|
272
|
+
state.catalog = buildCatalog(this.ctx.tools.schemas(state.agent)
|
|
273
|
+
.filter(tool => tool.name !== RUN_CODE_NAME));
|
|
274
|
+
state.catalogGeneration = this.generation;
|
|
275
|
+
}
|
|
276
|
+
return state.catalog;
|
|
265
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* Hide every deferred tool from one final assembly.
|
|
280
|
+
*
|
|
281
|
+
* Two surfaces carry tools and both must agree: the native schema list plus
|
|
282
|
+
* its `tool:<name>` guidance sections, and — under `ptc`/`both` — the
|
|
283
|
+
* generated `tools:sdk` section. The SDK text is regenerated with the same
|
|
284
|
+
* renderer `dsh-tools` uses, from the surviving tools alone, so the filtered
|
|
285
|
+
* assembly is byte-identical to the one the registry would have built for
|
|
286
|
+
* that smaller tool set.
|
|
287
|
+
*/
|
|
266
288
|
filterAssembly(state, assembly) {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
state.catalog = buildCatalog(assembly.tools);
|
|
271
|
-
state.catalogGeneration = this.generation;
|
|
272
|
-
const visible = new Set(assembly.tools
|
|
289
|
+
const catalog = this.refreshCatalog(state);
|
|
290
|
+
const known = new Set(catalog.map(tool => tool.name));
|
|
291
|
+
const visible = new Set(catalog
|
|
273
292
|
.map(tool => tool.name)
|
|
274
293
|
.filter(name => this.policy.classify(name, state.selected) === 'always'));
|
|
275
|
-
const hidden = new Set(
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
294
|
+
const hidden = new Set(catalog.map(tool => tool.name).filter(name => !visible.has(name)));
|
|
295
|
+
const tools = assembly.tools.filter(tool => !known.has(tool.name) || visible.has(tool.name));
|
|
296
|
+
let sdkRewritten = false;
|
|
297
|
+
const sections = assembly.sections
|
|
298
|
+
.filter(section => {
|
|
299
|
+
const name = toolSectionName(section.name);
|
|
300
|
+
return name === undefined || !hidden.has(name);
|
|
301
|
+
})
|
|
302
|
+
.map(section => {
|
|
303
|
+
// An empty SDK section is an Agent-scoped opt-out of PTC presentation
|
|
304
|
+
// (a native override under a PTC deployment): there is nothing to filter.
|
|
305
|
+
if (section.name !== TOOL_SDK_SECTION_NAME || hidden.size === 0 || section.text.trim().length === 0) {
|
|
306
|
+
return section;
|
|
307
|
+
}
|
|
308
|
+
const text = this.renderSdk(state, visible, section.text);
|
|
309
|
+
if (text === section.text)
|
|
310
|
+
return section;
|
|
311
|
+
sdkRewritten = true;
|
|
312
|
+
return { ...section, text };
|
|
313
|
+
});
|
|
314
|
+
if (tools.length === assembly.tools.length && sections.length === assembly.sections.length && !sdkRewritten) {
|
|
315
|
+
return assembly;
|
|
316
|
+
}
|
|
317
|
+
return { ...assembly, tools, sections };
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Rebuild the PTC SDK section for the surviving tools.
|
|
321
|
+
*
|
|
322
|
+
* The flavor must be the one the session already programs against, so it
|
|
323
|
+
* comes from the mounted code runtime; a host that cannot answer for it
|
|
324
|
+
* falls back to the marker the existing section was rendered with.
|
|
325
|
+
*/
|
|
326
|
+
renderSdk(state, visible, original) {
|
|
327
|
+
const render = this.resolveSdkRenderer(original);
|
|
328
|
+
const schemas = [];
|
|
329
|
+
for (const tool of state.catalog) {
|
|
330
|
+
if (!visible.has(tool.name))
|
|
331
|
+
continue;
|
|
332
|
+
const definition = this.toolDefinition(tool.name, state.agent);
|
|
333
|
+
schemas.push({
|
|
334
|
+
name: tool.name,
|
|
335
|
+
description: definition?.description ?? tool.description,
|
|
336
|
+
parameters: cloneJson(definition?.parameters ?? tool.parameters),
|
|
337
|
+
output: cloneJson(definition?.output?.schema ?? {}),
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
return render(schemas);
|
|
341
|
+
}
|
|
342
|
+
resolveSdkRenderer(original) {
|
|
343
|
+
const runtime = this.codeRuntime();
|
|
344
|
+
if (runtime.language === 'typescript')
|
|
345
|
+
return renderToolsSdk;
|
|
346
|
+
if (runtime.language === 'python')
|
|
347
|
+
return renderToolsSdkPy;
|
|
348
|
+
if (original.includes(TOOL_SDK_LANGUAGE_MARKERS.python))
|
|
349
|
+
return renderToolsSdkPy;
|
|
350
|
+
if (original.includes(TOOL_SDK_LANGUAGE_MARKERS.typescript))
|
|
351
|
+
return renderToolsSdk;
|
|
352
|
+
throw new Error(`${TOOL_SEARCH_NAME}: cannot filter the generated tool SDK for code runtime language `
|
|
353
|
+
+ `${JSON.stringify(runtime.language ?? 'unknown')}`);
|
|
354
|
+
}
|
|
355
|
+
codeRuntime() {
|
|
356
|
+
const runtime = this.ctx.get?.('codeRuntime');
|
|
357
|
+
return typeof runtime === 'object' && runtime !== null ? runtime : {};
|
|
358
|
+
}
|
|
359
|
+
toolDefinition(name, agent) {
|
|
360
|
+
const registry = this.ctx.tools;
|
|
361
|
+
if (typeof registry.get !== 'function')
|
|
362
|
+
return undefined;
|
|
363
|
+
const definition = registry.get(name, agent);
|
|
364
|
+
return typeof definition === 'object' && definition !== null ? definition : undefined;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
/** Lossless clone of a schema node; a value that cannot be cloned is used as-is. */
|
|
368
|
+
function cloneJson(value) {
|
|
369
|
+
try {
|
|
370
|
+
return structuredClone(value);
|
|
371
|
+
}
|
|
372
|
+
catch {
|
|
373
|
+
return value;
|
|
284
374
|
}
|
|
285
375
|
}
|
|
286
376
|
//# sourceMappingURL=runtime.js.map
|
package/lib/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/lib/shared.js
CHANGED
|
@@ -4,6 +4,18 @@ export const TOOL_SEARCH_SETTINGS_NAMESPACE = 'tool-search';
|
|
|
4
4
|
export const TOOL_SEARCH_CATALOG_ROUTE = '/_dsh/tool-search/catalog';
|
|
5
5
|
export const DEFAULT_RESULT_LIMIT = 5;
|
|
6
6
|
export const MAX_RESULT_LIMIT = 20;
|
|
7
|
+
/** Prompt section carrying the generated PTC tool SDK (`ptc` and `both` modes). */
|
|
8
|
+
export const TOOL_SDK_SECTION_NAME = 'tools:sdk';
|
|
9
|
+
/**
|
|
10
|
+
* Markers identifying which renderer produced an SDK section we did not
|
|
11
|
+
* assemble ourselves. Used only when the code runtime cannot be read from the
|
|
12
|
+
* context, because the renderer must match the flavor the model was told to
|
|
13
|
+
* program against.
|
|
14
|
+
*/
|
|
15
|
+
export const TOOL_SDK_LANGUAGE_MARKERS = Object.freeze({
|
|
16
|
+
typescript: 'interface ToolArgsMap',
|
|
17
|
+
python: 'class Tools(Protocol)',
|
|
18
|
+
});
|
|
7
19
|
/**
|
|
8
20
|
* Stable bootstrap surface for current DSH releases. Unknown future first-party
|
|
9
21
|
* names are deferred until this list or the user allowlist is updated because
|
|
@@ -14,7 +26,6 @@ export const DEFAULT_CORE_TOOLS = Object.freeze([
|
|
|
14
26
|
'ask_user_question',
|
|
15
27
|
'bash',
|
|
16
28
|
'create_goal',
|
|
17
|
-
'dsh_im_return_file',
|
|
18
29
|
'exit_plan_mode',
|
|
19
30
|
'get_goal',
|
|
20
31
|
'interrupt_agent',
|
package/lib/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAA;AAC7C,MAAM,CAAC,MAAM,8BAA8B,GAAG,aAAa,CAAA;AAC3D,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AACpE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAA;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,aAAa;IACb,mBAAmB;IACnB,MAAM;IACN,aAAa;IACb,
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAA;AAC7C,MAAM,CAAC,MAAM,8BAA8B,GAAG,aAAa,CAAA;AAC3D,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AACpE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAA;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAElC,mFAAmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAA;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC;IACrD,UAAU,EAAE,uBAAuB;IACnC,MAAM,EAAE,uBAAuB;CACvB,CAAC,CAAA;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,aAAa;IACb,mBAAmB;IACnB,MAAM;IACN,aAAa;IACb,gBAAgB;IAChB,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,UAAU;IACV,YAAY;IACZ,aAAa;IACb,OAAO;IACP,QAAQ;IACR,cAAc;IACd,OAAO;IACP,UAAU;IACV,eAAe;IACf,YAAY;IACZ,aAAa;IACb,UAAU;CACF,CAAC,CAAA;AAQX,MAAM,CAAC,MAAM,gBAAgB,GAAiC,MAAM,CAAC,MAAM,CAAC;IAC1E,YAAY,EAAE,oBAAoB;IAClC,aAAa,EAAE,EAAE;IACjB,WAAW,EAAE,EAAE;CAChB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AACd,OAAO,EASL,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAA;AAErB,UAAU,qBAAqB,CAAC,CAAC;IAC/B,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;IAC3C,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,UAAU,aAAa,CAAC,CAAC;IACvB,WAAW,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAA;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClD;AAED,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAA;AAE1B,UAAU,aAAa;IACrB,MAAM,CAAC,KAAK,EAAE,MAAM,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACzD,MAAM,EAAE;QACN,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAA;QACvF,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;KACjD,CAAA;IACD,aAAa,EAAE;QACb,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;KAC1D,CAAA;IACD,KAAK,EAAE;QACL,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,GAAG,QAAQ,CAAA;QACxD,QAAQ,CAAC,CAAC,EACR,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAA;YACZ,EAAE,EAAE,MAAM,CAAA;YACV,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,MAAM,CAAA;YACnB,MAAM,EAAE,MAAM,CAAC,CAAA;SAChB,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,GACjC,QAAQ,CAAA;KACZ,CAAA;CACF;AAED,KAAK,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,OAAO,EAAE,KAAK,MAAM,CAAA;AAEjD,QAAA,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AACd,OAAO,EASL,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAA;AAErB,UAAU,qBAAqB,CAAC,CAAC;IAC/B,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;IAC3C,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,UAAU,aAAa,CAAC,CAAC;IACvB,WAAW,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAA;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClD;AAED,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAA;AAE1B,UAAU,aAAa;IACrB,MAAM,CAAC,KAAK,EAAE,MAAM,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACzD,MAAM,EAAE;QACN,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAA;QACvF,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;KACjD,CAAA;IACD,aAAa,EAAE;QACb,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;KAC1D,CAAA;IACD,KAAK,EAAE;QACL,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,GAAG,QAAQ,CAAA;QACxD,QAAQ,CAAC,CAAC,EACR,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAA;YACZ,EAAE,EAAE,MAAM,CAAA;YACV,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,MAAM,CAAA;YACnB,MAAM,EAAE,MAAM,CAAC,CAAA;SAChB,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,GACjC,QAAQ,CAAA;KACZ,CAAA;CACF;AAED,KAAK,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,OAAO,EAAE,KAAK,MAAM,CAAA;AAEjD,QAAA,MAAM,EAAE;;;;;;;;;;;;;;;;;;;CAmBP,CAAA;AAuED,KAAK,aAAa,GAAG;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAA;IACzC,CAAC,CAAC,EAAE,SAAS,CAAA;CACd,CAAA;AAED,wBAAgB,yBAAyB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,aAAa,GAAG,SAAS,CAuKhF;AAED,eAAO,MAAM,MAAM,UAAuC,CAAA;AAE1D,wBAAgB,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAmB9C"}
|