@dsh-enhanced/traex-acp-provider 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # @dsh-enhanced/traex-acp-provider
2
2
 
3
- 把同一台机器、同一 OS 用户已经登录的 TraeX / TRAE CLI 注册为 DeepSeek Harness 的 `traex-agent` provider。DSH 在这里是 **ACP client**:模型选择器会通过无 prompt 的临时 ACP 会话发现 TraeX 当前提供的模型及其逐模型 reasoning effort;每次模型请求仍会启动新的 `traex acp serve`、完成 ACP v1 握手、创建会话、再次校验模型/effort、发送 prompt,并只把 `agent_message_chunk` 文本映射回 DSH。
3
+ 把同一台机器、同一 OS 用户已经登录的 TraeX / TRAE CLI 注册为 DeepSeek Harness 的 `traex-agent` provider。DSH 在这里是 **ACP client**:每次模型请求都会在校验 live Agent session 工作区后启动新的 `traex acp serve`、完成 ACP v1 握手、创建会话、校验模型/effort,并把握手目录作为非权威展示缓存。普通 `agent_message_chunk` 会映射为 DSH 文本;当请求带 DSH tool schema 时,TraeX 可以返回受控工具信封,插件把它转换成 DSH 原生 tool call,由 Harness 执行后进入下一 step。
4
+
5
+ 启用时,插件会在同一个 `LlmRuntime` 上通过 `@dsh-enhanced/llm-route-capabilities` 发布 `traex-agent` 的 `toolCalls: bridge`,并随 Cordis fiber 撤回。Delivery/Automations 因而能在启动模型前区分这条受控桥接 route 与 text-only coding subscription,而不依赖 rc.8 会丢弃的自定义 model metadata。
4
6
 
5
7
  这不是订阅 OAuth 转接,也不是模型 API provider。认证、模型供应、网络请求和可能产生的费用均由本机 TraeX 负责;插件不读取或托管 token。仓库中的 [`@dsh-enhanced/acp`](../acp) 方向正好相反——它让 DSH 自己成为供编辑器调用的 ACP agent。
6
8
 
@@ -27,7 +29,7 @@ dsh plugin --profile web add @dsh-enhanced/traex-acp-provider
27
29
  dsh --profile web --dump-config
28
30
  ```
29
31
 
30
- 该实验性 route 默认关闭。确认本机版本、登录和 ACP 入口后设置 `enabled: true`,再在 DSH 的 provider/model 选择处选择 `traex-agent`。模型选择器会列出 TraeX 当前 ACP 会话返回的全部模型;`default` 是额外保留的别名,沿用 TraeX 当前模型。具体模型和 effort 都通过 ACP session config option 选择,不会拼进 shell 命令。
32
+ 该实验性 route 默认关闭。确认本机版本、登录和 ACP 入口后设置 `enabled: true`,再在 DSH 的 provider/model 选择处选择 `traex-agent`。启动时模型选择器先显示配置别名;完成一次安全调用后会合并该 ACP 会话观察到的全部模型。`default` 沿用 TraeX 当前模型。具体模型和 effort 都通过 ACP session config option 选择,不会拼进 shell 命令。
31
33
 
32
34
  ## 快速开始(5 步)
33
35
 
@@ -35,7 +37,7 @@ dsh --profile web --dump-config
35
37
  2. **安装插件**:`dsh plugin --profile web add @dsh-enhanced/traex-acp-provider`。
36
38
  3. **开启 route**:本 route 默认关闭,需在配置里显式设 `enabled: true`(命令名不同则一并改 `command`)。
37
39
  4. **落盘检查**:`dsh --profile web --dump-config` 确认 `enabled` 与 `command` 生效。
38
- 5. **选择模型调用**:在 DSH 里选 `traex-agent`,等待模型目录加载后选择 `default`(沿用 TraeX 当前模型)或任一实时发现的具体模型;支持 reasoning 的模型还会显示它自己的 effort 选项。
40
+ 5. **选择模型调用**:在 DSH 里先选 `traex-agent/default`(沿用 TraeX 当前模型);完成一次调用后,可再选择该 live ACP session 已观察到的具体模型与 effort。
39
41
 
40
42
  每次调用会启动一个新的 `traex acp serve` 进程并消耗 TraeX 侧额度。遇到报错先看下文「协议与失败策略」的错误码表。
41
43
 
@@ -60,18 +62,21 @@ dsh --profile web --dump-config
60
62
  maxProtocolMessages: 10000
61
63
  maxOutputBytes: 2097152
62
64
  maxStderrBytes: 32768
63
- maxPromptBytes: 131072
65
+ maxPromptBytes: 4194304
64
66
  extraEnvNames: []
65
67
  logDiagnostics: false
66
68
  ```
67
69
 
68
70
  - `enabled` 默认 `false`;只在完成本机兼容性与登录检查后显式开启。
69
71
  - `command` 是单个可执行文件名或绝对路径;插件固定参数数组并使用 `shell: false`,不接受 shell 片段。
70
- - `cwd` 是 ACP `session/new` 的工作目录;相对路径按 DSH 进程启动目录解析。
72
+ - `cwd` 是 ACP `session/new` 允许使用的工作目录;相对路径按 DSH 进程启动目录解析。每个**带 prompt 的调用**必须是 DSH Agent Loop 在本进程标记且深冻结的请求;插件用其 live `sessionId` 从 host `sessions` 服务读 header cwd,双方 `realpath` 后必须与配置 cwd 完全一致。缺失、过期、伪造、未标记、cwd mismatch 或 symlink escape 都会在 `traex login status` 和 ACP 启动前以 `LOCAL_SESSION_CWD_REQUIRED` 拒绝;ACP 收到的是 canonical live-session cwd。
73
+ - `listModels` / `resolveModel` 没有 `GenerateOptions` 或 live session identity,因此只读取配置与已观察的短 TTL 内存缓存,**绝不认证或启动 ACP 子进程**。普通运行时的目录只由已经通过 live session + canonical cwd 校验的 `stream` 握手观察。
74
+ - 部署工具若要在启用 route 前主动验证本机登录和完整目录,必须显式调用包导出的 `probeTraexReadiness`。这是单独的 activation-only static-cwd 权限边界,不会被普通 DSH 模型查询隐式触发;调用完成后始终 shutdown 临时 adapter。
71
75
  - `models` 是实时 ACP 目录以外需要额外展示的非权威别名列表,默认只有 `default`。它不是执行允许列表;每次请求都会在新的 ACP 会话里重新验证具体模型和 reasoning effort,不可用时失败且不会静默换模型或 effort。
72
76
  - `timeoutMs` 覆盖握手、建会话和整轮 prompt。取消或超时时先发 ACP `session/cancel` 和 `SIGINT`,等待 `killGraceMs` 后升级为 `SIGKILL`,再等待一个等长窗口确认 `close`。仍未关闭时以 `teardown=failed` 错误结算,保留原始 abort/timeout 分类,并继续跟踪迟到的 `close`;不会伪称已完成回收。
73
- - `authProbeTimeoutMs` / `maxAuthProbeBytes` 限制每次调用及目录发现前的 `traex login status`;当前 TraeX 可能把精确文本 `Logged in using Trae` 单独写入 stdout 或 stderr,这两种形式都会被接受,混合输出、ChatGPT、API key、access token、未登录与未知输出全部拒绝。
77
+ - `authProbeTimeoutMs` / `maxAuthProbeBytes` 限制每次 live-session 调用以及显式 readiness probe 的 `traex login status`;当前 TraeX 可能把精确文本 `Logged in using Trae` 单独写入 stdout 或 stderr,这两种形式都会被接受,混合输出、ChatGPT、API key、access token、未登录与未知输出全部拒绝。
74
78
  - `maxMessageBytes` 限制单条 NDJSON,`maxProtocolBytes` / `maxProtocolMessages` 限制整轮 ACP 输入,`maxOutputBytes` 限制助手文本;字节限制均按 UTF-8 计算。
79
+ - `maxPromptBytes` 限制序列化后的 DSH 请求,默认 4 MiB。prompt 通过 ACP `session/prompt` 的文本块经 stdin 发送,**不作为 argv 元素**,因此这里不存在操作系统命令行长度限制;该上限只用于约束本机内存与 NDJSON 帧膨胀。真正的上下文边界由 TraeX 侧模型窗口决定。超限时在握手前失败,返回 DSH 标准的 `CONTEXT_WINDOW_EXCEEDED`,prompt 确定未进入 ACP 流;长对话若需要更大值可直接调高本项。
75
80
  - `extraEnvNames` 只允许填写要从 DSH 启动环境继承的变量名,配置中不能写变量值或 secret。
