@khorsheed/dsh-local-agent-kimi 0.1.0-rc.7 → 0.2.0-rc.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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # 变更记录
2
2
 
3
+ ## 0.2.0-rc.1(2026-09-30)
4
+
5
+ - **家族折叠:委派工具收进本包**。新增 `./tool` 组合入口(`src/tool.ts`)——`subagent_kimi` 委派工具由 agent 预设点名 `name: '@khorsheed/dsh-local-agent-kimi/tool'` 按会话授予,Config 两字段(`provider` / `toolName`)全部可选、默认即本包取值,预设行无需配置;行 id `tool-subagent-kimi` 不变。bundle patch 不再插 profile 根工具行,本包自挂载恰好一行(provider 行),插件清单一个 provider 一张卡。实现共享自家族核 `@khorsheed/dsh-local-agent` 的 `./tool-factory` 导出;对 `@khorsheed/dsh-local-agent-tool-subagent` 的依赖移除(该包退役)。
6
+
7
+ ## 0.1.0-rc.8(2026-09-30)
8
+
9
+ 家族同版联动:加宽 `@deepseek-ai/dsh-*` peer 区间以覆盖宿主 0.2.0(0.2.0 的兼容闸会禁用 peer 区间不覆盖宿主版本的已装插件)。无功能变更。
10
+
3
11
  ## 0.1.0-rc.7(2026-09-27)
4
12
 
5
13
  家族同版联动:随宿主 0.1.7-rc.2 基线发布波重发,全量构建+测试在 rc.2 基线通过。README 截图整理(会话列表一张从未存在的引用删除,全部图片引用可解析)。无功能变更。
package/README.en.md CHANGED
@@ -6,11 +6,11 @@ Delegate a task from any dsh session to the Kimi Code CLI on your machine — it
6
6
 
7
7
  Getting the model to hand a whole chunk of work to another coding agent used to mean opening a terminal yourself, copy-pasting, and carrying the result back. This plugin gives every agent preset a `subagent_kimi` delegation tool and a `/kimi` command family: delegations run as child sessions in the session's workspace, their transcripts and progress show up in the subagent surface, results come back with real usage and timing, and the same handle resumes the conversation later.
8
8
 
9
- <img src="https://raw.githubusercontent.com/Khorsheed/dsh-web-basic/main/docs/screenshots/local-agent-kimi-settings.png" width="640" alt="the Kimi settings card: auth status, login/logout, default model, and the resident-mode toggle">
9
+ <img src="https://raw.githubusercontent.com/Khorsheed/dsh-basic/main/docs/screenshots/local-agent-kimi-settings.png" width="640" alt="the Kimi settings card: auth status, login/logout, default model, and the resident-mode toggle">
10
10
 
11
11
  ## Features
12
12
 
13
- - **Delegate from any preset** — the `subagent_kimi` tool mounts at the profile root; standard/code/minimal/cordis and future presets need no per-preset variants.
13
+ - **Per-session delegation grant** — the `subagent_kimi` tool is this package's `./tool` composition entry, granted to the sessions of an agent preset that names it (e.g. dev mode); sessions on other presets never see it.
14
14
  - **Scoped home** — config, credentials, and sessions live under `$DSH_HOME/local-agent/kimi`, never in your `~/.kimi-code`.
15
15
  - **Device-code login** — `/kimi login` shows the auth URL in the session; `/kimi logout` clears scoped credentials for a fresh account.
16
16
  - **Resumable delegations** — pass back the self-described `resume` handle to continue the same Kimi session, with real per-round usage and timing.
@@ -108,7 +108,7 @@ The rich directory uses native ACP session model/configuration metadata when a l
108
108
 
109
109
  **Scoped home and login.** Every Kimi process the bundle starts runs with `KIMI_CODE_HOME=$DSH_HOME/local-agent/kimi`. Login is device-code only: `/kimi login` surfaces the authorization URL and code in the session, the CLI polls in the background, and credentials land in the scoped home. `/kimi logout` removes the scoped credentials and OAuth cache (the kimi CLI has no logout command). On first boot the scoped home is provisioned with a `config.toml` — the user's own config with every `api_key` blanked, or a minimal managed config when the user has none — because the CLI refuses to authenticate without provider and model definitions; an existing config is never overwritten.
110
110
 
