dsh-local-ai 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.es.md +37 -33
- package/README.hi.md +37 -33
- package/README.md +39 -33
- package/README.pt.md +37 -33
- package/README.zh.md +39 -33
- package/THIRD_PARTY_NOTICES.md +3 -3
- package/lib/index.js +19 -12
- package/lib/types/call-id.d.ts +12 -0
- package/lib/types/call-id.d.ts.map +1 -0
- package/lib/types/call-id.js +10 -0
- package/lib/types/call-id.js.map +1 -0
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/openai-translate.d.ts.map +1 -1
- package/lib/types/openai-translate.js +2 -1
- package/lib/types/openai-translate.js.map +1 -1
- package/lib/types/route.d.ts.map +1 -1
- package/lib/types/route.js +19 -1
- package/lib/types/route.js.map +1 -1
- package/lib/types/translate.d.ts.map +1 -1
- package/lib/types/translate.js +2 -1
- package/lib/types/translate.js.map +1 -1
- package/lib/types/version.d.ts +1 -1
- package/lib/types/version.js +1 -1
- package/package.json +21 -16
- package/src/call-id.ts +13 -0
- package/src/index.ts +1 -1
- package/src/openai-translate.ts +2 -1
- package/src/route.ts +20 -1
- package/src/translate.ts +2 -1
- package/src/version.ts +1 -1
package/README.zh.md
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
3
|
# 🤖 dsh-local-ai
|
|
4
|
+
- **1024 商店渠道**:先 `npm i -g dsh1024`,再 `dsh1024 plugin --profile web add dsh-local-ai`(计入 [deepseek1024.com](https://deepseek1024.com) 安装排行)。
|
|
4
5
|
|
|
5
6
|
**DeepSeek Harness 的本地模型(Ollama)接入。**
|
|
6
7
|
|
|
7
8
|
*发现、拉取、删除、查看本地模型,按任务类型或关键词把请求分流到本地模型并在失败时自动回退云端,通过 `/ollama` 一键查看状态总览。*
|
|
8
9
|
|
|
10
|
+
> **官方仓库。** 本仓库是 dsh-local-ai 的唯一官方仓库,由 PerryLink 维护。其他账号下的同名仓库与本项目无关。
|
|
11
|
+
|
|
9
12
|
[](LICENSE)
|
|
10
13
|
[](https://github.com/topics/dsh-plugin)
|
|
11
14
|
[](#)
|
|
@@ -24,7 +27,7 @@
|
|
|
24
27
|
|
|
25
28
|
| 项目 | 状态 |
|
|
26
29
|
|---|---|
|
|
27
|
-
| Harness | DeepSeek Harness `0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `0.1.2-alpha.3`(2026-09-01 已适配):会话信封保留 ignorable 字段但仅用于存量日志读取兼容——Session.append 仍无法盖章,门控行为不变。 |
|
|
28
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
29
32
|
| 后端 | [Ollama](https://ollama.com)(本地 HTTP API + CLI 探测) |
|
|
30
33
|
| 模型 | 纯文本路由(`inputModalities: ['text']`);支持工具调用与工具结果 |
|
|
@@ -152,7 +155,7 @@ dsh --profile web --dump-config | grep -A2 'id: dsh-local-ai'
|
|
|
152
155
|
|
|
153
156
|
## Known limitations
|
|
154
157
|
|
|
155
|
-
-
|
|
158
|
+
- **alpha.3** —— 针对 `@deepseek-ai/dsh@0.1.2-alpha.3` 开发与测试;更新版本的 harness 基线预期可用,但由每月 compat workflow 验证。
|
|
156
159
|
- **模型声明 vision 时启用视觉** — `/api/show` capabilities 含 `vision` 的模型声明 `inputModalities: ["text","image"]`,并在用户消息上携带 base64 图片载荷(可用 `vision: false` 退出);纯文本模型仍拒绝图片内容(`UNSUPPORTED_CONTENT`)。
|
|
157
160
|
- **中途失败不回退** —— 本地路由一旦开始产出内容,之后的失败会透传(无法撤回);只有首个 token 前的失败才回退云端。
|
|
158
161
|
|
|
@@ -160,7 +163,7 @@ dsh --profile web --dump-config | grep -A2 'id: dsh-local-ai'
|
|
|
160
163
|
|
|
161
164
|
```sh
|
|
162
165
|
pnpm install # node ^22.19 || >=24
|
|
163
|
-
pnpm run typecheck # tsc:src + 测试,对发布版 0.1.
|
|
166
|
+
pnpm run typecheck # tsc:src + 测试,对发布版 0.1.2-alpha.3 类型
|
|
164
167
|
pnpm run typecheck:ci # 严格 tsc,对发布版 rc.2 类型(关闭 skipLibCheck)
|
|
165
168
|
pnpm test # vitest:真实 Context/LlmRuntime/ToolRuntime/CommandRuntime/subprocess 机制
|
|
166
169
|
pnpm run test:coverage # 覆盖率门禁(90/80/90/90)
|
|
@@ -183,39 +186,42 @@ pnpm pack # 发布用 tarball
|
|
|
183
186
|
|
|
184
187
|
## PerryLink DSH Plugin Family
|
|
185
188
|
|
|
186
|
-
|
|
189
|
+
这是 [PerryLink](https://github.com/PerryLink) 维护的 [33 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
|
|
187
190
|
|
|
188
191
|
| Plugin | One-liner |
|
|
189
192
|
|---|---|
|
|
190
|
-
| [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | 审批链上的第二模型自动审查,默认失败关闭 |
|
|
191
|
-
| [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) |
|
|
192
|
-
| [dsh-budget](https://github.com/PerryLink/dsh-budget) | DeepSeek Harness 的成本治理:预算、碳排与延迟一屏呈现。 |
|
|
193
|
-
| [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Claude Code /rewind
|
|
194
|
-
| [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) |
|
|
195
|
-
| [dsh-click](https://github.com/PerryLink/dsh-click) | 跨平台原生桌面控制(DeepSeek Harness),Windows 优先。 |
|
|
196
|
-
| [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | Web
|
|
197
|
-
| [dsh-
|
|
198
|
-
| [dsh-
|
|
199
|
-
| [dsh-
|
|
200
|
-
| [dsh-
|
|
201
|
-
| [dsh-
|
|
202
|
-
| [dsh-
|
|
203
|
-
| **[dsh-
|
|
204
|
-
| [dsh-
|
|
205
|
-
| [dsh-
|
|
206
|
-
| [dsh-
|
|
207
|
-
| [dsh-
|
|
208
|
-
| [dsh-
|
|
209
|
-
| [dsh-
|
|
210
|
-
| [dsh-
|
|
211
|
-
| [dsh-
|
|
212
|
-
| [dsh-
|
|
213
|
-
| [dsh-
|
|
214
|
-
| [dsh-
|
|
215
|
-
| [dsh-
|
|
216
|
-
| [dsh-
|
|
217
|
-
| [dsh-
|
|
218
|
-
| [dsh-
|
|
193
|
+
| **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | 审批链上的第二模型自动审查,默认失败关闭 | |
|
|
194
|
+
| **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | 带 Web UI 侧栏、消息与中断的持久后台子代理 | |
|
|
195
|
+
| **[dsh-dsh-budget](https://github.com/PerryLink/dsh-dsh-budget)** | DeepSeek Harness 的成本治理:预算、碳排与延迟一屏呈现。 | |
|
|
196
|
+
| **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Claude Code /rewind 等价:快照、会话 fork、一次性恢复 | |
|
|
197
|
+
| **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | 把 Claude Code 会话、记忆、技能与 CLAUDE.md 迁入 DSH | |
|
|
198
|
+
| **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | 跨平台原生桌面控制(DeepSeek Harness),Windows 优先。 | |
|
|
199
|
+
| **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | Web 输入框的终端式历史:方向键、Ctrl+R 搜索 | |
|
|
200
|
+
| **[dsh-dsh-data-quality](https://github.com/PerryLink/dsh-dsh-data-quality)** | 数据集质量检查与引文核查(本插件可选消费的数字核查桥) | |
|
|
201
|
+
| **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | DeepSeek Harness 的提示注入、越狱与密钥泄露防护。 | |
|
|
202
|
+
| **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | 工程纪律守卫:需求质询、测试门禁、对手评审 | |
|
|
203
|
+
| **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | DeepSeek Harness 的统一静态图像生成路由。 | |
|
|
204
|
+
| **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | DeepSeek Harness 只读性能诊断。 | |
|
|
205
|
+
| **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | 面向中国公募基金的确定性研究报告 | |
|
|
206
|
+
| **[dsh-dsh-github](https://github.com/PerryLink/dsh-dsh-github)** | 面向 DSH 的 GitHub PR/issues 集成,每次写入经审批门控 | |
|
|
207
|
+
| **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | 行业研究编排,经本插件的 `ctx.researchReport.assemble` 封存交付物 | |
|
|
208
|
+
| **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | DeepSeek Harness 的本地文档知识库。 | |
|
|
209
|
+
| **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | 通过语言服务器的 LSP 诊断、格式化、补全、代码操作与重命名 | |
|
|
210
|
+
| **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | PII 脱敏中间件:模型边界匿名化、展示层还原 | |
|
|
211
|
+
| **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | 只读 MCP 运行时面板:/mcp 命令 + 带状态、工具与错误的 Settings 标签页 | |
|
|
212
|
+
| **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | 审批门控的跨会话记忆:ctx.memory 接缝 + SQLite + 记忆工具 | |
|
|
213
|
+
| **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | DeepSeek Harness 的 OpenTelemetry 与 Langfuse 可观测导出器。 | |
|
|
214
|
+
| **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Claude Code outputStyles 等价的运行时风格切换 | |
|
|
215
|
+
| **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | Claude Code 风格声明式 allow/deny/ask 权限规则,带审计 | |
|
|
216
|
+
| **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | 作为按需代理技能的插件开发知识库 | |
|
|
217
|
+
| **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | 可验证研究报告引擎:内容寻址证据账本与封存版本 | |
|
|
218
|
+
| **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | DeepSeek Harness 插件的多维质量评分。 | |
|
|
219
|
+
| **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | 在 Web 侧栏置顶会话,带持久排序 | |
|
|
220
|
+
| **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | DeepSeek Harness 的跨设备会话同步——会话存储的专用 git 镜像。 | |
|
|
221
|
+
| **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | 安全审计技能包:密钥扫描、依赖与供应链审查 | |
|
|
222
|
+
| **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | DeepSeek Harness 的语音优先会话闭环:对它说,听它答。 | |
|
|
223
|
+
| **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | DeepSeek Harness 插件的隔离试装冒烟。 | |
|
|
224
|
+
| **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | DeepSeek Harness 的厂商参数翻译与确定性 JSON 修复。 | |
|
|
219
225
|
|
|
220
226
|
## License
|
|
221
227
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -11,9 +11,9 @@ published tarball; these are install-time dependencies:
|
|
|
11
11
|
|---|---|---|---|
|
|
12
12
|
| [tsdown](https://github.com/rolldown/tsdown) | `^0.22.14` | MIT | Build-time bundling of `lib/` (a regular dependency so the git-install channel's `prepare` script can build) |
|
|
13
13
|
| [typescript](https://github.com/microsoft/TypeScript) | `^5.9.0` | Apache-2.0 | Build-time declaration emission (`lib/types/`) |
|
|
14
|
-
| [@deepseek-ai/cordis](https://www.npmjs.com/package/@deepseek-ai/cordis) | `^4.0.
|
|
15
|
-
| [@deepseek-ai/schemastery](https://www.npmjs.com/package/@deepseek-ai/schemastery) | `^3.18.
|
|
16
|
-
| `@deepseek-ai/dsh-*` peers | `0.1.
|
|
14
|
+
| [@deepseek-ai/cordis](https://www.npmjs.com/package/@deepseek-ai/cordis) | `^4.0.2` (peer) | See package | The plugin runtime |
|
|
15
|
+
| [@deepseek-ai/schemastery](https://www.npmjs.com/package/@deepseek-ai/schemastery) | `^3.18.2` (peer) | See package | Configuration schema |
|
|
16
|
+
| `@deepseek-ai/dsh-*` peers | `0.1.2-alpha.3` (peer) | See packages | Official harness seams (`dsh-llm`, `dsh-tools`, `dsh-subprocess`, `dsh-commands`, `dsh-timeout`) |
|
|
17
17
|
|
|
18
18
|
At runtime the plugin only talks to the Ollama endpoint you configure (over
|
|
19
19
|
its HTTP API and, for the process-liveness probe, its CLI); it performs no
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineTool } from "@deepseek-ai/dsh-tools";
|
|
2
2
|
import z from "@deepseek-ai/schemastery";
|
|
3
|
-
import {
|
|
3
|
+
import { EMPTY_RESPONSE_CODE, LlmAdapter, LlmError, attributionHeaders, contentHasImage } from "@deepseek-ai/dsh-llm";
|
|
4
4
|
import { idleWatchdog, timeoutOf } from "@deepseek-ai/dsh-timeout";
|
|
5
5
|
import { tmpdir } from "node:os";
|
|
6
6
|
//#region src/config.ts
|
|
@@ -631,6 +631,9 @@ function serializeRequest$1(options, resolved, imagesByRef) {
|
|
|
631
631
|
};
|
|
632
632
|
}
|
|
633
633
|
//#endregion
|
|
634
|
+
//#region src/call-id.ts
|
|
635
|
+
const CallId = ((id) => id);
|
|
636
|
+
//#endregion
|
|
634
637
|
//#region src/translate.ts
|
|
635
638
|
/**
|
|
636
639
|
* Translate Ollama NDJSON chat chunks into the harness `StreamChunk` protocol.
|
|
@@ -1603,17 +1606,21 @@ var OpenAICompatibleAdapter = class extends LlmAdapter {
|
|
|
1603
1606
|
//#endregion
|
|
1604
1607
|
//#region src/route.ts
|
|
1605
1608
|
/**
|
|
1606
|
-
*
|
|
1607
|
-
*
|
|
1608
|
-
*
|
|
1609
|
-
*
|
|
1610
|
-
*
|
|
1611
|
-
*
|
|
1612
|
-
* cloud (`next()`) so a down local server never bricks a conversation. Once
|
|
1613
|
-
* local content has started, it is streamed through — a mid-stream failure
|
|
1614
|
-
* cannot be retracted.
|
|
1615
|
-
* @module dsh-local-ai/route
|
|
1609
|
+
* Whether a stream chunk carries visible model output for fallback timing.
|
|
1610
|
+
* The host moved this helper out of `@deepseek-ai/dsh-llm` on 0.1.2-alpha.2
|
|
1611
|
+
* (it now lives in the client ui-chat package), so the plugin pins the same
|
|
1612
|
+
* semantics locally.
|
|
1613
|
+
* @param chunk - Stream chunk to inspect.
|
|
1614
|
+
* @returns true for a non-empty text, reasoning, or tool-call delta.
|
|
1616
1615
|
*/
|
|
1616
|
+
function isTokenDelta(chunk) {
|
|
1617
|
+
switch (chunk.type) {
|
|
1618
|
+
case "text-delta":
|
|
1619
|
+
case "reasoning-delta": return chunk.text !== "";
|
|
1620
|
+
case "tool-call-delta": return chunk.argumentsDelta !== "" || chunk.name !== void 0;
|
|
1621
|
+
default: return false;
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1617
1624
|
/**
|
|
1618
1625
|
* Concatenate the request's model-visible text (system prompt + every text
|
|
1619
1626
|
* block) for keyword matching.
|
|
@@ -1811,7 +1818,7 @@ async function checkHealth(baseURL, fetchImpl, subprocess, requestTimeoutMs, gra
|
|
|
1811
1818
|
* The `dsh-local-ai` plugin version. The release script bumps this string
|
|
1812
1819
|
* alongside `package.json`; `test/version.spec.ts` trips when the two drift.
|
|
1813
1820
|
*/
|
|
1814
|
-
const VERSION = "0.2.
|
|
1821
|
+
const VERSION = "0.2.2";
|
|
1815
1822
|
//#endregion
|
|
1816
1823
|
//#region src/index.ts
|
|
1817
1824
|
const name = "local-ai";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dual-ruler call-id brand: host master renamed the dsh-llm `CallId`
|
|
3
|
+
* brand to `ToolCallId` (and dropped the old value export); the published
|
|
4
|
+
* 0.1.2-alpha.3 line matches. Derive the brand from the dsh-tools
|
|
5
|
+
* execution contract so the package stays green on both rulers without
|
|
6
|
+
* naming either brand name.
|
|
7
|
+
* @module dsh-local-ai/call-id
|
|
8
|
+
*/
|
|
9
|
+
import type { ToolExecution } from '@deepseek-ai/dsh-tools';
|
|
10
|
+
export type CallId = ToolExecution['callId'];
|
|
11
|
+
export declare const CallId: (id: string) => ToolExecution["callId"];
|
|
12
|
+
//# sourceMappingURL=call-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-id.d.ts","sourceRoot":"","sources":["../../src/call-id.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;AAC5C,eAAO,MAAM,MAAM,EAAsC,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,CAAC,QAAQ,CAAC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dual-ruler call-id brand: host master renamed the dsh-llm `CallId`
|
|
3
|
+
* brand to `ToolCallId` (and dropped the old value export); the published
|
|
4
|
+
* 0.1.2-alpha.3 line matches. Derive the brand from the dsh-tools
|
|
5
|
+
* execution contract so the package stays green on both rulers without
|
|
6
|
+
* naming either brand name.
|
|
7
|
+
* @module dsh-local-ai/call-id
|
|
8
|
+
*/
|
|
9
|
+
export const CallId = ((id) => id);
|
|
10
|
+
//# sourceMappingURL=call-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-id.js","sourceRoot":"","sources":["../../src/call-id.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAuD,CAAA"}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* @module dsh-local-ai
|
|
16
16
|
*/
|
|
17
17
|
import type { Context } from '@deepseek-ai/cordis';
|
|
18
|
-
import type { JsonValue } from '@deepseek-ai/dsh-
|
|
18
|
+
import type { JsonValue } from '@deepseek-ai/dsh-util-values';
|
|
19
19
|
import { Config } from './config.js';
|
|
20
20
|
export declare const name = "local-ai";
|
|
21
21
|
export declare const inject: string[];
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAG7D,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAA;AAQnD,eAAO,MAAM,IAAI,aAAa,CAAA;AAC9B,eAAO,MAAM,MAAM,UAA6C,CAAA;AAEhE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC/G,YAAY,EAAE,MAAM,IAAI,aAAa,EAAE,YAAY,EAAE,uBAAuB,EAAE,cAAc,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5L,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE/G,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWjD;AA6BD,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAYnD;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAMnD;AAED,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CASrD;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAIxD;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,MAAW,GAAG,IAAI,CAqK7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-translate.d.ts","sourceRoot":"","sources":["../../src/openai-translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAgB,YAAY,EAAE,WAAW,EAAc,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"openai-translate.d.ts","sourceRoot":"","sources":["../../src/openai-translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAgB,YAAY,EAAE,WAAW,EAAc,MAAM,sBAAsB,CAAA;AAG/F,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE;YACN,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;YACvB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;YACjC,UAAU,CAAC,EAAE,KAAK,CAAC;gBACjB,KAAK,CAAC,EAAE,MAAM,CAAA;gBACd,EAAE,CAAC,EAAE,MAAM,CAAA;gBACX,IAAI,CAAC,EAAE,MAAM,CAAA;gBACb,QAAQ,CAAC,EAAE;oBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;oBAAC,SAAS,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAA;aACjD,CAAC,CAAA;SACH,CAAA;QACD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC9B,CAAC,CAAA;IACF,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9D,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC7B;AAYD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAgBlE;AA2BD;;;;;;;;GAQG;AACH,wBAAuB,qBAAqB,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,CA4GtG"}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* are deferred until the end, guaranteeing no chunk follows `finish`.
|
|
8
8
|
* @module dsh-local-ai/openai-translate
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { EMPTY_RESPONSE_CODE, LlmError } from '@deepseek-ai/dsh-llm';
|
|
11
|
+
import { CallId } from "./call-id.js";
|
|
11
12
|
/**
|
|
12
13
|
* Map the OpenAI `finish_reason` vocabulary to the harness FinishReason.
|
|
13
14
|
* @param reason - the wire `finish_reason` string.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-translate.js","sourceRoot":"","sources":["../../src/openai-translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"openai-translate.js","sourceRoot":"","sources":["../../src/openai-translate.ts"],"names":[],"mappings":"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"}
|
package/lib/types/route.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGxE,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAsBpE,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,wCAAwC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAS5D;AAED,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAQtF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAI/F;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,GAAG,aAAa,GAAG,SAAS,CAMzG;AAED;;;;;;;;;;;GAWG;AACH,wBAAuB,UAAU,CAC/B,WAAW,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,aAAa,CAAC,WAAW,CAAC,EACrE,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,aAAa,CAAC,WAAW,CAAC,GACrC,cAAc,CAAC,WAAW,CAAC,CAqC7B"}
|
package/lib/types/route.js
CHANGED
|
@@ -10,9 +10,27 @@
|
|
|
10
10
|
* cannot be retracted.
|
|
11
11
|
* @module dsh-local-ai/route
|
|
12
12
|
*/
|
|
13
|
-
import { isTokenDelta } from '@deepseek-ai/dsh-llm';
|
|
14
13
|
import { OLLAMA_PROVIDER } from "./adapter.js";
|
|
15
14
|
import { DEFAULT_PROVIDER } from "./config.js";
|
|
15
|
+
/**
|
|
16
|
+
* Whether a stream chunk carries visible model output for fallback timing.
|
|
17
|
+
* The host moved this helper out of `@deepseek-ai/dsh-llm` on 0.1.2-alpha.2
|
|
18
|
+
* (it now lives in the client ui-chat package), so the plugin pins the same
|
|
19
|
+
* semantics locally.
|
|
20
|
+
* @param chunk - Stream chunk to inspect.
|
|
21
|
+
* @returns true for a non-empty text, reasoning, or tool-call delta.
|
|
22
|
+
*/
|
|
23
|
+
function isTokenDelta(chunk) {
|
|
24
|
+
switch (chunk.type) {
|
|
25
|
+
case 'text-delta':
|
|
26
|
+
case 'reasoning-delta':
|
|
27
|
+
return chunk.text !== '';
|
|
28
|
+
case 'tool-call-delta':
|
|
29
|
+
return chunk.argumentsDelta !== '' || chunk.name !== undefined;
|
|
30
|
+
default:
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
16
34
|
/**
|
|
17
35
|
* Concatenate the request's model-visible text (system prompt + every text
|
|
18
36
|
* block) for keyword matching.
|
package/lib/types/route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAgB,YAAY,EAAE,WAAW,EAAc,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAgB,YAAY,EAAE,WAAW,EAAc,MAAM,sBAAsB,CAAA;AAG/F,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,KAAK,CAAC;YAAE,QAAQ,CAAC,EAAE;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aAAE,CAAA;SAAE,CAAC,CAAA;KAC1F,CAAA;IACD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAYD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAW5D;AA6BD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAiB5E;AAED;;;;;;;;GAQG;AACH,wBAAuB,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,CA0H1F"}
|
package/lib/types/translate.js
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* the `done: true` chunk, guaranteeing no chunk follows `finish`.
|
|
8
8
|
* @module dsh-local-ai/translate
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { EMPTY_RESPONSE_CODE, LlmError } from '@deepseek-ai/dsh-llm';
|
|
11
|
+
import { CallId } from "./call-id.js";
|
|
11
12
|
/**
|
|
12
13
|
* Map the Ollama `done_reason` vocabulary to the harness FinishReason.
|
|
13
14
|
* @param reason - the wire `done_reason` string.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/translate.ts"],"names":[],"mappings":"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"}
|
package/lib/types/version.d.ts
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* The `dsh-local-ai` plugin version. The release script bumps this string
|
|
3
3
|
* alongside `package.json`; `test/version.spec.ts` trips when the two drift.
|
|
4
4
|
*/
|
|
5
|
-
export declare const VERSION = "0.2.
|
|
5
|
+
export declare const VERSION = "0.2.2";
|
|
6
6
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/types/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-local-ai",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Local-model (Ollama) integration for DeepSeek Harness: discover, pull, remove, and inspect local models, route requests to them by task type or keyword with automatic fallback to the cloud, and get a one-shot status overview via /ollama.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
],
|
|
65
65
|
"compatibility": {
|
|
66
66
|
"dshVersions": [
|
|
67
|
-
"0.1.
|
|
67
|
+
"0.1.2-alpha.3"
|
|
68
68
|
]
|
|
69
69
|
},
|
|
70
70
|
"capability": {
|
|
@@ -98,33 +98,34 @@
|
|
|
98
98
|
},
|
|
99
99
|
"packageManager": "pnpm@11.7.0",
|
|
100
100
|
"peerDependencies": {
|
|
101
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
101
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
102
102
|
"@deepseek-ai/dsh-attachment": ">=0.1.0-rc.8 <0.2.0",
|
|
103
103
|
"@deepseek-ai/dsh-commands": ">=0.1.0-rc.8 <0.2.0",
|
|
104
104
|
"@deepseek-ai/dsh-llm": ">=0.1.0-rc.8 <0.2.0",
|
|
105
105
|
"@deepseek-ai/dsh-subprocess": ">=0.1.0-rc.8 <0.2.0",
|
|
106
106
|
"@deepseek-ai/dsh-timeout": ">=0.1.0-rc.8 <0.2.0",
|
|
107
107
|
"@deepseek-ai/dsh-tools": ">=0.1.0-rc.8 <0.2.0",
|
|
108
|
-
"@deepseek-ai/schemastery": "^3.18.
|
|
108
|
+
"@deepseek-ai/schemastery": "^3.18.2"
|
|
109
109
|
},
|
|
110
110
|
"dependencies": {
|
|
111
111
|
"tsdown": "^0.22.14",
|
|
112
112
|
"typescript": "^5.9.0"
|
|
113
113
|
},
|
|
114
114
|
"devDependencies": {
|
|
115
|
-
"@deepseek-ai/
|
|
115
|
+
"@deepseek-ai/dsh-util-values": "0.1.2-alpha.3",
|
|
116
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
116
117
|
"@deepseek-ai/cordis-plugin-include": "1.0.6",
|
|
117
118
|
"@deepseek-ai/cordis-plugin-loader": "1.0.2",
|
|
118
|
-
"@deepseek-ai/dsh-attachment": "0.1.
|
|
119
|
-
"@deepseek-ai/dsh-commands": "0.1.
|
|
120
|
-
"@deepseek-ai/dsh-llm": "0.1.
|
|
121
|
-
"@deepseek-ai/dsh-session": "0.1.
|
|
122
|
-
"@deepseek-ai/dsh-subprocess": "0.1.
|
|
123
|
-
"@deepseek-ai/dsh-subprocess-local": "0.1.
|
|
124
|
-
"@deepseek-ai/dsh-system-prompt": "0.1.
|
|
125
|
-
"@deepseek-ai/dsh-timeout": "0.1.
|
|
126
|
-
"@deepseek-ai/dsh-tools": "0.1.
|
|
127
|
-
"@deepseek-ai/schemastery": "^3.18.
|
|
119
|
+
"@deepseek-ai/dsh-attachment": "0.1.2-alpha.3",
|
|
120
|
+
"@deepseek-ai/dsh-commands": "0.1.2-alpha.3",
|
|
121
|
+
"@deepseek-ai/dsh-llm": "0.1.2-alpha.3",
|
|
122
|
+
"@deepseek-ai/dsh-session": "0.1.2-alpha.3",
|
|
123
|
+
"@deepseek-ai/dsh-subprocess": "0.1.2-alpha.3",
|
|
124
|
+
"@deepseek-ai/dsh-subprocess-local": "0.1.2-alpha.3",
|
|
125
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.2-alpha.3",
|
|
126
|
+
"@deepseek-ai/dsh-timeout": "0.1.2-alpha.3",
|
|
127
|
+
"@deepseek-ai/dsh-tools": "0.1.2-alpha.3",
|
|
128
|
+
"@deepseek-ai/schemastery": "^3.18.2",
|
|
128
129
|
"@types/node": "^22.19.0",
|
|
129
130
|
"@vitest/coverage-v8": "^3.2.0",
|
|
130
131
|
"oxlint": "0.18.1",
|
|
@@ -143,5 +144,9 @@
|
|
|
143
144
|
"verify:readme-sync": "node scripts/check-readme-sync.mjs",
|
|
144
145
|
"pack:check": "node scripts/prepare.mjs && pnpm pack"
|
|
145
146
|
},
|
|
146
|
-
"license": "Apache-2.0"
|
|
147
|
+
"license": "Apache-2.0",
|
|
148
|
+
"funding": {
|
|
149
|
+
"type": "individual",
|
|
150
|
+
"url": "https://github.com/sponsors/PerryLink"
|
|
151
|
+
}
|
|
147
152
|
}
|
package/src/call-id.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dual-ruler call-id brand: host master renamed the dsh-llm `CallId`
|
|
3
|
+
* brand to `ToolCallId` (and dropped the old value export); the published
|
|
4
|
+
* 0.1.2-alpha.3 line matches. Derive the brand from the dsh-tools
|
|
5
|
+
* execution contract so the package stays green on both rulers without
|
|
6
|
+
* naming either brand name.
|
|
7
|
+
* @module dsh-local-ai/call-id
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { ToolExecution } from '@deepseek-ai/dsh-tools'
|
|
11
|
+
|
|
12
|
+
export type CallId = ToolExecution['callId']
|
|
13
|
+
export const CallId = ((id: string) => id) as unknown as (id: string) => ToolExecution['callId']
|
package/src/index.ts
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import type { Context } from '@deepseek-ai/cordis'
|
|
19
19
|
import { defineTool } from '@deepseek-ai/dsh-tools'
|
|
20
|
-
import type { JsonValue } from '@deepseek-ai/dsh-
|
|
20
|
+
import type { JsonValue } from '@deepseek-ai/dsh-util-values'
|
|
21
21
|
import type { CommandResult } from '@deepseek-ai/dsh-commands'
|
|
22
22
|
import type { GenerateOptions, StreamChunk } from '@deepseek-ai/dsh-llm'
|
|
23
23
|
import { Config, resolveConfig } from './config.ts'
|
package/src/openai-translate.ts
CHANGED
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
* @module dsh-local-ai/openai-translate
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import { EMPTY_RESPONSE_CODE, LlmError } from '@deepseek-ai/dsh-llm'
|
|
12
12
|
import type { ContentBlock, FinishReason, StreamChunk, TokenUsage } from '@deepseek-ai/dsh-llm'
|
|
13
|
+
import { CallId } from './call-id.ts'
|
|
13
14
|
|
|
14
15
|
/** One OpenAI SSE delta chunk on the wire. */
|
|
15
16
|
export interface OpenAISseChunk {
|
package/src/route.ts
CHANGED
|
@@ -11,12 +11,31 @@
|
|
|
11
11
|
* @module dsh-local-ai/route
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import { isTokenDelta } from '@deepseek-ai/dsh-llm'
|
|
15
14
|
import type { GenerateOptions, StreamChunk } from '@deepseek-ai/dsh-llm'
|
|
16
15
|
import { OLLAMA_PROVIDER } from './adapter.ts'
|
|
17
16
|
import { DEFAULT_PROVIDER } from './config.ts'
|
|
18
17
|
import type { ResolvedConfig, ResolvedRouteRule } from './config.ts'
|
|
19
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Whether a stream chunk carries visible model output for fallback timing.
|
|
21
|
+
* The host moved this helper out of `@deepseek-ai/dsh-llm` on 0.1.2-alpha.2
|
|
22
|
+
* (it now lives in the client ui-chat package), so the plugin pins the same
|
|
23
|
+
* semantics locally.
|
|
24
|
+
* @param chunk - Stream chunk to inspect.
|
|
25
|
+
* @returns true for a non-empty text, reasoning, or tool-call delta.
|
|
26
|
+
*/
|
|
27
|
+
function isTokenDelta(chunk: StreamChunk): boolean {
|
|
28
|
+
switch (chunk.type) {
|
|
29
|
+
case 'text-delta':
|
|
30
|
+
case 'reasoning-delta':
|
|
31
|
+
return chunk.text !== ''
|
|
32
|
+
case 'tool-call-delta':
|
|
33
|
+
return chunk.argumentsDelta !== '' || chunk.name !== undefined
|
|
34
|
+
default:
|
|
35
|
+
return false
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
20
39
|
/** The chosen local provider + model for one matched request. */
|
|
21
40
|
export interface RouteDecision {
|
|
22
41
|
/** The local provider id to route to (`ollama` or `openai:<name>`). */
|
package/src/translate.ts
CHANGED
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
* @module dsh-local-ai/translate
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import { EMPTY_RESPONSE_CODE, LlmError } from '@deepseek-ai/dsh-llm'
|
|
12
12
|
import type { ContentBlock, FinishReason, StreamChunk, TokenUsage } from '@deepseek-ai/dsh-llm'
|
|
13
|
+
import { CallId } from './call-id.ts'
|
|
13
14
|
|
|
14
15
|
/** One Ollama streaming chat chunk on the wire. */
|
|
15
16
|
export interface OllamaWireChunk {
|
package/src/version.ts
CHANGED