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.
Files changed (46) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +184 -0
  3. package/cordis.patch.yml +6 -0
  4. package/lib/core/binding.js +57 -0
  5. package/lib/core/binding.js.map +1 -0
  6. package/lib/core/db.js +521 -0
  7. package/lib/core/db.js.map +1 -0
  8. package/lib/core/execution.js +88 -0
  9. package/lib/core/execution.js.map +1 -0
  10. package/lib/core/kingdom.js +117 -0
  11. package/lib/core/kingdom.js.map +1 -0
  12. package/lib/core/task-service.js +581 -0
  13. package/lib/core/task-service.js.map +1 -0
  14. package/lib/core/task.js +93 -0
  15. package/lib/core/task.js.map +1 -0
  16. package/lib/core/territory.js +47 -0
  17. package/lib/core/territory.js.map +1 -0
  18. package/lib/gui/contract.js +53 -0
  19. package/lib/gui/contract.js.map +1 -0
  20. package/lib/gui/server.js +204 -0
  21. package/lib/gui/server.js.map +1 -0
  22. package/lib/gui/snapshot.js +379 -0
  23. package/lib/gui/snapshot.js.map +1 -0
  24. package/lib/index.js +489 -0
  25. package/lib/index.js.map +1 -0
  26. package/lib/paths.js +23 -0
  27. package/lib/paths.js.map +1 -0
  28. package/lib/types/core/binding.d.ts +11 -0
  29. package/lib/types/core/db.d.ts +261 -0
  30. package/lib/types/core/execution.d.ts +51 -0
  31. package/lib/types/core/kingdom.d.ts +34 -0
  32. package/lib/types/core/task-service.d.ts +107 -0
  33. package/lib/types/core/task.d.ts +60 -0
  34. package/lib/types/core/territory.d.ts +9 -0
  35. package/lib/types/gui/contract.d.ts +226 -0
  36. package/lib/types/gui/server.d.ts +26 -0
  37. package/lib/types/gui/snapshot.d.ts +44 -0
  38. package/lib/types/index.d.ts +80 -0
  39. package/lib/types/paths.d.ts +6 -0
  40. package/lib/types/worker/dsh-subagent.d.ts +79 -0
  41. package/lib/types/worker/executor.d.ts +121 -0
  42. package/lib/worker/dsh-subagent.js +117 -0
  43. package/lib/worker/dsh-subagent.js.map +1 -0
  44. package/lib/worker/executor.js +94 -0
  45. package/lib/worker/executor.js.map +1 -0
  46. package/package.json +59 -0
