dsh-kingdom 1.0.0 → 2.0.0

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 (144) hide show
  1. package/ASSETS_NOTICE.md +18 -2
  2. package/LICENSE +661 -661
  3. package/NOTICE +9 -9
  4. package/README.md +26 -20
  5. package/THIRD_PARTY_NOTICES.md +84 -0
  6. package/cordis.patch.yml +6 -6
  7. package/docs/V2.0-RELEASE-NOTES.md +30 -0
  8. package/docs/V2.0-USER-GUIDE.md +74 -0
  9. package/lib/adapter/dsh-backend.js +10 -6
  10. package/lib/adapter/dsh-backend.js.map +1 -1
  11. package/lib/adapter/dsh-cost.js +68 -0
  12. package/lib/adapter/dsh-cost.js.map +1 -0
  13. package/lib/adapter/dsh-session-events.js +86 -0
  14. package/lib/adapter/dsh-session-events.js.map +1 -0
  15. package/lib/adapter/dsh-usage.js +159 -0
  16. package/lib/adapter/dsh-usage.js.map +1 -0
  17. package/lib/capability/admin.js +4 -4
  18. package/lib/capability/admin.js.map +1 -1
  19. package/lib/capability/dsh-enforcement.js +19 -4
  20. package/lib/capability/dsh-enforcement.js.map +1 -1
  21. package/lib/capability/service.js +11 -0
  22. package/lib/capability/service.js.map +1 -1
  23. package/lib/capability/tool-disclosure.js +144 -0
  24. package/lib/capability/tool-disclosure.js.map +1 -0
  25. package/lib/core/binding.js +20 -18
  26. package/lib/core/binding.js.map +1 -1
  27. package/lib/core/budget.js +304 -0
  28. package/lib/core/budget.js.map +1 -0
  29. package/lib/core/collaboration.js +422 -0
  30. package/lib/core/collaboration.js.map +1 -0
  31. package/lib/core/cost.js +212 -0
  32. package/lib/core/cost.js.map +1 -0
  33. package/lib/core/db.js +124 -0
  34. package/lib/core/db.js.map +1 -1
  35. package/lib/core/governed-claim.js +46 -0
  36. package/lib/core/governed-claim.js.map +1 -0
  37. package/lib/core/governed.js +112 -7
  38. package/lib/core/governed.js.map +1 -1
  39. package/lib/core/kingdom.js +58 -56
  40. package/lib/core/kingdom.js.map +1 -1
  41. package/lib/core/owner-control.js +48 -7
  42. package/lib/core/owner-control.js.map +1 -1
  43. package/lib/core/owner-window.js +822 -0
  44. package/lib/core/owner-window.js.map +1 -0
  45. package/lib/core/task-service.js +103 -72
  46. package/lib/core/task-service.js.map +1 -1
  47. package/lib/core/territory.js +33 -11
  48. package/lib/core/territory.js.map +1 -1
  49. package/lib/core/usage.js +39 -0
  50. package/lib/core/usage.js.map +1 -0
  51. package/lib/core/workspace-admission.js +225 -0
  52. package/lib/core/workspace-admission.js.map +1 -0
  53. package/lib/dispatch/evidence.js +5 -2
  54. package/lib/dispatch/evidence.js.map +1 -1
  55. package/lib/dispatch/service.js +136 -5
  56. package/lib/dispatch/service.js.map +1 -1
  57. package/lib/gui/assets/characters/chancellor-idle.svg +67 -221
  58. package/lib/gui/assets/characters/chancellor-sleeping.svg +67 -221
  59. package/lib/gui/assets/characters/chancellor-thinking.svg +67 -221
  60. package/lib/gui/assets/characters/chancellor-working.svg +67 -221
  61. package/lib/gui/assets/characters/knight-redraw-r1-idle.svg +67 -111
  62. package/lib/gui/assets/characters/knight-redraw-r1-sleeping.svg +67 -115
  63. package/lib/gui/assets/characters/knight-redraw-r1-thinking.svg +67 -173
  64. package/lib/gui/assets/characters/knight-redraw-r1-working.svg +67 -248
  65. package/lib/gui/assets/characters/supervisor-idle.svg +67 -266
  66. package/lib/gui/assets/characters/supervisor-sleeping.svg +67 -266
  67. package/lib/gui/assets/characters/supervisor-thinking.svg +67 -266
  68. package/lib/gui/assets/characters/supervisor-working.svg +67 -266
  69. package/lib/gui/console-app.js +1964 -1927
  70. package/lib/gui/console-app.js.map +1 -1
  71. package/lib/gui/contract.js.map +1 -1
  72. package/lib/gui/control-contract.js +2 -0
  73. package/lib/gui/control-contract.js.map +1 -1
  74. package/lib/gui/local-control.js +1 -0
  75. package/lib/gui/local-control.js.map +1 -1
  76. package/lib/gui/owner-control.js +310 -0
  77. package/lib/gui/owner-control.js.map +1 -0
  78. package/lib/gui/owner-ui.js +191 -0
  79. package/lib/gui/owner-ui.js.map +1 -0
  80. package/lib/gui/server.js +4 -0
  81. package/lib/gui/server.js.map +1 -1
  82. package/lib/gui/snapshot.js +150 -15
  83. package/lib/gui/snapshot.js.map +1 -1
  84. package/lib/gui/visual-assets.js +56 -0
  85. package/lib/gui/visual-assets.js.map +1 -0
  86. package/lib/gui/visual-system.js +272 -0
  87. package/lib/gui/visual-system.js.map +1 -0
  88. package/lib/gui/workbench-ui.js +358 -0
  89. package/lib/gui/workbench-ui.js.map +1 -0
  90. package/lib/gui/workbench.js +163 -0
  91. package/lib/gui/workbench.js.map +1 -0
  92. package/lib/index.js +269 -39
  93. package/lib/index.js.map +1 -1
  94. package/lib/runner-context-broker.js +8 -2
  95. package/lib/runner-context-broker.js.map +1 -1
  96. package/lib/runtime-cost-observer.js +145 -0
  97. package/lib/runtime-cost-observer.js.map +1 -0
  98. package/lib/types/adapter/contract.d.ts +2 -0
  99. package/lib/types/adapter/dsh-backend.d.ts +2 -6
  100. package/lib/types/adapter/dsh-cost.d.ts +13 -0
  101. package/lib/types/adapter/dsh-session-events.d.ts +16 -0
  102. package/lib/types/adapter/dsh-usage.d.ts +36 -0
  103. package/lib/types/capability/dsh-enforcement.d.ts +8 -6
  104. package/lib/types/capability/service.d.ts +1 -0
  105. package/lib/types/capability/tool-disclosure.d.ts +36 -0
  106. package/lib/types/core/binding.d.ts +4 -3
  107. package/lib/types/core/budget.d.ts +81 -0
  108. package/lib/types/core/collaboration.d.ts +110 -0
  109. package/lib/types/core/cost.d.ts +99 -0
  110. package/lib/types/core/db.d.ts +21 -0
  111. package/lib/types/core/governed-claim.d.ts +7 -0
  112. package/lib/types/core/governed.d.ts +19 -1
  113. package/lib/types/core/kingdom.d.ts +3 -0
  114. package/lib/types/core/owner-control.d.ts +19 -3
  115. package/lib/types/core/owner-window.d.ts +226 -0
  116. package/lib/types/core/task-service.d.ts +36 -0
  117. package/lib/types/core/territory.d.ts +7 -0
  118. package/lib/types/core/usage.d.ts +26 -0
  119. package/lib/types/core/workspace-admission.d.ts +43 -0
  120. package/lib/types/dispatch/evidence.d.ts +2 -5
  121. package/lib/types/dispatch/service.d.ts +18 -0
  122. package/lib/types/gui/console-app.d.ts +2 -1
  123. package/lib/types/gui/contract.d.ts +176 -2
  124. package/lib/types/gui/control-contract.d.ts +1 -1
  125. package/lib/types/gui/owner-control.d.ts +45 -0
  126. package/lib/types/gui/owner-ui.d.ts +2 -0
  127. package/lib/types/gui/server.d.ts +3 -0
  128. package/lib/types/gui/snapshot.d.ts +3 -10
  129. package/lib/types/gui/visual-assets.d.ts +27 -0
  130. package/lib/types/gui/visual-system.d.ts +2 -0
  131. package/lib/types/gui/workbench-ui.d.ts +5 -0
  132. package/lib/types/gui/workbench.d.ts +33 -0
  133. package/lib/types/index.d.ts +36 -4
  134. package/lib/types/runtime-cost-observer.d.ts +22 -0
  135. package/lib/types/worker/collaboration.d.ts +35 -0
  136. package/lib/types/worker/executor.d.ts +3 -0
  137. package/lib/types/worker/governed-executor.d.ts +2 -0
  138. package/lib/worker/collaboration.js +172 -0
  139. package/lib/worker/collaboration.js.map +1 -0
  140. package/lib/worker/executor.js +5 -1
  141. package/lib/worker/executor.js.map +1 -1
  142. package/lib/worker/governed-executor.js +161 -93
  143. package/lib/worker/governed-executor.js.map +1 -1
  144. package/package.json +19 -8
