Releases: lusblead/dsh-Kingdom
Releases · lusblead/dsh-Kingdom
Release list
v0.7.0
v0.7.0 — M2 Organization Scale
Kingdom 从一条治理链升级为可横向扩展的 Agent 组织(v0.7.0 命题:过去发生的事情仍可解释,当前权力只有一个确定答案)。
New
- Role cardinality: SUPERVISOR ×N / WORKER ×N(OWNER/CHANCELLOR 保持 singleton 为 Domain Policy);
getBindingsByRole()/ explicitworker_binding_id; 多 Worker 派发(0/1/N 规则,WORKER_AMBIGUOUS)。 - Assignment Ledger: 权威派遣历史
task_assignments(previous 链表 + DB 层
one_active_assignment_per_task唯一索引——一个任务永远只有一个当前派遣);
tasks.assigned_binding_id只是当前投影。 - Handoff:
reviewTask(decision=HANDOFF, to_binding_id, reason)——原子治理事件
(关旧派遣 + 建新派遣 + 状态转移 +TASK_HANDED_OFF事件,任一步失败整体回滚);
新 Worker 上下文含原任务/验收/上一 Claim/artifacts/risks/handoff reason。 - Territory Scope:
kingdom_set_territory_supervisor(主理关系);未指派领地
fail-closed(TERRITORY_SUPERVISOR_MISSING);跨领地治理 DENY(TASK_OUT_OF_SCOPE,
session-bound 下强制);v2→v3 迁移自动 backfill(单 Supervisor 接管 NULL scope)。
Governance
- Binding tombstone: unbind = ACTIVE→RETIRED(+ retired_at/reason)——历史引用
(派遣/执行/事件 actor/领地主理)永远可解析,不再物理删除。 - Territory tombstone: delete = ACTIVE→DELETED(+ deleted_at/reason)——历史任务归属可解析。
- Topology Administration Plane: territory.create / territory.delete /
territory.set_supervisor 与 binding.* / execution_profile 一样,session-bound 下仅真实 OWNER。 - Schema v3: versioned transactional idempotent migration(role_bindings/territories
tombstone 列 + task_assignments + backfill +SCHEMA_VERSION=3)。
Assets
- dsh-kingdom-0.7.0.tgz (npm
dsh-kingdom@0.7.0, latest) - dsh-kingdom-gui-0.7.0.zip (multi-worker assign selector; execution-profile display)
Quality
- Plugin tests 33/33(M2 Gate: topology/scope/ledger/history/compat + M1 全量回归)
- GUI tests 43/43
- M2-F Scale Gate PASSED (live): 2 territories × 2 supervisors × 2 workers (different
ExecutionProfiles) — independent executions with distinct evidence columns; real HANDOFF
(Worker-A attempt 1 → Worker-B attempt 2) with full ledger chain andTASK_HANDED_OFFevent;
zero double-active assignments; retired bindings and deleted territories remain resolvable. - Design:
docs/M2-ORGANIZATION-SCALE-DESIGN.md(frozen v2)
v0.6.0
v0.6.0 — M1-C Execution Truth
New
- ExecutionProfile on Worker Binding (
kingdom_set_execution_profile, OWNER-only under session-bound):
{ provider?, model? }decides who actually executes — the Worker Binding now truly
determines the runtime, not just the record. - ExecutorFactory is the single execution-resolution entry:
assigned_binding_id → Binding → ExecutionProfile → executor; Core still depends only onWorkerExecutor. - Execution evidence columns on
executions(SQL-queryable):executor_kind,
provider,provider_source(binding/global-fallback),requested_model,
resolved_model,model_source(binding/parent-inherited/unknown), plus an
immutable resolution snapshot JSON (requested/resolved/source).
Governance
- Schema v2 (first versioned, transactional, idempotent migration): v1 DBs converge
on open;SCHEMA_VERSION=2is now a truthful field. binding.model_nameis seat metadata only — ExecutorFactory MUST NOT read it
(hard invariant, test-locked).resolved_modelis what DSH runtime actually resolved (in-process observed);
null= seam has no evidence, never "no model". Future transport telemetry adds
observed_model.- No profile → compatible fallback to global
workerProviderwith explicit
global-fallback+parent-inheritedevidence.
Assets
- dsh-kingdom-0.6.0.tgz (npm
dsh-kingdom@0.6.0, latest) - dsh-kingdom-gui-0.6.0.zip (execution-profile display; seat-model vs exec-model vs resolved-model kept distinct)
Quality
- Plugin tests 27/27 (incl. Schema v2 migration, admin-authz for profiles, E1/E2/E3
resolution, 4+1 identity matrix, execution evidence chain) - GUI tests 42/42
- M1-D Release Gate PASSED: live 3-run attribution experiment (E1 binding-specified,
E2 provider-only, E3 no-profile) — executions evidence columns match each case exactly,
resolved_modelobserved from the real subagent runtime - Design:
docs/M1-C-EXECUTION-TRUTH-DESIGN.md(frozen v2); audit:docs/M1-TRUE-GOVERNANCE-AUDIT.md
v0.5.2
v0.5.2 — True Governance Security Hotfix
Security (M1-B)
- Trusted Governance Administration Plane: role appointment / dismissal / rebinding
(kingdom_bind_role/kingdom_unbind_role/kingdom_bind_session) now require the
real OWNER session undersession-boundmode. A plain session can no longer appoint
itself or seize a seat. (declarativedemo mode stays as-is and is honestly labelled
local-demo.) - GUI principal spoof removed: the gateway no longer trusts a client-supplied
session_id. Undersession-bound, all GUI write commands fail closed with
SESSION_AUTH_REQUIRED— the GUI can never impersonate a governance role. - Session id exposure reduced: binding views expose only a masked
sessionDisplay(e.g.…8f21); full session ids remain in the audit event surface only. - Audit actor correction: governance events now record the actual operator
(actor_role=OWNER,actor_id=<owner binding>,target=<binding>), so "who appointed
whom" is answerable.
Governance
- Management actions are fail-closed when the OWNER binding has no session
(cannot verify, does not guess).
Assets
- dsh-kingdom-0.5.2.tgz (npm
dsh-kingdom@0.5.2, latest) - dsh-kingdom-gui-0.5.2.zip (masked session display)
Quality
- Plugin tests 13/13 (incl. admin-authz matrix, GUI guard, masking)
- GUI tests 42/42
- Source audit:
docs/M1-TRUE-GOVERNANCE-AUDIT.md(G1–G4 evidence incl. end-to-end spoof chain)
v0.5.1 — 领地删除(治理级联语义)
v0.5.1
New
- Territory deletion (
kingdom_delete_territorytool + gatewayterritory.delete+ GUI ops-panel delete control) - Safe-by-default deletion guard: any task under the territory rejects removal
- Force cascade with a governance audit trail
- GUI delete controls with explicit cascade confirmation
Governance
- Active tasks (CREATED/ASSIGNED/RUNNING/REVIEW) become FAILED on forced territory removal
- DONE / FAILED facts remain immutable
- All cascade operations are recorded as events (
TERRITORY_DELETED/TASK_FAILED), payload carries the full task ledger (original → final status) - Live executions are aborted during the cascade
Assets
- dsh-kingdom-0.5.1.tgz (npm
dsh-kingdom@0.5.1, latest) - dsh-kingdom-gui-0.5.1.zip (standalone front-end, includes the new delete controls)
Quality
- Plugin tests 6/6 (node --test, node:sqlite in-memory)
- GUI tests 41/41 (38 baseline + 3 delete-control cases)
- Clean-environment install acceptance 4/4; three-channel smoke (tool / gateway / GUI build) on the live kingdom
dsh-kingdom v0.5.0
dsh-kingdom v0.5.0 — GUI 写命令面 + 配套前端
自 v0.4.0 以来的变更:
新增(M2:GUI 写路径)
- 网关写命令面(配合 GUI 操作台,均要求 \X-Kingdom-Client\ 头防 CSRF):
- \init\:未初始化时从 GUI 建立王国(幂等)
- \ erritory.create\:创建领地
- \�inding.bind\ / \�inding.unbind\ / \�inding.session\:绑定/换届/换会话(含 model/agent 身份字段)
- 任务类命令维持:plan / assign / review / execution.pause|resume|abort
- \start\ 保持诚实边界:只能 DSH 会话内触发(HTTP 无委派父 Agent 上下文)
- README 新增「GUI(王国操作台)」章节:前端/网关地址语义、三步连接法
📦 本 Release 携带 GUI(配套前端)
- **\dsh-kingdom-gui-0.5.0.zip**:含操作台写层(创建领地/绑定换届/规划/派发/验收/执行控制)+ 骑士动画资产(knight-redraw)+ SSR Worker 部署单元
- 在线页面(免部署):https://agent-governance-ui.luyus704.chatgpt.site
- 用法:配置 guiPort → 重启 DSH → 打开前端页面 → 连接框填 \http://127.0.0.1:\
验证
- 网关命令 HTTP 实测(绑定/换会话/解绑/领地/init 闭环)+ 无头 400 回归
- GUI 前端 38/38(读写契约测试)+ 操作台实测 + 骑士动画联动
dsh-kingdom v0.4.0
dsh-kingdom v0.4.0 — 换届与会话归属
新增
- kingdom_unbind_role:解绑角色(换届通道),OWNER 受保护;记 ROLE_UNBOUND 事件
- kingdom_bind_session:把角色绑定/改绑到独立 DSH 会话,可顺带填会话身份预留字段
- 会话身份预留字段:role_bindings 新增 model_name / agent_name / session_meta(JSON 扩展槽),现在不必填、未来完整会话逐步填满
- session-bound 强制校验:命令工具注入调用方 session,requireRole 按 binding.session_id 校验(匹配放行 / 不匹配拒绝 / 无会话拒绝);declarative 保持向后兼容
- init 引导:首次初始化给出二选一(①为角色绑定独立会话(推荐)②会话纯文字快速演示),并修正 GUI 前后端地址语义(后端网关 http://127.0.0.1: 填进前端连接框,前端页面地址由 GUI 部署方提供)
- 旧库幂等迁移:role_bindings 列自动补齐,不重建表、不丢数据
修复
- peerDependencies:schemastery → @deepseek-ai/schemastery(DSH 生态 scope 包名,修复独立 profile 启动 ERR_MODULE_NOT_FOUND)
验证
- 状态机/换届/迁移 v04-verify 11/11 PASS,session-bound v04-auth 4/4 PASS
- 真实任务全链路:首次 init → 建领地 → 绑三角色 → 真实 Worker(spawn 独立会话)→ Claim→REVIEW→ACCEPT→DONE,12 条事件全留痕
dsh-Kingdom v0.3.2
peerDependencies 修正:显式 prerelease 分支(避免 ERESOLVE)
dsh-Kingdom v0.3.1
dsh-Kingdom v0.3.1
独立 dsh 插件:安装后在 DSH 会话中初始化/接入本地王国,提供 Territory/Binding/Task 治理闭环(Claim != Fact)。
安装
dsh plugin --profile web add ./dsh-external-dsh-kingdom-0.3.1.tgz
# 重启 DSH 后自动加载;会话内 /kingdom init 或自然语言"初始化王国"功能
- Phase 1:/kingdom init(幂等)/ status;Territory/Binding CRUD;重启恢复
- Phase 2:Task 治理闭环(Chancellor 规划 → Supervisor 分配 → Worker 独立 subagent 执行 → Supervisor 验收)
- 状态机:CREATED → ASSIGNED → RUNNING → REVIEW → DONE/FAILED(REWORK → RUNNING)
- Claim != Fact:Worker 结果只落 worker_results + REVIEW;DONE 只能经 Supervisor ACCEPT
- FAILED 双来源:Supervisor FAIL 决定 / executor 客观失败(WORKER_EXECUTION_FAILED)
- Phase 3:Execution 生命周期 + GUI 适配层(kingdom_snapshot / kingdom_task_detail / kingdom_execution_control;GUI 通道默认关闭)
- 0.3.1 热插拔加固:卸载时在途 Worker 执行不丢数据、孤儿 Execution 回收(reclaimed-on-load→ABORTED)、GUI 端口重绑/自愈、HMR 新旧实例重叠安全
审计
- Phase 1 审计 PASS(0.1.0);Phase 2 审计 PASS(0.2.0);热插拔审计 27 断言 + p3-smoke 113 断言全过
数据
- DB:<DSH_HOME 或 ~/.dsh>/kingdom/kingdom.db(SQLite,自包含,7 表,零 migration)
- 兼容:dsh 0.1.0-rc.5;Node >= 22.19;BSD-3-Clause
dsh-Kingdom v0.3.0
dsh-Kingdom v0.3.0
独立 dsh 插件:安装后在 DSH 会话中初始化/接入本地王国。Phase 1 + Phase 2 + Phase 3(GUI 适配层)已冻结。
安装
dsh plugin --profile web add ./dsh-external-dsh-kingdom-0.3.0.tgz
# 重启 DSH 后自动加载(无需 dev_inject_plugin)
# 会话内:/kingdom init 或自然语言"初始化王国"功能
- Phase 1(0.1.0):/kingdom init(幂等)/ status;Territory/Binding CRUD;重启恢复
- Phase 2(0.2.0):Task 治理闭环(Chancellor 规划 → Supervisor 分配 → Worker 独立 subagent 执行 → Supervisor 验收)
- 状态机:CREATED → ASSIGNED → RUNNING → REVIEW → DONE/FAILED(REWORK → RUNNING)
- Claim ≠ Fact:Worker 结果只落 worker_results + REVIEW;DONE 只能经 Supervisor ACCEPT
- FAILED 双来源:Supervisor FAIL 决定 / executor 客观失败(WORKER_EXECUTION_FAILED)
- Phase 3(0.3.0,本版新增):GUI 适配层 + Execution 生命周期
- kingdom_snapshot:王国结构化快照(供 GUI 渲染真实状态)
- kingdom_task_detail:单任务详情(含 attempts/验收历史)
- kingdom_execution_control:Execution 生命周期控制(pause/resume/abort)
- Execution 视图:运行事实与治理状态分离(角色动画状态映射真实 Core 状态)
- 本地 GUI 通道:默认端口 0 = 关闭(不在用户不知情时开监听端口)
独立审计
- Phase 1 审计 PASS(0.1.0);Phase 2 审计 PASS(0.2.0,14 静态 + 89 断言 + Claim≠Fact 实证)
- Phase 3 配套 p3-smoke 自测(scripts/p3-smoke.mjs)
数据
- DB:<DSH_HOME 或 ~/.dsh>/kingdom/kingdom.db(SQLite,自包含,6 表 + Execution 相关)
dsh-Kingdom v0.2.0
dsh-Kingdom v0.2.0
独立 dsh 插件:安装后在 DSH 会话中初始化/接入本地王国。Phase 1 + Phase 2 已 FROZEN,独立审计 PASS。
安装
dsh plugin --profile web add ./dsh-external-dsh-kingdom-0.2.0.tgz
# 重启 DSH 后自动加载(无需 dev_inject_plugin)
# 会话内:/kingdom init 或自然语言"初始化王国"功能
- Phase 1(0.1.0):/kingdom init(幂等)/ status;Territory/Binding CRUD;5 表;重启恢复
- Phase 2(0.2.0):Task 治理闭环(Chancellor 规划 → Supervisor 分配 → Worker 独立 subagent 执行 → Supervisor 验收)
- 状态机:CREATED → ASSIGNED → RUNNING → REVIEW → DONE/FAILED(REWORK → RUNNING)
- Claim ≠ Fact:Worker 结果只落 worker_results + REVIEW;DONE 只能经 Supervisor ACCEPT
- FAILED 双来源:Supervisor FAIL 决定 / executor 客观失败(WORKER_EXECUTION_FAILED)
- 6 表(+worker_results,UNIQUE(task_id, attempt_no));11 工具;零 migration
独立审计
- Phase 1 审计 PASS(0.1.0)
- Phase 2 审计 PASS(14 项静态 + 89 断言独立重跑 + Claim≠Fact 实证;P0/P1 无)
数据
- DB:<DSH_HOME 或 ~/.dsh>/kingdom/kingdom.db(SQLite,自包含)