76
81
  - API key/token、Authorization/private-key/database credential 以及 OpenAI/Codex 等 provider endpoint 变量,即使列入 `extraEnvNames` 也会被硬排除;代理 URL 中的 userinfo 会被删除,无法安全解析的含 `@` 代理值会被拒绝。
77
82
  - `logDiagnostics` 默认为 `false`,此时对 stderr 只记录“TraeX 写入 stderr”;启用后仅记录经过常见 token/key/邮箱规则脱敏的有界尾部,仍不适合输出业务秘密。独立于该开关,插件始终会在每次请求结算时记录一条**无凭据**的生命周期诊断(阶段、prompt 是否提交、结果分类、teardown 状态、能可靠测得的毫秒级延迟指标,以及 ACP 返回时的纯数值 usage 快照),成功走 `debug`、非成功走 `info`;并在观测到模型目录时只记录**模型数量**。这些行不含 prompt、stderr 原文、认证凭据或任何 model id 原文;usage 快照可能包含 ACP 报告的 token 数量,但不会映射或转发为 DSH `TokenUsage`。
@@ -84,7 +89,7 @@ dsh --profile web --dump-config
84
89
  traex --sandbox read-only --ask-for-approval never acp serve
85
90
  ```
86
91
 
87
- 不会传 `--yolo`、`bypass_permissions` 或任意用户追加参数。ACP client 不声明文件系统或 terminal capability;TraeX 发起的每个 `session/request_permission` 都返回 `cancelled`。这让兼容 provider 默认只能读取上下文并返回文本,不应修改项目或运行需要授权的操作。
92
+ 不会传 `--yolo`、`bypass_permissions` 或任意用户追加参数。ACP client 不声明文件系统或 terminal capability;TraeX 发起的每个 `session/request_permission` 都返回 `cancelled`。TraeX 子进程自身因此不能通过本插件修改项目或运行命令。模型请求的 DSH tool call 会返回 Harness,由 Harness 既有的工具注册、sandbox、权限和审计链决定是否执行;插件不会替它放行。
88
93
 
89
94
  安全仍取决于 TraeX 对其配置和沙箱的正确实现。不要把 prompt 约束当作操作系统隔离;处理不可信仓库时,仍应使用只读挂载、容器或独立 OS 账号。
90
95
 
@@ -92,12 +97,13 @@ traex --sandbox read-only --ask-for-approval never acp serve
92
97
 
93
98
  | 能力 | 行为 |
94
99
  |---|---|
95
- | 文件系统 | 把规范化后的 `cwd` 发送给 TraeX,并强制 read-only sandbox;插件本身不提供 ACP 文件读写接口。TraeX 可以读取工作区以完成任务。 |
100
+ | 文件系统 | 对 prompt-bearing 调用,只把经过 live-loop session 身份和 canonical `realpath` 精确校验的 cwd 发送给 TraeX,并强制 read-only sandbox;普通模型查询不启动进程。显式 `probeTraexReadiness` 是由部署者主动进入的 static-cwd activation 边界。插件本身不提供 ACP 文件读写接口。 |
96
101
  | 网络 | 插件本身不直连模型服务;TraeX 会连接自己的认证、推理、更新或遥测服务。 |
97
- | 子进程 | 每次请求直接启动一个 TraeX ACP stdio 子进程,`shell: false`。打开/刷新模型目录也会启动一个无 prompt 的临时 ACP 会话,依次读取各模型的 reasoning selector 后关闭。取消时先走 ACP,再回收进程组;Windows 后代进程回收为 best-effort。 |
102
+ | 子进程 | 每次经过 live-session 校验的请求直接启动一个 TraeX ACP stdio 子进程,`shell: false`,并从同一握手观察目录。只有部署者显式调用 `probeTraexReadiness` 时才另开无 prompt 临时 ACP 会话。取消时先走 ACP,再回收进程组;Windows 后代进程回收为 best-effort。 |
98
103
  | 凭据 | 不读取 TraeX auth 文件、不实现登录、不刷新或上传 token;只让 TraeX 在本机用户配置目录中使用自己的缓存凭据。 |
99
104
  | 浏览器 | 插件不会打开浏览器;用户在插件外执行 TraeX login 时可能打开。 |
100
105
  | ACP 权限 | 所有 permission request 均拒绝;不暴露 client-side FS、terminal 或 MCP server。 |
106
+ | DSH 工具 | 请求中的 tool schema 会进入模型隐藏的兼容协议;只接受本次实际声明的精确工具名和对象参数,随后映射为 DSH tool call。真正的读写、网络、子进程或外部服务权限仍由对应 DSH 工具及 Harness 策略控制。 |
101
107
  | 日志 | 不主动记录 prompt;stderr 有界且默认不输出内容。每次请求结算记录一条无凭据生命周期诊断(阶段/提交状态/结果分类/teardown、可测得的毫秒级延迟指标,以及 ACP 返回时的纯数值 usage 快照),并在观测目录时只记录模型数量。均不含 prompt、stderr 原文、认证凭据或 model id 原文;usage 快照可能包含 ACP 报告的 token 数量。 |
102
108
  | 安装脚本 | 包内没有 install/postinstall 脚本,也不会安装或更新 TraeX。 |
103
109
 
@@ -105,8 +111,10 @@ traex --sandbox read-only --ask-for-approval never acp serve
105
111
 
106
112
  - 只接受 ACP protocol v1 和 `traex-acp` agent identity;版本或 identity 不符时 fail closed。
107
113
  - SDK 前的 wire guard 会追踪 JSON-RPC request id;非法 envelope、未知/重复 response id、未声明的 filesystem/terminal request 和未知 notification 都会终止该轮,不交给 SDK 宽松处理。
108
- - 只转发当前 session 的文本 `agent_message_chunk`;thought、plan、tool update 不会伪装成模型文本。
114
+ - 只消费当前 session 的文本 `agent_message_chunk`;普通文本直接成为最终回复,严格匹配 `dsh-tool-calls/v1` 的信封会转换为 DSH tool call。thought、plan 和 TraeX 自己的 tool update 不会伪装成 DSH 输出。
115
+ - 工具信封只允许调用本次 `GenerateOptions.tools` 中存在的精确名称,参数必须是 JSON 对象;未知工具、空调用或畸形信封以 `ACP_PROTOCOL_ERROR` fail closed。截断终态不会执行工具信封。若模型误在合法信封前附加一小段进度说明,插件会只提取并隐藏该信封,避免原始 JSON 泄漏到对话界面;不含协议标记的普通 JSON 仍按文本处理。
109
116
  - `end_turn`、`max_tokens`、`max_turn_requests` 是可完成终态;`refusal`、`cancelled`、断连、畸形/超限 NDJSON、无文本或缺少终态都会失败。
117
+ - TraeX 可能仍在 stderr 记录 `unsupported call` 一类内部工具路由告警;这是其内部工具未向本兼容层开放,不等同于 DSH 工具失败。插件会要求模型只返回 `dsh-tool-calls/v1` 信封;若调用仍失败,生命周期日志会同时给出 phase、terminal、exitCode 和 signal,便于区分终态缺失、协议校验与进程退出。
110
118
  - 不自动重试。外部 agent 可能已经读取上下文或产生服务端计费,自动重试会放大副作用。
111
119
 
112
120
  调用失败时返回的稳定 `LlmError` code 与排查:
@@ -114,6 +122,7 @@ traex --sandbox read-only --ask-for-approval never acp serve
114
122
  | 错误码 | 含义 | 处理 |
115
123
  |---|---|---|
116
124
  | `ACP_AUTH_REQUIRED` | 每次调用前的 `traex login status` 未精确报告 `Logged in using Trae` | 在同一 OS 用户下重新 `traex login`;ChatGPT/API key/access token/未登录都会被拒。 |
125
+ | `LOCAL_SESSION_CWD_REQUIRED` | 请求没有匹配的 live loop session,或其 canonical cwd 与配置 cwd 不完全一致 | 从真实 DSH Agent Loop 发起调用;确认 session header cwd 与插件 `cwd` 指向同一 realpath,且不要通过 symlink 跨出该目录。 |
117
126
  | `ACP_ENTITLEMENT_REQUIRED` | 握手成功但当前 Trae 账号没有任何可用模型 | 确认账号权益/套餐,必要时在 TraeX 侧切换账号。 |
118
127
  | `ACP_MODEL_UNAVAILABLE` | 请求的模型不在本次 ACP 会话的 model selector 中 | 刷新模型列表或用 `default`;账号权益或 TraeX 目录可能已经变化。 |
119
128
  | `UNSUPPORTED_REASONING_EFFORT` | 所选 effort 不属于该模型当前返回的 reasoning selector | 重新选择该模型实际显示的 effort;不同模型支持集可以不同。 |
@@ -122,24 +131,27 @@ traex --sandbox read-only --ask-for-approval never acp serve
122
131
  | `ACP_OUTPUT_LIMIT` | 助手文本超过 `maxOutputBytes` | 调大 `maxOutputBytes` 或缩小任务。 |
123
132
  | `ACP_PROTOCOL_ERROR` | protocol/identity 不符、非法 envelope、无文本或缺终态 | 确认 TraeX 版本仍提供 ACP v1 + `traex-acp` identity;升级后握手变化时插件会拒绝而非猜测。 |
124
133
  | `ACP_PROCESS_FAILED` | 子进程非零退出或其他未归类失败 | 开 `logDiagnostics` 看脱敏 stderr;单独 `traex acp serve` 复现。 |
134
+ | `CONTEXT_WINDOW_EXCEEDED` | 序列化后的 DSH 请求超过 `maxPromptBytes`,在握手前失败 | 调大 `maxPromptBytes`,或压缩/清理对话历史;该上限只防本机内存膨胀,与 argv 长度无关。 |
135
+ | `ACP_PROMPT_INVALID` | 请求中含无法序列化的内容(如图片或未知 content block) | 本 route 是 text-only 兼容层;改用纯文本,或换用支持该模态的 provider。 |
125
136
  | `CLI_NOT_FOUND` | 找不到可执行文件(`ENOENT`) | 核对 `command` 名称/路径及 `PATH`。 |
126
137
  | `INVALID_PROVIDER` | 选择了非 `traex-agent` 的 provider id | 只使用 `traex-agent`。 |
127
138
 
128
- - 认证不足会返回 `ACP_AUTH_REQUIRED`,无可用权益/模型分别映射为 `ACP_ENTITLEMENT_REQUIRED` / `ACP_MODEL_UNAVAILABLE`,明确拒绝映射为 `ACP_REFUSAL`;其他稳定错误包括 `ACP_PROTOCOL_ERROR`、`ACP_TIMEOUT`、`ACP_OUTPUT_LIMIT`、`ACP_PROCESS_FAILED` 和 `CLI_NOT_FOUND`。
139
+ - 认证不足会返回 `ACP_AUTH_REQUIRED`,无可用权益/模型分别映射为 `ACP_ENTITLEMENT_REQUIRED` / `ACP_MODEL_UNAVAILABLE`,明确拒绝映射为 `ACP_REFUSAL`;其他稳定错误包括 `ACP_PROTOCOL_ERROR`、`ACP_TIMEOUT`、`ACP_OUTPUT_LIMIT`、`ACP_PROCESS_FAILED`、`CONTEXT_WINDOW_EXCEEDED`、`ACP_PROMPT_INVALID` 和 `CLI_NOT_FOUND`。
140
+ - 握手前的 prompt 序列化失败(超限或含不支持的 content block)一律带稳定错误码抛出,不会退化为未分类失败;此时 prompt 确定未进入 ACP 流,重试安全。
129
141
 
130
- > 模型目录:`listModels` 会建立一个无 prompt 的临时 ACP 会话,依次选择本次目录中的每个模型,读取该模型实际返回的 reasoning selector,然后关闭会话。完整结果会在内存里做一份**非权威**、带短 TTL 的展示缓存;它不放行或拒绝执行。每次真实调用仍以新的 `session/new` 返回值为唯一执行依据,重新选择并核对模型与 effort;auth 失败、reload 或版本变化时缓存失效。日志只输出模型数量,不含 model id 原文。
142
+ > 模型目录:普通 `listModels` / `resolveModel` 只合并配置与最后一次安全 ACP 握手得到的**非权威**、短 TTL 展示缓存,不做 I/O。每次真实调用仍以自己的 `session/new` 返回值为唯一执行依据,重新选择并核对模型与 effort;auth 失败、reload 或 TTL 到期时缓存失效。部署激活可单独调用 `probeTraexReadiness` 做 prompt-free 完整目录探测;这不会改变普通运行时查询的权限边界。日志只输出模型数量,不含 model id 原文。
131
143
 
132
144
  ## 已知限制
133
145
 
134
- - DSH `0.1.0-rc.6` 暴露的是 `LlmAdapter` seam,因此本版是 text-only 兼容层,不是完整 ACP UI。TraeX 的 plan、tool call、diff、permission UI、会话列表和富内容不会进入 DSH。
146
+ - DSH `0.1.0-rc.8` 暴露的是 `LlmAdapter` seam,因此工具调用通过模型隐藏的严格 JSON 信封桥接,不是 TraeX 原生 tool update,也不是完整 ACP UI。TraeX 的 plan、diff、permission UI、会话列表和富内容不会进入 DSH。
135
147
  - 每次 DSH 请求使用一个新的 TraeX 进程和 ACP session,不恢复外部历史;完整 DSH 对话会被序列化进 prompt。
136
- - 暂不转发图片、音频、DSH tool schema 或 TraeX token usage。实验性的 ACP `PromptResponse.usage` 只保留显式数值字段用于内部诊断,不会映射或发送为 DSH usage chunk。
148
+ - 暂不转发图片、音频或 TraeX token usage。DSH tool schema 会随每一步序列化,工具结果则通过下一步的完整 DSH 对话返回给模型;实验性的 ACP `PromptResponse.usage` 只保留显式数值字段用于内部诊断,不会映射或发送为 DSH usage chunk。
137
149
  - TraeX 是变化中的开发工具;本实现以本机 `traecli 0.201.1 (internal edition)` 的 ACP v1 握手、逐模型 reasoning selector 与官方 ACP SDK `0.25.1` 为验证基线。升级后若 identity、模型/effort selector 或终态变化,插件会拒绝而不是猜测兼容。
138
150
 
139
151
  ## 兼容性与调研
140
152
 
141
153
  - Node.js `^22.19.0 || >=24.0.0`
142
- - DeepSeek Harness / `@deepseek-ai/dsh-llm` `>=0.1.0-rc.6 <0.2.0`
154
+ - DeepSeek Harness / `@deepseek-ai/dsh-llm` `>=0.1.0-rc.8 <0.2.0`
143
155
  - Cordis `^4.0.1`
144
156
  - Agent Client Protocol SDK `0.25.1`,protocol version `1`
145
157
 
package/lib/adapter.d.ts CHANGED
@@ -3,6 +3,7 @@ import { type CatalogObservation, type ProviderFailureContext, type RunTraexAcpO
3
3
  import { type TraexAuthVerifier } from './auth.js';
4
4
  import { type CachedCatalog } from './catalog-cache.js';
5
5
  import type { TraexAcpProviderConfig } from './config.js';
6
+ import { type LiveSessionLookup } from './session-cwd.js';
6
7
  export declare const TRAEX_PROVIDER_ROUTE = "traex-agent";
7
8
  export type TraexAcpTextRunner = (invocation: TraexAcpInvocation, options?: RunTraexAcpOptions) => AsyncIterable<string>;
8
9
  export type TraexAcpCatalogDiscoverer = (invocation: TraexAcpCatalogInvocation, options?: RunTraexAcpOptions) => Promise<CatalogObservation>;
@@ -32,8 +33,10 @@ export interface AdapterDependencies {
32
33
  catalogCacheTtlMs?: number;
33
34
  /** Injectable clock for the catalog cache; tests only. */
34
35
  catalogClock?: () => number;
36
+ /** Host-owned live session lookup used to bind local ACP cwd to a loop request. */
37
+ liveSessions?: LiveSessionLookup;
35
38
  }
36
- /** Text-only DSH compatibility facade over a fresh, local TraeX ACP session. */
39
+ /** DSH text/tool compatibility facade over a fresh, local TraeX ACP session. */
37
40
  export declare class TraexAcpAdapter extends LlmAdapter {
38
41
  private readonly config;
39
42
  private readonly cwd;
@@ -44,8 +47,10 @@ export declare class TraexAcpAdapter extends LlmAdapter {
44
47
  private readonly onSettled;
45
48
  private readonly onCatalogObserved;
46
49
  private readonly catalogCache;
50
+ private readonly liveSessions;
47
51
  private readonly lifecycle;
48
52
  constructor(config: TraexAcpProviderConfig, dependencies?: AdapterDependencies);
53
+ private trustedCwd;
49
54
  /**
50
55
  * Cache key parts built from NON-SENSITIVE identifiers only. The config revision is derived from
51
56
  * the deployer advisory model aliases, never from environment variable values (which are secret
@@ -64,11 +69,26 @@ export declare class TraexAcpAdapter extends LlmAdapter {
64
69
  private routeFailureFrom;
65
70
  providerInfo(provider: string): LlmProviderInfo;
66
71
  providerRetryPolicy(_provider: string): ResolvedRetryPolicy;
67
- private loadCatalog;
72
+ /**
73
+ * Explicit activation/readiness boundary. Normal DSH catalog and resolution
74
+ * methods never call this because they do not carry a loop-owned session.
75
+ */
76
+ probeReadiness(signal?: AbortSignal): Promise<CatalogObservation>;
68
77
  listModels(provider: string): Promise<readonly LlmModelInfo[]>;
69
78
  resolveModel(provider: string, model: string, signal?: AbortSignal): Promise<LlmResolvedModelInfo>;
70
79
  stream(options: GenerateOptions): AsyncIterable<StreamChunk>;
71
80
  shutdown(): void;
72
81
  }
82
+ export interface TraexReadinessProbeOptions {
83
+ /** Whole activation-only readiness deadline. */
84
+ readonly timeoutMs?: number;
85
+ readonly signal?: AbortSignal;
86
+ }
87
+ /**
88
+ * Explicit deployment activation probe. This is the sole public static-cwd
89
+ * exception: ordinary adapter list/resolve operations remain process-free and
90
+ * a model stream must bind every other local subprocess to a live loop session.
91
+ */
92
+ export declare function probeTraexReadiness(config: TraexAcpProviderConfig, options?: TraexReadinessProbeOptions, dependencies?: AdapterDependencies): Promise<CatalogObservation>;
73
93
  export declare function redactDiagnostic(value: string): string;
74
94
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/lib/adapter.js CHANGED
@@ -1,9 +1,11 @@
1
+ import { randomUUID } from 'node:crypto';
1
2
  import { resolve } from 'node:path';
2
- import { LlmAdapter, LlmError, ReasoningEffortId, } from '@deepseek-ai/dsh-llm';
3
+ import { CallId, CONTEXT_WINDOW_EXCEEDED_CODE, LlmAdapter, LlmError, ReasoningEffortId, } from '@deepseek-ai/dsh-llm';
3
4
  import { discoverTraexAcpModels, runTraexAcpText, } from './acp-client.js';
4
5
  import { verifyTraexAuth } from './auth.js';
5
6
  import { CatalogObservationCache } from './catalog-cache.js';
6
- import { buildPrompt } from './prompt.js';
7
+ import { buildPrompt, parseDelegatedToolCalls } from './prompt.js';
8
+ import { resolveTrustedSessionCwd, TrustedSessionCwdError } from './session-cwd.js';
7
9
  export const TRAEX_PROVIDER_ROUTE = 'traex-agent';
8
10
  const noAutomaticRetry = Object.freeze({
9
11
  mode: 'normal',
@@ -24,6 +26,9 @@ function abortReason(signal) {
24
26
  function connectorFailure(command, error) {
25
27
  if (error instanceof Error && error.cause === 'abort')
26
28
  return error;
29
+ if (error instanceof TrustedSessionCwdError) {
30
+ return new LlmError('TraeX ACP requires a live loop-owned session whose canonical cwd matches the configured local workspace', 'LOCAL_SESSION_CWD_REQUIRED', { cause: error });
31
+ }
27
32
  const candidate = error;
28
33
  const code = candidate?.systemCode ?? candidate?.code;
29
34
  if (code === 'ENOENT') {
@@ -55,6 +60,19 @@ function connectorFailure(command, error) {
55
60
  }
56
61
  return new LlmError('TraeX ACP process failed', 'ACP_PROCESS_FAILED', { cause: error });
57
62
  }
63
+ /**
64
+ * Classify a pre-handshake serialization failure. An oversized request is reported with the
65
+ * canonical DSH context-overflow code so the loop can compact and retry instead of surfacing an
66
+ * unclassified failure; the prompt provably never entered the ACP stream.
67
+ */
68
+ function preflightFailure(error) {
69
+ if (error instanceof Error && error.cause === 'prompt-limit') {
70
+ return new LlmError(error.message, CONTEXT_WINDOW_EXCEEDED_CODE, { cause: error });
71
+ }
72
+ return error instanceof Error
73
+ ? new LlmError(error.message, 'ACP_PROMPT_INVALID', { cause: error })
74
+ : new LlmError('TraeX ACP could not serialize the DSH request', 'ACP_PROMPT_INVALID', { cause: error });
75
+ }
58
76
  /** Classify the original transport error into a stable, credential-free outcome for diagnostics. */
59
77
  function outcomeFor(error) {
60
78
  const cause = error instanceof Error ? error.cause : undefined;
@@ -99,7 +117,7 @@ function reasoningInfo(model) {
99
117
  },
100
118
  };
101
119
  }
102
- /** Text-only DSH compatibility facade over a fresh, local TraeX ACP session. */
120
+ /** DSH text/tool compatibility facade over a fresh, local TraeX ACP session. */
103
121
  export class TraexAcpAdapter extends LlmAdapter {
104
122
  config;
105
123
  cwd;
@@ -110,6 +128,7 @@ export class TraexAcpAdapter extends LlmAdapter {
110
128
  onSettled;
111
129
  onCatalogObserved;
112
130
  catalogCache;
131
+ liveSessions;
113
132
  lifecycle = new AbortController();
114
133
  constructor(config, dependencies = {}) {
115
134
  super();
@@ -125,6 +144,10 @@ export class TraexAcpAdapter extends LlmAdapter {
125
144
  ...(dependencies.catalogCacheTtlMs !== undefined ? { ttlMs: dependencies.catalogCacheTtlMs } : {}),
126
145
  ...(dependencies.catalogClock !== undefined ? { now: dependencies.catalogClock } : {}),
127
146
  });
147
+ this.liveSessions = dependencies.liveSessions;
148
+ }
149
+ trustedCwd(request) {
150
+ return resolveTrustedSessionCwd({ request, configuredCwd: this.cwd, sessions: this.liveSessions });
128
151
  }
129
152
  /**
130
153
  * Cache key parts built from NON-SENSITIVE identifiers only. The config revision is derived from
@@ -191,12 +214,19 @@ export class TraexAcpAdapter extends LlmAdapter {
191
214
  providerRetryPolicy(_provider) {
192
215
  return noAutomaticRetry;
193
216
  }
194
- async loadCatalog(signal = this.lifecycle.signal) {
217
+ /**
218
+ * Explicit activation/readiness boundary. Normal DSH catalog and resolution
219
+ * methods never call this because they do not carry a loop-owned session.
220
+ */
221
+ async probeReadiness(signal = this.lifecycle.signal) {
222
+ const effectiveSignal = signal === this.lifecycle.signal
223
+ ? signal
224
+ : AbortSignal.any([signal, this.lifecycle.signal]);
225
+ if (effectiveSignal.aborted)
226
+ throw abortReason(effectiveSignal);
195
227
  const cached = this.peekObservedCatalog()?.observation;
196
228
  if (cached?.completeReasoning === true)
197
229
  return cached;
198
- if (signal.aborted)
199
- throw abortReason(signal);
200
230
  try {
201
231
  await this.verifyAuth({
202
232
  command: this.config.command,
@@ -204,7 +234,7 @@ export class TraexAcpAdapter extends LlmAdapter {
204
234
  timeoutMs: this.config.authProbeTimeoutMs,
205
235
  maxOutputBytes: this.config.maxAuthProbeBytes,
206
236
  extraEnvNames: this.config.extraEnvNames,
207
- signal,
237
+ signal: effectiveSignal,
208
238
  });
209
239
  const catalog = await this.discoverModels({
210
240
  command: this.config.command,
@@ -227,7 +257,7 @@ export class TraexAcpAdapter extends LlmAdapter {
227
257
  maxStderrBytes: this.config.maxStderrBytes,
228
258
  extraEnvNames: this.config.extraEnvNames,
229
259
  onDiagnostic: diagnostic => this.onDiagnostic?.(diagnostic),
230
- signal,
260
+ signal: effectiveSignal,
231
261
  });
232
262
  this.handleCatalogObserved(catalog);
233
263
  return catalog;
@@ -239,8 +269,8 @@ export class TraexAcpAdapter extends LlmAdapter {
239
269
  }
240
270
  async listModels(provider) {
241
271
  ensureProvider(provider);
242
- const catalog = await this.loadCatalog();
243
- const active = catalog.models.find(model => model.id === catalog.currentValue);
272
+ const catalog = this.peekObservedCatalog()?.observation;
273
+ const active = catalog?.models.find(model => model.id === catalog.currentValue);
244
274
  const entries = new Map();
245
275
  for (const model of this.config.models) {
246
276
  entries.set(model, {
@@ -253,7 +283,7 @@ export class TraexAcpAdapter extends LlmAdapter {
253
283
  inputModalities: ['text'],
254
284
  });
255
285
  }
256
- for (const model of catalog.models) {
286
+ for (const model of catalog?.models ?? []) {
257
287
  entries.set(model.id, {
258
288
  provider,
259
289
  id: model.id,
@@ -271,10 +301,10 @@ export class TraexAcpAdapter extends LlmAdapter {
271
301
  : AbortSignal.any([signal, this.lifecycle.signal]);
272
302
  if (effectiveSignal.aborted)
273
303
  throw abortReason(effectiveSignal);
274
- const catalog = await this.loadCatalog(effectiveSignal);
304
+ const catalog = this.peekObservedCatalog()?.observation;
275
305
  const catalogModel = model === 'default'
276
- ? catalog.models.find(entry => entry.id === catalog.currentValue)
277
- : catalog.models.find(entry => entry.id === model);
306
+ ? catalog?.models.find(entry => entry.id === catalog.currentValue)
307
+ : catalog?.models.find(entry => entry.id === model);
278
308
  return {
279
309
  provider,
280
310
  id: model,
@@ -317,11 +347,19 @@ export class TraexAcpAdapter extends LlmAdapter {
317
347
  try {
318
348
  if (signal.aborted)
319
349
  throw abortReason(signal);
350
+ let cwd;
351
+ try {
352
+ cwd = this.trustedCwd(options);
353
+ }
354
+ catch (error) {
355
+ outcome = 'preflight';
356
+ throw connectorFailure(this.config.command, error);
357
+ }
320
358
  const authStartedAt = performance.now();
321
359
  try {
322
360
  await this.verifyAuth({
323
361
  command: this.config.command,
324
- cwd: this.cwd,
362
+ cwd,
325
363
  timeoutMs: this.config.authProbeTimeoutMs,
326
364
  maxOutputBytes: this.config.maxAuthProbeBytes,
327
365
  extraEnvNames: this.config.extraEnvNames,
@@ -353,7 +391,7 @@ export class TraexAcpAdapter extends LlmAdapter {
353
391
  'acp',
354
392
  'serve',
355
393
  ],
356
- cwd: this.cwd,
394
+ cwd,
357
395
  prompt: buildPrompt(options, this.config.maxPromptBytes),
358
396
  ...(options.model === 'default' ? {} : { model: options.model }),
359
397
  ...(options.reasoningEffort === undefined ? {} : { reasoningEffort: String(options.reasoningEffort) }),
@@ -361,7 +399,7 @@ export class TraexAcpAdapter extends LlmAdapter {
361
399
  }
362
400
  catch (error) {
363
401
  outcome = 'preflight';
364
- throw error;
402
+ throw preflightFailure(error);
365
403
  }
366
404
  let terminal;
367
405
  const runnerOptions = {
@@ -385,18 +423,27 @@ export class TraexAcpAdapter extends LlmAdapter {
385
423
  // reports it via onSettled; if it never reports (early return mid-stream) we say unknown.
386
424
  phase = 'stream';
387
425
  let text = '';
388
- yield { type: 'block-start', index: 0, blockType: 'text' };
426
+ const bufferForToolDelegation = (options.tools?.length ?? 0) > 0;
427
+ const textDeltas = [];
428
+ if (!bufferForToolDelegation)
429
+ yield { type: 'block-start', index: 0, blockType: 'text' };
389
430
  try {
390
431
  // Calling an injected runner may synchronously start work or throw. From immediately
391
432
  // before that call, replay safety is unknown until the transport supplies exact facts.
392
433
  promptSubmissionState = 'unknown';
434
+ invocation = { ...invocation, cwd: this.trustedCwd(options) };
393
435
  const deltas = this.runText(invocation, runnerOptions);
394
436
  for await (const delta of deltas) {
395
437
  if (delta.length === 0)
396
438
  continue;
397
439
  text += delta;
398
- assistantTextForwarded = true;
399
- yield { type: 'text-delta', index: 0, text: delta };
440
+ if (bufferForToolDelegation) {
441
+ textDeltas.push(delta);
442
+ }
443
+ else {
444
+ assistantTextForwarded = true;
445
+ yield { type: 'text-delta', index: 0, text: delta };
446
+ }
400
447
  }
401
448
  }
402
449
  catch (error) {
@@ -408,6 +455,37 @@ export class TraexAcpAdapter extends LlmAdapter {
408
455
  throw connectorFailure(this.config.command, new Error('TraeX ACP terminal metadata was missing', { cause: 'protocol' }));
409
456
  }
410
457
  outcome = 'ok';
458
+ if (bufferForToolDelegation && terminal === 'end_turn') {
459
+ let calls;
460
+ try {
461
+ calls = parseDelegatedToolCalls(text, options.tools ?? []);
462
+ }
463
+ catch (error) {
464
+ outcome = 'protocol';
465
+ throw connectorFailure(this.config.command, error);
466
+ }
467
+ if (calls !== undefined) {
468
+ for (const [index, call] of calls.entries()) {
469
+ const id = CallId(`traex-${randomUUID()}`);
470
+ yield { type: 'block-start', index, blockType: 'tool-call' };
471
+ yield { type: 'tool-call-delta', index, id, name: call.name, argumentsDelta: call.arguments };
472
+ yield {
473
+ type: 'block-end',
474
+ index,
475
+ block: { type: 'tool-call', id, name: call.name, arguments: call.arguments },
476
+ };
477
+ }
478
+ yield { type: 'finish', reason: { kind: 'tool-calls' } };
479
+ return;
480
+ }
481
+ }
482
+ if (bufferForToolDelegation) {
483
+ yield { type: 'block-start', index: 0, blockType: 'text' };
484
+ for (const delta of textDeltas) {
485
+ assistantTextForwarded = true;
486
+ yield { type: 'text-delta', index: 0, text: delta };
487
+ }
488
+ }
411
489
  yield { type: 'block-end', index: 0, block: { type: 'text', text } };
412
490
  yield {
413
491
  type: 'finish',
@@ -427,6 +505,28 @@ export class TraexAcpAdapter extends LlmAdapter {
427
505
  }
428
506
  }
429
507
  }
508
+ /**
509
+ * Explicit deployment activation probe. This is the sole public static-cwd
510
+ * exception: ordinary adapter list/resolve operations remain process-free and
511
+ * a model stream must bind every other local subprocess to a live loop session.
512
+ */
513
+ export async function probeTraexReadiness(config, options = {}, dependencies = {}) {
514
+ if (options.timeoutMs !== undefined
515
+ && (!Number.isSafeInteger(options.timeoutMs) || options.timeoutMs < 1 || options.timeoutMs > 60_000)) {
516
+ throw new RangeError('TraeX readiness timeoutMs must be an integer from 1 to 60000');
517
+ }
518
+ const timeoutSignal = options.timeoutMs === undefined ? undefined : AbortSignal.timeout(options.timeoutMs);
519
+ const signal = options.signal === undefined
520
+ ? (timeoutSignal ?? new AbortController().signal)
521
+ : (timeoutSignal === undefined ? options.signal : AbortSignal.any([options.signal, timeoutSignal]));
522
+ const adapter = new TraexAcpAdapter(config, dependencies);
523
+ try {
524
+ return await adapter.probeReadiness(signal);
525
+ }
526
+ finally {
527
+ adapter.shutdown();
528
+ }
529
+ }
430
530
  export function redactDiagnostic(value) {
431
531
  return value
432
532
  .replace(/\p{Cc}/gu, ' ')
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/lib/config.d.ts CHANGED
@@ -29,7 +29,12 @@ export interface TraexAcpProviderConfig {
29
29
  maxOutputBytes: number;
30
30
  /** Maximum UTF-8 bytes retained from TraeX stderr. */
31
31
  maxStderrBytes: number;
32
- /** Maximum UTF-8 bytes in the serialized DSH request. */
32
+ /**
33
+ * Maximum UTF-8 bytes in the serialized DSH request. The prompt travels as an ACP
34
+ * `session/prompt` text block over stdin, never as an argv element, so no OS command-line
35
+ * length limit applies here. This bound only guards against unbounded local memory and
36
+ * NDJSON framing growth; TraeX still enforces its own model context window.
37
+ */
33
38
  maxPromptBytes: number;
34
39
  /** Additional environment variable names inherited by the child process. */
35
40
  extraEnvNames: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,MAAM,WAAW,sBAAsB;IACrC,iFAAiF;IACjF,OAAO,EAAE,OAAO,CAAA;IAChB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAA;IACf,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAA;IAC1B,wEAAwE;IACxE,iBAAiB,EAAE,MAAM,CAAA;IACzB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAA;IACvB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,CAAA;IACxB,oDAAoD;IACpD,mBAAmB,EAAE,MAAM,CAAA;IAC3B,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAA;IACtB,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAA;IACtB,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAA;IACtB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,4DAA4D;IAC5D,cAAc,EAAE,OAAO,CAAA;CACxB;AAKD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,sBAAsB,CAiBd,CAAA;AAEpC,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,sBAAsB,GAAG,sBAAsB,CAMtF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,MAAM,WAAW,sBAAsB;IACrC,iFAAiF;IACjF,OAAO,EAAE,OAAO,CAAA;IAChB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAA;IACf,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAA;IAC1B,wEAAwE;IACxE,iBAAiB,EAAE,MAAM,CAAA;IACzB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAA;IACvB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,CAAA;IACxB,oDAAoD;IACpD,mBAAmB,EAAE,MAAM,CAAA;IAC3B,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAA;IACtB,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAA;IACtB;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,4DAA4D;IAC5D,cAAc,EAAE,OAAO,CAAA;CACxB;AAKD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,sBAAsB,CAiBd,CAAA;AAEpC,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,sBAAsB,GAAG,sBAAsB,CAMtF"}
package/lib/config.js CHANGED
@@ -15,7 +15,7 @@ export const Config = Schema.object({
15
15
  maxProtocolMessages: Schema.natural().min(16).max(1_000_000).default(10_000),
16
16
  maxOutputBytes: Schema.natural().min(1_024).max(64 * 1024 * 1024).default(2 * 1024 * 1024),
17
17
  maxStderrBytes: Schema.natural().min(256).max(4 * 1024 * 1024).default(32 * 1024),
18
- maxPromptBytes: Schema.natural().min(1_024).max(64 * 1024 * 1024).default(128 * 1024),
18
+ maxPromptBytes: Schema.natural().min(1_024).max(64 * 1024 * 1024).default(4 * 1024 * 1024),
19
19
  extraEnvNames: Schema.array(Schema.string().pattern(/^[A-Za-z_][A-Za-z0-9_]*$/)).default([]),
20
20
  logDiagnostics: Schema.boolean().default(false),
21
21
  });
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  import type { Context } from '@deepseek-ai/cordis';
2
- import { TRAEX_PROVIDER_ROUTE, TraexAcpAdapter } from './adapter.js';
2
+ import { probeTraexReadiness, TRAEX_PROVIDER_ROUTE, TraexAcpAdapter } from './adapter.js';
3
3
  import { Config, type TraexAcpProviderConfig } from './config.js';
4
4
  import { version } from './version.js';
5
5
  export declare const name = "dsh-enhanced-traex-acp-provider";
6
6
  export declare const inject: string[];
7
- export { Config, TRAEX_PROVIDER_ROUTE, TraexAcpAdapter, version };
7
+ export { Config, probeTraexReadiness, TRAEX_PROVIDER_ROUTE, TraexAcpAdapter, version };
8
8
  export { CatalogObservationCache, catalogCacheKey } from './catalog-cache.js';
9
9
  export { ACP_USAGE_DSH_MAPPING_GATE } from './acp-client.js';
10
10
  export type { CatalogCacheKeyParts, CachedCatalog } from './catalog-cache.js';
11
+ export type { TraexReadinessProbeOptions } from './adapter.js';
11
12
  export type { TraexAcpProviderConfig };
12
13
  export declare function apply(ctx: Context, input?: TraexAcpProviderConfig): void;
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAoB,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACtF,OAAO,EAAE,MAAM,EAAmB,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,eAAO,MAAM,IAAI,oCAAoC,CAAA;AACrD,eAAO,MAAM,MAAM,UAAU,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,eAAe,EAAE,OAAO,EAAE,CAAA;AACjE,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAC5D,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC7E,YAAY,EAAE,sBAAsB,EAAE,CAAA;AAEtC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAiCxE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAoB,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC3G,OAAO,EAAE,MAAM,EAAmB,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAElF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,eAAO,MAAM,IAAI,oCAAoC,CAAA;AACrD,eAAO,MAAM,MAAM,UAAsB,CAAA;AAEzC,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,EAAE,OAAO,EAAE,CAAA;AACtF,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAC5D,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC7E,YAAY,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAC9D,YAAY,EAAE,sBAAsB,EAAE,CAAA;AAEtC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAoDxE"}
package/lib/index.js CHANGED
@@ -1,9 +1,10 @@
1
- import { redactDiagnostic, TRAEX_PROVIDER_ROUTE, TraexAcpAdapter } from './adapter.js';
1
+ import { registerLlmRouteCapability } from '@dsh-enhanced/llm-route-capabilities';
2
+ import { probeTraexReadiness, redactDiagnostic, TRAEX_PROVIDER_ROUTE, TraexAcpAdapter } from './adapter.js';
2
3
  import { Config, normalizeConfig } from './config.js';
3
4
  import { version } from './version.js';
4
5
  export const name = 'dsh-enhanced-traex-acp-provider';
5
- export const inject = ['llm'];
6
- export { Config, TRAEX_PROVIDER_ROUTE, TraexAcpAdapter, version };
6
+ export const inject = ['llm', 'sessions'];
7
+ export { Config, probeTraexReadiness, TRAEX_PROVIDER_ROUTE, TraexAcpAdapter, version };
7
8
  export { CatalogObservationCache, catalogCacheKey } from './catalog-cache.js';
8
9
  export { ACP_USAGE_DSH_MAPPING_GATE } from './acp-client.js';
9
10
  export function apply(ctx, input) {
@@ -13,6 +14,9 @@ export function apply(ctx, input) {
13
14
  return;
14
15
  }
15
16
  const adapter = new TraexAcpAdapter(config, {
17
+ // A local ACP subprocess must be bound to a live loop session, never a
18
+ // prompt-selected or static workspace path.
19
+ liveSessions: ctx.get('sessions'),
16
20
  onDiagnostic(diagnostic) {
17
21
  if (config.logDiagnostics) {
18
22
  ctx.logger.warn(`${TRAEX_PROVIDER_ROUTE} diagnostic: ${redactDiagnostic(diagnostic)}`);
@@ -26,6 +30,9 @@ export function apply(ctx, input) {
26
30
  const detail = `phase=${context.phase} submission=${context.promptSubmissionState}`
27
31
  + ` textForwarded=${context.assistantTextForwarded}`
28
32
  + (context.teardownState !== undefined ? ` teardown=${context.teardownState}` : '')
33
+ + (context.terminalReason !== undefined ? ` terminal=${context.terminalReason}` : '')
34
+ + (context.exitCode !== undefined ? ` exitCode=${String(context.exitCode)}` : '')
35
+ + (context.signal !== undefined ? ` signal=${String(context.signal)}` : '')
29
36
  + (context.metrics !== undefined ? ` metrics=${JSON.stringify(context.metrics)}` : '')
30
37
  + (context.usage !== undefined ? ` usage=${JSON.stringify(context.usage)}` : '');
31
38
  if (context.outcome === 'ok')
@@ -39,8 +46,22 @@ export function apply(ctx, input) {
39
46
  ctx.logger.debug(`${TRAEX_PROVIDER_ROUTE} observed ${observation.modelValues.length} model(s)`);
40
47
  },
41
48
  });
42
- ctx.llm.registerAdapter([TRAEX_PROVIDER_ROUTE], adapter);
43
- ctx.effect(() => () => adapter.shutdown(), 'dsh-enhanced-traex-acp-provider.processes');
49
+ const unregisterCapability = registerLlmRouteCapability(ctx.llm, {
50
+ provider: TRAEX_PROVIDER_ROUTE,
51
+ toolCalls: 'bridge',
52
+ });
53
+ try {
54
+ ctx.llm.registerAdapter([TRAEX_PROVIDER_ROUTE], adapter);
55
+ }
56
+ catch (error) {
57
+ unregisterCapability();
58
+ adapter.shutdown();
59
+ throw error;
60
+ }
61
+ ctx.effect(() => () => {
62
+ unregisterCapability();
63
+ adapter.shutdown();
64
+ }, 'dsh-enhanced-traex-acp-provider.processes');
44
65
  ctx.logger.info(`TraeX ACP provider registered: ${TRAEX_PROVIDER_ROUTE}`);
45
66
  }
46
67
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACtF,OAAO,EAAE,MAAM,EAAE,eAAe,EAA+B,MAAM,aAAa,CAAA;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,IAAI,GAAG,iCAAiC,CAAA;AACrD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,eAAe,EAAE,OAAO,EAAE,CAAA;AACjE,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAI5D,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,KAA8B;IAChE,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;QACzF,OAAM;IACR,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE;QAC1C,YAAY,CAAC,UAAU;YACrB,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC1B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,gBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACxF,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,oFAAoF,CAAC,CAAA;YAC9H,CAAC;QACH,CAAC;QACD,SAAS,CAAC,OAAO;YACf,6FAA6F;YAC7F,MAAM,MAAM,GAAG,SAAS,OAAO,CAAC,KAAK,eAAe,OAAO,CAAC,qBAAqB,EAAE;kBAC/E,kBAAkB,OAAO,CAAC,sBAAsB,EAAE;kBAClD,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;kBACjF,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;kBACpF,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAClF,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI;gBAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,oBAAoB,gBAAgB,MAAM,GAAG,CAAC,CAAA;;gBAC3F,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,YAAY,OAAO,CAAC,OAAO,KAAK,MAAM,GAAG,CAAC,CAAA;QACxF,CAAC;QACD,iBAAiB,CAAC,WAAW;YAC3B,0EAA0E;YAC1E,gFAAgF;YAChF,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,oBAAoB,aAAa,WAAW,CAAC,WAAW,CAAC,MAAM,WAAW,CAAC,CAAA;QACjG,CAAC;KACF,CAAC,CAAA;IACF,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAA;IACxD,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,2CAA2C,CAAC,CAAA;IACvF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,oBAAoB,EAAE,CAAC,CAAA;AAC3E,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/prompt.d.ts CHANGED
@@ -1,4 +1,11 @@
1
- import type { GenerateOptions } from '@deepseek-ai/dsh-llm';
1
+ import type { GenerateOptions, ToolSchema } from '@deepseek-ai/dsh-llm';
2
+ export declare const DSH_TOOL_CALL_PROTOCOL = "dsh-tool-calls/v1";
3
+ export interface DelegatedToolCall {
4
+ readonly name: string;
5
+ readonly arguments: string;
6
+ }
2
7
  /** Serialize one provider-neutral DSH call into a stateless TraeX ACP turn. */
3
8
  export declare function buildPrompt(options: GenerateOptions, maxPromptBytes: number): string;
9
+ /** Decode the model-hidden tool envelope; ordinary assistant text returns `undefined`. */
10
+ export declare function parseDelegatedToolCalls(response: string, tools: readonly ToolSchema[]): readonly DelegatedToolCall[] | undefined;
4
11
  //# sourceMappingURL=prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,eAAe,EAAW,MAAM,sBAAsB,CAAA;AA4ClF,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAqBpF"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,eAAe,EAAW,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAE9F,eAAO,MAAM,sBAAsB,sBAAsB,CAAA;AAEzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AA4CD,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAqCpF;AA8DD,0FAA0F;AAC1F,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,UAAU,EAAE,GAC3B,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAM1C"}
package/lib/prompt.js CHANGED
@@ -1,3 +1,4 @@
1
+ export const DSH_TOOL_CALL_PROTOCOL = 'dsh-tool-calls/v1';
1
2
  function serializeBlock(block) {
2
3
  switch (block.type) {
3
4
  case 'text':
@@ -24,13 +25,25 @@ function serializeMessage(message) {
24
25
  }
25
26
  /** Serialize one provider-neutral DSH call into a stateless TraeX ACP turn. */
26
27
  export function buildPrompt(options, maxPromptBytes) {
28
+ const tools = options.tools ?? [];
27
29
  const request = {
28
30
  protocol: 'dsh-traex-acp-provider/v1',
29
- instruction: 'Continue the conversation as the assistant. Return only the next assistant response. Do not modify files or execute commands.',
31
+ instruction: tools.length === 0
32
+ ? 'Continue the conversation as the assistant. Return only the next assistant response. Do not modify files or execute commands.'
33
+ : `Continue the conversation as the assistant. Do not modify files or execute commands inside TraeX and do not invoke TraeX-native tools; they are unavailable in this backend session. Tools can only be used through DSH. If the task requires a tool, request the required tool now instead of merely describing a plan, claiming future work, asking for confirmation, or stopping early. For a tool request, return exactly one JSON object matching constraints.tools.responseFormat. The first output character must be { and the last must be }; do not add a preamble, progress update, explanation, Markdown fence, or any other text before or after the object. When no tool is needed and the task is complete, return only the final assistant response as normal text.`,
30
34
  system: options.system ?? null,
31
35
  conversation: options.messages.map(serializeMessage),
32
36
  constraints: {
33
- tools: 'DSH tool schemas are not delegated through this text compatibility adapter.',
37
+ tools: tools.length === 0
38
+ ? { available: [] }
39
+ : {
40
+ responseProtocol: DSH_TOOL_CALL_PROTOCOL,
41
+ responseFormat: {
42
+ protocol: DSH_TOOL_CALL_PROTOCOL,
43
+ calls: [{ name: '<exact available tool name>', arguments: '<JSON object matching that tool parameters schema>' }],
44
+ },
45
+ available: tools,
46
+ },
34
47
  stop: options.stop ?? null,
35
48
  maxTokens: options.maxTokens ?? null,
36
49
  temperature: options.temperature ?? null,
@@ -41,8 +54,82 @@ export function buildPrompt(options, maxPromptBytes) {
41
54
  const prompt = `Act as a text model backend for DeepSeek Harness. The JSON request follows.\n${JSON.stringify(request)}`;
42
55
  const size = Buffer.byteLength(prompt, 'utf8');
43
56
  if (size > maxPromptBytes) {
44
- throw new Error(`serialized DSH request is ${size} bytes; configured limit is ${maxPromptBytes}`);
57
+ throw new Error(`serialized DSH request is ${size} bytes; configured limit is ${maxPromptBytes}. `
58
+ + 'Raise `maxPromptBytes` for this plugin if the request is legitimately this large.', { cause: 'prompt-limit' });
45
59
  }
46
60
  return prompt;
47
61
  }
62
+ function isRecord(value) {
63
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
64
+ }
65
+ function jsonPayload(value) {
66
+ const trimmed = value.trim();
67
+ const fenced = /^```(?:json)?\s*\n([\s\S]*?)\n```$/i.exec(trimmed);
68
+ return fenced?.[1]?.trim() ?? trimmed;
69
+ }
70
+ function parsedToolEnvelope(candidate, tools) {
71
+ let value;
72
+ try {
73
+ value = JSON.parse(jsonPayload(candidate));
74
+ }
75
+ catch {
76
+ return undefined;
77
+ }
78
+ if (!isRecord(value) || value.protocol !== DSH_TOOL_CALL_PROTOCOL)
79
+ return undefined;
80
+ if (!Array.isArray(value.calls) || value.calls.length === 0 || value.calls.length > 64) {
81
+ throw new Error('TraeX returned an invalid DSH tool-call envelope', { cause: 'protocol' });
82
+ }
83
+ const names = new Set(tools.map(tool => tool.name));
84
+ return value.calls.map((call) => {
85
+ if (!isRecord(call) || typeof call.name !== 'string' || !names.has(call.name) || !isRecord(call.arguments)) {
86
+ throw new Error('TraeX returned an invalid or unavailable DSH tool call', { cause: 'protocol' });
87
+ }
88
+ return { name: call.name, arguments: JSON.stringify(call.arguments) };
89
+ });
90
+ }
91
+ function embeddedToolEnvelope(response) {
92
+ let searchFrom = 0;
93
+ while (searchFrom < response.length) {
94
+ const protocolIndex = response.indexOf(`"protocol"`, searchFrom);
95
+ if (protocolIndex < 0)
96
+ return undefined;
97
+ const start = response.lastIndexOf('{', protocolIndex);
98
+ if (start < 0)
99
+ return undefined;
100
+ let depth = 0;
101
+ let quoted = false;
102
+ let escaped = false;
103
+ for (let index = start; index < response.length; index += 1) {
104
+ const character = response[index];
105
+ if (quoted) {
106
+ if (escaped)
107
+ escaped = false;
108
+ else if (character === '\\')
109
+ escaped = true;
110
+ else if (character === '"')
111
+ quoted = false;
112
+ continue;
113
+ }
114
+ if (character === '"')
115
+ quoted = true;
116
+ else if (character === '{')
117
+ depth += 1;
118
+ else if (character === '}' && --depth === 0)
119
+ return response.slice(start, index + 1);
120
+ }
121
+ searchFrom = protocolIndex + 10;
122
+ }
123
+ return undefined;
124
+ }
125
+ /** Decode the model-hidden tool envelope; ordinary assistant text returns `undefined`. */
126
+ export function parseDelegatedToolCalls(response, tools) {
127
+ if (tools.length === 0)
128
+ return undefined;
129
+ const exact = parsedToolEnvelope(response, tools);
130
+ if (exact !== undefined)
131
+ return exact;
132
+ const embedded = embeddedToolEnvelope(response);
133
+ return embedded === undefined ? undefined : parsedToolEnvelope(embedded, tools);
134
+ }
48
135
  //# sourceMappingURL=prompt.js.map
package/lib/prompt.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAkBA,SAAS,cAAc,CAAC,KAAmB;IACzC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;QAC3C,KAAK,WAAW;YACd,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAA;QACtC,KAAK,WAAW;YACd,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;QAC1F,KAAK,aAAa;YAChB,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;aAC3C,CAAA;QACH,KAAK,OAAO;YACV,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;QAChF;YACE,MAAM,IAAI,KAAK,CAAC,2DAA2D,MAAM,CAAE,KAA4B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5H,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAA;AAC7E,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,OAAwB,EAAE,cAAsB;IAC1E,MAAM,OAAO,GAAG;QACd,QAAQ,EAAE,2BAA2B;QACrC,WAAW,EAAE,+HAA+H;QAC5I,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;QAC9B,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACpD,WAAW,EAAE;YACX,KAAK,EAAE,6EAA6E;YACpF,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;YACpC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;YACxC,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI;YAChD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;SACjC;KACF,CAAA;IACD,MAAM,MAAM,GAAG,gFAAgF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAA;IACxH,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,IAAI,IAAI,GAAG,cAAc,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,+BAA+B,cAAc,EAAE,CAAC,CAAA;IACnG,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type GenerateOptions } from '@deepseek-ai/dsh-llm';
2
+ export interface LiveSessionCwd {
3
+ readonly id: NonNullable<GenerateOptions['sessionId']>;
4
+ readonly header: {
5
+ readonly cwd?: string;
6
+ };
7
+ }
8
+ export interface LiveSessionLookup {
9
+ get(id: NonNullable<GenerateOptions['sessionId']>): LiveSessionCwd | undefined;
10
+ }
11
+ export declare class TrustedSessionCwdError extends Error {
12
+ constructor();
13
+ }
14
+ /**
15
+ * Resolves the only cwd a local ACP process may receive for this request.
16
+ * The marker is process-local and the session lookup is live, so copied request
17
+ * fields or a persisted/stale session id cannot select an arbitrary directory.
18
+ */
19
+ export declare function resolveTrustedSessionCwd(input: {
20
+ request: GenerateOptions;
21
+ configuredCwd: string;
22
+ sessions: LiveSessionLookup | undefined;
23
+ }): string;
24
+ //# sourceMappingURL=session-cwd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-cwd.d.ts","sourceRoot":"","sources":["../src/session-cwd.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,GAAG,cAAc,GAAG,SAAS,CAAA;CAC/E;AAED,qBAAa,sBAAuB,SAAQ,KAAK;;CAIhD;AAWD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,OAAO,EAAE,eAAe,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAA;CACxC,GAAG,MAAM,CAaT"}
@@ -0,0 +1,39 @@
1
+ import { realpathSync } from 'node:fs';
2
+ import { isAbsolute } from 'node:path';
3
+ import { isAgentLoopRequest } from '@deepseek-ai/dsh-llm';
4
+ export class TrustedSessionCwdError extends Error {
5
+ constructor() {
6
+ super('local provider requires a matching live loop session and canonical cwd');
7
+ }
8
+ }
9
+ function canonicalDirectory(path) {
10
+ if (!isAbsolute(path))
11
+ throw new TrustedSessionCwdError();
12
+ try {
13
+ return realpathSync.native(path);
14
+ }
15
+ catch {
16
+ throw new TrustedSessionCwdError();
17
+ }
18
+ }
19
+ /**
20
+ * Resolves the only cwd a local ACP process may receive for this request.
21
+ * The marker is process-local and the session lookup is live, so copied request
22
+ * fields or a persisted/stale session id cannot select an arbitrary directory.
23
+ */
24
+ export function resolveTrustedSessionCwd(input) {
25
+ const sessionId = input.request.sessionId;
26
+ if (sessionId === undefined || !Object.isFrozen(input.request) || !isAgentLoopRequest(input.request)) {
27
+ throw new TrustedSessionCwdError();
28
+ }
29
+ const session = input.sessions?.get(sessionId);
30
+ if (session === undefined || session.id !== sessionId || typeof session.header.cwd !== 'string') {
31
+ throw new TrustedSessionCwdError();
32
+ }
33
+ const configuredCwd = canonicalDirectory(input.configuredCwd);
34
+ const sessionCwd = canonicalDirectory(session.header.cwd);
35
+ if (configuredCwd !== sessionCwd)
36
+ throw new TrustedSessionCwdError();
37
+ return sessionCwd;
38
+ }
39
+ //# sourceMappingURL=session-cwd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-cwd.js","sourceRoot":"","sources":["../src/session-cwd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,kBAAkB,EAAwB,MAAM,sBAAsB,CAAA;AAW/E,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C;QACE,KAAK,CAAC,wEAAwE,CAAC,CAAA;IACjF,CAAC;CACF;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACzD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAIxC;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;IACzC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACrG,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;IAC9C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAChG,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;IACD,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC7D,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACzD,IAAI,aAAa,KAAK,UAAU;QAAE,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpE,OAAO,UAAU,CAAA;AACnB,CAAC"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "0.1.1";
1
+ export declare const version = "0.1.3";
2
2
  //# sourceMappingURL=version.d.ts.map
package/lib/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const version = '0.1.1';
1
+ export const version = '0.1.3';
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dsh-enhanced/traex-acp-provider",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Use a local TraeX coding agent as a DeepSeek Harness model provider over ACP.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -47,15 +47,18 @@
47
47
  "dependencies": {
48
48
  "@agentclientprotocol/sdk": "0.25.1",
49
49
  "@deepseek-ai/schemastery": "3.18.1",
50
- "zod": "4.4.3"
50
+ "zod": "4.4.3",
51
+ "@dsh-enhanced/llm-route-capabilities": "0.1.3"
51
52
  },
52
53
  "peerDependencies": {
53
54
  "@deepseek-ai/cordis": "^4.0.1",
54
- "@deepseek-ai/dsh-llm": ">=0.1.0-rc.6 <0.2.0"
55
+ "@deepseek-ai/dsh-llm": ">=0.1.0-rc.8 <0.2.0",
56
+ "@deepseek-ai/dsh-session": ">=0.1.0-rc.8 <0.2.0"
55
57
  },
56
58
  "devDependencies": {
57
59
  "@deepseek-ai/cordis": "4.0.1",
58
- "@deepseek-ai/dsh-llm": "0.1.0-rc.6",
60
+ "@deepseek-ai/dsh-llm": "0.1.0-rc.8",
61
+ "@deepseek-ai/dsh-session": "0.1.0-rc.8",
59
62
  "@types/node": "22.20.0",
60
63
  "typescript": "6.0.3",
61
64
  "vitest": "4.1.8"