111
- **Mounting.** The bundle patch registers the `kimi` harness and mounts the `subagent_kimi` tool at the profile root; the `kimi-cli` one-shot provider spawns `kimi -p` under the scoped home. The family core (`local-agent` row, shared scoped-homes root) ships in `@khorsheed/dsh-local-agent`'s own patch, declared here as a dependency. The browser settings card ships with this package's own `./client` half, composing the family core's shared building blocks (the auth block, the model picker): a standalone install renders it on this package's plugin detail view, a family-bundle install renders it through the row-level configure entry on the bundle's detail view, and a 0.1.5 host renders it under Settings → Plugins → configurable plugins. The identity triangle stays consistent: the `cordis.patch.yml` row id, tsdown's `clientBundle('@khorsheed/dsh-local-agent-kimi')`, and `src/invariant.ts`'s `PACKAGE_NAME`; the invariant companion also pins one contract — a registered `kimi` harness must name `KIMI_CODE_HOME` as its scoped-home variable.
111
+ **Mounting.** The bundle patch registers the `kimi` harness (exactly one provider row); the `subagent_kimi` tool is this package's `./tool` composition entry (sharing the family core's `./tool-factory` implementation), granted per session by an agent preset that names it — the dev preset's `tool-subagent-kimi` row is the grant point. The `kimi-cli` one-shot provider spawns `kimi -p` under the scoped home. The family core (`local-agent` row, shared scoped-homes root) ships in `@khorsheed/dsh-local-agent`'s own patch, declared here as a dependency. The browser settings card ships with this package's own `./client` half, composing the family core's shared building blocks (the auth block, the model picker): a standalone install renders it on this package's plugin detail view, a family-bundle install renders it through the row-level configure entry on the bundle's detail view, and a 0.1.5 host renders it under Settings → Plugins → configurable plugins. The identity triangle stays consistent: the `cordis.patch.yml` row id, tsdown's `clientBundle('@khorsheed/dsh-local-agent-kimi')`, and `src/invariant.ts`'s `PACKAGE_NAME`; the invariant companion also pins one contract — a registered `kimi` harness must name `KIMI_CODE_HOME` as its scoped-home variable.
112
112
 
