deepseek-coordination 0.14.1 → 0.14.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/README.md +3 -3
- package/README.zh-CN.md +33 -9
- package/lib/client.js +95 -23
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
A dual-face Cordis plugin for DeepSeek Harness: the host half owns a coordination SQLite database, seven model-facing tools and an HTTP surface; the web half mounts five composer dropdowns, a settings catalog and the service-level takeover dialog.
|
|
6
6
|
|
|
7
|
-
**Status: v0.14.
|
|
7
|
+
**Status: v0.14.2 (2026-10-18).** This release adds two read-only docked workspace panels with canvas relationship graphs, a preview matrix (Markdown and math, sanitized HTML, Prism code, docx/xlsx/pptx), an agent roster with estimated progress, and hardens all of it so a panel failure cannot blank the harness. It builds on the v0.12.0 domain layer and the v0.11.0 settings and cache-proxy work. The package version, changelog and release tarball are the same tree; claims below were checked against source, not against the design documents alone.
|
|
8
8
|
|
|
9
9
|
| Status | Meaning in this README |
|
|
10
10
|
|---|---|
|
|
@@ -60,7 +60,7 @@ Install the packed tarball, not the GitHub source:
|
|
|
60
60
|
|
|
61
61
|
```powershell
|
|
62
62
|
npm pack
|
|
63
|
-
dsh plugin --profile <name> add .\deepseek-coordination-0.14.
|
|
63
|
+
dsh plugin --profile <name> add .\deepseek-coordination-0.14.2.tgz
|
|
64
64
|
dsh --profile <name> --dump-config # expect a deepseek-coordination layer
|
|
65
65
|
```
|
|
66
66
|
|
|
@@ -86,7 +86,7 @@ For a no-restart recovery path limited to the panel UI, set `localStorage['coord
|
|
|
86
86
|
|---|---|---|
|
|
87
87
|
| `lib/index.mjs` | Host ESM, `platform: node` | 2,380,317 B |
|
|
88
88
|
| `lib/index.d.mts` | Host declarations | 9,095 B |
|
|
89
|
-
| `lib/client.js` | Browser CJS wrapped in `__ModuleLoader__.load()` | 3,
|
|
89
|
+
| `lib/client.js` | Browser CJS wrapped in `__ModuleLoader__.load()` | 3,252,801 B |
|
|
90
90
|
|
|
91
91
|
Material UI, emotion and `react-dom` are bundled into `lib/client.js`; React itself comes from the host module table. The inlined `react-dom` is the 18.3.1 line that matches the host's React 18 — npm refuses to auto-install a React 19 `react-dom` against a React 18 `react`. The client bundle is large because MUI and `react-dom` are inlined, not because it ships a second React.
|
|
92
92
|
|
package/README.zh-CN.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
一个面向 DeepSeek Harness 的双端 Cordis 插件:宿主端持有协调 SQLite 数据库、7 个模型可见工具和一组 HTTP 路由;浏览器端在输入框挂载五个下拉框,并提供设置目录与服务级接管对话框。
|
|
6
6
|
|
|
7
|
-
**当前版本:v0.14.
|
|
7
|
+
**当前版本:v0.14.2(2026-10-18)。** 本版新增右侧两个只读工作区面板(canvas 关系图、预览矩阵:Markdown 与数学、净化 HTML、Prism 代码、docx/xlsx/pptx、带预计进度的代理名册),并做了崩溃隔离——任一面板失败都不会拖垮宿主。它建立在 v0.12.0 的领域层与 v0.11.0 的设置/缓存代理之上。包版本、更新日志和发布 tarball 来自同一棵树;下文按源码核对,不以设计文档代替实现。
|
|
8
8
|
|
|
9
9
|
| 状态 | 含义 |
|
|
10
10
|
|---|---|
|
|
@@ -60,7 +60,7 @@ npm pack # 先执行 prepack,生成可安装 tarball
|
|
|
60
60
|
|
|
61
61
|
```powershell
|
|
62
62
|
npm pack
|
|
63
|
-
dsh plugin --profile <name> add .\deepseek-coordination-0.
|
|
63
|
+
dsh plugin --profile <name> add .\deepseek-coordination-0.14.2.tgz
|
|
64
64
|
dsh --profile <name> --dump-config # 应出现 deepseek-coordination 层
|
|
65
65
|
```
|
|
66
66
|
|
|
@@ -70,11 +70,23 @@ dsh --profile <name> --dump-config # 应出现 deepseek-coordination 层
|
|
|
70
70
|
|
|
71
71
|
`dsh plugin add` 会写入依赖和 bundle 行。如果 profile 里仍记录着别的包 spec,请替换它,不要假定新代码已经加载;用 `dsh --profile <name> --dump-config` 和已安装的 `package.json` 版本核对。
|
|
72
72
|
|
|
73
|
+
### 卸载或禁用
|
|
74
|
+
|
|
75
|
+
如果某个版本让 harness 无法进入,按下面顺序移除,然后重启:
|
|
76
|
+
|
|
77
|
+
1. 从 profile 的 bundle 列表移除 `deepseek-coordination`(`dsh plugin --profile <name> remove deepseek-coordination`,或手动删除该行)。
|
|
78
|
+
2. 在 profile 目录执行 `pnpm remove deepseek-coordination`。
|
|
79
|
+
3. 如果 `node_modules/deepseek-coordination` 仍存在,手动删除——部分卸载路径会留下目录。
|
|
80
|
+
4. 执行 `pnpm install` 重写 lockfile 与依赖树。
|
|
81
|
+
5. 重启 harness。客户端 bundle 在启动时下发,仅刷新页面不会卸载旧插件。
|
|
82
|
+
|
|
83
|
+
只针对面板 UI 的免重装恢复:在 Web GUI 里设置 `localStorage['coordination.panel.disabled'] = '1'`(或 `'true'`)并刷新,面板列不挂载任何内容,插件其余功能仍可用。改回 `'0'`(或删除该键)再刷新即可恢复。该开关只在挂载时读取一次,两个方向都需要刷新。
|
|
84
|
+
|
|
73
85
|
| 产物 | 格式 | 本次构建大小 |
|
|
74
86
|
|---|---|---|
|
|
75
|
-
| `lib/index.mjs` | 宿主 ESM,`platform: node` |
|
|
87
|
+
| `lib/index.mjs` | 宿主 ESM,`platform: node` | 2,380,317 B |
|
|
76
88
|
| `lib/index.d.mts` | 宿主类型声明 | 9,095 B |
|
|
77
|
-
| `lib/client.js` | 浏览器 CJS,包在 `__ModuleLoader__.load()` 中 |
|
|
89
|
+
| `lib/client.js` | 浏览器 CJS,包在 `__ModuleLoader__.load()` 中 | 3,252,801 B |
|
|
78
90
|
|
|
79
91
|
Material UI、emotion 与 `react-dom` 被打进 `lib/client.js`,React 本身来自宿主模块表。内联的 `react-dom` 是 18.3.1 线,与宿主的 React 18 匹配——npm 不会为 React 18 的 `react` 自动配一个 React 19 的 `react-dom`。客户端体积大是因为内联了 MUI 与 `react-dom`,不是因为多带了一份 React。
|
|
80
92
|
|
|
@@ -219,10 +231,10 @@ deepseek-coordination/
|
|
|
219
231
|
|
|
220
232
|
图通过 `coordination_parse`、`coordination_describe`、`coordination_chain` 回答"工作区里有什么"。chain 查询在所有返回节点的动作上支持可选 `kind`(去空格、大小写不敏感),因此"所有 lemma""所有 chapter"是一次调用而不是全量扫描。目录节点从无歧义的工作区路径派生并以 `contains`/`part_of` 连接;不变量是**`part_of`(子→父)精确、`contains`(父→子)尽力而为**。
|
|
221
233
|
|
|
222
|
-
## 工作区面板
|
|
223
|
-
|
|
224
|
-
两个只读面板停靠在右侧并纵向堆叠:关系面板(文件/职能/依赖/导入/导出)与工作面板(文件/大纲/依赖/导入与导出/预览)。每个面板保留 48px 标题栏(菜单、搜索、最小化/还原),展开一个会把另一个顶上去。关系 tab 用原生 canvas 画关系图(方向流动、环脉动、hover tooltip、点击选中);职能 tab 列出主代理与子代理、预计进度环,并可打开只读消息页。预览 tab 渲染 Markdown/数学、净化后的 HTML、`docx` HTML、Prism 高亮代码、`xlsx` 表格与 `pptx` 卡片——全部只读、有界、`no-store`。状态只在 `localStorage` 存 `{ openLeft, openRight, width }`,视图是 hash 路由(`#coordination/panel/right/<view>?path=…`)。打包体积约 +2 MB(KaTeX、react-markdown、Prism、MUI icons),gzip 后约 700 KB。
|
|
225
|
-
|
|
234
|
+
## 工作区面板
|
|
235
|
+
|
|
236
|
+
两个只读面板停靠在右侧并纵向堆叠:关系面板(文件/职能/依赖/导入/导出)与工作面板(文件/大纲/依赖/导入与导出/预览)。每个面板保留 48px 标题栏(菜单、搜索、最小化/还原),展开一个会把另一个顶上去。关系 tab 用原生 canvas 画关系图(方向流动、环脉动、hover tooltip、点击选中);职能 tab 列出主代理与子代理、预计进度环,并可打开只读消息页。预览 tab 渲染 Markdown/数学、净化后的 HTML、`docx` HTML、Prism 高亮代码、`xlsx` 表格与 `pptx` 卡片——全部只读、有界、`no-store`。状态只在 `localStorage` 存 `{ openLeft, openRight, width }`,视图是 hash 路由(`#coordination/panel/right/<view>?path=…`)。打包体积约 +2 MB(KaTeX、react-markdown、Prism、MUI icons),gzip 后约 700 KB。
|
|
237
|
+
|
|
226
238
|
## 设置与配置
|
|
227
239
|
|
|
228
240
|
设置页由 `src/shared/selection.ts` 的 `SETTINGS_CONTROLS` 生成:**13 组、139 个控件、122 个可写宿主行,覆盖 155 个配置叶子**。其中 12 个情景叶子(`scenes.*.thinking`、`scenes.*.reasoningEffort`)留在 schema 里但没有对应行:推理由 DSH 的模型页负责,这里再放一套会形成两个真相来源。18 个顶层配置键包含 `database` 与 `databasePath`,这两个键故意不投影、不可写。
|
|
@@ -279,7 +291,17 @@ DSH 在任何 adapter 看到请求之前就把它冻结了:`buildRequest()`
|
|
|
279
291
|
5. 拒绝/失败信息只报路由名;
|
|
280
292
|
6. 默认关闭、可逆。
|
|
281
293
|
|
|
282
|
-
启用方式:创建 `%DSH_HOME%\coordination\proxy.enable`(或 `DSH_COORDINATION_PROXY=1`)后重启。`GET /deepseek-coordination/proxy/status`
|
|
294
|
+
启用方式:创建 `%DSH_HOME%\coordination\proxy.enable`(或 `DSH_COORDINATION_PROXY=1`)后重启。`GET /deepseek-coordination/proxy/status` 报告计数与标识:`available`、`enabled`、`decorate`、`upstream`、`upstreamProvider`、`model`(品牌与策略)、`mode`、`metrics`、`prefix`、`cacheStrategy`、`forwards`、`refusals`。删掉开关文件重启即回到普通链路。
|
|
295
|
+
|
|
296
|
+
### 观测与改写(measure 与 normalize)
|
|
297
|
+
|
|
298
|
+
接上代理与改写请求是**两个独立开关**。代理启用后默认是 `measure`:只恢复真实 provider 路由,从不调用缓存装饰器。要让装饰器运行,需创建内容为 `normalize` 的 `proxy.mode` 文件、创建 `proxy.rewrite` 标记文件,或设置 `DSH_COORDINATION_PROXY_REWRITE=1`,然后重启。
|
|
299
|
+
|
|
300
|
+
两种模式下 `proxy.log` 每次转发都会多一行 `prefix`(`{ prefix: '<16 hex>', stable }`),指纹变化时再写一行 `prefix-churn`(`{ from, to }`)。`metrics` 聚合最近 100 次请求(`requests`、`samples`、`inputTokens`、`cachedInputTokens`、`hitRate`;DSH 的 `cacheReadTokens` 以 `cachedInputTokens` 呈现)。读取真实会话基线:用服务 Web GUI 的端口执行 `curl http://127.0.0.1:<port>/deepseek-coordination/proxy/status`。
|
|
301
|
+
|
|
302
|
+
### 与按 provider id 精确匹配的宿主模块的交互
|
|
303
|
+
|
|
304
|
+
改写对所有 `agent/request` 消费者可见:代理接入期间,请求里记录的路由是 `coordination-proxy`,而不是真实 provider。因此 `/proxy/status` 在 `upstream` 之外还暴露 `upstreamProvider`(改写前捕获的真实 provider)。按 provider id 解析凭据或账户状态的宿主模块在这种改写下可能出错;已知案例是宿主 web-search 的账户回退,需要宿主侧修复(0.2.1-rc.2 补丁已包含)。`ProxyService.compatibility()` 以静态数据携带同一份清单,代理不探测宿主。
|
|
283
305
|
|
|
284
306
|
## 自动压缩与 Token 治理器
|
|
285
307
|
|
|
@@ -371,6 +393,8 @@ P0 解析器是词法级、确定性的:JS/TS/JSX(import/export/`require`/
|
|
|
371
393
|
|
|
372
394
|
- 插件使用独立 SQLite 库,从不打开 DSH 的 `harness` 库。默认路径是 `%DSH_HOME%\coordination\coordination.db`;`database`/`databasePath` 只属于部署配置,既不投影也不允许 `/config` 写入。
|
|
373
395
|
- 解析节点、`NodeCard`、`ChainLink` 及其工具结果都不带文件正文、附件或 AST。只有 `coordination_read` 返回文本,而且只返回请求的范围。
|
|
396
|
+
- **预览是唯一承载正文的路由**:仅工作区相对路径、正文上限 64 KiB、由用户主动触发、`no-store`、不缓存也不写日志。其余 `/graph/*` 路由保持 body-free。Office 预览在服务端转换并限制大小,不写任何文件。
|
|
397
|
+
- **工作区面板是只读的**:不编辑、不重命名、不删除、不新建、不构建;唯一的非 GET 图路由是 `POST /graph/rebuild`,它只重新解析已索引路径。
|
|
374
398
|
- 文件路径必须是工作区相对路径;绝对路径、盘符路径、UNC、`..` 逃逸与符号链接逃逸在读取前拒绝。二进制/NUL/不可解码内容直接拒绝,不猜。
|
|
375
399
|
- Turn 钩子只写 Turn 元数据和一条空 prompt 行,不镜像 DSH 对话,也不把文件内容复制进协调库。
|
|
376
400
|
- 权限预设立即写给 DSH(完全权限需二次确认),从不进入离线 localStorage;离线重放只覆盖五个已存选择字段。
|
package/lib/client.js
CHANGED
|
@@ -47,11 +47,6 @@ window.__ModuleLoader__.load({
|
|
|
47
47
|
let react = require("react");
|
|
48
48
|
let react$1 = __toESM$1(react, 1);
|
|
49
49
|
react = __toESM$1(react);
|
|
50
|
-
let node_path = require("node:path");
|
|
51
|
-
node_path = __toESM$1(node_path, 1);
|
|
52
|
-
let node_process = require("node:process");
|
|
53
|
-
node_process = __toESM$1(node_process, 1);
|
|
54
|
-
let node_url = require("node:url");
|
|
55
50
|
//#region node_modules/clsx/dist/clsx.mjs
|
|
56
51
|
function r(e) {
|
|
57
52
|
var t, f, n = "";
|
|
@@ -34695,7 +34690,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
34695
34690
|
/** The project metadata; `version` and every dependency row are test-pinned. */
|
|
34696
34691
|
const ABOUT = {
|
|
34697
34692
|
name: "deepseek-coordination",
|
|
34698
|
-
version: "0.14.
|
|
34693
|
+
version: "0.14.2",
|
|
34699
34694
|
license: "Apache-2.0",
|
|
34700
34695
|
summary: "deepseek-coordination is a dual-face Cordis plugin for DeepSeek Harness: the host half records coordination state, registers model-facing tools and serves read-only HTTP routes, while the web half mounts the composer controls, workspace panel and settings page. The panel and parser layer is read-only: it projects body-free metadata and never edits, renames or deletes workspace files.",
|
|
34701
34696
|
runtime: ">=22.13.0",
|
|
@@ -54383,11 +54378,11 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
54383
54378
|
var init_types = __esmMin((() => {}));
|
|
54384
54379
|
//#endregion
|
|
54385
54380
|
//#region node_modules/@ungap/structured-clone/esm/deserialize.js
|
|
54386
|
-
var defineProperty, env, guard, deserializer, deserialize;
|
|
54381
|
+
var defineProperty, env$1, guard, deserializer, deserialize;
|
|
54387
54382
|
var init_deserialize = __esmMin((() => {
|
|
54388
54383
|
init_types();
|
|
54389
54384
|
({defineProperty} = Object);
|
|
54390
|
-
env = typeof self === "object" ? self : globalThis;
|
|
54385
|
+
env$1 = typeof self === "object" ? self : globalThis;
|
|
54391
54386
|
guard = (name, init) => {
|
|
54392
54387
|
switch (name) {
|
|
54393
54388
|
case "Function":
|
|
@@ -54397,7 +54392,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
54397
54392
|
case "setInterval":
|
|
54398
54393
|
case "setTimeout": throw new TypeError("unable to deserialize " + name);
|
|
54399
54394
|
}
|
|
54400
|
-
return new env[name](init);
|
|
54395
|
+
return new env$1[name](init);
|
|
54401
54396
|
};
|
|
54402
54397
|
deserializer = ($, _) => {
|
|
54403
54398
|
const as = (out, index) => {
|
|
@@ -54446,7 +54441,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
54446
54441
|
}
|
|
54447
54442
|
case 7: {
|
|
54448
54443
|
const { name, message } = value;
|
|
54449
|
-
return as(typeof env[name] === "function" ? guard(name, message) : new Error(message), index);
|
|
54444
|
+
return as(typeof env$1[name] === "function" ? guard(name, message) : new Error(message), index);
|
|
54450
54445
|
}
|
|
54451
54446
|
case 8: return as(BigInt(value), index);
|
|
54452
54447
|
case "BigInt": return as(Object(BigInt(value)), index);
|
|
@@ -55811,11 +55806,87 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
55811
55806
|
init_lib$25();
|
|
55812
55807
|
}));
|
|
55813
55808
|
//#endregion
|
|
55809
|
+
//#region src/client/shims/node-path.ts
|
|
55810
|
+
function basename(path) {
|
|
55811
|
+
const normalised = String(path).replace(/\\/g, "/").replace(/\/+$/, "");
|
|
55812
|
+
const index = normalised.lastIndexOf("/");
|
|
55813
|
+
return index === -1 ? normalised : normalised.slice(index + 1);
|
|
55814
|
+
}
|
|
55815
|
+
function dirname(path) {
|
|
55816
|
+
const normalised = String(path).replace(/\\/g, "/").replace(/\/+$/, "");
|
|
55817
|
+
const index = normalised.lastIndexOf("/");
|
|
55818
|
+
if (index <= 0) return index === 0 ? "/" : ".";
|
|
55819
|
+
return normalised.slice(0, index);
|
|
55820
|
+
}
|
|
55821
|
+
function join(...parts) {
|
|
55822
|
+
const segments = [];
|
|
55823
|
+
for (const part of parts) {
|
|
55824
|
+
if (typeof part !== "string" || part.length === 0) continue;
|
|
55825
|
+
for (const segment of part.replace(/\\/g, "/").split("/")) {
|
|
55826
|
+
if (segment.length === 0 || segment === ".") continue;
|
|
55827
|
+
segments.push(segment);
|
|
55828
|
+
}
|
|
55829
|
+
}
|
|
55830
|
+
const joined = segments.join("/");
|
|
55831
|
+
return parts.length > 0 && parts[0]?.startsWith("/") ? `/${joined}` : joined;
|
|
55832
|
+
}
|
|
55833
|
+
var node_path_default;
|
|
55834
|
+
var init_node_path = __esmMin((() => {
|
|
55835
|
+
node_path_default = {
|
|
55836
|
+
sep: "/",
|
|
55837
|
+
basename,
|
|
55838
|
+
dirname,
|
|
55839
|
+
join
|
|
55840
|
+
};
|
|
55841
|
+
}));
|
|
55842
|
+
//#endregion
|
|
55814
55843
|
//#region node_modules/vfile/lib/minpath.js
|
|
55815
|
-
var init_minpath = __esmMin((() => {
|
|
55844
|
+
var init_minpath = __esmMin((() => {
|
|
55845
|
+
init_node_path();
|
|
55846
|
+
}));
|
|
55847
|
+
//#endregion
|
|
55848
|
+
//#region src/client/shims/node-process.ts
|
|
55849
|
+
function cwd() {
|
|
55850
|
+
return "/";
|
|
55851
|
+
}
|
|
55852
|
+
function nextTick(callback, ...args) {
|
|
55853
|
+
Promise.resolve().then(() => callback(...args));
|
|
55854
|
+
}
|
|
55855
|
+
var platform, env, node_process_default;
|
|
55856
|
+
var init_node_process = __esmMin((() => {
|
|
55857
|
+
platform = "browser";
|
|
55858
|
+
env = { NODE_ENV: "production" };
|
|
55859
|
+
node_process_default = {
|
|
55860
|
+
browser: true,
|
|
55861
|
+
platform,
|
|
55862
|
+
version: "",
|
|
55863
|
+
env,
|
|
55864
|
+
cwd,
|
|
55865
|
+
nextTick
|
|
55866
|
+
};
|
|
55867
|
+
}));
|
|
55816
55868
|
//#endregion
|
|
55817
55869
|
//#region node_modules/vfile/lib/minproc.js
|
|
55818
|
-
var init_minproc = __esmMin((() => {
|
|
55870
|
+
var init_minproc = __esmMin((() => {
|
|
55871
|
+
init_node_process();
|
|
55872
|
+
}));
|
|
55873
|
+
//#endregion
|
|
55874
|
+
//#region src/client/shims/node-url.ts
|
|
55875
|
+
/**
|
|
55876
|
+
* Browser shim for `node:url`.
|
|
55877
|
+
*
|
|
55878
|
+
* `vfile` converts `file:` URLs to paths. There is no filesystem in the browser,
|
|
55879
|
+
* but the conversion is pure string work, so implement the two functions vfile
|
|
55880
|
+
* can reach and refuse anything that is not a local file URL.
|
|
55881
|
+
*/
|
|
55882
|
+
function fileURLToPath(input) {
|
|
55883
|
+
const raw = typeof input === "string" ? input : input.toString();
|
|
55884
|
+
if (!raw.startsWith("file://")) throw new TypeError(`The URL must be of scheme file: ${raw}`);
|
|
55885
|
+
const withoutScheme = raw.slice(7);
|
|
55886
|
+
const decoded = decodeURIComponent(withoutScheme);
|
|
55887
|
+
return /^\/[A-Za-z]:\//.test(decoded) ? decoded.slice(1) : decoded;
|
|
55888
|
+
}
|
|
55889
|
+
var init_node_url = __esmMin((() => {}));
|
|
55819
55890
|
//#endregion
|
|
55820
55891
|
//#region node_modules/vfile/lib/minurl.shared.js
|
|
55821
55892
|
/**
|
|
@@ -55843,6 +55914,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
55843
55914
|
//#endregion
|
|
55844
55915
|
//#region node_modules/vfile/lib/minurl.js
|
|
55845
55916
|
var init_minurl = __esmMin((() => {
|
|
55917
|
+
init_node_url();
|
|
55846
55918
|
init_minurl_shared();
|
|
55847
55919
|
}));
|
|
55848
55920
|
//#endregion
|
|
@@ -55858,7 +55930,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
55858
55930
|
* Nothing.
|
|
55859
55931
|
*/
|
|
55860
55932
|
function assertPart(part, name) {
|
|
55861
|
-
if (part && part.includes(
|
|
55933
|
+
if (part && part.includes(node_path_default.sep)) throw new Error("`" + name + "` cannot be a path: did not expect `" + node_path_default.sep + "`");
|
|
55862
55934
|
}
|
|
55863
55935
|
/**
|
|
55864
55936
|
* Assert that `part` is not empty.
|
|
@@ -55946,7 +56018,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
55946
56018
|
*
|
|
55947
56019
|
* @type {string}
|
|
55948
56020
|
*/
|
|
55949
|
-
this.cwd = "cwd" in options ? "" :
|
|
56021
|
+
this.cwd = "cwd" in options ? "" : node_process_default.cwd();
|
|
55950
56022
|
/**
|
|
55951
56023
|
* Place to store custom info (default: `{}`).
|
|
55952
56024
|
*
|
|
@@ -56018,7 +56090,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
56018
56090
|
* Basename.
|
|
56019
56091
|
*/
|
|
56020
56092
|
get basename() {
|
|
56021
|
-
return typeof this.path === "string" ?
|
|
56093
|
+
return typeof this.path === "string" ? node_path_default.basename(this.path) : void 0;
|
|
56022
56094
|
}
|
|
56023
56095
|
/**
|
|
56024
56096
|
* Set basename (including extname) (`'index.min.js'`).
|
|
@@ -56035,7 +56107,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
56035
56107
|
set basename(basename) {
|
|
56036
56108
|
assertNonEmpty(basename, "basename");
|
|
56037
56109
|
assertPart(basename, "basename");
|
|
56038
|
-
this.path =
|
|
56110
|
+
this.path = node_path_default.join(this.dirname || "", basename);
|
|
56039
56111
|
}
|
|
56040
56112
|
/**
|
|
56041
56113
|
* Get the parent path (example: `'~'`).
|
|
@@ -56044,7 +56116,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
56044
56116
|
* Dirname.
|
|
56045
56117
|
*/
|
|
56046
56118
|
get dirname() {
|
|
56047
|
-
return typeof this.path === "string" ?
|
|
56119
|
+
return typeof this.path === "string" ? node_path_default.dirname(this.path) : void 0;
|
|
56048
56120
|
}
|
|
56049
56121
|
/**
|
|
56050
56122
|
* Set the parent path (example: `'~'`).
|
|
@@ -56058,7 +56130,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
56058
56130
|
*/
|
|
56059
56131
|
set dirname(dirname) {
|
|
56060
56132
|
assertPath(this.basename, "dirname");
|
|
56061
|
-
this.path =
|
|
56133
|
+
this.path = node_path_default.join(dirname || "", this.basename);
|
|
56062
56134
|
}
|
|
56063
56135
|
/**
|
|
56064
56136
|
* Get the extname (including dot) (example: `'.js'`).
|
|
@@ -56067,7 +56139,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
56067
56139
|
* Extname.
|
|
56068
56140
|
*/
|
|
56069
56141
|
get extname() {
|
|
56070
|
-
return typeof this.path === "string" ?
|
|
56142
|
+
return typeof this.path === "string" ? node_path_default.extname(this.path) : void 0;
|
|
56071
56143
|
}
|
|
56072
56144
|
/**
|
|
56073
56145
|
* Set the extname (including dot) (example: `'.js'`).
|
|
@@ -56088,7 +56160,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
56088
56160
|
if (extname.codePointAt(0) !== 46) throw new Error("`extname` must start with `.`");
|
|
56089
56161
|
if (extname.includes(".", 1)) throw new Error("`extname` cannot contain multiple dots");
|
|
56090
56162
|
}
|
|
56091
|
-
this.path =
|
|
56163
|
+
this.path = node_path_default.join(this.dirname, this.stem + (extname || ""));
|
|
56092
56164
|
}
|
|
56093
56165
|
/**
|
|
56094
56166
|
* Get the full path (example: `'~/index.min.js'`).
|
|
@@ -56112,7 +56184,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
56112
56184
|
* Nothing.
|
|
56113
56185
|
*/
|
|
56114
56186
|
set path(path) {
|
|
56115
|
-
if (isUrl(path)) path =
|
|
56187
|
+
if (isUrl(path)) path = fileURLToPath(path);
|
|
56116
56188
|
assertNonEmpty(path, "path");
|
|
56117
56189
|
if (this.path !== path) this.history.push(path);
|
|
56118
56190
|
}
|
|
@@ -56123,7 +56195,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
56123
56195
|
* Stem.
|
|
56124
56196
|
*/
|
|
56125
56197
|
get stem() {
|
|
56126
|
-
return typeof this.path === "string" ?
|
|
56198
|
+
return typeof this.path === "string" ? node_path_default.basename(this.path, this.extname) : void 0;
|
|
56127
56199
|
}
|
|
56128
56200
|
/**
|
|
56129
56201
|
* Set the stem (basename w/o extname) (example: `'index.min'`).
|
|
@@ -56140,7 +56212,7 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
|
|
|
56140
56212
|
set stem(stem) {
|
|
56141
56213
|
assertNonEmpty(stem, "stem");
|
|
56142
56214
|
assertPart(stem, "stem");
|
|
56143
|
-
this.path =
|
|
56215
|
+
this.path = node_path_default.join(this.dirname || "", stem + (this.extname || ""));
|
|
56144
56216
|
}
|
|
56145
56217
|
/**
|
|
56146
56218
|
* Create a fatal message for `reason` associated with the file.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deepseek-coordination",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.2",
|
|
4
4
|
"description": "A dual-face Cordis plugin for DeepSeek Harness: the host half owns a coordination SQLite database, seven model-facing tools and an HTTP surface; the web half mounts five composer dropdowns, a settings catalog and the service-level takeover dialog.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|