package/lib/index.js ADDED
@@ -0,0 +1,489 @@
1
+ import { defineTool } from '@deepseek-ai/dsh-tools';
2
+ import z from 'schemastery';
3
+ import { KingdomManager } from './core/kingdom.js';
4
+ import { bindRole, listBindings } from './core/binding.js';
5
+ import { createTerritory, listTerritories } from './core/territory.js';
6
+ import { abortExecution, assignTask, listTasks, pauseExecution, planTask, reclaimOrphanExecutions, resumeExecution, reviewTask, startTask, } from './core/task-service.js';
7
+ import { buildSnapshot, buildTaskDetail, toEventView } from './gui/snapshot.js';
8
+ import { startGuiServer } from './gui/server.js';
9
+ import { DshSubagentExecutor } from './worker/dsh-subagent.js';
10
+ export const name = 'dsh-kingdom';
11
+ export const inject = ['tools', 'commands'];
12
+ export const Config = z.object({
13
+ kingdomName: z.string().default('My Kingdom'),
14
+ ownerName: z.string().default(''),
15
+ /** Worker 执行用的 subagent provider(dsh base bundle 默认注册 spawn / fork)。 */
16
+ workerProvider: z.string().default('spawn'),
17
+ /**
18
+ * 本地 GUI 通道端口。**默认 0 = 关闭** —— 不在用户不知情时打开监听端口。
19
+ * 设为非零值即启用,只绑定 127.0.0.1。
20
+ */
21
+ guiPort: z.number().default(0),
22
+ /** 可选 bearer token;设置后 GUI 所有请求都要带 Authorization 头。 */
23
+ guiToken: z.string().default(''),
24
+ /** CORS 允许的 Origin 列表;默认放开(服务只绑本机回环)。 */
25
+ guiAllowOrigins: z.array(z.string()).default(['*']),
26
+ /**
27
+ * 角色鉴权强度。
28
+ * `declarative`(默认,Phase 1/2 延续)只校验"王国中存在该角色绑定",
29
+ * **不验证调用者就是该角色** —— snapshot 会如实报 `trustLevel: local-demo`。
30
+ * `session-bound` 额外要求调用方 session 与 binding.session_id 一致。
31
+ */
32
+ authMode: z.union(['declarative', 'session-bound']).default('declarative'),
33
+ });
34
+ export function apply(ctx, config) {
35
+ // 单一王国管理器(自包含 SQLite;KingdomStore 连接生命周期 = 插件生命周期)
36
+ const manager = new KingdomManager({
37
+ kingdomName: config.kingdomName,
38
+ ownerName: config.ownerName || undefined,
39
+ });
40
+ // 卸载/重载时关闭 SQLite 连接(disposer 由 fiber 自动收集执行)
41
+ ctx.effect(() => () => manager.close());
42
+ const store = manager.storeHandle;
43
+ const requireKingdom = () => {
44
+ const kingdom = store.getDefaultKingdom();
45
+ return kingdom ? kingdom.kingdom_id : null;
46
+ };
47
+ /** 如实声明本次部署的鉴权强度,GUI 必须把它显示出来。 */
48
+ const authView = config.authMode === 'session-bound'
49
+ ? {
50
+ mode: 'session-bound',
51
+ trustLevel: 'session-verified',
52
+ note: '命令调用方的 session 必须与角色 binding 的 session_id 一致。',
53
+ }
54
+ : {
55
+ mode: 'declarative',
56
+ trustLevel: 'local-demo',
57
+ note: '仅校验王国中存在对应角色绑定,不验证调用者身份。'
58
+ + 'GUI 若提供派发/复核/返工按钮,必须显著标注为「本地可信演示权限」。',
59
+ };
60
+ const commandContext = (kingdomId, principal) => ({ kingdomId, auth: authView, ...principal ? { principal } : {} });
61
+ // ── 加载期回收:清掉上一个插件生命周期留下的孤儿 Execution ──────
62
+ //
63
+ // Worker 是 one-shot in-process subagent,生命周期绑在插件 fiber 上,
64
+ // 不可能跨越重载存活。所以开库时看到的"活跃"执行必然是残骸。
65
+ // 不回收的话,GUI 会看到骑士永远在工作,且该任务再也无法重新 start。
66
+ {
67
+ const kingdomId = requireKingdom();
68
+ if (kingdomId) {
69
+ const reclaimed = reclaimOrphanExecutions(store, kingdomId);
70
+ if (reclaimed > 0) {
71
+ ctx.logger.info(`dsh-kingdom:已回收 ${reclaimed} 个上次运行残留的 Execution(标记为 ABORTED)`);
72
+ }
73
+ }
74
+ }
75
+ // ── 工具注册(全部挂 ctx.effect)────────────────────────────
76
+ ctx.effect(() => ctx.tools.register(defineTool({
77
+ name: 'kingdom_init',
78
+ description: '初始化或接入本地王国(幂等:无则新建 kingdom.db,有则接入)',
79
+ parameters: {},
80
+ output: {
81
+ schema: { type: 'string' },
82
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
83
+ },
84
+ async execute() {
85
+ const result = manager.init();
86
+ return result.detail;
87
+ },
88
+ })), 'dsh-kingdom: init tool');
89
+ ctx.effect(() => ctx.tools.register(defineTool({
90
+ name: 'kingdom_status',
91
+ description: '查询当前王国真实状态:王国/Owner/领地/角色绑定/最近事件',
92
+ parameters: {},
93
+ output: {
94
+ schema: { type: 'string' },
95
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
96
+ },
97
+ async execute() {
98
+ return store.statusSummary();
99
+ },
100
+ })), 'dsh-kingdom: status tool');
101
+ ctx.effect(() => ctx.tools.register(defineTool({
102
+ name: 'kingdom_create_territory',
103
+ description: '在当前王国创建一个领地(Territory),绑定工作区路径',
104
+ parameters: {
105
+ name: { type: 'string', required: true, description: '领地名,如 RAG 研发领' },
106
+ workspace_path: { type: 'string', description: '工作区绝对路径,默认当前目录' },
107
+ summary: { type: 'string', description: '领地一句话使命(可选)' },
108
+ },
109
+ output: {
110
+ schema: { type: 'string' },
111
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
112
+ },
113
+ async execute(args) {
114
+ const kingdomId = requireKingdom();
115
+ if (!kingdomId)
116
+ return '尚未初始化王国。请先 /kingdom init 或说“初始化王国”。';
117
+ return createTerritory(store, {
118
+ kingdomId,
119
+ name: args.name,
120
+ workspacePath: args.workspace_path,
121
+ summary: args.summary,
122
+ });
123
+ },
124
+ })), 'dsh-kingdom: create-territory tool');
125
+ ctx.effect(() => ctx.tools.register(defineTool({
126
+ name: 'kingdom_list_territories',
127
+ description: '列出当前王国的全部领地',
128
+ parameters: {},
129
+ output: {
130
+ schema: { type: 'string' },
131
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
132
+ },
133
+ async execute() {
134
+ const kingdomId = requireKingdom();
135
+ if (!kingdomId)
136
+ return '尚未初始化王国。请先 /kingdom init。';
137
+ return listTerritories(store, kingdomId);
138
+ },
139
+ })), 'dsh-kingdom: list-territories tool');
140
+ ctx.effect(() => ctx.tools.register(defineTool({
141
+ name: 'kingdom_bind_role',
142
+ description: '绑定一个角色(OWNER/CHANCELLOR/SUPERVISOR/WORKER)到 DSH 会话,Role 与 Session 解耦',
143
+ parameters: {
144
+ role_type: { type: 'string', required: true, description: '角色:OWNER/CHANCELLOR/SUPERVISOR/WORKER' },
145
+ role_name: { type: 'string', description: '角色名,如 Worker-01' },
146
+ session_id: { type: 'string', description: '绑定的 dsh session id(可选)' },
147
+ },
148
+ output: {
149
+ schema: { type: 'string' },
150
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
151
+ },
152
+ async execute(args) {
153
+ const kingdomId = requireKingdom();
154
+ if (!kingdomId)
155
+ return '尚未初始化王国。请先 /kingdom init。';
156
+ return bindRole(store, {
157
+ kingdomId,
158
+ roleType: args.role_type,
159
+ roleName: args.role_name,
160
+ sessionId: args.session_id,
161
+ });
162
+ },
163
+ })), 'dsh-kingdom: bind-role tool');
164
+ ctx.effect(() => ctx.tools.register(defineTool({
165
+ name: 'kingdom_list_bindings',
166
+ description: '列出当前王国的全部角色绑定',
167
+ parameters: {},
168
+ output: {
169
+ schema: { type: 'string' },
170
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
171
+ },
172
+ async execute() {
173
+ const kingdomId = requireKingdom();
174
+ if (!kingdomId)
175
+ return '尚未初始化王国。请先 /kingdom init。';
176
+ return listBindings(store, kingdomId);
177
+ },
178
+ })), 'dsh-kingdom: list-bindings tool');
179
+ // ── Phase 2:Task 治理闭环(5 个工具)──────────────────────────
180
+ //
181
+ // 注意这里**没有** kingdom_report_result 工具。Worker 是 one-shot subagent,
182
+ // 它的结构化结果经 outputSchema 由宿主(DshSubagentExecutor)接收并落
183
+ // worker_results —— 这是裁决 2「Worker ≠ Subagent Session」的实现方式。
184
+ // Worker 自己没有任何工具能碰 Task 状态。
185
+ ctx.effect(() => ctx.tools.register(defineTool({
186
+ name: 'kingdom_plan_task',
187
+ description: '规划一个任务并落入领地(Chancellor 职权),创建后状态为 CREATED',
188
+ parameters: {
189
+ title: { type: 'string', required: true, description: '任务标题' },
190
+ description: { type: 'string', description: '任务详细描述' },
191
+ acceptance_criteria: { type: 'string', description: '验收标准(Supervisor 审查的客观依据,强烈建议填写)' },
192
+ territory_id: { type: 'string', description: '领地 id;王国只有一个领地时可省略' },
193
+ },
194
+ output: {
195
+ schema: { type: 'string' },
196
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
197
+ },
198
+ async execute(args) {
199
+ const kingdomId = requireKingdom();
200
+ if (!kingdomId)
201
+ return '尚未初始化王国。请先 /kingdom init。';
202
+ return planTask(store, commandContext(kingdomId), {
203
+ title: args.title,
204
+ description: args.description,
205
+ acceptanceCriteria: args.acceptance_criteria,
206
+ territoryId: args.territory_id,
207
+ }).message;
208
+ },
209
+ })), 'dsh-kingdom: plan-task tool');
210
+ ctx.effect(() => ctx.tools.register(defineTool({
211
+ name: 'kingdom_assign_task',
212
+ description: '把任务派给 Worker 绑定(Supervisor 职权),CREATED → ASSIGNED',
213
+ parameters: {
214
+ task_id: { type: 'string', required: true, description: '任务 id' },
215
+ worker_binding_id: { type: 'string', description: 'Worker binding id;省略则取王国里的 WORKER 绑定' },
216
+ },
217
+ output: {
218
+ schema: { type: 'string' },
219
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
220
+ },
221
+ async execute(args) {
222
+ const kingdomId = requireKingdom();
223
+ if (!kingdomId)
224
+ return '尚未初始化王国。请先 /kingdom init。';
225
+ return assignTask(store, commandContext(kingdomId), {
226
+ taskId: args.task_id,
227
+ workerBindingId: args.worker_binding_id,
228
+ }).message;
229
+ },
230
+ })), 'dsh-kingdom: assign-task tool');
231
+ ctx.effect(() => ctx.tools.register(defineTool({
232
+ name: 'kingdom_start_task',
233
+ description: '触发 Worker 执行任务并等待其结果(Supervisor 职权)。结果只会让任务进入 REVIEW,不会直接完成任务',
234
+ parameters: {
235
+ task_id: { type: 'string', required: true, description: '任务 id(状态需为 ASSIGNED,或 REWORK 后的 RUNNING)' },
236
+ },
237
+ output: {
238
+ schema: { type: 'string' },
239
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
240
+ },
241
+ async execute(args, exec) {
242
+ const kingdomId = requireKingdom();
243
+ if (!kingdomId)
244
+ return '尚未初始化王国。请先 /kingdom init。';
245
+ // Task Core 只认 WorkerExecutor 接口;subagents 的解析留在工具边界。
246
+ const subagents = ctx.get('subagents');
247
+ if (!subagents) {
248
+ return '错误:当前 dsh 组合未提供 subagents 服务,无法执行 Worker。'
249
+ + '请确认已加载 @deepseek-ai/dsh-subagent 及其 provider(base bundle 默认提供 spawn/fork)。';
250
+ }
251
+ if (!exec.agent) {
252
+ return '错误:kingdom_start_task 需要由 Agent 调用(缺少委派父 Agent),无法启动 Worker subagent。';
253
+ }
254
+ const executor = new DshSubagentExecutor({
255
+ subagents,
256
+ provider: config.workerProvider || 'spawn',
257
+ parent: exec.agent,
258
+ signal: exec.signal,
259
+ });
260
+ const result = await startTask(store, executor, commandContext(kingdomId), { taskId: args.task_id });
261
+ return result.message;
262
+ },
263
+ })), 'dsh-kingdom: start-task tool');
264
+ ctx.effect(() => ctx.tools.register(defineTool({
265
+ name: 'kingdom_review_task',
266
+ description: '审查 Worker 提交的结果并裁定 ACCEPT/REWORK/FAIL(Supervisor 职权)。这是任务能变成 DONE 的唯一路径',
267
+ parameters: {
268
+ task_id: { type: 'string', required: true, description: '任务 id(状态需为 REVIEW)' },
269
+ decision: { type: 'string', required: true, description: 'ACCEPT(接受→DONE)/ REWORK(返工→RUNNING)/ FAIL(判失败→FAILED)' },
270
+ reason: { type: 'string', description: '裁定理由;REWORK 与 FAIL 必填' },
271
+ },
272
+ output: {
273
+ schema: { type: 'string' },
274
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
275
+ },
276
+ async execute(args) {
277
+ const kingdomId = requireKingdom();
278
+ if (!kingdomId)
279
+ return '尚未初始化王国。请先 /kingdom init。';
280
+ return reviewTask(store, commandContext(kingdomId), {
281
+ taskId: args.task_id,
282
+ decision: args.decision,
283
+ reason: args.reason,
284
+ }).message;
285
+ },
286
+ })), 'dsh-kingdom: review-task tool');
287
+ ctx.effect(() => ctx.tools.register(defineTool({
288
+ name: 'kingdom_list_tasks',
289
+ description: '列出王国任务的真实状态(含尝试次数与最新 Worker Claim 摘要),可按领地/状态过滤',
290
+ parameters: {
291
+ territory_id: { type: 'string', description: '按领地过滤' },
292
+ status: { type: 'string', description: '按状态过滤:CREATED/ASSIGNED/RUNNING/REVIEW/DONE/FAILED' },
293
+ },
294
+ output: {
295
+ schema: { type: 'string' },
296
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
297
+ },
298
+ async execute(args) {
299
+ const kingdomId = requireKingdom();
300
+ if (!kingdomId)
301
+ return '尚未初始化王国。请先 /kingdom init。';
302
+ return listTasks(store, kingdomId, {
303
+ territoryId: args.territory_id,
304
+ status: args.status,
305
+ });
306
+ },
307
+ })), 'dsh-kingdom: list-tasks tool');
308
+ // ── Phase 3:GUI 适配(结构化读接口 + Execution 控制)─────────────
309
+ //
310
+ // 架构原则:**插件输出治理事实和活动语义,GUI 决定人物、场景和动画。**
311
+ // 因此这里返回的 stage 只有 { role, state, activity },
312
+ // 不会出现任何贴图名、clip id 或场景文件名。
313
+ const jsonTool = (name, description, parameters, execute) => ctx.tools.register(defineTool({
314
+ name,
315
+ description,
316
+ parameters: parameters,
317
+ output: {
318
+ schema: { type: 'string' },
319
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
320
+ },
321
+ async execute(args) {
322
+ return JSON.stringify(execute(args), null, 2);
323
+ },
324
+ }));
325
+ ctx.effect(() => jsonTool('kingdom_snapshot', '返回王国的结构化快照 JSON(王国/Owner/绑定/领地/任务/最新 Claim/活跃执行/表演状态/最近事件/revision),供 GUI 或需要精确数据的调用方使用', {}, () => {
326
+ const kingdomId = requireKingdom();
327
+ if (!kingdomId)
328
+ return { error: 'KINGDOM_NOT_INITIALIZED', message: '尚未初始化王国。请先 /kingdom init。' };
329
+ return buildSnapshot(store, { auth: authView });
330
+ }), 'dsh-kingdom: snapshot tool');
331
+ ctx.effect(() => jsonTool('kingdom_task_detail', '返回单个任务的结构化详情 JSON:验收标准、尝试历史、全部 Claim、Supervisor 决策、执行记录、关联事件与允许的下一步动作', { task_id: { type: 'string', required: true, description: '任务 id' } }, (args) => {
332
+ const kingdomId = requireKingdom();
333
+ if (!kingdomId)
334
+ return { error: 'KINGDOM_NOT_INITIALIZED', message: '尚未初始化王国。请先 /kingdom init。' };
335
+ const detail = buildTaskDetail(store, kingdomId, args.task_id ?? '');
336
+ return detail ?? { error: 'TASK_NOT_FOUND', message: `找不到任务 ${args.task_id}。` };
337
+ }), 'dsh-kingdom: task-detail tool');
338
+ ctx.effect(() => ctx.tools.register(defineTool({
339
+ name: 'kingdom_execution_control',
340
+ description: '控制一次 Worker 执行的运行状态(Supervisor 职权):pause 暂停 / resume 恢复 / abort 终止。只影响运行事实,不改变任务的治理状态',
341
+ parameters: {
342
+ execution_id: { type: 'string', required: true, description: 'Execution id(可从 kingdom_snapshot 的 liveExecutions 获取)' },
343
+ action: { type: 'string', required: true, description: 'pause / resume / abort' },
344
+ reason: { type: 'string', description: '原因(可选,会记入事件)' },
345
+ },
346
+ output: {
347
+ schema: { type: 'string' },
348
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
349
+ },
350
+ async execute(args) {
351
+ const kingdomId = requireKingdom();
352
+ if (!kingdomId)
353
+ return '尚未初始化王国。请先 /kingdom init。';
354
+ const input = { executionId: args.execution_id, reason: args.reason };
355
+ const cmd = commandContext(kingdomId);
356
+ switch (args.action.trim().toLowerCase()) {
357
+ case 'pause': return pauseExecution(store, cmd, input).message;
358
+ case 'resume': return resumeExecution(store, cmd, input).message;
359
+ case 'abort': return abortExecution(store, cmd, input).message;
360
+ default: return `错误:action 必须是 pause / resume / abort 之一,收到 "${args.action}"。`;
361
+ }
362
+ },
363
+ })), 'dsh-kingdom: execution-control tool');
364
+ // ── 本地 GUI 通道(默认关闭;配置 guiPort 后启用)────────────────
365
+ if (config.guiPort > 0) {
366
+ ctx.effect(() => startGuiServer({
367
+ snapshot: () => buildSnapshot(store, { auth: authView }),
368
+ taskDetail: (taskId) => {
369
+ const kingdomId = requireKingdom();
370
+ return kingdomId ? buildTaskDetail(store, kingdomId, taskId) : null;
371
+ },
372
+ eventsSince: (afterSeq, limit) => {
373
+ const kingdomId = requireKingdom();
374
+ if (!kingdomId)
375
+ return { revision: 0, events: [] };
376
+ return {
377
+ revision: store.revision(kingdomId),
378
+ events: store.listEventsSince(kingdomId, afterSeq, limit).map(toEventView),
379
+ };
380
+ },
381
+ command: (name, payload) => runGuiCommand(name, payload),
382
+ }, {
383
+ port: config.guiPort,
384
+ ...config.guiToken ? { token: config.guiToken } : {},
385
+ allowOrigins: config.guiAllowOrigins,
386
+ logger: ctx.logger,
387
+ }), 'dsh-kingdom: GUI channel');
388
+ }
389
+ const guiFailure = (errorCode, message) => ({
390
+ ok: false,
391
+ errorCode,
392
+ message,
393
+ task: null,
394
+ execution: null,
395
+ emittedEvents: [],
396
+ allowedActions: [],
397
+ revision: requireKingdom() ? store.revision(requireKingdom()) : 0,
398
+ });
399
+ /** GUI 写命令的分发。GUI 仍然经插件执行命令,绝不直接写 SQLite。 */
400
+ async function runGuiCommand(name, payload) {
401
+ const kingdomId = requireKingdom();
402
+ if (!kingdomId) {
403
+ return guiFailure('KINGDOM_NOT_INITIALIZED', '尚未初始化王国。请先 /kingdom init。');
404
+ }
405
+ const str = (key) => typeof payload[key] === 'string' ? payload[key] : '';
406
+ const opt = (key) => typeof payload[key] === 'string' ? payload[key] : undefined;
407
+ const principal = typeof payload.session_id === 'string'
408
+ ? { sessionId: payload.session_id }
409
+ : undefined;
410
+ const cmd = commandContext(kingdomId, principal);
411
+ switch (name) {
412
+ case 'plan':
413
+ return planTask(store, cmd, {
414
+ title: str('title'),
415
+ description: opt('description'),
416
+ acceptanceCriteria: opt('acceptance_criteria'),
417
+ territoryId: opt('territory_id'),
418
+ });
419
+ case 'assign':
420
+ return assignTask(store, cmd, { taskId: str('task_id'), workerBindingId: opt('worker_binding_id') });
421
+ case 'review':
422
+ return reviewTask(store, cmd, {
423
+ taskId: str('task_id'),
424
+ decision: str('decision'),
425
+ reason: opt('reason'),
426
+ });
427
+ case 'execution.pause':
428
+ return pauseExecution(store, cmd, { executionId: str('execution_id'), reason: opt('reason') });
429
+ case 'execution.resume':
430
+ return resumeExecution(store, cmd, { executionId: str('execution_id'), reason: opt('reason') });
431
+ case 'execution.abort':
432
+ return abortExecution(store, cmd, { executionId: str('execution_id'), reason: opt('reason') });
433
+ case 'start':
434
+ // 诚实的 Beta 边界:启动 Worker 需要一个**活的委派父 Agent**
435
+ // (in-process provider 从它派生 workspace / 血缘 / 委派深度)。
436
+ // HTTP 请求没有 Agent 上下文,所以这条命令只能从 DSH 会话里
437
+ // 经 kingdom_start_task 触发。这里明确报错,而不是伪造一次执行。
438
+ return guiFailure('EXECUTOR_UNAVAILABLE', 'kingdom_start_task 需要由 DSH 会话中的 Agent 触发(Worker subagent 需要委派父 Agent)。'
439
+ + 'GUI 请引导用户在 DSH 会话中说“开始执行这个任务”,或调用 kingdom_start_task 工具。');
440
+ default:
441
+ return guiFailure('INVALID_INPUT', `未知命令 "${name}"。`);
442
+ }
443
+ }
444
+ // ── Slash 命令(确定性管理入口)──────────────────────────────
445
+ ctx.effect(() => ctx.commands.register({
446
+ name: 'kingdom',
447
+ description: '初始化/接入本地王国,查看王国状态',
448
+ input: { hint: 'init | status | reset | help' },
449
+ handler: async (invocation) => {
450
+ const line = invocation.rawInput.trim();
451
+ const [sub] = line.split(/[\s]+/u).filter(Boolean);
452
+ switch (sub ?? '') {
453
+ case 'init': {
454
+ const result = manager.init();
455
+ return { kind: 'success', text: result.detail };
456
+ }
457
+ case 'status': {
458
+ return { kind: 'success', text: store.statusSummary() };
459
+ }
460
+ case 'reset': {
461
+ const result = manager.rescan();
462
+ return { kind: 'success', text: `已重新接入。${result.detail}` };
463
+ }
464
+ case 'help':
465
+ case '':
466
+ return {
467
+ kind: 'success',
468
+ text: [
469
+ 'dsh-Kingdom v0.3(Phase 3:GUI 适配)',
470
+ '/kingdom init 初始化或接入本地王国(幂等)',
471
+ '/kingdom status 查看王国真实状态',
472
+ '/kingdom reset 重新扫描接入(不删除数据)',
473
+ '也可用自然语言:初始化王国 / 创建领地 / 绑定角色 / 规划任务 / 派发任务 / 审查结果',
474
+ '',
475
+ '任务闭环:plan → assign → start(Worker 执行)→ review(ACCEPT/REWORK/FAIL)',
476
+ 'Worker 交回的结果只是待审查的 Claim(任务进入 REVIEW),',
477
+ '只有 Supervisor 的 ACCEPT 才能让任务成为 DONE。',
478
+ '',
479
+ 'GUI:kingdom_snapshot / kingdom_task_detail 返回结构化 JSON;',
480
+ '配置 guiPort 可开本地 HTTP 通道(默认关闭,只绑 127.0.0.1)。',
481
+ ].join('\n'),
482
+ };
483
+ default:
484
+ return { kind: 'error', text: `未知子命令 "${sub}"。可用:init / status / reset / help` };
485
+ }
486
+ },
487
+ }), 'dsh-kingdom: /kingdom command');
488
+ }
489
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/paths.js ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * dsh-kingdom — 路径解析。
3
+ * kingdom.db 固定位于 DSH_HOME(或 ~/.dsh)下的 kingdom/ 子目录,
4
+ * 自包含、位置固定、重启可恢复。
5
+ */
6
+ import { homedir } from 'node:os';
7
+ import { join } from 'node:path';
8
+ /** 解析 dsh 主目录:DSH_HOME 环境变量优先,否则 ~/.dsh。 */
9
+ export function resolveDshHome() {
10
+ const env = process.env.DSH_HOME;
11
+ if (env && env.trim().length > 0)
12
+ return env.trim();
13
+ return join(homedir(), '.dsh');
14
+ }
15
+ /** kingdom 数据根目录:<dshHome>/kingdom */
16
+ export function kingdomRoot() {
17
+ return join(resolveDshHome(), 'kingdom');
18
+ }
19
+ /** kingdom 数据库文件:<dshHome>/kingdom/kingdom.db */
20
+ export function kingdomDbPath() {
21
+ return join(kingdomRoot(), 'kingdom.db');
22
+ }
23
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,4CAA4C;AAC5C,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAA;IAChC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;IACnD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAA;AAChC,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,SAAS,CAAC,CAAA;AAC1C,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC,CAAA;AAC1C,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { KingdomStore } from './db.js';
2
+ export declare const ROLE_TYPES: readonly ["OWNER", "CHANCELLOR", "SUPERVISOR", "WORKER"];
3
+ export type RoleType = (typeof ROLE_TYPES)[number];
4
+ export interface BindRoleInput {
5
+ kingdomId: string;
6
+ roleType: string;
7
+ roleName?: string;
8
+ sessionId?: string;
9
+ }
10
+ export declare function bindRole(store: KingdomStore, input: BindRoleInput): string;
11
+ export declare function listBindings(store: KingdomStore, kingdomId: string): string;