113
113
  **Session records and transcripts.** `/kimi sessions` lists the scoped home's `session_index.jsonl` — this harness's delegations, never the user's personal sessions. `/kimi session <id>` reads that session's `wire.jsonl` and renders a readable transcript: user prompts, thinking, and assistant replies are tagged with their wire turn number (1-based, matching the child session's `turn/start` numbering), tool calls render with arguments and results paired to their calls (file-editing calls render patch-style, unknown content types keep a visible marker), and kimi's auto-permission `<system-reminder>` messages are filtered out. The settings card shows auth status and the scoped sessions narrowed to the current workspace; while a login is pending the status keeps re-probing until credentials land.
114
114
 
package/README.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # last confirmed-consistent state. Both languages carry equal authority; after
3
3
  # editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write packages/local-agent-kimi/README.en.md
5
- packages/local-agent-kimi/README.en.md: 6e8fb44a7b199aca3a3957f910051a7c215fa6f4
6
- packages/local-agent-kimi/README.md: bff9fb781332138ad783a15051b85a2721adacf1
5
+ packages/local-agent-kimi/README.en.md: 5e809d7abbc8245e9c97de7298af20c3cbc02b52
6
+ packages/local-agent-kimi/README.md: d3004b6fbca63e164f6a35cd544d4681538d64c2
package/README.md CHANGED
@@ -6,11 +6,11 @@
6
6
 
7
7
  想让模型把一整块活交给另一个编码 agent,以前只能自己开终端、复制粘贴、再把结果搬回来。这个插件给每个 agent preset 配上 `subagent_kimi` 委派工具和 `/kimi` 命令族:委派在会话工作区的子会话里执行,转写与进度直接出现在子代理界面,结果带着真实用量与耗时回来,还能用同一句柄续聊。
8
8
 
9
- <img src="https://raw.githubusercontent.com/Khorsheed/dsh-web-basic/main/docs/screenshots/local-agent-kimi-settings.png" width="640" alt="Kimi 设置卡:认证状态、登录/退出、默认模型与常驻模式开关">
9
+ <img src="https://raw.githubusercontent.com/Khorsheed/dsh-basic/main/docs/screenshots/local-agent-kimi-settings.png" width="640" alt="Kimi 设置卡:认证状态、登录/退出、默认模型与常驻模式开关">
10
10
 
11
11
  ## 特性
12
12
 
13
- - **任意 preset 都能委派**——`subagent_kimi` 工具挂在 profile 根,standard/code/minimal/cordis 及未来的 preset 都无需逐变体。
13
+ - **按会话授予的委派**——`subagent_kimi` 工具是本包的 `./tool` 组合入口,由点名它的 agent 预设(如开发模式)授予该预设的会话;其余预设的会话看不到它。
14
14
  - **作用域目录**——config、凭据、会话全部留在 `$DSH_HOME/local-agent/kimi`,与你自己的 `~/.kimi-code` 互不干扰。
15
15
  - **device-code 登录**——`/kimi login` 把授权 URL 呈现在会话中;`/kimi logout` 清除作用域凭据,换账号即重新登录。
16
16
  - **可续聊的委派**——把结果自述的 `resume` 句柄传回,即继续同一个 Kimi 会话,并按轮记录真实用量与耗时。
@@ -108,7 +108,7 @@ base_url = "https://your-router.example/v1"
108
108
 
109
109
  **作用域目录与登录。** 本包启动的每个 Kimi 进程都以 `KIMI_CODE_HOME=$DSH_HOME/local-agent/kimi` 运行。登录只走 device-code:`/kimi login` 把授权 URL 和验证码呈现在会话中,CLI 在后台轮询,凭据写入作用域目录。`/kimi logout` 删除作用域内的凭据与 OAuth 缓存(kimi CLI 没有 logout 命令)。首次启动时作用域目录会被预置一份 `config.toml`——把用户自己的 config 中所有 `api_key` 抹空后复制,用户没有 config 时则写入最小 managed config——因为没有 provider 与 model 定义 CLI 就拒绝认证;已存在的 config 永不覆盖。
110
110
 
111
- **挂载。** bundle patch 注册 `kimi` harness,并把 `subagent_kimi` 工具挂到 profile 根;`kimi-cli` 一次性 provider 在作用域目录下 spawn `kimi -p`。家族 core(`local-agent` 行,共享作用域目录根)随 `@khorsheed/dsh-local-agent` 自己的 patch 提供,本包把它声明为依赖。浏览器设置卡片由本包的 `./client` 半提供,复用家族 core 的共享构件(认证块、模型选择器):独立安装落在本包插件详情页,随家族 bundle 安装落在 bundle 详情的行级配置入口,0.1.5 宿主落在设置 → 插件 → 可配置插件。身份三角保持一致:`cordis.patch.yml` 的行 id、tsdown 的 `clientBundle('@khorsheed/dsh-local-agent-kimi')`、`src/invariant.ts` 的 `PACKAGE_NAME`;invariant 伴生插件还钉住一条契约——`kimi` harness 注册时作用域目录变量必须是 `KIMI_CODE_HOME`。
111
+ **挂载。** bundle patch 注册 `kimi` harness(恰好一行 provider 行);`subagent_kimi` 工具是本包的 `./tool` 组合入口(实现共享自家族核的 `./tool-factory` 导出),由点名它的 agent 预设按会话授予——dev 预设的 `tool-subagent-kimi` 行是授予点。`kimi-cli` 一次性 provider 在作用域目录下 spawn `kimi -p`。家族 core(`local-agent` 行,共享作用域目录根)随 `@khorsheed/dsh-local-agent` 自己的 patch 提供,本包把它声明为依赖。浏览器设置卡片由本包的 `./client` 半提供,复用家族 core 的共享构件(认证块、模型选择器):独立安装落在本包插件详情页,随家族 bundle 安装落在 bundle 详情的行级配置入口,0.1.5 宿主落在设置 → 插件 → 可配置插件。身份三角保持一致:`cordis.patch.yml` 的行 id、tsdown 的 `clientBundle('@khorsheed/dsh-local-agent-kimi')`、`src/invariant.ts` 的 `PACKAGE_NAME`;invariant 伴生插件还钉住一条契约——`kimi` harness 注册时作用域目录变量必须是 `KIMI_CODE_HOME`。
112
112
 
113
113
  **会话记录与转写。** `/kimi sessions` 列出作用域目录下的 `session_index.jsonl`——本 harness 的委派,绝不是用户的私人会话。`/kimi session <id>` 读取该会话的 `wire.jsonl` 渲染成可读转写:用户提示、思考与助手回复逐行标注 wire 轮次号(1 起,与子会话 `turn/start` 编号一致),工具调用带参数渲染、结果按调用配对(文件编辑类调用渲染成 patch 形态,不认识的内容类型保留可见标记),kimi 自动权限模式的 `<system-reminder>` 消息被过滤。设置卡片呈现认证状态与收窄到当前工作区的作用域会话;登录进行中时状态会持续重新探测,直到凭据落地。
114
114
 
package/cordis.patch.yml CHANGED
@@ -1,34 +1,24 @@
1
- # The dsh-local-agent-kimi bundle patch: register the Kimi harness and mount
2
- # its delegation tool. The family core row (`local-agent`, shared scoped-homes
3
- # root) lives in the framework bundle @khorsheed/dsh-local-agent's own patch.
4
- # This bundle declares that package as an npm dependency, which makes the
5
- # core's module resolvable — it does NOT mount the core row: `dsh plugin add`
6
- # reconciles only the profile's direct dependencies, so the core must be
7
- # installed explicitly alongside this bundle, or this provider stays pending.
8
- # No other patch inserts the core row id.
1
+ # The dsh-local-agent-kimi bundle patch: register the Kimi harness. The family
2
+ # core row (`local-agent`, shared scoped-homes root) lives in the framework
3
+ # bundle @khorsheed/dsh-local-agent's own patch. This bundle declares that
4
+ # package as an npm dependency, which makes the core's module resolvable — it
5
+ # does NOT mount the core row: `dsh plugin add` reconciles only the profile's
6
+ # direct dependencies, so the core must be installed explicitly alongside this
7
+ # bundle, or this provider stays pending. No other patch inserts the core row
8
+ # id.
9
9
  #
10
- # Two rows are inserted:
11
- # - local-agent-kimi: this bundle's plugin registers the `kimi` harness
12
- # (KIMI_CODE_HOME, `kimi login`, session_index records).
13
- # - tool-subagent-kimi: the family-owned delegation tool (schema
14
- # description/prompt plus optional resume) over the `kimi-cli` provider.
15
- # The toolName stays `subagent_kimi` — the same model-facing name the
16
- # official tool-subagent row used — so presets and prompts keep working,
17
- # while the family tool adds continuation: a later round may pass the dsh
18
- # child session id returned by the first delegation to continue the same
19
- # kimi conversation.
10
+ # Exactly ONE row is inserted: the provider (this bundle's plugin registers the
11
+ # `kimi` harness — KIMI_CODE_HOME, `kimi login`, session_index records). The
12
+ # `subagent_kimi` delegation tool is no longer a profile-root row: since the
13
+ # family fold it ships as this package's `./tool` composition entry
14
+ # (`name: '@khorsheed/dsh-local-agent-kimi/tool'` in an agent preset), granted
15
+ # per session — the dev preset's `tool-subagent-kimi` row is the grant point.
16
+ # The model-facing toolName stays `subagent_kimi` and the tool keeps its
17
+ # continuation parameter: a later round may pass the dsh child session id
18
+ # returned by the first delegation to continue the same kimi conversation.
20
19
  #
21
- # The subagent_kimi tool row mounts at the profile root, so every agent
22
- # preset (standard/code/minimal/cordis and future ones) can delegate without
23
- # per-preset variants. The provider starts no Kimi process until a tool call
24
- # or /kimi login.
20
+ # The provider starts no Kimi process until a tool call or /kimi login.
25
21
 
26
22
  - insert:
27
23
  - id: local-agent-kimi
28
24
  name: '@khorsheed/dsh-local-agent-kimi'
29
-
30
- - id: tool-subagent-kimi
31
- name: '@khorsheed/dsh-local-agent-tool-subagent'
32
- config:
33
- provider: kimi-cli
34
- toolName: subagent_kimi
package/lib/client.js CHANGED
@@ -233,7 +233,7 @@ window.__ModuleLoader__.load({
233
233
  }
234
234
  //#endregion
235
235
  //#region \0dsh-css:../local-agent/src/client/ProviderAuthBlock.module.css.mjs
236
- const css$2 = ".n6PEuW_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:4px;display:flex}.n6PEuW_title{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:500;line-height:24px}.n6PEuW_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.n6PEuW_rows{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.n6PEuW_rowCard{border:1px solid var(--dsw-alias-border-l2);border-radius:12px;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.n6PEuW_rowPending{opacity:.6}.n6PEuW_rowHead{align-items:center;gap:10px;display:flex}.n6PEuW_rowIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.n6PEuW_rowName{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.n6PEuW_rowTag{border:1px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;padding:1px 6px;font-size:11px;line-height:16px}.n6PEuW_credentialDot{box-sizing:border-box;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.n6PEuW_dotOn{background:var(--dsw-alias-state-success-primary)}.n6PEuW_dotOff{background:var(--dsw-alias-state-error-primary)}.n6PEuW_dotPending{background:var(--dsw-alias-fill-l3)}.n6PEuW_status{color:var(--dsw-alias-label-tertiary);flex:none;margin-left:auto;font-size:12px;line-height:18px}.n6PEuW_rowActions{align-items:center;gap:4px;display:inline-flex}.n6PEuW_loginButton{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:14px;justify-content:center;align-items:center;padding:0 12px;font-size:12px;line-height:18px;display:inline-flex}.n6PEuW_loginButton:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l3)}.n6PEuW_loginButton:disabled{color:var(--dsw-alias-label-tertiary);border-color:var(--dsw-alias-border-l2);cursor:not-allowed}.n6PEuW_logoutButton{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);height:28px;color:var(--dsw-alias-state-error-primary);cursor:pointer;background:0 0;border-radius:14px;justify-content:center;align-items:center;padding:0 12px;font-size:12px;line-height:18px;display:inline-flex}.n6PEuW_logoutButton:hover{border-color:var(--dsw-alias-state-error-primary)}.n6PEuW_rosterError{color:var(--dsw-alias-state-error-primary);align-items:center;gap:10px;margin:8px 0 0;font-size:12px;line-height:18px;display:flex}.n6PEuW_retryButton{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:12px;justify-content:center;align-items:center;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.n6PEuW_retryButton:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l3)}.n6PEuW_loginPrompt{align-items:flex-start;gap:10px;display:flex}.n6PEuW_promptText{min-width:0;color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;flex:1;font-size:12px;line-height:18px}.n6PEuW_codeInput{border:1px solid var(--dsw-alias-line-normal,currentColor);min-width:0;color:inherit;background:0 0;border-radius:6px;flex:1;padding:4px 8px;font-size:12px;line-height:18px}.n6PEuW_openPage{color:var(--dsw-alias-accent-link);flex:none;font-size:12px;line-height:18px;text-decoration:none}.n6PEuW_openPage:hover{text-decoration:underline}";
236
+ const css$2 = ".On5p7W_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:4px;display:flex}.On5p7W_title{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:500;line-height:24px}.On5p7W_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.On5p7W_rows{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.On5p7W_rowCard{border:1px solid var(--dsw-alias-border-l2);border-radius:12px;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.On5p7W_rowPending{opacity:.6}.On5p7W_rowHead{align-items:center;gap:10px;display:flex}.On5p7W_rowIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.On5p7W_rowName{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.On5p7W_rowTag{border:1px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;padding:1px 6px;font-size:11px;line-height:16px}.On5p7W_credentialDot{box-sizing:border-box;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.On5p7W_dotOn{background:var(--dsw-alias-state-success-primary)}.On5p7W_dotOff{background:var(--dsw-alias-state-error-primary)}.On5p7W_dotPending{background:var(--dsw-alias-fill-l3)}.On5p7W_status{color:var(--dsw-alias-label-tertiary);flex:none;margin-left:auto;font-size:12px;line-height:18px}.On5p7W_rowActions{align-items:center;gap:4px;display:inline-flex}.On5p7W_loginButton{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:14px;justify-content:center;align-items:center;padding:0 12px;font-size:12px;line-height:18px;display:inline-flex}.On5p7W_loginButton:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l3)}.On5p7W_loginButton:disabled{color:var(--dsw-alias-label-tertiary);border-color:var(--dsw-alias-border-l2);cursor:not-allowed}.On5p7W_logoutButton{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);height:28px;color:var(--dsw-alias-state-error-primary);cursor:pointer;background:0 0;border-radius:14px;justify-content:center;align-items:center;padding:0 12px;font-size:12px;line-height:18px;display:inline-flex}.On5p7W_logoutButton:hover{border-color:var(--dsw-alias-state-error-primary)}.On5p7W_rosterError{color:var(--dsw-alias-state-error-primary);align-items:center;gap:10px;margin:8px 0 0;font-size:12px;line-height:18px;display:flex}.On5p7W_retryButton{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:12px;justify-content:center;align-items:center;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.On5p7W_retryButton:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l3)}.On5p7W_loginPrompt{align-items:flex-start;gap:10px;display:flex}.On5p7W_promptText{min-width:0;color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;flex:1;font-size:12px;line-height:18px}.On5p7W_codeInput{border:1px solid var(--dsw-alias-line-normal,currentColor);min-width:0;color:inherit;background:0 0;border-radius:6px;flex:1;padding:4px 8px;font-size:12px;line-height:18px}.On5p7W_openPage{color:var(--dsw-alias-accent-link);flex:none;font-size:12px;line-height:18px;text-decoration:none}.On5p7W_openPage:hover{text-decoration:underline}";
237
237
  const tagId$2 = "@khorsheed/dsh-local-agent-kimi/ProviderAuthBlock.module.css";
238
238
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
239
239
  const tag = document.createElement("style");
@@ -243,30 +243,30 @@ window.__ModuleLoader__.load({
243
243
  document.head.appendChild(tag);
244
244
  }
245
245
  var ProviderAuthBlock_module_css_default = {
246
- "dotOff": "n6PEuW_dotOff",
247
- "section": "n6PEuW_section",
248
- "credentialDot": "n6PEuW_credentialDot",
249
- "dotPending": "n6PEuW_dotPending",
250
- "status": "n6PEuW_status",
251
- "promptText": "n6PEuW_promptText",
252
- "rowHead": "n6PEuW_rowHead",
253
- "rowTag": "n6PEuW_rowTag",
254
- "dotOn": "n6PEuW_dotOn",
255
- "logoutButton": "n6PEuW_logoutButton",
256
- "rowName": "n6PEuW_rowName",
257
- "rowPending": "n6PEuW_rowPending",
258
- "title": "n6PEuW_title",
259
- "codeInput": "n6PEuW_codeInput",
260
- "openPage": "n6PEuW_openPage",
261
- "rows": "n6PEuW_rows",
262
- "rowIdentity": "n6PEuW_rowIdentity",
263
- "rowActions": "n6PEuW_rowActions",
264
- "retryButton": "n6PEuW_retryButton",
265
- "loginButton": "n6PEuW_loginButton",
266
- "rosterError": "n6PEuW_rosterError",
267
- "intro": "n6PEuW_intro",
268
- "loginPrompt": "n6PEuW_loginPrompt",
269
- "rowCard": "n6PEuW_rowCard"
246
+ "rowPending": "On5p7W_rowPending",
247
+ "logoutButton": "On5p7W_logoutButton",
248
+ "dotOn": "On5p7W_dotOn",
249
+ "loginButton": "On5p7W_loginButton",
250
+ "rows": "On5p7W_rows",
251
+ "intro": "On5p7W_intro",
252
+ "promptText": "On5p7W_promptText",
253
+ "section": "On5p7W_section",
254
+ "rosterError": "On5p7W_rosterError",
255
+ "loginPrompt": "On5p7W_loginPrompt",
256
+ "dotOff": "On5p7W_dotOff",
257
+ "rowCard": "On5p7W_rowCard",
258
+ "credentialDot": "On5p7W_credentialDot",
259
+ "status": "On5p7W_status",
260
+ "rowHead": "On5p7W_rowHead",
261
+ "dotPending": "On5p7W_dotPending",
262
+ "codeInput": "On5p7W_codeInput",
263
+ "rowTag": "On5p7W_rowTag",
264
+ "openPage": "On5p7W_openPage",
265
+ "rowName": "On5p7W_rowName",
266
+ "rowIdentity": "On5p7W_rowIdentity",
267
+ "retryButton": "On5p7W_retryButton",
268
+ "title": "On5p7W_title",
269
+ "rowActions": "On5p7W_rowActions"
270
270
  };
271
271
  //#endregion
272
272
  //#region ../local-agent/src/client/ProviderAuthBlock.tsx
@@ -529,7 +529,7 @@ window.__ModuleLoader__.load({
529
529
  }
530
530
  //#endregion
531
531
  //#region \0dsh-css:../local-agent/src/client/AuthStatusDot.module.css.mjs
532
- const css$1 = ".TFxvHa_credentialDot{box-sizing:border-box;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.TFxvHa_dotOn{background:var(--dsw-alias-state-success-primary)}.TFxvHa_dotOff{background:var(--dsw-alias-state-error-primary)}.TFxvHa_dotPending{background:var(--dsw-alias-fill-l3)}";
532
+ const css$1 = ".OFjNUG_credentialDot{box-sizing:border-box;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.OFjNUG_dotOn{background:var(--dsw-alias-state-success-primary)}.OFjNUG_dotOff{background:var(--dsw-alias-state-error-primary)}.OFjNUG_dotPending{background:var(--dsw-alias-fill-l3)}";
533
533
  const tagId$1 = "@khorsheed/dsh-local-agent-kimi/AuthStatusDot.module.css";
534
534
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
535
535
  const tag = document.createElement("style");
@@ -539,10 +539,10 @@ window.__ModuleLoader__.load({
539
539
  document.head.appendChild(tag);
540
540
  }
541
541
  var AuthStatusDot_module_css_default = {
542
- "dotPending": "TFxvHa_dotPending",
543
- "credentialDot": "TFxvHa_credentialDot",
544
- "dotOn": "TFxvHa_dotOn",
545
- "dotOff": "TFxvHa_dotOff"
542
+ "dotOff": "OFjNUG_dotOff",
543
+ "credentialDot": "OFjNUG_credentialDot",
544
+ "dotOn": "OFjNUG_dotOn",
545
+ "dotPending": "OFjNUG_dotPending"
546
546
  };
547
547
  //#endregion
548
548
  //#region ../local-agent/src/client/AuthStatusDot.tsx
@@ -558,7 +558,7 @@ window.__ModuleLoader__.load({
558
558
  }
559
559
  //#endregion
560
560
  //#region \0dsh-css:src/client/SettingsCard.module.css.mjs
561
- const css = ".ljlxxW_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;list-style:none;transition:border-color .16s,background .16s}.ljlxxW_card:hover{border-color:var(--dsw-alias-label-dimmed)}.ljlxxW_cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}.ljlxxW_header{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}.ljlxxW_header:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.ljlxxW_headText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.ljlxxW_nameRow{align-items:center;gap:6px;display:flex}.ljlxxW_name{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}.ljlxxW_description{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:1.5}.ljlxxW_chevron{color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .16s}.ljlxxW_chevronOpen{transform:rotate(180deg)}.ljlxxW_body{border-top:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:14px;margin:0 16px;padding:12px 0 8px;display:flex}.ljlxxW_block{flex-direction:column;gap:10px;display:flex}.ljlxxW_blockTitle{color:var(--dsw-alias-label-primary);align-items:center;gap:6px;margin:0;font-size:13px;font-weight:500;line-height:1.4;display:flex}.ljlxxW_info{appearance:none;color:var(--dsw-alias-label-tertiary);cursor:help;background:0 0;border:0;border-radius:50%;padding:0 2px;font-size:12px;line-height:1}.ljlxxW_info:hover,.ljlxxW_info:focus-visible{color:var(--dsw-alias-label-primary)}.ljlxxW_row{align-items:center;gap:12px;display:flex}.ljlxxW_rowLabel{color:var(--dsw-alias-label-primary);align-items:center;gap:4px;font-size:13px;line-height:1.4;display:inline-flex}.ljlxxW_switch{border:1px solid color-mix(in srgb, currentColor 30%, transparent);background:color-mix(in srgb, currentColor 12%, transparent);cursor:pointer;width:2.25rem;height:1.25rem;color:var(--dsw-alias-label-primary);border-radius:999px;flex:none;align-self:center;padding:.125rem;transition:background .12s}.ljlxxW_switch:disabled{opacity:.5;cursor:default}.ljlxxW_switchOn{background:color-mix(in srgb, var(--dsh-accent,#4f8cff) 70%, transparent)}.ljlxxW_knob{background:var(--dsh-surface,#fff);border-radius:999px;width:.9375rem;height:.9375rem;transition:transform .12s;display:block}.ljlxxW_switchOn .ljlxxW_knob{transform:translate(.9375rem)}.ljlxxW_saved{color:var(--dsw-alias-state-success-primary);font-size:12px}.ljlxxW_errorText{color:var(--dsw-alias-state-error-primary);font-size:12px}.ljlxxW_hint{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:1.5}.ljlxxW_modelInput{min-width:0;font:inherit;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);border-radius:8px;flex:1;padding:5px 8px;font-size:13px;line-height:1.4}.ljlxxW_modelInput::placeholder{color:var(--dsw-alias-label-caption);opacity:1}.ljlxxW_modelInput:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.ljlxxW_modelInput:disabled{opacity:.5}.ljlxxW_modelField{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;flex:1;align-items:center;min-width:0;display:flex;position:relative}.ljlxxW_modelField:focus-within{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.ljlxxW_modelField .ljlxxW_modelInput{background:0 0;border:0;border-radius:0}.ljlxxW_modelField .ljlxxW_modelInput:focus-visible{outline:none}.ljlxxW_modelMenuButton{width:24px;height:24px;color:var(--dsw-alias-label-caption);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;margin-right:4px;display:flex}.ljlxxW_modelMenuButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.ljlxxW_modelMenuButton:disabled{opacity:.5;cursor:default}.ljlxxW_modelMenuChevron{transition:transform .16s}.ljlxxW_modelMenuChevronOpen{transform:rotate(180deg)}.ljlxxW_modelMenu{z-index:10;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,var(--dsw-alias-border-l2));background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));min-width:160px;max-height:240px;backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-elevation-prominent,var(--dsw-shadow-lv3,0 0 1px 0 #0003, 0 0 4px 0 #00000005, 0 12px 32px 0 #00000014));border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.ljlxxW_modelMenuUp{top:auto;bottom:calc(100% + 6px)}.ljlxxW_modelItem,.ljlxxW_modelItemCurrent,.ljlxxW_modelItemDefault{color:var(--dsw-alias-label-primary);text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;line-height:18px;display:flex;overflow:hidden}.ljlxxW_modelItem:hover,.ljlxxW_modelItemCurrent:hover,.ljlxxW_modelItemDefault:hover{background:var(--dsw-alias-interactive-bg-hover)}.ljlxxW_modelItemCurrent{font-weight:560}.ljlxxW_modelItemLabel{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.ljlxxW_modelItemCheck{text-align:center;width:14px;color:var(--dsw-alias-label-secondary);flex:none}.ljlxxW_modelItemDefault{color:var(--dsw-alias-label-secondary);box-shadow:0 1px 0 var(--dsw-alias-border-l2);border-radius:8px 8px 0 0;margin-bottom:2px;padding-bottom:7px}.ljlxxW_modelSave{appearance:none;font:inherit;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:8px;flex:none;padding:5px 10px;font-size:13px;line-height:1.4}.ljlxxW_modelSave:hover:not(:disabled){border-color:var(--dsw-alias-label-dimmed)}.ljlxxW_modelSave:disabled{opacity:.5;cursor:default}";
561
+ const css = ".apHkUa_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;list-style:none;transition:border-color .16s,background .16s}.apHkUa_card:hover{border-color:var(--dsw-alias-label-dimmed)}.apHkUa_cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}.apHkUa_header{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}.apHkUa_header:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.apHkUa_headText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.apHkUa_nameRow{align-items:center;gap:6px;display:flex}.apHkUa_name{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}.apHkUa_description{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:1.5}.apHkUa_chevron{color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .16s}.apHkUa_chevronOpen{transform:rotate(180deg)}.apHkUa_body{border-top:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:14px;margin:0 16px;padding:12px 0 8px;display:flex}.apHkUa_block{flex-direction:column;gap:10px;display:flex}.apHkUa_blockTitle{color:var(--dsw-alias-label-primary);align-items:center;gap:6px;margin:0;font-size:13px;font-weight:500;line-height:1.4;display:flex}.apHkUa_info{appearance:none;color:var(--dsw-alias-label-tertiary);cursor:help;background:0 0;border:0;border-radius:50%;padding:0 2px;font-size:12px;line-height:1}.apHkUa_info:hover,.apHkUa_info:focus-visible{color:var(--dsw-alias-label-primary)}.apHkUa_row{align-items:center;gap:12px;display:flex}.apHkUa_rowLabel{color:var(--dsw-alias-label-primary);align-items:center;gap:4px;font-size:13px;line-height:1.4;display:inline-flex}.apHkUa_switch{border:1px solid color-mix(in srgb, currentColor 30%, transparent);background:color-mix(in srgb, currentColor 12%, transparent);cursor:pointer;width:2.25rem;height:1.25rem;color:var(--dsw-alias-label-primary);border-radius:999px;flex:none;align-self:center;padding:.125rem;transition:background .12s}.apHkUa_switch:disabled{opacity:.5;cursor:default}.apHkUa_switchOn{background:color-mix(in srgb, var(--dsh-accent,#4f8cff) 70%, transparent)}.apHkUa_knob{background:var(--dsh-surface,#fff);border-radius:999px;width:.9375rem;height:.9375rem;transition:transform .12s;display:block}.apHkUa_switchOn .apHkUa_knob{transform:translate(.9375rem)}.apHkUa_saved{color:var(--dsw-alias-state-success-primary);font-size:12px}.apHkUa_errorText{color:var(--dsw-alias-state-error-primary);font-size:12px}.apHkUa_hint{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:1.5}.apHkUa_modelInput{min-width:0;font:inherit;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);border-radius:8px;flex:1;padding:5px 8px;font-size:13px;line-height:1.4}.apHkUa_modelInput::placeholder{color:var(--dsw-alias-label-caption);opacity:1}.apHkUa_modelInput:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.apHkUa_modelInput:disabled{opacity:.5}.apHkUa_modelField{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;flex:1;align-items:center;min-width:0;display:flex;position:relative}.apHkUa_modelField:focus-within{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.apHkUa_modelField .apHkUa_modelInput{background:0 0;border:0;border-radius:0}.apHkUa_modelField .apHkUa_modelInput:focus-visible{outline:none}.apHkUa_modelMenuButton{width:24px;height:24px;color:var(--dsw-alias-label-caption);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;margin-right:4px;display:flex}.apHkUa_modelMenuButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.apHkUa_modelMenuButton:disabled{opacity:.5;cursor:default}.apHkUa_modelMenuChevron{transition:transform .16s}.apHkUa_modelMenuChevronOpen{transform:rotate(180deg)}.apHkUa_modelMenu{z-index:10;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,var(--dsw-alias-border-l2));background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));min-width:160px;max-height:240px;backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-elevation-prominent,var(--dsw-shadow-lv3,0 0 1px 0 #0003, 0 0 4px 0 #00000005, 0 12px 32px 0 #00000014));border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.apHkUa_modelMenuUp{top:auto;bottom:calc(100% + 6px)}.apHkUa_modelItem,.apHkUa_modelItemCurrent,.apHkUa_modelItemDefault{color:var(--dsw-alias-label-primary);text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;line-height:18px;display:flex;overflow:hidden}.apHkUa_modelItem:hover,.apHkUa_modelItemCurrent:hover,.apHkUa_modelItemDefault:hover{background:var(--dsw-alias-interactive-bg-hover)}.apHkUa_modelItemCurrent{font-weight:560}.apHkUa_modelItemLabel{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.apHkUa_modelItemCheck{text-align:center;width:14px;color:var(--dsw-alias-label-secondary);flex:none}.apHkUa_modelItemDefault{color:var(--dsw-alias-label-secondary);box-shadow:0 1px 0 var(--dsw-alias-border-l2);border-radius:8px 8px 0 0;margin-bottom:2px;padding-bottom:7px}.apHkUa_modelSave{appearance:none;font:inherit;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:8px;flex:none;padding:5px 10px;font-size:13px;line-height:1.4}.apHkUa_modelSave:hover:not(:disabled){border-color:var(--dsw-alias-label-dimmed)}.apHkUa_modelSave:disabled{opacity:.5;cursor:default}";
562
562
  const tagId = "@khorsheed/dsh-local-agent-kimi/SettingsCard.module.css";
563
563
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
564
564
  const tag = document.createElement("style");
@@ -568,40 +568,40 @@ window.__ModuleLoader__.load({
568
568
  document.head.appendChild(tag);
569
569
  }
570
570
  var SettingsCard_module_css_default = {
571
- "modelMenu": "ljlxxW_modelMenu",
572
- "chevron": "ljlxxW_chevron",
573
- "switchOn": "ljlxxW_switchOn",
574
- "name": "ljlxxW_name",
575
- "description": "ljlxxW_description",
576
- "chevronOpen": "ljlxxW_chevronOpen",
577
- "block": "ljlxxW_block",
578
- "modelField": "ljlxxW_modelField",
579
- "card": "ljlxxW_card",
580
- "modelInput": "ljlxxW_modelInput",
581
- "modelSave": "ljlxxW_modelSave",
582
- "info": "ljlxxW_info",
583
- "modelMenuChevron": "ljlxxW_modelMenuChevron",
584
- "errorText": "ljlxxW_errorText",
585
- "rowLabel": "ljlxxW_rowLabel",
586
- "headText": "ljlxxW_headText",
587
- "modelItemCurrent": "ljlxxW_modelItemCurrent",
588
- "hint": "ljlxxW_hint",
589
- "modelMenuButton": "ljlxxW_modelMenuButton",
590
- "header": "ljlxxW_header",
591
- "modelItemDefault": "ljlxxW_modelItemDefault",
592
- "blockTitle": "ljlxxW_blockTitle",
593
- "saved": "ljlxxW_saved",
594
- "row": "ljlxxW_row",
595
- "modelItem": "ljlxxW_modelItem",
596
- "modelItemLabel": "ljlxxW_modelItemLabel",
597
- "body": "ljlxxW_body",
598
- "modelMenuUp": "ljlxxW_modelMenuUp",
599
- "switch": "ljlxxW_switch",
600
- "knob": "ljlxxW_knob",
601
- "modelMenuChevronOpen": "ljlxxW_modelMenuChevronOpen",
602
- "nameRow": "ljlxxW_nameRow",
603
- "modelItemCheck": "ljlxxW_modelItemCheck",
604
- "cardOpen": "ljlxxW_cardOpen"
571
+ "chevron": "apHkUa_chevron",
572
+ "info": "apHkUa_info",
573
+ "saved": "apHkUa_saved",
574
+ "modelMenuChevronOpen": "apHkUa_modelMenuChevronOpen",
575
+ "modelMenu": "apHkUa_modelMenu",
576
+ "chevronOpen": "apHkUa_chevronOpen",
577
+ "nameRow": "apHkUa_nameRow",
578
+ "headText": "apHkUa_headText",
579
+ "header": "apHkUa_header",
580
+ "name": "apHkUa_name",
581
+ "modelMenuUp": "apHkUa_modelMenuUp",
582
+ "knob": "apHkUa_knob",
583
+ "modelItemCurrent": "apHkUa_modelItemCurrent",
584
+ "modelItemDefault": "apHkUa_modelItemDefault",
585
+ "block": "apHkUa_block",
586
+ "modelItemCheck": "apHkUa_modelItemCheck",
587
+ "row": "apHkUa_row",
588
+ "card": "apHkUa_card",
589
+ "description": "apHkUa_description",
590
+ "hint": "apHkUa_hint",
591
+ "switchOn": "apHkUa_switchOn",
592
+ "modelItem": "apHkUa_modelItem",
593
+ "modelMenuButton": "apHkUa_modelMenuButton",
594
+ "switch": "apHkUa_switch",
595
+ "modelItemLabel": "apHkUa_modelItemLabel",
596
+ "modelMenuChevron": "apHkUa_modelMenuChevron",
597
+ "modelSave": "apHkUa_modelSave",
598
+ "modelField": "apHkUa_modelField",
599
+ "cardOpen": "apHkUa_cardOpen",
600
+ "blockTitle": "apHkUa_blockTitle",
601
+ "modelInput": "apHkUa_modelInput",
602
+ "rowLabel": "apHkUa_rowLabel",
603
+ "errorText": "apHkUa_errorText",
604
+ "body": "apHkUa_body"
605
605
  };
606
606
  //#endregion
607
607
  //#region src/client/SettingsCard.tsx