Skip to content

Releases: lusblead/dsh-Kingdom

v0.7.0

Choose a tag to compare

@lusblead lusblead released this 18 Aug 14:05

v0.7.0 — M2 Organization Scale

Kingdom 从一条治理链升级为可横向扩展的 Agent 组织(v0.7.0 命题:过去发生的事情仍可解释,当前权力只有一个确定答案)。

New

  • Role cardinality: SUPERVISOR ×N / WORKER ×N(OWNER/CHANCELLOR 保持 singleton 为 Domain Policy);
    getBindingsByRole() / explicit worker_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-closedTERRITORY_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 and TASK_HANDED_OFF event;
    zero double-active assignments; retired bindings and deleted territories remain resolvable.
  • Design: docs/M2-ORGANIZATION-SCALE-DESIGN.md (frozen v2)

v0.6.0

Choose a tag to compare

@lusblead lusblead released this 18 Aug 13:26

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 on WorkerExecutor.
  • 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=2 is now a truthful field.
  • binding.model_name is seat metadata only — ExecutorFactory MUST NOT read it
    (hard invariant, test-locked).
  • resolved_model is 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 workerProvider with explicit
    global-fallback + parent-inherited evidence.

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_model observed 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

Choose a tag to compare

@lusblead lusblead released this 18 Aug 12:52

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 under session-bound mode. A plain session can no longer appoint
    itself or seize a seat. (declarative demo mode stays as-is and is honestly labelled
    local-demo.)
  • GUI principal spoof removed: the gateway no longer trusts a client-supplied
    session_id. Under session-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 — 领地删除(治理级联语义)

Choose a tag to compare

@lusblead lusblead released this 18 Aug 11:39

v0.5.1

New

  • Territory deletion (kingdom_delete_territory tool + gateway territory.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

Choose a tag to compare

@lusblead lusblead released this 18 Aug 09:19

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

Choose a tag to compare

@lusblead lusblead released this 18 Aug 08:03

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

Choose a tag to compare

@lusblead lusblead released this 18 Aug 03:18

peerDependencies 修正:显式 prerelease 分支(避免 ERESOLVE)

dsh-Kingdom v0.3.1

Choose a tag to compare

@lusblead lusblead released this 18 Aug 02:39

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

Choose a tag to compare

@lusblead lusblead released this 17 Aug 14:03

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

Choose a tag to compare

@lusblead lusblead released this 17 Aug 09:13

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,自包含)