dsh-kingdom 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +29 -0
- package/README.md +184 -0
- package/cordis.patch.yml +6 -0
- package/lib/core/binding.js +57 -0
- package/lib/core/binding.js.map +1 -0
- package/lib/core/db.js +521 -0
- package/lib/core/db.js.map +1 -0
- package/lib/core/execution.js +88 -0
- package/lib/core/execution.js.map +1 -0
- package/lib/core/kingdom.js +117 -0
- package/lib/core/kingdom.js.map +1 -0
- package/lib/core/task-service.js +581 -0
- package/lib/core/task-service.js.map +1 -0
- package/lib/core/task.js +93 -0
- package/lib/core/task.js.map +1 -0
- package/lib/core/territory.js +47 -0
- package/lib/core/territory.js.map +1 -0
- package/lib/gui/contract.js +53 -0
- package/lib/gui/contract.js.map +1 -0
- package/lib/gui/server.js +204 -0
- package/lib/gui/server.js.map +1 -0
- package/lib/gui/snapshot.js +379 -0
- package/lib/gui/snapshot.js.map +1 -0
- package/lib/index.js +489 -0
- package/lib/index.js.map +1 -0
- package/lib/paths.js +23 -0
- package/lib/paths.js.map +1 -0
- package/lib/types/core/binding.d.ts +11 -0
- package/lib/types/core/db.d.ts +261 -0
- package/lib/types/core/execution.d.ts +51 -0
- package/lib/types/core/kingdom.d.ts +34 -0
- package/lib/types/core/task-service.d.ts +107 -0
- package/lib/types/core/task.d.ts +60 -0
- package/lib/types/core/territory.d.ts +9 -0
- package/lib/types/gui/contract.d.ts +226 -0
- package/lib/types/gui/server.d.ts +26 -0
- package/lib/types/gui/snapshot.d.ts +44 -0
- package/lib/types/index.d.ts +80 -0
- package/lib/types/paths.d.ts +6 -0
- package/lib/types/worker/dsh-subagent.d.ts +79 -0
- package/lib/types/worker/executor.d.ts +121 -0
- package/lib/worker/dsh-subagent.js +117 -0
- package/lib/worker/dsh-subagent.js.map +1 -0
- package/lib/worker/executor.js +94 -0
- package/lib/worker/executor.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dsh-kingdom — DshSubagentExecutor:用 dsh one-shot subagent 执行 Worker(裁决 2)。
|
|
3
|
+
*
|
|
4
|
+
* 裁决 2 冻结的形状:
|
|
5
|
+
* - Worker 用 `ctx.subagents.start(provider, { label, prompt, outputSchema })` **one-shot 独立执行**;
|
|
6
|
+
* - **不**采用常驻 `ctx.agents.create`;
|
|
7
|
+
* - 每次执行都是新的 execution/session(REWORK 也一样,裁决 5);
|
|
8
|
+
* - Structured Worker Result 由 subagent 的 `outputSchema` 约束,
|
|
9
|
+
* 宿主(本类)接收后交给 Task Core 落 worker_results。
|
|
10
|
+
*
|
|
11
|
+
* 这也是为什么 `kingdom_report_result` **不是**独立工具:Worker 是 one-shot subagent,
|
|
12
|
+
* 它没有机会自己调工具改 Task 状态 —— 结果只能经宿主这一条路回来。
|
|
13
|
+
*
|
|
14
|
+
* ## 为什么这里对 ctx.subagents 用结构化局部类型
|
|
15
|
+
*
|
|
16
|
+
* 本插件是独立分发的 tgz,peer 只声明 5 条(见 README)。为了不新增第 6 条 peer、
|
|
17
|
+
* 也不让编译产物 .d.ts 泄漏 subagent 类型,这里按 dsh 已发布的接口**结构化**地
|
|
18
|
+
* 声明所需最小面,而不 import `@deepseek-ai/dsh-subagent`。
|
|
19
|
+
* 对应 checkout 定义(0.1.0/0.2.0 基线一致):
|
|
20
|
+
* - `SubagentRuntime.start(name, request)` — packages/subagent/subagent/src/index.ts:414
|
|
21
|
+
* - `SubagentStartRequest{label,prompt,parent,signal,outputSchema}` — .../src/types.ts:100
|
|
22
|
+
* - `SubagentRun{id,result,dispose}` / `SubagentResult{output,structured,stopReason}` — .../src/types.ts:219,249
|
|
23
|
+
*/
|
|
24
|
+
import { buildWorkerPrompt, parseStructuredResult, WORKER_OUTPUT_SCHEMA, } from './executor.js';
|
|
25
|
+
/**
|
|
26
|
+
* 判定 stopReason 是否算“正常跑完”。
|
|
27
|
+
* 非 completed 一律视为宿主观察到的运行失败(裁决 6),不去解释 Worker 想说什么。
|
|
28
|
+
*/
|
|
29
|
+
function stopReasonFailure(stopReason) {
|
|
30
|
+
switch (stopReason) {
|
|
31
|
+
case 'completed': return null;
|
|
32
|
+
case 'aborted': return 'subagent 执行被取消(aborted)';
|
|
33
|
+
case 'error': return 'subagent 执行失败(模型或传输层 error)';
|
|
34
|
+
case 'max-tokens': return 'subagent 未完成即触达 token 上限(max-tokens)';
|
|
35
|
+
case 'refusal': return 'subagent 拒绝了该任务(refusal)';
|
|
36
|
+
default: return `subagent 以异常终止原因结束(${stopReason})`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 薄封装:把一次 Worker 执行落到一个 one-shot subagent run 上。
|
|
41
|
+
*
|
|
42
|
+
* 失败一律收敛成 `executor-failure`,**从不抛异常给 Task Core**
|
|
43
|
+
* —— 让状态机只面对两种确定结局(result / executor-failure),
|
|
44
|
+
* 而不是异常与返回值两条并行的控制流。
|
|
45
|
+
*/
|
|
46
|
+
export class DshSubagentExecutor {
|
|
47
|
+
kind;
|
|
48
|
+
options;
|
|
49
|
+
constructor(options) {
|
|
50
|
+
this.options = options;
|
|
51
|
+
this.kind = `dsh-subagent:${options.provider}`;
|
|
52
|
+
}
|
|
53
|
+
async execute(task, context) {
|
|
54
|
+
const { subagents, provider, parent, signal } = this.options;
|
|
55
|
+
if (subagents.getProvider(provider) === undefined) {
|
|
56
|
+
const available = subagents.list();
|
|
57
|
+
return {
|
|
58
|
+
kind: 'executor-failure',
|
|
59
|
+
sessionId: null,
|
|
60
|
+
reason: `未注册 subagent provider "${provider}"`
|
|
61
|
+
+ `(当前可用:${available.length > 0 ? available.join(' / ') : '无'})`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// 启动阶段失败没有 run,也就没有 session id 可记。
|
|
65
|
+
let run;
|
|
66
|
+
try {
|
|
67
|
+
run = await subagents.start(provider, {
|
|
68
|
+
label: `Worker: ${task.title}`.slice(0, 80),
|
|
69
|
+
prompt: [{ type: 'text', text: buildWorkerPrompt(context) }],
|
|
70
|
+
parent,
|
|
71
|
+
signal,
|
|
72
|
+
outputSchema: WORKER_OUTPUT_SCHEMA,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return {
|
|
77
|
+
kind: 'executor-failure',
|
|
78
|
+
sessionId: null,
|
|
79
|
+
reason: `subagent 启动失败:${error instanceof Error ? error.message : String(error)}`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
// 已发布的 run 必须 dispose 才能达到静默,即使结果路径抛错。
|
|
83
|
+
const sessionId = run.id;
|
|
84
|
+
try {
|
|
85
|
+
const result = await run.result;
|
|
86
|
+
const failure = stopReasonFailure(result.stopReason);
|
|
87
|
+
if (failure !== null)
|
|
88
|
+
return { kind: 'executor-failure', sessionId, reason: failure };
|
|
89
|
+
const structured = parseStructuredResult(result.structured);
|
|
90
|
+
if (structured === null) {
|
|
91
|
+
return {
|
|
92
|
+
kind: 'executor-failure',
|
|
93
|
+
sessionId,
|
|
94
|
+
reason: 'subagent 正常结束但未交回合法的结构化结果(outputSchema 未满足)',
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return { kind: 'result', result: structured, sessionId };
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
// run.result 只在 seam 无法表达的基础设施故障时 reject。
|
|
101
|
+
return {
|
|
102
|
+
kind: 'executor-failure',
|
|
103
|
+
sessionId,
|
|
104
|
+
reason: `subagent 运行异常:${error instanceof Error ? error.message : String(error)}`,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
try {
|
|
109
|
+
await run.dispose();
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// dispose 失败不改写已判定的执行结局;run 已经落定。
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=dsh-subagent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsh-subagent.js","sourceRoot":"","sources":["../../src/worker/dsh-subagent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 约束 Worker 结构化输出的 JSON Schema。
|
|
3
|
+
*
|
|
4
|
+
* 必须落在 dsh 强制的 schema 子集内
|
|
5
|
+
* (见 checkout `packages/core/tools/src/json-schema.ts`):
|
|
6
|
+
* - 根必须是 object(assertObjectJsonSchema);
|
|
7
|
+
* - `enum` 只允许挂在**已声明 scalar `type`** 的节点上
|
|
8
|
+
* —— 裸 `{ enum: [...] }` 会被判为 `.enum requires type or oneOf` 而拒绝,
|
|
9
|
+
* 所以 outcome 显式写了 `type: 'string'`。
|
|
10
|
+
*/
|
|
11
|
+
export const WORKER_OUTPUT_SCHEMA = {
|
|
12
|
+
type: 'object',
|
|
13
|
+
required: ['outcome', 'summary'],
|
|
14
|
+
properties: {
|
|
15
|
+
outcome: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
enum: ['COMPLETED', 'FAILED', 'BLOCKED'],
|
|
18
|
+
description: 'COMPLETED=你认为已完成;FAILED=你认为做不成;BLOCKED=被外部阻塞。这是你的声明,最终由 Supervisor 裁定。',
|
|
19
|
+
},
|
|
20
|
+
summary: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: '给 Supervisor 审查用的自述摘要:做了什么、结果如何、是否满足验收标准。',
|
|
23
|
+
},
|
|
24
|
+
artifacts: {
|
|
25
|
+
type: 'array',
|
|
26
|
+
items: { type: 'string' },
|
|
27
|
+
description: '产出物列表(文件路径或制品标识)。',
|
|
28
|
+
},
|
|
29
|
+
risks: {
|
|
30
|
+
type: 'array',
|
|
31
|
+
items: { type: 'string' },
|
|
32
|
+
description: '风险与遗留问题。',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
/** 未知值兜底为 BLOCKED 之前,先判定是否是合法 outcome。 */
|
|
37
|
+
function isOutcome(value) {
|
|
38
|
+
return value === 'COMPLETED' || value === 'FAILED' || value === 'BLOCKED';
|
|
39
|
+
}
|
|
40
|
+
/** 只保留字符串项的数组;非数组返回 undefined。 */
|
|
41
|
+
function stringArray(value) {
|
|
42
|
+
if (!Array.isArray(value))
|
|
43
|
+
return undefined;
|
|
44
|
+
const items = value.filter((v) => typeof v === 'string');
|
|
45
|
+
return items.length > 0 ? items : undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 把 subagent 交回的 `structured` 收敛成 StructuredResult。
|
|
49
|
+
*
|
|
50
|
+
* provider 已按 outputSchema 校验过,这里是**宿主侧的第二道防御**:
|
|
51
|
+
* 形状不合法就返回 null,调用方据此判定 executor-failure(裁决 6)。
|
|
52
|
+
* 不猜、不补默认值 —— 一个形状不对的 Claim 不是 Claim。
|
|
53
|
+
*/
|
|
54
|
+
export function parseStructuredResult(value) {
|
|
55
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
56
|
+
return null;
|
|
57
|
+
const record = value;
|
|
58
|
+
if (!isOutcome(record.outcome))
|
|
59
|
+
return null;
|
|
60
|
+
if (typeof record.summary !== 'string' || record.summary.trim().length === 0)
|
|
61
|
+
return null;
|
|
62
|
+
const artifacts = stringArray(record.artifacts);
|
|
63
|
+
const risks = stringArray(record.risks);
|
|
64
|
+
return {
|
|
65
|
+
outcome: record.outcome,
|
|
66
|
+
summary: record.summary,
|
|
67
|
+
...artifacts ? { artifacts } : {},
|
|
68
|
+
...risks ? { risks } : {},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 构造这一轮 Worker 的 prompt。
|
|
73
|
+
*
|
|
74
|
+
* 裁决 5:REWORK 轮次必须注入「原 Task + Acceptance Criteria +
|
|
75
|
+
* 上一轮 Result 摘要 + Supervisor REWORK reason」。
|
|
76
|
+
* one-shot subagent 不继承父会话上下文,所以 prompt 必须自包含。
|
|
77
|
+
*/
|
|
78
|
+
export function buildWorkerPrompt(context) {
|
|
79
|
+
const { task, acceptanceCriteria, attemptNo, prevResultSummary, reworkReason } = context;
|
|
80
|
+
const lines = [
|
|
81
|
+
'你是本王国某个领地的 Worker,现在承接一个任务。请独立完成它,然后交回结构化结果。',
|
|
82
|
+
'',
|
|
83
|
+
`## 任务:${task.title}`,
|
|
84
|
+
];
|
|
85
|
+
if (task.description)
|
|
86
|
+
lines.push('', task.description);
|
|
87
|
+
lines.push('', '## 验收标准', acceptanceCriteria?.trim() || '(未显式给出验收标准;请按任务描述的字面要求交付。)');
|
|
88
|
+
if (attemptNo > 1) {
|
|
89
|
+
lines.push('', `## 这是第 ${attemptNo} 次尝试(返工)`, 'Supervisor 审查了你上一轮的结果并要求返工。请针对返工理由改进,不要重复上一轮的问题。', '', '### 上一轮你提交的摘要', prevResultSummary?.trim() || '(上一轮无可用摘要。)', '', '### Supervisor 的返工理由', reworkReason?.trim() || '(未给出具体理由。)');
|
|
90
|
+
}
|
|
91
|
+
lines.push('', '## 交回要求', '按 outputSchema 交回 { outcome, summary, artifacts?, risks? }。', 'outcome 是你的**自述**:COMPLETED / FAILED / BLOCKED。', '注意:你的结果是一个待审查的 Claim,不是任务完成的事实 —— 是否 DONE 由 Supervisor 裁定。', 'summary 请写清楚你做了什么、是否满足每一条验收标准、以及你无法确认的地方。');
|
|
92
|
+
return lines.join('\n');
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/worker/executor.ts"],"names":[],"mappings":"AAiEA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IAChC,UAAU,EAAE;QACV,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC;YACxC,WAAW,EAAE,wEAAwE;SACtF;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,2CAA2C;SACzD;QACD,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EAAE,mBAAmB;SACjC;QACD,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EAAE,UAAU;SACxB;KACF;CACO,CAAA;AAEV,0CAA0C;AAC1C,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAA;AAC3E,CAAC;AAED,kCAAkC;AAClC,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAA;IACrE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACpF,MAAM,MAAM,GAAG,KAAgC,CAAA;IAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3C,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACzF,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;QACjC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;KAC1B,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAsB;IACtD,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,GAAG,OAAO,CAAA;IACxF,MAAM,KAAK,GAAa;QACtB,8CAA8C;QAC9C,EAAE;QACF,SAAS,IAAI,CAAC,KAAK,EAAE;KACtB,CAAA;IACD,IAAI,IAAI,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,4BAA4B,CAAC,CAAA;IAErF,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CACR,EAAE,EACF,UAAU,SAAS,UAAU,EAC7B,kDAAkD,EAClD,EAAE,EACF,eAAe,EACf,iBAAiB,EAAE,IAAI,EAAE,IAAI,aAAa,EAC1C,EAAE,EACF,sBAAsB,EACtB,YAAY,EAAE,IAAI,EAAE,IAAI,YAAY,CACrC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,SAAS,EACT,6DAA6D,EAC7D,iDAAiD,EACjD,4DAA4D,EAC5D,2CAA2C,CAC5C,CAAA;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-kingdom",
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "独立 dsh 插件:安装后会话内初始化/接入本地王国,Territory/Binding CRUD + Task 治理闭环(Worker Claim ≠ Fact)+ Execution 生命周期",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./lib/index.js",
|
|
7
|
+
"types": "./lib/types/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./lib/types/index.d.ts",
|
|
11
|
+
"default": "./lib/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"lib",
|
|
18
|
+
"cordis.patch.yml"
|
|
19
|
+
],
|
|
20
|
+
"license": "BSD-3-Clause",
|
|
21
|
+
"keywords": [
|
|
22
|
+
"dsh",
|
|
23
|
+
"deepseek-harness",
|
|
24
|
+
"dsh-plugin",
|
|
25
|
+
"kingdom",
|
|
26
|
+
"governance",
|
|
27
|
+
"multi-agent"
|
|
28
|
+
],
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/lusblead/dsh-Kingdom.git"
|
|
32
|
+
},
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/lusblead/dsh-Kingdom/issues"
|
|
35
|
+
},
|
|
36
|
+
"homepage": "https://github.com/lusblead/dsh-Kingdom#readme",
|
|
37
|
+
"engines": {
|
|
38
|
+
"node": ">=22.19"
|
|
39
|
+
},
|
|
40
|
+
"dsh": {
|
|
41
|
+
"bundle": {
|
|
42
|
+
"patch": "./cordis.patch.yml"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"peerDependencies": {
|
|
46
|
+
"@deepseek-ai/dsh-commands": ">=0.0.1-rc <2",
|
|
47
|
+
"@deepseek-ai/dsh-llm": ">=0.0.1-rc <2",
|
|
48
|
+
"@deepseek-ai/dsh-tools": ">=0.0.1-rc <2",
|
|
49
|
+
"cordis": ">=4.0.0-rc <5",
|
|
50
|
+
"schemastery": "^3.18.0"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/node": "^24.13.3",
|
|
54
|
+
"typescript": "^5.9.0"
|
|
55
|
+
},
|
|
56
|
+
"scripts": {
|
|
57
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
58
|
+
}
|
|
59
|
+
}
|