@@ -0,0 +1,422 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { requireAdmin } from './binding.js';
3
+ import { ownerInputHash } from './owner-control.js';
4
+ import { requireRole } from './task-service.js';
5
+ import { readDispatchUsage } from './usage.js';
6
+ import { isBudgetAdmissionInvocationActive } from './budget.js';
7
+ import { readAdditionalBudgetUsage, readIncompleteRoleUsageSourceRefs } from './cost.js';
8
+ export class CollaborationError extends Error {
9
+ code;
10
+ constructor(code, message) {
11
+ super(`${code}: ${message}`);
12
+ this.code = code;
13
+ this.name = 'CollaborationError';
14
+ }
15
+ }
16
+ function reject(code, message) { throw new CollaborationError(code, message); }
17
+ const count = (value) => Number.isSafeInteger(value) && value >= 0;
18
+ function add(a, b) {
19
+ if (!count(a) || !count(b) || !count(a + b))
20
+ reject('PLAN_USAGE_INVALID', '协作用量不能安全计算。');
21
+ return a + b;
22
+ }
23
+ function text(value, field, max = 768) {
24
+ if (typeof value !== 'string' || !value.trim() || value.trim().length > max)
25
+ reject('PLAN_INPUT_INVALID', `${field} 必须为非空且有界的文本。`);
26
+ return value.trim();
27
+ }
28
+ function object(value, required, optional = []) {
29
+ if (!value || typeof value !== 'object' || Array.isArray(value) || ![Object.prototype, null].includes(Object.getPrototypeOf(value))
30
+ || Object.getOwnPropertySymbols(value).length)
31
+ reject('PLAN_INPUT_INVALID', '输入必须是普通对象。');
32
+ const row = value;
33
+ if (required.some(key => !Object.hasOwn(row, key)) || Object.keys(row).some(key => !required.includes(key) && !optional.includes(key)))
34
+ reject('PLAN_INPUT_INVALID', '输入字段缺失或不受支持。');
35
+ return row;
36
+ }
37
+ function normalizeProposal(value) {
38
+ const row = object(value, ['parentTaskId', 'mode', 'reason', 'integratorBindingId', 'budgetTokens', 'reserveTokens', 'items'], ['expectedVersion']);
39
+ if (!['EXPERT', 'TEAM'].includes(row.mode) || !count(row.budgetTokens) || row.budgetTokens < 1
40
+ || !count(row.reserveTokens) || row.reserveTokens < 1 || row.reserveTokens > row.budgetTokens
41
+ || !count(row.expectedVersion ?? 0) || !Array.isArray(row.items) || row.items.length < 1 || row.items.length > 2)
42
+ reject('PLAN_INPUT_INVALID', '计划模式、预算、版本或成员数量不合法;含整合者最多三个不同 Worker。');
43
+ const items = row.items.map(value => {
44
+ const item = object(value, ['key', 'title', 'description', 'acceptanceCriteria', 'territoryId', 'workerBindingId', 'access', 'dependsOn', 'expectedArtifact']);
45
+ const key = text(item.key, 'key', 48);
46
+ if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(key) || !['READ_ONLY', 'WRITE'].includes(item.access)
47
+ || row.mode === 'EXPERT' && item.access !== 'READ_ONLY' || !Array.isArray(item.dependsOn) || item.dependsOn.length > 2)
48
+ reject('PLAN_INPUT_INVALID', '成员 key、访问方式或依赖不合法;专家只允许只读。');
49
+ const dependsOn = item.dependsOn.map(dep => text(dep, 'dependsOn', 48));
50
+ if (new Set(dependsOn).size !== dependsOn.length)
51
+ reject('PLAN_DEPENDENCY_INVALID', '依赖不可重复。');
52
+ return { key, title: text(item.title, 'title', 200), description: text(item.description, 'description', 4000),
53
+ acceptanceCriteria: text(item.acceptanceCriteria, 'acceptanceCriteria', 2000), territoryId: text(item.territoryId, 'territoryId'),
54
+ workerBindingId: text(item.workerBindingId, 'workerBindingId'), access: item.access, dependsOn,
55
+ expectedArtifact: text(item.expectedArtifact, 'expectedArtifact', 1000) };
56
+ });
57
+ const integratorBindingId = text(row.integratorBindingId, 'integratorBindingId');
58
+ if (new Set(items.map(item => item.key)).size !== items.length
59
+ || new Set([integratorBindingId, ...items.map(item => item.workerBindingId)]).size !== items.length + 1)
60
+ reject('PLAN_MEMBER_DUPLICATE', '成员 key 和 Worker 必须唯一,整合者另占一个席位。');
61
+ const keys = new Set(items.map(item => item.key)), visiting = new Set(), visited = new Set();
62
+ const visit = (key) => {
63
+ if (visiting.has(key))
64
+ reject('PLAN_DEPENDENCY_INVALID', '依赖不可成环。');
65
+ if (visited.has(key))
66
+ return;
67
+ visiting.add(key);
68
+ for (const dependency of items.find(item => item.key === key).dependsOn) {
69
+ if (!keys.has(dependency) || dependency === key)
70
+ reject('PLAN_DEPENDENCY_INVALID', '依赖必须指向本计划的其他成员。');
71
+ visit(dependency);
72
+ }
73
+ visiting.delete(key);
74
+ visited.add(key);
75
+ };
76
+ items.forEach(item => visit(item.key));
77
+ return { parentTaskId: text(row.parentTaskId, 'parentTaskId'), expectedVersion: (row.expectedVersion ?? 0),
78
+ mode: row.mode, reason: text(row.reason, 'reason', 2000), integratorBindingId,
79
+ budgetTokens: row.budgetTokens, reserveTokens: row.reserveTokens, items };
80
+ }
81
+ export function normalizePlanAdoptionParameters(value) {
82
+ const row = object(value, ['plan_id', 'version', 'digest']);
83
+ if (!count(row.version) || row.version < 1 || typeof row.digest !== 'string' || !/^[a-f0-9]{64}$/.test(row.digest))
84
+ reject('PLAN_INPUT_INVALID', '采纳必须准确指定计划、正整数版本和完整摘要。');
85
+ return { plan_id: text(row.plan_id, 'plan_id'), version: row.version, digest: row.digest };
86
+ }
87
+ function planEvents(store, kingdomId) {
88
+ return store.db.prepare("SELECT * FROM events WHERE kingdom_id = ? AND event_type IN ('COLLABORATION_PLAN_PROPOSED', 'COLLABORATION_PLAN_ADOPTED') ORDER BY seq")
89
+ .all(kingdomId);
90
+ }
91
+ function parsePlan(event) {
92
+ try {
93
+ const plan = JSON.parse(event.payload_json);
94
+ const { digest, ...content } = plan;
95
+ if (plan.type !== 'KingdomCollaborationPlan/v1' || plan.kingdomId !== event.kingdom_id || plan.planId !== event.target_id
96
+ || event.actor_role !== 'CHANCELLOR' || event.actor_id !== plan.proposedBy
97
+ || plan.proposalEventId !== event.event_id || plan.proposedSeq !== event.seq || ownerInputHash(content) !== digest)
98
+ reject('PLAN_LEDGER_INVALID', '计划事件与内容摘要不一致。');
99
+ return plan;
100
+ }
101
+ catch (error) {
102
+ if (error instanceof CollaborationError)
103
+ throw error;
104
+ return reject('PLAN_LEDGER_INVALID', '计划事件无法读取。');
105
+ }
106
+ }
107
+ function latestRecord(store, kingdomId, planId) {
108
+ const events = planEvents(store, kingdomId).filter(event => event.target_id === planId);
109
+ const proposal = events.filter(event => event.event_type === 'COLLABORATION_PLAN_PROPOSED').at(-1);
110
+ if (!proposal)
111
+ return null;
112
+ const plan = parsePlan(proposal);
113
+ const adoption = events.filter(event => event.event_type === 'COLLABORATION_PLAN_ADOPTED').at(-1) ?? null;
114
+ if (adoption) {
115
+ const value = JSON.parse(adoption.payload_json);
116
+ if (value.type !== 'KingdomCollaborationAdoption/v1' || value.planId !== plan.planId || value.version !== plan.version
117
+ || adoption.actor_role !== 'OWNER' || adoption.actor_id !== store.getDefaultKingdom()?.owner_id
118
+ || value.digest !== plan.digest || ownerInputHash(value.childTaskIds) !== ownerInputHash(plan.childTaskIds))
119
+ reject('PLAN_LEDGER_INVALID', '采纳事件不匹配当前计划。');
120
+ }
121
+ return { plan, adoption };
122
+ }
123
+ function parentContentDigest(parent) {
124
+ return ownerInputHash({ taskId: parent.task_id, territoryId: parent.territory_id, parentTaskId: parent.parent_task_id,
125
+ title: parent.title, description: parent.description, acceptanceCriteria: parent.acceptance_criteria });
126
+ }
127
+ function parentAndContext(store, kingdomId, input, proposedBy) {
128
+ const parent = store.getTask(input.parentTaskId);
129
+ if (!parent || parent.parent_task_id !== null || parent.status !== 'CREATED' || parent.assigned_binding_id !== null
130
+ || store.latestExecution(parent.task_id) || store.getActiveAssignmentForTask(parent.task_id)
131
+ || store.listTasks(kingdomId).some(task => task.parent_task_id === parent.task_id))
132
+ reject('PLAN_PARENT_INVALID', '协作父项必须是尚未派发、没有父项或子项的 CREATED 任务。');
133
+ const territoryIds = [...new Set([parent.territory_id, ...input.items.map(item => item.territoryId)])].sort();
134
+ const territories = territoryIds.map(id => {
135
+ const territory = store.getTerritoryById(id);
136
+ if (!territory || territory.kingdom_id !== kingdomId || territory.status !== 'ACTIVE' || !territory.workspace_path)
137
+ reject('PLAN_TERRITORY_INVALID', '计划领地必须属于当前王国且有效。');
138
+ const supervisor = territory.supervisor_binding_id ? store.getBindingById(territory.supervisor_binding_id) : null;
139
+ if (!supervisor || supervisor.kingdom_id !== kingdomId || supervisor.role_type !== 'SUPERVISOR' || supervisor.status !== 'ACTIVE')
140
+ reject('PLAN_TERRITORY_INVALID', '每个计划领地必须有当前有效主管。');
141
+ return { territory, supervisor };
142
+ });
143
+ const workers = [input.integratorBindingId, ...input.items.map(item => item.workerBindingId)].sort().map(id => {
144
+ const binding = store.getBindingById(id);
145
+ if (!binding || binding.kingdom_id !== kingdomId || binding.role_type !== 'WORKER' || binding.status !== 'ACTIVE')
146
+ reject('PLAN_WORKER_INVALID', '计划成员必须是当前王国有效 Worker。');
147
+ return binding;
148
+ });
149
+ const proposer = store.getBindingById(proposedBy);
150
+ if (!proposer || proposer.kingdom_id !== kingdomId || proposer.role_type !== 'CHANCELLOR' || proposer.status !== 'ACTIVE')
151
+ reject('PLAN_PROPOSER_INVALID', '计划提案的宰相身份已失效。');
152
+ return { parent, digest: ownerInputHash({ parent, territories, workers, proposer }) };
153
+ }
154
+ function view(store, record) {
155
+ const { plan, adoption } = record;
156
+ let state = adoption ? 'ADOPTED' : 'PROPOSED';
157
+ if (!adoption) {
158
+ try {
159
+ if (parentAndContext(store, plan.kingdomId, plan, plan.proposedBy).digest !== plan.contextDigest)
160
+ state = 'STALE';
161
+ }
162
+ catch {
163
+ state = 'STALE';
164
+ }
165
+ }
166
+ return { type: plan.type, planId: plan.planId, kingdomId: plan.kingdomId, parentTaskId: plan.parentTaskId, version: plan.version,
167
+ digest: plan.digest, state, mode: plan.mode, reason: plan.reason, integratorBindingId: plan.integratorBindingId,
168
+ budgetTokens: plan.budgetTokens, reserveTokens: plan.reserveTokens, items: structuredClone(plan.items), childTaskIds: [...plan.childTaskIds],
169
+ proposedBy: plan.proposedBy, proposedAt: plan.proposedAt, proposedSeq: plan.proposedSeq, adoptedAt: adoption?.created_at ?? null, adoptedSeq: adoption?.seq ?? null };
170
+ }
171
+ export function readCollaborationPlan(store, kingdomId, planId) {
172
+ const record = latestRecord(store, kingdomId, planId);
173
+ return record ? view(store, record) : null;
174
+ }
175
+ export function listCollaborationPlans(store, kingdomId) {
176
+ return [...new Set(planEvents(store, kingdomId).filter(event => event.event_type === 'COLLABORATION_PLAN_PROPOSED').map(event => event.target_id))]
177
+ .map(id => readCollaborationPlan(store, kingdomId, id)).sort((a, b) => b.proposedSeq - a.proposedSeq);
178
+ }
179
+ export function proposeCollaborationPlan(store, ctx, input) {
180
+ const normalized = normalizeProposal(input);
181
+ return store.withImmediateTransaction(() => {
182
+ const role = requireRole(store, ctx, 'CHANCELLOR');
183
+ if (!role.ok)
184
+ reject(role.code, role.message);
185
+ const prior = listCollaborationPlans(store, ctx.kingdomId).find(plan => plan.parentTaskId === normalized.parentTaskId);
186
+ if (prior?.state === 'ADOPTED')
187
+ reject('PLAN_ALREADY_ADOPTED', '已采纳计划不可静默改写。');
188
+ if (normalized.expectedVersion !== (prior?.version ?? 0))
189
+ reject('PLAN_VERSION_STALE', '提案基准版本已变化,请读取当前计划。');
190
+ const context = parentAndContext(store, ctx.kingdomId, normalized, role.binding.binding_id);
191
+ const { expectedVersion: _, ...content } = normalized;
192
+ const items = content.items.map(item => ({ ...item, taskId: randomUUID() }));
193
+ const proposedAt = new Date().toISOString(), proposalEventId = randomUUID();
194
+ const withoutDigest = { ...content, type: 'KingdomCollaborationPlan/v1', planId: prior?.planId ?? randomUUID(),
195
+ kingdomId: ctx.kingdomId, version: (prior?.version ?? 0) + 1, items, childTaskIds: items.map(item => item.taskId),
196
+ proposedBy: role.binding.binding_id, proposedAt, proposedSeq: store.eventSequence() + 1, proposalEventId,
197
+ contextDigest: context.digest, parentContentDigest: parentContentDigest(context.parent), authority: ctx.auth.mode === 'session-bound' ? 'SESSION_BOUND' : 'LOCAL_DEMO' };
198
+ const plan = { ...withoutDigest, digest: ownerInputHash(withoutDigest) };
199
+ store.appendEvent({ event_id: proposalEventId, kingdom_id: ctx.kingdomId, event_type: 'COLLABORATION_PLAN_PROPOSED',
200
+ actor_role: 'CHANCELLOR', actor_id: role.binding.binding_id, target_type: 'collaboration-plan', target_id: plan.planId,
201
+ payload_json: JSON.stringify(plan), created_at: proposedAt });
202
+ return view(store, { plan, adoption: null });
203
+ });
204
+ }
205
+ export function adoptCollaborationPlan(store, input, auth) {
206
+ const admin = requireAdmin(store, input.kingdomId, auth, { operation: 'plan.adopt', input });
207
+ if (!admin.ok)
208
+ return admin.message;
209
+ const params = normalizePlanAdoptionParameters({ plan_id: input.plan_id, version: input.version, digest: input.digest });
210
+ const write = () => {
211
+ const record = latestRecord(store, input.kingdomId, params.plan_id);
212
+ if (!record || record.plan.version !== params.version || record.plan.digest !== params.digest)
213
+ reject('PLAN_VERSION_STALE', '计划版本或内容摘要已变化。');
214
+ if (record.adoption)
215
+ reject('PLAN_ALREADY_ADOPTED', '该计划已经采纳,请查询原回执。');
216
+ const plan = record.plan;
217
+ if (parentAndContext(store, input.kingdomId, plan, plan.proposedBy).digest !== plan.contextDigest)
218
+ reject('PLAN_CONTEXT_STALE', '父项、角色或领地已变化,请重新提案。');
219
+ const at = new Date().toISOString();
220
+ for (const item of plan.items) {
221
+ store.insertTask({ task_id: item.taskId, territory_id: item.territoryId, parent_task_id: plan.parentTaskId, title: item.title,
222
+ description: item.description, acceptance_criteria: item.acceptanceCriteria, assigned_binding_id: null, status: 'CREATED', result_summary: null,
223
+ capability_requirement_json: null, created_at: at, updated_at: at });
224
+ store.appendEvent({ event_id: randomUUID(), kingdom_id: input.kingdomId, event_type: 'COLLABORATION_CHILD_CREATED', actor_role: 'SYSTEM',
225
+ actor_id: 'kingdom-plan-adoption', target_type: 'task', target_id: item.taskId,
226
+ payload_json: JSON.stringify({ planId: plan.planId, version: plan.version, digest: plan.digest, parentTaskId: plan.parentTaskId,
227
+ proposalEventId: plan.proposalEventId, proposedBy: plan.proposedBy, proposalAuthority: plan.authority,
228
+ ownerId: admin.ownerPrincipalId, assignmentCreated: false, grantCreated: false, ...admin.eventSource }), created_at: at });
229
+ }
230
+ const adoption = { type: 'KingdomCollaborationAdoption/v1', planId: plan.planId, version: plan.version, digest: plan.digest,
231
+ parentTaskId: plan.parentTaskId, childTaskIds: plan.childTaskIds, carriedRoleSourceRefs: readIncompleteRoleUsageSourceRefs(store, input.kingdomId) };
232
+ store.appendEvent({ event_id: randomUUID(), kingdom_id: input.kingdomId, event_type: 'COLLABORATION_PLAN_ADOPTED', actor_role: 'OWNER',
233
+ actor_id: admin.ownerPrincipalId, target_type: 'collaboration-plan', target_id: plan.planId,
234
+ payload_json: JSON.stringify({ ...adoption, operation: 'plan.adopt', ...admin.eventSource }), created_at: at });
235
+ return '协作计划已按准确版本采纳,子项已创建;仍需各领地主管正常派发、授权和验收,父项不会自动完成。';
236
+ };
237
+ return store.db.isTransaction ? write() : store.withImmediateTransaction(write);
238
+ }
239
+ function acceptedHandoff(store, kingdomId, item) {
240
+ const task = store.getTask(item.taskId), result = store.latestWorkerResult(item.taskId), execution = store.latestExecution(item.taskId);
241
+ if (!task || task.status !== 'DONE' || task.assigned_binding_id !== item.workerBindingId || !result || !execution
242
+ || result.worker_binding_id !== item.workerBindingId || execution.worker_binding_id !== item.workerBindingId
243
+ || result.attempt_no !== execution.attempt_no || execution.state !== 'COMPLETED' || result.outcome !== 'COMPLETED')
244
+ return null;
245
+ const event = store.db.prepare("SELECT * FROM events WHERE kingdom_id = ? AND event_type = 'TASK_ACCEPTED' AND target_type = 'task' AND target_id = ? ORDER BY seq DESC LIMIT 1")
246
+ .get(kingdomId, item.taskId);
247
+ if (!event || event.actor_role !== 'SUPERVISOR')
248
+ return null;
249
+ try {
250
+ const accepted = JSON.parse(event.payload_json);
251
+ const territory = store.getTerritoryById(task.territory_id), supervisor = event.actor_id ? store.getBindingById(event.actor_id) : null;
252
+ if (accepted.decision !== 'ACCEPT' || accepted.reviewed_attempt_no !== result.attempt_no || accepted.reviewer_binding_id !== event.actor_id
253
+ || accepted.reviewed_result_id !== result.result_id || accepted.reviewed_result_digest !== ownerInputHash(result)
254
+ || !supervisor || supervisor.kingdom_id !== kingdomId || supervisor.role_type !== 'SUPERVISOR'
255
+ || territory?.supervisor_binding_id !== event.actor_id || supervisor.status !== 'ACTIVE'
256
+ || Date.parse(result.created_at) > Date.parse(event.created_at))
257
+ return null;
258
+ const payload = JSON.parse(result.result_json);
259
+ if (typeof payload.summary !== 'string' || !payload.summary.trim())
260
+ return null;
261
+ const artifacts = Array.isArray(payload.artifacts) ? payload.artifacts.filter((ref) => typeof ref === 'string' && ref.length > 0 && ref.length <= 768).slice(0, 8) : [];
262
+ return { taskId: item.taskId, attemptNo: result.attempt_no, resultId: result.result_id, resultDigest: ownerInputHash(result),
263
+ acceptEventId: event.event_id, acceptEventSeq: event.seq, summary: payload.summary.slice(0, 2000), artifacts };
264
+ }
265
+ catch {
266
+ return null;
267
+ }
268
+ }
269
+ /** A failed member may retry itself only after review of this exact settled attempt. */
270
+ function hasSettledFailedRework(store, kingdomId, taskId, preparingLeaseId) {
271
+ const task = store.getTask(taskId), execution = store.latestExecution(taskId), claim = store.latestWorkerResult(taskId);
272
+ if (task?.status !== 'RUNNING' || !execution || !claim || !['FAILED', 'ABORTED'].includes(execution.state)
273
+ || execution.attempt_no !== claim.attempt_no || claim.outcome !== execution.state
274
+ || execution.worker_binding_id !== task.assigned_binding_id || claim.worker_binding_id !== task.assigned_binding_id
275
+ || store.listExecutions(taskId).some(row => !['COMPLETED', 'FAILED', 'ABORTED'].includes(row.state))
276
+ || store.listLeases(kingdomId).some(row => row.task_id === taskId && row.state !== 'RELEASED'
277
+ && !(store.db.isTransaction && row.lease_id === preparingLeaseId && row.state === 'DISPATCH_READY'
278
+ && row.attempt_no === execution.attempt_no + 1 && row.worker_binding_id === task.assigned_binding_id
279
+ && row.territory_id === task.territory_id && !store.listDispatchesForTaskAttempt(taskId, row.attempt_no).length))
280
+ || store.listDispatchesForTaskAttempt(taskId, execution.attempt_no).some(row => !['TERMINAL', 'FAILED'].includes(row.state)))
281
+ return false;
282
+ const rework = store.latestTaskReworkEvent(kingdomId, taskId, claim.attempt_no);
283
+ if (!rework)
284
+ return false;
285
+ try {
286
+ const reviewed = JSON.parse(rework.payload_json);
287
+ return reviewed.decision === 'REWORK' && reviewed.reviewed_result_id === claim.result_id
288
+ && reviewed.reviewed_result_digest === ownerInputHash(claim) && reviewed.reviewed_execution_id === execution.execution_id;
289
+ }
290
+ catch {
291
+ return false;
292
+ }
293
+ }
294
+ /** Read-only exact references. Handoff text remains an untrusted Worker Claim. */
295
+ export function readCollaborationReadiness(store, kingdomId, taskId, preparingLeaseId) {
296
+ const plan = listCollaborationPlans(store, kingdomId).find(plan => plan.parentTaskId === taskId || plan.childTaskIds.includes(taskId));
297
+ if (!plan)
298
+ return null;
299
+ const item = plan.items.find(item => item.taskId === taskId);
300
+ const result = { planId: plan.planId, version: plan.version, digest: plan.digest, parentTaskId: plan.parentTaskId,
301
+ taskId, kind: item ? 'ITEM' : 'INTEGRATION', access: item?.access ?? 'WRITE', workerBindingId: item?.workerBindingId ?? plan.integratorBindingId,
302
+ ready: false, reasonCode: null, blockingTaskIds: [], handoffs: [] };
303
+ const blocked = (reasonCode, tasks = []) => ({ ...result, reasonCode, blockingTaskIds: tasks });
304
+ if (plan.state !== 'ADOPTED')
305
+ return blocked('PLAN_NOT_ADOPTED');
306
+ const parent = store.getTask(plan.parentTaskId), task = store.getTask(taskId), worker = store.getBindingById(result.workerBindingId);
307
+ const record = latestRecord(store, kingdomId, plan.planId);
308
+ const parentTerritory = parent ? store.getTerritoryById(parent.territory_id) : null;
309
+ if (!parent || parent.parent_task_id !== null || !task || !worker || worker.status !== 'ACTIVE' || worker.role_type !== 'WORKER'
310
+ || !parentTerritory || parentTerritory.kingdom_id !== kingdomId || parentTerritory.status !== 'ACTIVE'
311
+ || parentContentDigest(parent) !== record.plan.parentContentDigest
312
+ || worker.kingdom_id !== kingdomId || task.assigned_binding_id !== null && task.assigned_binding_id !== result.workerBindingId)
313
+ return blocked('PLAN_MEMBER_CHANGED', [taskId]);
314
+ for (const member of plan.items) {
315
+ const child = store.getTask(member.taskId), territory = store.getTerritoryById(member.territoryId);
316
+ const binding = store.getBindingById(member.workerBindingId);
317
+ if (!child || child.parent_task_id !== plan.parentTaskId || child.territory_id !== member.territoryId || child.title !== member.title
318
+ || child.description !== member.description || child.acceptance_criteria !== member.acceptanceCriteria
319
+ || child.assigned_binding_id !== null && child.assigned_binding_id !== member.workerBindingId
320
+ || !binding || binding.kingdom_id !== kingdomId || binding.role_type !== 'WORKER' || binding.status !== 'ACTIVE'
321
+ || !territory || territory.kingdom_id !== kingdomId || territory.status !== 'ACTIVE')
322
+ return blocked('PLAN_MEMBER_CHANGED', [member.taskId]);
323
+ }
324
+ const retryingSettledFailure = hasSettledFailedRework(store, kingdomId, taskId, preparingLeaseId);
325
+ const failed = [parent.task_id, ...plan.childTaskIds].filter(id => {
326
+ const current = store.getTask(id), execution = store.latestExecution(id);
327
+ return current?.status === 'FAILED' || execution?.state === 'RECOVERING'
328
+ || current?.status !== 'DONE' && ['FAILED', 'ABORTED'].includes(execution?.state ?? '')
329
+ && (!retryingSettledFailure || !hasSettledFailedRework(store, kingdomId, id, id === taskId ? preparingLeaseId : undefined))
330
+ || store.listDispatchesForTaskAttempt(id, execution?.attempt_no ?? 0).some(dispatch => dispatch.state === 'RECOVERING');
331
+ });
332
+ if (failed.length)
333
+ return blocked('PLAN_MEMBER_FAILED_OR_UNKNOWN', failed);
334
+ if (!['CREATED', 'ASSIGNED', 'RUNNING'].includes(task.status))
335
+ return blocked('TASK_NOT_STARTABLE', [taskId]);
336
+ const dependencies = item ? plan.items.filter(member => item.dependsOn.includes(member.key)) : plan.items;
337
+ for (const dependency of dependencies) {
338
+ const handoff = acceptedHandoff(store, kingdomId, dependency);
339
+ if (!handoff)
340
+ result.blockingTaskIds.push(dependency.taskId);
341
+ else
342
+ result.handoffs.push(handoff);
343
+ }
344
+ if (result.blockingTaskIds.length)
345
+ return { ...result, reasonCode: 'DEPENDENCY_NOT_ACCEPTED_OR_STALE', handoffs: [] };
346
+ return { ...result, ready: true };
347
+ }
348
+ /** Recompute before dispatch; caller-supplied or stale references never become authority. */
349
+ export function validateCollaborationHandoffs(store, kingdomId, taskId, expected, preparingLeaseId) {
350
+ const readiness = readCollaborationReadiness(store, kingdomId, taskId, preparingLeaseId);
351
+ return !!readiness?.ready && ownerInputHash(readiness.handoffs) === ownerInputHash(expected);
352
+ }
353
+ /** Members are exact; all observable concurrent kingdom coordination is a conservative upper bound. */
354
+ export function readPlanBudgetView(store, kingdomId, planId) {
355
+ const record = latestRecord(store, kingdomId, planId);
356
+ if (!record?.adoption)
357
+ return null;
358
+ const { plan, adoption } = record;
359
+ const adopted = JSON.parse(adoption.payload_json);
360
+ const members = new Set([plan.parentTaskId, ...plan.childTaskIds]);
361
+ const admissions = new Map();
362
+ for (const event of store.listBudgetEvents(kingdomId)) {
363
+ if (!event.event_type.startsWith('BUDGET_ADMISSION_'))
364
+ continue;
365
+ const value = JSON.parse(event.payload_json);
366
+ if (members.has(value.taskId))
367
+ admissions.set(value.admissionId, value);
368
+ }
369
+ let workerVerifiedTokens = 0, reservedEstimateTokens = 0, pendingUnits = 0, unknownUnits = 0;
370
+ const dispatches = store.listDispatches(kingdomId).filter(dispatch => members.has(dispatch.task_id));
371
+ const ids = new Set(dispatches.map(dispatch => dispatch.dispatch_id));
372
+ for (const dispatch of dispatches) {
373
+ const usage = readDispatchUsage(store, dispatch.dispatch_id);
374
+ const complete = usage?.status === 'COMPLETE' && usage.taskId === dispatch.task_id && usage.attemptNo === dispatch.attempt_no
375
+ && usage.usage !== null && count(usage.usage.totalTokens);
376
+ const tokens = complete ? usage.usage.totalTokens : 0;
377
+ workerVerifiedTokens = add(workerVerifiedTokens, tokens);
378
+ const pending = !['TERMINAL', 'FAILED'].includes(dispatch.state);
379
+ if (pending)
380
+ pendingUnits++;
381
+ else if (!complete)
382
+ unknownUnits++;
383
+ if (pending || !complete)
384
+ reservedEstimateTokens = add(reservedEstimateTokens, Math.max(0, plan.reserveTokens - tokens));
385
+ }
386
+ for (const admission of admissions.values()) {
387
+ if (admission.state === 'CANCELLED' || admission.state === 'BOUND' && ids.has(admission.dispatchId ?? ''))
388
+ continue;
389
+ reservedEstimateTokens = add(reservedEstimateTokens, plan.reserveTokens);
390
+ pendingUnits++;
391
+ if (admission.state === 'BOUND' || !isBudgetAdmissionInvocationActive(store, admission.admissionId))
392
+ unknownUnits++;
393
+ }
394
+ // A legacy or otherwise unmatched Execution has no proven Dispatch usage.
395
+ // Keep its risk visible instead of treating a missing metering seam as free.
396
+ const dispatchAttempts = new Set(dispatches.map(dispatch => `${dispatch.task_id}:${dispatch.attempt_no}`));
397
+ const reservedAttempts = new Set([...admissions.values()].filter(admission => admission.state !== 'CANCELLED')
398
+ .map(admission => `${admission.taskId}:${admission.attemptNo}`));
399
+ for (const taskId of members)
400
+ for (const execution of store.listExecutions(taskId)) {
401
+ const key = `${taskId}:${execution.attempt_no}`;
402
+ if (dispatchAttempts.has(key))
403
+ continue;
404
+ unknownUnits++;
405
+ if (!reservedAttempts.has(key)) {
406
+ reservedEstimateTokens = add(reservedEstimateTokens, plan.reserveTokens);
407
+ if (!['COMPLETED', 'FAILED', 'ABORTED'].includes(execution.state))
408
+ pendingUnits++;
409
+ }
410
+ }
411
+ const other = readAdditionalBudgetUsage(store, kingdomId, adoption.seq, adopted.carriedRoleSourceRefs);
412
+ pendingUnits = add(pendingUnits, other.pendingUnits);
413
+ unknownUnits = add(unknownUnits, other.unknownUnits);
414
+ reservedEstimateTokens = add(reservedEstimateTokens, other.pendingUnits * plan.reserveTokens);
415
+ const exposureTokens = add(add(workerVerifiedTokens, other.verifiedTokens), reservedEstimateTokens);
416
+ const state = unknownUnits > 0 ? 'BLOCK_UNKNOWN' : add(exposureTokens, plan.reserveTokens) > plan.budgetTokens ? 'BLOCK_LIMIT'
417
+ : other.attributionGapCount > 0 || exposureTokens >= plan.budgetTokens * 0.8 ? 'WARN' : 'ALLOW';
418
+ return { scope: 'PLAN_WITH_KINGDOM_COORDINATION_UPPER_BOUND', planId, limitTokens: plan.budgetTokens, reserveTokens: plan.reserveTokens,
419
+ workerVerifiedTokens, coordinationUpperBoundTokens: other.verifiedTokens, reservedEstimateTokens, exposureTokens,
420
+ remainingTokens: Math.max(0, plan.budgetTokens - exposureTokens), pendingUnits, unknownUnits, attributionGapCount: other.attributionGapCount, state, amount: null };
421
+ }
422
+ //# sourceMappingURL=collaboration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaboration.js","sourceRoot":"","sources":["../../src/core/collaboration.ts"],"names":[],"mappings":"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"}