@khorsheed/dsh-local-agent-claude-code 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 +8 -0
- package/README.en.md +6 -5
- package/README.i18n.yaml +2 -2
- package/README.md +6 -5
- package/cordis.patch.yml +17 -24
- package/lib/client.js +65 -65
- package/lib/tool.js +40 -0
- package/lib/types/tool.d.ts +54 -0
- package/lib/types/tool.js +34 -0
- package/package.json +19 -16
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_claude_code` 委派工具由 agent 预设点名 `name: '@khorsheed/dsh-local-agent-claude-code/tool'` 按会话授予,Config 两字段(`provider` / `toolName`)全部可选、默认即本包取值,预设行无需配置;行 id `tool-subagent-claude-code-local` 不变。bundle patch 不再插 profile 根工具行(官方 `tool-subagent-claude-code` 行的停用覆盖保留),本包自挂载恰好一行(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
|
@@ -4,20 +4,20 @@ English | [中文](README.md)
|
|
|
4
4
|
|
|
5
5
|
Delegate coding tasks to the Claude Code on this machine — thinking, tool calls, and replies stream back live, and your personal `~/.claude` is never touched.
|
|
6
6
|
|
|
7
|
-
Any dsh agent preset
|
|
7
|
+
Any dsh agent preset that names this package's `./tool` composition entry (e.g. dev mode) can delegate: the child session is visible end to end — abortable, resumable — and every round's accounting (the actual model, token usage, tool-call count) reads back for real. Login is scope-isolated: the plugin only ever manages the one directory `$DSH_HOME/local-agent/claude-code`, so your personal installation and credentials stay out of it from start to finish. The Claude Code harness of the [local-agent family](../local-agent/README.md).
|
|
8
8
|
|
|
9
|
-
<img src="https://raw.githubusercontent.com/Khorsheed/dsh-
|
|
9
|
+
<img src="https://raw.githubusercontent.com/Khorsheed/dsh-basic/main/docs/screenshots/08-local-agent.png" width="640" alt="the Local Agent family cards under Settings → Plugins → plugin configuration, the Claude Code row's status dot showing its auth state">
|
|
10
10
|
|
|
11
11
|
## Features
|
|
12
12
|
|
|
13
|
-
- **
|
|
13
|
+
- **Per-session delegation grant** — the `subagent_claude_code` tool is this package's `./tool` composition entry, granted to the sessions of an agent preset that names it; no per-preset variants.
|
|
14
14
|
- **Scoped home** — every Claude process runs with `CLAUDE_CONFIG_DIR` under `$DSH_HOME/local-agent/claude-code`; your personal `~/.claude` stays out of it.
|
|
15
15
|
- **Guided login, one command** — `/claude-code login` answers with the exact command to run in your own terminal (claude ≥2.1 prints its OAuth URL only on a TTY, so the host no longer spawns and scrapes) and watches the scoped home for the credential; `sessions`/`status`/`logout` and a Settings → 本地 Agent panel complete the family.
|
|
16
16
|
- **Resume a delegation** — pass back the result's `resume` handle to continue the same Claude session, with per-round accounting.
|
|
17
17
|
- **Live stream mirror** — the child session mirrors Claude's thinking, tool calls, and replies live; aborting keeps the partial transcript and real token usage.
|
|
18
18
|
- **Model readback and per-cell working directory** — every settled round reads back the model from stream-json's system/init into the delegation record; orchestrators pass a `cwd` per cell, and a resume in a different directory is rejected.
|
|
19
19
|
|
|
20
|
-
<img src="https://raw.githubusercontent.com/Khorsheed/dsh-
|
|
20
|
+
<img src="https://raw.githubusercontent.com/Khorsheed/dsh-basic/main/docs/screenshots/local-agent-claude-code-card.png" width="640" alt="the expanded Local Agent · Claude Code settings card: the authentication block, the default-model picker, and the resident-mode (live) switch">
|
|
21
21
|
|
|
22
22
|
## Install
|
|
23
23
|
|
|
@@ -103,9 +103,10 @@ src/index.ts harness registration, /claude-code command family, c
|
|
|
103
103
|
src/claude-cli-provider.ts one-shot provider: spawn, stream mirror, turn/token accounting
|
|
104
104
|
src/provision.ts scoped-home provisioning and file-based logout
|
|
105
105
|
src/records.ts auth probe and session-record listing from the scoped home
|
|
106
|
+
src/tool.ts the `./tool` composition entry: the `subagent_claude_code` delegation tool (preset-granted)
|
|
106
107
|
```
|
|
107
108
|
|
|
108
|
-
The bundle patch registers the `claude-code` harness into the family core (`@khorsheed/dsh-local-agent`, declared as a dependency — the claude bundle deliberately does not re-insert the core row, which would mount it twice) and mounts the `claude-local` provider, which spawns `claude -p --verbose --output-format stream-json` under the harness's scoped home. The `subagent_claude_code` tool is the family-owned tool (
|
|
109
|
+
The bundle patch registers the `claude-code` harness into the family core (`@khorsheed/dsh-local-agent`, declared as a dependency — the claude bundle deliberately does not re-insert the core row, which would mount it twice) and mounts the `claude-local` provider, which spawns `claude -p --verbose --output-format stream-json` under the harness's scoped home. The `subagent_claude_code` tool is the family-owned tool (this package's `./tool` composition entry, sharing the family core's `./tool-factory` implementation), granted per session by an agent preset that names the row: the official subset (`description`/`prompt`) plus an optional `resume` parameter.
|
|
109
110
|
|
|
110
111
|
**Scope isolation.** On macOS the real credential lives in the OS keychain under a hashed entry (`Claude Code-credentials-<sha256(configDir)[:8]>`) keyed to the scoped home path — file-based logout cannot reach it, but a fresh login rewrites the same slot. Which store the CLI itself uses is VERSION-dependent and was measured, not assumed: 2.1.236 wrote the keychain and read the file (the split this mirror exists for), while 2.1.274 on macOS reads and writes the keychain, and 2.1.272 on Linux reads and writes the scoped file. The file therefore stays authoritative for this package's own probes and for a container round; the keychain is what a host CLI on current macOS actually uses. Auth detection is a light file check of the scoped `.claude.json`'s `oauthAccount` — the CLI is never spawned just to probe. The probe also reconciles the two stores, so it obeys the same newer-wins rule as the spawn sites: it runs on every status read and every readiness check, and an unconditional mirror there would undo a containerized round's refresh just as surely.
|
|
111
112
|
|
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-claude-code/README.en.md
|
|
5
|
-
packages/local-agent-claude-code/README.en.md:
|
|
6
|
-
packages/local-agent-claude-code/README.md:
|
|
5
|
+
packages/local-agent-claude-code/README.en.md: 7d04fd0b7905b0aa38d38d0ba4caaddce6cd593b
|
|
6
|
+
packages/local-agent-claude-code/README.md: b1b767a4fb9b032308dc2e61bc8656d758073bdb
|
package/README.md
CHANGED
|
@@ -4,20 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|
把编码任务委派给本机的 Claude Code——思考、工具调用与回复实时流回,你的私人 `~/.claude` 分文不动。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
点名本包 `./tool` 组合入口的 agent preset(如开发模式)即可发起委派:子会话全程可见、可中止、可续聊,每轮的账目(实际模型、token 用量、工具调用数)都真实回读。登录是作用域隔离的——插件只管理 `$DSH_HOME/local-agent/claude-code` 这一份目录,你的个人安装与凭据自始至终置身事外。[local-agent 家族](../local-agent/README.md) 的 Claude Code harness。
|
|
8
8
|
|
|
9
|
-
<img src="https://raw.githubusercontent.com/Khorsheed/dsh-
|
|
9
|
+
<img src="https://raw.githubusercontent.com/Khorsheed/dsh-basic/main/docs/screenshots/08-local-agent.png" width="640" alt="设置 → 插件 → 插件配置里的 Local Agent 家族卡片,Claude Code 一行的状态点显示授权状态">
|
|
10
10
|
|
|
11
11
|
## 特性
|
|
12
12
|
|
|
13
|
-
-
|
|
13
|
+
- **按会话授予的委派**——`subagent_claude_code` 工具是本包的 `./tool` 组合入口,由点名它的 agent 预设授予该预设的会话,无需逐 preset 变体。
|
|
14
14
|
- **作用域隔离**——每个 Claude 进程都以 `$DSH_HOME/local-agent/claude-code` 为 `CLAUDE_CONFIG_DIR` 运行;你的个人 `~/.claude` 置身事外。
|
|
15
15
|
- **一条命令完成登录指引**——`/claude-code login` 在会话中给出需要在你自己终端运行的完整命令(claude ≥2.1 只在 TTY 打印 OAuth URL,宿主不再 spawn 抓取),并监听作用域目录识别登录完成;`sessions`/`status`/`logout` 与 设置 → 本地 Agent 面板构成完整一族。
|
|
16
16
|
- **续聊委派**——把结果自述的 `resume` 句柄传回,即可继续同一个 Claude 会话,并按轮记账。
|
|
17
17
|
- **实时流镜像**——子会话实时镜像 Claude 的思考、工具调用与回复;中止会保留部分转写与真实 token 用量。
|
|
18
18
|
- **模型回读与独立工作目录**——每轮从 stream-json 的 system/init 回读实际模型,写进委派记录;编排器可用 `cwd` 选项给每格独立目录,resume 换目录即拒绝。
|
|
19
19
|
|
|
20
|
-
<img src="https://raw.githubusercontent.com/Khorsheed/dsh-
|
|
20
|
+
<img src="https://raw.githubusercontent.com/Khorsheed/dsh-basic/main/docs/screenshots/local-agent-claude-code-card.png" width="640" alt="展开的「Local Agent · Claude Code」设置卡:认证块、默认模型选择与常驻模式(live)开关">
|
|
21
21
|
|
|
22
22
|
## 安装
|
|
23
23
|
|
|
@@ -103,9 +103,10 @@ src/index.ts harness 注册、/claude-code 命令族、config sch
|
|
|
103
103
|
src/claude-cli-provider.ts 一次性 provider:spawn、流镜像、turn/token 记账
|
|
104
104
|
src/provision.ts 作用域目录 provisioning 与基于文件的 logout
|
|
105
105
|
src/records.ts 认证探测与作用域目录的会话记录列表
|
|
106
|
+
src/tool.ts `./tool` 组合入口:`subagent_claude_code` 委派工具(预设点名授予)
|
|
106
107
|
```
|
|
107
108
|
|
|
108
|
-
bundle patch 把 `claude-code` harness 注册进家族 core(`@khorsheed/dsh-local-agent`,声明为依赖——claude 包刻意不重复插入 core 行,重复会挂载两次),并挂载 `claude-local` provider,后者在 harness 作用域目录下 spawn `claude -p --verbose --output-format stream-json`。`subagent_claude_code`
|
|
109
|
+
bundle patch 把 `claude-code` harness 注册进家族 core(`@khorsheed/dsh-local-agent`,声明为依赖——claude 包刻意不重复插入 core 行,重复会挂载两次),并挂载 `claude-local` provider,后者在 harness 作用域目录下 spawn `claude -p --verbose --output-format stream-json`。`subagent_claude_code` 工具是家族自有工具(本包的 `./tool` 组合入口,实现共享自家族 core 的 `./tool-factory`),由点名该行的 agent 预设按会话授予:官方子集(`description`/`prompt`)加一个可选 `resume` 参数。
|
|
109
110
|
|
|
110
111
|
**作用域隔离。** macOS 上真实凭据在系统 keychain 的哈希条目里(`Claude Code-credentials-<sha256(configDir)[:8]>`,以作用域目录路径为键)——基于文件的 logout 够不到它,但下次登录会重写同一个槽位。**CLI 自己用哪个存储是随版本变的,且由实测而非假定确定**:2.1.236 写 keychain、读文件(这个镜像正是为那条分裂而存在),而 2.1.274 在 macOS 上读写 keychain,2.1.272 在 Linux 上读写作用域文件。因此文件对本包自己的探针与容器轮仍是权威;keychain 才是当前 macOS 上宿主 CLI 真正用的那个。认证探测只做轻量文件检查——看作用域 `.claude.json` 的 `oauthAccount`,绝不为了探测而 spawn CLI。该探测同样会协调两个存储,因此遵守与 spawn 点一致的新者胜规则:它在每次状态读与每次就绪检查时都会跑,那里若是无条件镜像,同样会把容器轮的续期抹掉。
|
|
111
112
|
|
package/cordis.patch.yml
CHANGED
|
@@ -8,25 +8,24 @@
|
|
|
8
8
|
# installed explicitly alongside this bundle, or this provider stays pending.
|
|
9
9
|
# No other patch inserts the core row id.
|
|
10
10
|
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
11
|
+
# Exactly ONE row is inserted: the provider (this bundle's plugin registers the
|
|
12
|
+
# `claude-code` harness — CLAUDE_CONFIG_DIR scoped home, `claude auth login`
|
|
13
|
+
# browser flow, project-file session records). The `subagent_claude_code`
|
|
14
|
+
# delegation tool is no longer a profile-root row: since the family fold it
|
|
15
|
+
# ships as this package's `./tool` composition entry
|
|
16
|
+
# (`name: '@khorsheed/dsh-local-agent-claude-code/tool'` in an agent preset),
|
|
17
|
+
# granted per session — the dev preset's `tool-subagent-claude-code-local` row
|
|
18
|
+
# is the grant point. The family keeps the official model-facing name
|
|
19
|
+
# `subagent_claude_code`: the official preset row of that name ships
|
|
20
|
+
# `disabled: true`, and this patch disables the profile-root row too (below)
|
|
21
|
+
# so a community install can never register two `subagent_claude_code` tools.
|
|
22
|
+
# A user who deliberately re-enables the official row in their own preset
|
|
23
|
+
# layer gets a loud duplicate-name conflict — by design, they must choose one.
|
|
24
|
+
# The family tool keeps its continuation parameter: a later round may pass the
|
|
25
|
+
# dsh child session id returned by the first delegation to continue the same
|
|
26
|
+
# claude conversation.
|
|
26
27
|
#
|
|
27
|
-
# The
|
|
28
|
-
# without per-preset variants. The provider starts no claude process until a
|
|
29
|
-
# tool call or /claude-code login.
|
|
28
|
+
# The provider starts no claude process until a tool call or /claude-code login.
|
|
30
29
|
|
|
31
30
|
- id: tool-subagent-claude-code
|
|
32
31
|
disabled: true
|
|
@@ -34,9 +33,3 @@
|
|
|
34
33
|
- insert:
|
|
35
34
|
- id: local-agent-claude-code
|
|
36
35
|
name: '@khorsheed/dsh-local-agent-claude-code'
|
|
37
|
-
|
|
38
|
-
- id: tool-subagent-claude-code-local
|
|
39
|
-
name: '@khorsheed/dsh-local-agent-tool-subagent'
|
|
40
|
-
config:
|
|
41
|
-
provider: claude-local
|
|
42
|
-
toolName: subagent_claude_code
|
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 = ".
|
|
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-claude-code/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
|
-
"
|
|
247
|
-
"
|
|
248
|
-
"
|
|
249
|
-
"
|
|
250
|
-
"
|
|
251
|
-
"
|
|
252
|
-
"
|
|
253
|
-
"
|
|
254
|
-
"
|
|
255
|
-
"
|
|
256
|
-
"
|
|
257
|
-
"
|
|
258
|
-
"dotOff": "
|
|
259
|
-
"
|
|
260
|
-
"
|
|
261
|
-
"
|
|
262
|
-
"
|
|
263
|
-
"
|
|
264
|
-
"
|
|
265
|
-
"
|
|
266
|
-
"
|
|
267
|
-
"
|
|
268
|
-
"
|
|
269
|
-
"
|
|
246
|
+
"credentialDot": "On5p7W_credentialDot",
|
|
247
|
+
"rowIdentity": "On5p7W_rowIdentity",
|
|
248
|
+
"loginPrompt": "On5p7W_loginPrompt",
|
|
249
|
+
"promptText": "On5p7W_promptText",
|
|
250
|
+
"openPage": "On5p7W_openPage",
|
|
251
|
+
"rowHead": "On5p7W_rowHead",
|
|
252
|
+
"rowPending": "On5p7W_rowPending",
|
|
253
|
+
"rows": "On5p7W_rows",
|
|
254
|
+
"logoutButton": "On5p7W_logoutButton",
|
|
255
|
+
"retryButton": "On5p7W_retryButton",
|
|
256
|
+
"rosterError": "On5p7W_rosterError",
|
|
257
|
+
"codeInput": "On5p7W_codeInput",
|
|
258
|
+
"dotOff": "On5p7W_dotOff",
|
|
259
|
+
"loginButton": "On5p7W_loginButton",
|
|
260
|
+
"title": "On5p7W_title",
|
|
261
|
+
"rowName": "On5p7W_rowName",
|
|
262
|
+
"status": "On5p7W_status",
|
|
263
|
+
"rowTag": "On5p7W_rowTag",
|
|
264
|
+
"intro": "On5p7W_intro",
|
|
265
|
+
"dotPending": "On5p7W_dotPending",
|
|
266
|
+
"rowActions": "On5p7W_rowActions",
|
|
267
|
+
"dotOn": "On5p7W_dotOn",
|
|
268
|
+
"section": "On5p7W_section",
|
|
269
|
+
"rowCard": "On5p7W_rowCard"
|
|
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 = ".
|
|
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-claude-code/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
|
-
"
|
|
543
|
-
"
|
|
544
|
-
"
|
|
545
|
-
"
|
|
542
|
+
"credentialDot": "OFjNUG_credentialDot",
|
|
543
|
+
"dotOn": "OFjNUG_dotOn",
|
|
544
|
+
"dotPending": "OFjNUG_dotPending",
|
|
545
|
+
"dotOff": "OFjNUG_dotOff"
|
|
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 = ".
|
|
561
|
+
const css = ".C-VWHa_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}.C-VWHa_card:hover{border-color:var(--dsw-alias-label-dimmed)}.C-VWHa_cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}.C-VWHa_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}.C-VWHa_header:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.C-VWHa_headText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.C-VWHa_nameRow{align-items:center;gap:6px;display:flex}.C-VWHa_name{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}.C-VWHa_description{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:1.5}.C-VWHa_chevron{color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .16s}.C-VWHa_chevronOpen{transform:rotate(180deg)}.C-VWHa_body{border-top:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:14px;margin:0 16px;padding:12px 0 8px;display:flex}.C-VWHa_block{flex-direction:column;gap:10px;display:flex}.C-VWHa_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}.C-VWHa_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}.C-VWHa_info:hover,.C-VWHa_info:focus-visible{color:var(--dsw-alias-label-primary)}.C-VWHa_row{align-items:center;gap:12px;display:flex}.C-VWHa_rowLabel{color:var(--dsw-alias-label-primary);align-items:center;gap:4px;font-size:13px;line-height:1.4;display:inline-flex}.C-VWHa_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}.C-VWHa_switch:disabled{opacity:.5;cursor:default}.C-VWHa_switchOn{background:color-mix(in srgb, var(--dsh-accent,#4f8cff) 70%, transparent)}.C-VWHa_knob{background:var(--dsh-surface,#fff);border-radius:999px;width:.9375rem;height:.9375rem;transition:transform .12s;display:block}.C-VWHa_switchOn .C-VWHa_knob{transform:translate(.9375rem)}.C-VWHa_saved{color:var(--dsw-alias-state-success-primary);font-size:12px}.C-VWHa_errorText{color:var(--dsw-alias-state-error-primary);font-size:12px}.C-VWHa_hint{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:1.5}.C-VWHa_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}.C-VWHa_modelInput::placeholder{color:var(--dsw-alias-label-caption);opacity:1}.C-VWHa_modelInput:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.C-VWHa_modelInput:disabled{opacity:.5}.C-VWHa_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}.C-VWHa_modelField:focus-within{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.C-VWHa_modelField .C-VWHa_modelInput{background:0 0;border:0;border-radius:0}.C-VWHa_modelField .C-VWHa_modelInput:focus-visible{outline:none}.C-VWHa_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}.C-VWHa_modelMenuButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.C-VWHa_modelMenuButton:disabled{opacity:.5;cursor:default}.C-VWHa_modelMenuChevron{transition:transform .16s}.C-VWHa_modelMenuChevronOpen{transform:rotate(180deg)}.C-VWHa_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}.C-VWHa_modelMenuUp{top:auto;bottom:calc(100% + 6px)}.C-VWHa_modelItem,.C-VWHa_modelItemCurrent,.C-VWHa_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}.C-VWHa_modelItem:hover,.C-VWHa_modelItemCurrent:hover,.C-VWHa_modelItemDefault:hover{background:var(--dsw-alias-interactive-bg-hover)}.C-VWHa_modelItemCurrent{font-weight:560}.C-VWHa_modelItemLabel{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.C-VWHa_modelItemCheck{text-align:center;width:14px;color:var(--dsw-alias-label-secondary);flex:none}.C-VWHa_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}.C-VWHa_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}.C-VWHa_modelSave:hover:not(:disabled){border-color:var(--dsw-alias-label-dimmed)}.C-VWHa_modelSave:disabled{opacity:.5;cursor:default}";
|
|
562
562
|
const tagId = "@khorsheed/dsh-local-agent-claude-code/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
|
-
"
|
|
572
|
-
"
|
|
573
|
-
"cardOpen": "
|
|
574
|
-
"
|
|
575
|
-
"
|
|
576
|
-
"
|
|
577
|
-
"
|
|
578
|
-
"
|
|
579
|
-
"
|
|
580
|
-
"
|
|
581
|
-
"
|
|
582
|
-
"
|
|
583
|
-
"
|
|
584
|
-
"
|
|
585
|
-
"
|
|
586
|
-
"
|
|
587
|
-
"
|
|
588
|
-
"
|
|
589
|
-
"
|
|
590
|
-
"
|
|
591
|
-
"
|
|
592
|
-
"
|
|
593
|
-
"
|
|
594
|
-
"
|
|
595
|
-
"
|
|
596
|
-
"
|
|
597
|
-
"
|
|
598
|
-
"
|
|
599
|
-
"
|
|
600
|
-
"
|
|
601
|
-
"
|
|
602
|
-
"
|
|
603
|
-
"
|
|
604
|
-
"
|
|
571
|
+
"modelMenuChevron": "C-VWHa_modelMenuChevron",
|
|
572
|
+
"description": "C-VWHa_description",
|
|
573
|
+
"cardOpen": "C-VWHa_cardOpen",
|
|
574
|
+
"modelItemCheck": "C-VWHa_modelItemCheck",
|
|
575
|
+
"info": "C-VWHa_info",
|
|
576
|
+
"knob": "C-VWHa_knob",
|
|
577
|
+
"modelItemCurrent": "C-VWHa_modelItemCurrent",
|
|
578
|
+
"body": "C-VWHa_body",
|
|
579
|
+
"rowLabel": "C-VWHa_rowLabel",
|
|
580
|
+
"chevron": "C-VWHa_chevron",
|
|
581
|
+
"errorText": "C-VWHa_errorText",
|
|
582
|
+
"modelSave": "C-VWHa_modelSave",
|
|
583
|
+
"name": "C-VWHa_name",
|
|
584
|
+
"blockTitle": "C-VWHa_blockTitle",
|
|
585
|
+
"modelItem": "C-VWHa_modelItem",
|
|
586
|
+
"block": "C-VWHa_block",
|
|
587
|
+
"modelMenu": "C-VWHa_modelMenu",
|
|
588
|
+
"modelMenuUp": "C-VWHa_modelMenuUp",
|
|
589
|
+
"modelItemLabel": "C-VWHa_modelItemLabel",
|
|
590
|
+
"card": "C-VWHa_card",
|
|
591
|
+
"modelInput": "C-VWHa_modelInput",
|
|
592
|
+
"modelMenuButton": "C-VWHa_modelMenuButton",
|
|
593
|
+
"row": "C-VWHa_row",
|
|
594
|
+
"switch": "C-VWHa_switch",
|
|
595
|
+
"modelMenuChevronOpen": "C-VWHa_modelMenuChevronOpen",
|
|
596
|
+
"modelField": "C-VWHa_modelField",
|
|
597
|
+
"headText": "C-VWHa_headText",
|
|
598
|
+
"switchOn": "C-VWHa_switchOn",
|
|
599
|
+
"hint": "C-VWHa_hint",
|
|
600
|
+
"chevronOpen": "C-VWHa_chevronOpen",
|
|
601
|
+
"header": "C-VWHa_header",
|
|
602
|
+
"nameRow": "C-VWHa_nameRow",
|
|
603
|
+
"modelItemDefault": "C-VWHa_modelItemDefault",
|
|
604
|
+
"saved": "C-VWHa_saved"
|
|
605
605
|
};
|
|
606
606
|
//#endregion
|
|
607
607
|
//#region src/client/SettingsCard.tsx
|
package/lib/tool.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { mountSubagentDelegationTool, subagentToolConfigSchema } from "@khorsheed/dsh-local-agent/tool-factory";
|
|
2
|
+
//#region lib/types/tool.js
|
|
3
|
+
const PACKAGE_NAME = "@khorsheed/dsh-local-agent-claude-code";
|
|
4
|
+
/** This entry's own defaults: a preset row needs no config. */
|
|
5
|
+
const DEFAULT_PROVIDER = "claude-local";
|
|
6
|
+
const DEFAULT_TOOL_NAME = "subagent_claude_code";
|
|
7
|
+
/** Cordis plugin name used by loader diagnostics. */
|
|
8
|
+
const name = "local-agent-claude-code-tool";
|
|
9
|
+
/**
|
|
10
|
+
* The family core's `localAgent` service is a declared inject (the
|
|
11
|
+
* owning-family companion exception to the community-service probe rule): a
|
|
12
|
+
* preset's standing scope mounts at registry-activation time, BEFORE the
|
|
13
|
+
* profile's later bundle rows provide the core, so a one-shot ctx.get probe
|
|
14
|
+
* at apply saw ABSENT there and nothing re-ran the row (rc.1 boot order; the
|
|
15
|
+
* worktrees `./tool` entry documents the incident). The declared inject pends
|
|
16
|
+
* the row until the core provides, then the body applies.
|
|
17
|
+
*/
|
|
18
|
+
const inject = [
|
|
19
|
+
"tools",
|
|
20
|
+
"subagents",
|
|
21
|
+
"localAgent"
|
|
22
|
+
];
|
|
23
|
+
const Config = subagentToolConfigSchema(DEFAULT_PROVIDER, DEFAULT_TOOL_NAME);
|
|
24
|
+
/**
|
|
25
|
+
* Plugin body: mount the delegation tool through the family factory, stamped
|
|
26
|
+
* with THIS package as the tool-origin owner (AGENTS.md § Tool origin
|
|
27
|
+
* tagging — the shared factory never hardcodes an owner).
|
|
28
|
+
* @param ctx - Cordis context (the preset's agent-plane mount).
|
|
29
|
+
* @param config - row config (schema defaults already applied; the `??`
|
|
30
|
+
* fallbacks cover a direct ctx.plugin caller that bypassed validation).
|
|
31
|
+
*/
|
|
32
|
+
function apply(ctx, config) {
|
|
33
|
+
const resolved = {
|
|
34
|
+
provider: config.provider ?? DEFAULT_PROVIDER,
|
|
35
|
+
toolName: config.toolName ?? DEFAULT_TOOL_NAME
|
|
36
|
+
};
|
|
37
|
+
mountSubagentDelegationTool(ctx, resolved, PACKAGE_NAME);
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { Config, apply, inject, name };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The session-granted `subagent_claude_code` delegation tool — this package's
|
|
3
|
+
* `./tool` composition entry (the worktrees 0.3.0 / room 0.2.0 fold pattern)
|
|
4
|
+
* for agent-preset compositions. The row provides NO service (the
|
|
5
|
+
* preset-mount isolate-realm rule forbids service rows); it registers the
|
|
6
|
+
* model-facing tool into the host tools registry through the family factory
|
|
7
|
+
* (`@khorsheed/dsh-local-agent/tool-factory`), delegating to the `claude-local`
|
|
8
|
+
* provider this package's main row registers at the profile root — the
|
|
9
|
+
* official tool-row shape (the shipped `tool-bash` rows work the same way).
|
|
10
|
+
* Granting is therefore per-session: a preset names the row
|
|
11
|
+
* (`- id: tool-subagent-claude-code-local / name: '@khorsheed/dsh-local-agent-claude-code/tool'`),
|
|
12
|
+
* its sessions get the tool; every other preset's sessions do not.
|
|
13
|
+
*
|
|
14
|
+
* This row used to mount at the profile ROOT from this package's own bundle
|
|
15
|
+
* patch, pointing at the shared `@khorsheed/dsh-local-agent-tool-subagent`
|
|
16
|
+
* companion package; the family fold retired that package (the factory moved
|
|
17
|
+
* into the family core) and moved the row here. The package's bundle patch
|
|
18
|
+
* now mounts ONLY the provider row — a profile-root tool row would grant
|
|
19
|
+
* every session, exactly what the fold removed.
|
|
20
|
+
*
|
|
21
|
+
* @module @khorsheed/dsh-local-agent-claude-code/tool
|
|
22
|
+
*/
|
|
23
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
24
|
+
import type z from '@deepseek-ai/schemastery';
|
|
25
|
+
/** Cordis plugin name used by loader diagnostics. */
|
|
26
|
+
export declare const name = "local-agent-claude-code-tool";
|
|
27
|
+
/**
|
|
28
|
+
* The family core's `localAgent` service is a declared inject (the
|
|
29
|
+
* owning-family companion exception to the community-service probe rule): a
|
|
30
|
+
* preset's standing scope mounts at registry-activation time, BEFORE the
|
|
31
|
+
* profile's later bundle rows provide the core, so a one-shot ctx.get probe
|
|
32
|
+
* at apply saw ABSENT there and nothing re-ran the row (rc.1 boot order; the
|
|
33
|
+
* worktrees `./tool` entry documents the incident). The declared inject pends
|
|
34
|
+
* the row until the core provides, then the body applies.
|
|
35
|
+
*/
|
|
36
|
+
export declare const inject: string[];
|
|
37
|
+
/** Config: every field optional, defaulting to THIS provider's own values. */
|
|
38
|
+
export interface Config {
|
|
39
|
+
/** The `ctx.subagents` provider name to delegate to (default `claude-local`). */
|
|
40
|
+
provider?: string;
|
|
41
|
+
/** Model-facing tool name (default `subagent_claude_code`). */
|
|
42
|
+
toolName?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare const Config: z;
|
|
45
|
+
/**
|
|
46
|
+
* Plugin body: mount the delegation tool through the family factory, stamped
|
|
47
|
+
* with THIS package as the tool-origin owner (AGENTS.md § Tool origin
|
|
48
|
+
* tagging — the shared factory never hardcodes an owner).
|
|
49
|
+
* @param ctx - Cordis context (the preset's agent-plane mount).
|
|
50
|
+
* @param config - row config (schema defaults already applied; the `??`
|
|
51
|
+
* fallbacks cover a direct ctx.plugin caller that bypassed validation).
|
|
52
|
+
*/
|
|
53
|
+
export declare function apply(ctx: Context, config: Config): void;
|
|
54
|
+
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { mountSubagentDelegationTool, subagentToolConfigSchema } from '@khorsheed/dsh-local-agent/tool-factory';
|
|
2
|
+
const PACKAGE_NAME = '@khorsheed/dsh-local-agent-claude-code';
|
|
3
|
+
/** This entry's own defaults: a preset row needs no config. */
|
|
4
|
+
const DEFAULT_PROVIDER = 'claude-local';
|
|
5
|
+
const DEFAULT_TOOL_NAME = 'subagent_claude_code';
|
|
6
|
+
/** Cordis plugin name used by loader diagnostics. */
|
|
7
|
+
export const name = 'local-agent-claude-code-tool';
|
|
8
|
+
/**
|
|
9
|
+
* The family core's `localAgent` service is a declared inject (the
|
|
10
|
+
* owning-family companion exception to the community-service probe rule): a
|
|
11
|
+
* preset's standing scope mounts at registry-activation time, BEFORE the
|
|
12
|
+
* profile's later bundle rows provide the core, so a one-shot ctx.get probe
|
|
13
|
+
* at apply saw ABSENT there and nothing re-ran the row (rc.1 boot order; the
|
|
14
|
+
* worktrees `./tool` entry documents the incident). The declared inject pends
|
|
15
|
+
* the row until the core provides, then the body applies.
|
|
16
|
+
*/
|
|
17
|
+
export const inject = ['tools', 'subagents', 'localAgent'];
|
|
18
|
+
// Bare `z` annotation per the shared helper's variance note.
|
|
19
|
+
export const Config = subagentToolConfigSchema(DEFAULT_PROVIDER, DEFAULT_TOOL_NAME);
|
|
20
|
+
/**
|
|
21
|
+
* Plugin body: mount the delegation tool through the family factory, stamped
|
|
22
|
+
* with THIS package as the tool-origin owner (AGENTS.md § Tool origin
|
|
23
|
+
* tagging — the shared factory never hardcodes an owner).
|
|
24
|
+
* @param ctx - Cordis context (the preset's agent-plane mount).
|
|
25
|
+
* @param config - row config (schema defaults already applied; the `??`
|
|
26
|
+
* fallbacks cover a direct ctx.plugin caller that bypassed validation).
|
|
27
|
+
*/
|
|
28
|
+
export function apply(ctx, config) {
|
|
29
|
+
const resolved = {
|
|
30
|
+
provider: config.provider ?? DEFAULT_PROVIDER,
|
|
31
|
+
toolName: config.toolName ?? DEFAULT_TOOL_NAME,
|
|
32
|
+
};
|
|
33
|
+
mountSubagentDelegationTool(ctx, resolved, PACKAGE_NAME);
|
|
34
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@khorsheed/dsh-local-agent-claude-code",
|
|
3
|
-
"description": "Claude Code harness for dsh-local-agent: scoped CLAUDE_CONFIG_DIR, one-shot claude -p delegation visible in the 子代理 surface, project-file session records",
|
|
3
|
+
"description": "Claude Code harness for dsh-local-agent: scoped CLAUDE_CONFIG_DIR, one-shot claude -p delegation visible in the 子代理 surface, project-file session records; the session-granted `subagent_claude_code` delegation tool ships as the package's `./tool` composition entry",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"dsh",
|
|
6
6
|
"dsh-plugin",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"local-agent",
|
|
9
9
|
"claude-code"
|
|
10
10
|
],
|
|
11
|
-
"version": "0.
|
|
11
|
+
"version": "0.2.0-rc.1",
|
|
12
12
|
"type": "module",
|
|
13
13
|
"main": "lib/index.js",
|
|
14
14
|
"types": "lib/types/index.d.ts",
|
|
@@ -25,6 +25,10 @@
|
|
|
25
25
|
"types": "./lib/types/records.d.ts",
|
|
26
26
|
"default": "./lib/records.js"
|
|
27
27
|
},
|
|
28
|
+
"./tool": {
|
|
29
|
+
"types": "./lib/types/tool.d.ts",
|
|
30
|
+
"default": "./lib/tool.js"
|
|
31
|
+
},
|
|
28
32
|
"./client": {
|
|
29
33
|
"types": "./lib/types/client/index.d.ts",
|
|
30
34
|
"default": "./lib/client.js"
|
|
@@ -65,23 +69,22 @@
|
|
|
65
69
|
],
|
|
66
70
|
"license": "MIT",
|
|
67
71
|
"dependencies": {
|
|
68
|
-
"@khorsheed/dsh-local-agent": "^0.
|
|
69
|
-
"@khorsheed/dsh-local-agent-tool-subagent": "^0.1.0-rc.7"
|
|
72
|
+
"@khorsheed/dsh-local-agent": "^0.2.0-rc.1"
|
|
70
73
|
},
|
|
71
74
|
"peerDependencies": {
|
|
72
75
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
73
|
-
"@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.6",
|
|
74
|
-
"@deepseek-ai/dsh-client-locale": "^0.1.0-rc.6",
|
|
75
|
-
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.6",
|
|
76
|
-
"@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.6",
|
|
77
|
-
"@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6",
|
|
78
|
-
"@deepseek-ai/dsh-commands": "^0.1.0-rc.8",
|
|
79
|
-
"@deepseek-ai/dsh-invariants": "^0.1.0-rc.6",
|
|
80
|
-
"@deepseek-ai/dsh-llm": "^0.1.0-rc.6",
|
|
81
|
-
"@deepseek-ai/dsh-session": "^0.1.0-rc.8",
|
|
82
|
-
"@deepseek-ai/dsh-settings": "^0.1.0-rc.6",
|
|
83
|
-
"@deepseek-ai/dsh-subagent": "^0.1.0-rc.6",
|
|
84
|
-
"@deepseek-ai/dsh-subprocess": "^0.1.0-rc.6",
|
|
76
|
+
"@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.6 || ^0.2.0-rc.1",
|
|
77
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.0-rc.6 || ^0.2.0-rc.1",
|
|
78
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.6 || ^0.2.0-rc.1",
|
|
79
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.6 || ^0.2.0-rc.1",
|
|
80
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6 || ^0.2.0-rc.1",
|
|
81
|
+
"@deepseek-ai/dsh-commands": "^0.1.0-rc.8 || ^0.2.0-rc.1",
|
|
82
|
+
"@deepseek-ai/dsh-invariants": "^0.1.0-rc.6 || ^0.2.0-rc.1",
|
|
83
|
+
"@deepseek-ai/dsh-llm": "^0.1.0-rc.6 || ^0.2.0-rc.1",
|
|
84
|
+
"@deepseek-ai/dsh-session": "^0.1.0-rc.8 || ^0.2.0-rc.1",
|
|
85
|
+
"@deepseek-ai/dsh-settings": "^0.1.0-rc.6 || ^0.2.0-rc.1",
|
|
86
|
+
"@deepseek-ai/dsh-subagent": "^0.1.0-rc.6 || ^0.2.0-rc.1",
|
|
87
|
+
"@deepseek-ai/dsh-subprocess": "^0.1.0-rc.6 || ^0.2.0-rc.1",
|
|
85
88
|
"react": "^18.2.0"
|
|
86
89
|
},
|
|
87
90
|
"peerDependenciesMeta": {
|