dsh-kingdom 0.8.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.
- package/ASSETS_NOTICE.md +22 -0
- package/LICENSE +661 -29
- package/NOTICE +9 -0
- package/README.md +93 -94
- package/THIRD_PARTY_NOTICES.md +92 -0
- package/cordis.patch.yml +6 -6
- package/docs/V2.0-RELEASE-NOTES.md +30 -0
- package/docs/V2.0-USER-GUIDE.md +74 -0
- package/lib/adapter/dsh-backend.js +327 -24
- package/lib/adapter/dsh-backend.js.map +1 -1
- package/lib/adapter/dsh-cost.js +68 -0
- package/lib/adapter/dsh-cost.js.map +1 -0
- package/lib/adapter/dsh-session-events.js +86 -0
- package/lib/adapter/dsh-session-events.js.map +1 -0
- package/lib/adapter/dsh-usage.js +159 -0
- package/lib/adapter/dsh-usage.js.map +1 -0
- package/lib/capability/admin.js +72 -0
- package/lib/capability/admin.js.map +1 -0
- package/lib/capability/dsh-enforcement.js +143 -34
- package/lib/capability/dsh-enforcement.js.map +1 -1
- package/lib/capability/resolver.js +21 -8
- package/lib/capability/resolver.js.map +1 -1
- package/lib/capability/service.js +169 -26
- package/lib/capability/service.js.map +1 -1
- package/lib/capability/tool-disclosure.js +144 -0
- package/lib/capability/tool-disclosure.js.map +1 -0
- package/lib/core/binding.js +52 -34
- package/lib/core/binding.js.map +1 -1
- package/lib/core/budget.js +304 -0
- package/lib/core/budget.js.map +1 -0
- package/lib/core/collaboration.js +422 -0
- package/lib/core/collaboration.js.map +1 -0
- package/lib/core/cost.js +212 -0
- package/lib/core/cost.js.map +1 -0
- package/lib/core/db.js +197 -4
- package/lib/core/db.js.map +1 -1
- package/lib/core/execution.js +2 -2
- package/lib/core/execution.js.map +1 -1
- package/lib/core/governed-claim.js +46 -0
- package/lib/core/governed-claim.js.map +1 -0
- package/lib/core/governed.js +891 -98
- package/lib/core/governed.js.map +1 -1
- package/lib/core/kingdom.js +78 -70
- package/lib/core/kingdom.js.map +1 -1
- package/lib/core/owner-binding-intent.js +732 -0
- package/lib/core/owner-binding-intent.js.map +1 -0
- package/lib/core/owner-control.js +86 -0
- package/lib/core/owner-control.js.map +1 -0
- package/lib/core/owner-window.js +822 -0
- package/lib/core/owner-window.js.map +1 -0
- package/lib/core/task-service.js +296 -133
- package/lib/core/task-service.js.map +1 -1
- package/lib/core/territory.js +44 -14
- package/lib/core/territory.js.map +1 -1
- package/lib/core/usage.js +39 -0
- package/lib/core/usage.js.map +1 -0
- package/lib/core/workspace-admission.js +225 -0
- package/lib/core/workspace-admission.js.map +1 -0
- package/lib/dispatch/evidence.js +5 -2
- package/lib/dispatch/evidence.js.map +1 -1
- package/lib/dispatch/reconcile.js +3 -9
- package/lib/dispatch/reconcile.js.map +1 -1
- package/lib/dispatch/service.js +464 -64
- package/lib/dispatch/service.js.map +1 -1
- package/lib/gui/assets/characters/chancellor-idle.svg +67 -0
- package/lib/gui/assets/characters/chancellor-sleeping.svg +67 -0
- package/lib/gui/assets/characters/chancellor-thinking.svg +67 -0
- package/lib/gui/assets/characters/chancellor-working.svg +67 -0
- package/lib/gui/assets/characters/knight-redraw-r1-idle.svg +67 -0
- package/lib/gui/assets/characters/knight-redraw-r1-sleeping.svg +67 -0
- package/lib/gui/assets/characters/knight-redraw-r1-thinking.svg +67 -0
- package/lib/gui/assets/characters/knight-redraw-r1-working.svg +67 -0
- package/lib/gui/assets/characters/supervisor-idle.svg +67 -0
- package/lib/gui/assets/characters/supervisor-sleeping.svg +67 -0
- package/lib/gui/assets/characters/supervisor-thinking.svg +67 -0
- package/lib/gui/assets/characters/supervisor-working.svg +67 -0
- package/lib/gui/console-app.js +2330 -0
- package/lib/gui/console-app.js.map +1 -0
- package/lib/gui/contract.js +5 -5
- package/lib/gui/contract.js.map +1 -1
- package/lib/gui/control-contract.js +232 -0
- package/lib/gui/control-contract.js.map +1 -0
- package/lib/gui/local-control.js +423 -0
- package/lib/gui/local-control.js.map +1 -0
- package/lib/gui/owner-control.js +310 -0
- package/lib/gui/owner-control.js.map +1 -0
- package/lib/gui/owner-ui.js +191 -0
- package/lib/gui/owner-ui.js.map +1 -0
- package/lib/gui/server.js +445 -35
- package/lib/gui/server.js.map +1 -1
- package/lib/gui/snapshot.js +1346 -67
- package/lib/gui/snapshot.js.map +1 -1
- package/lib/gui/visual-assets.js +56 -0
- package/lib/gui/visual-assets.js.map +1 -0
- package/lib/gui/visual-system.js +272 -0
- package/lib/gui/visual-system.js.map +1 -0
- package/lib/gui/workbench-ui.js +358 -0
- package/lib/gui/workbench-ui.js.map +1 -0
- package/lib/gui/workbench.js +163 -0
- package/lib/gui/workbench.js.map +1 -0
- package/lib/index.js +1384 -361
- package/lib/index.js.map +1 -1
- package/lib/runner-context-broker.js +1134 -0
- package/lib/runner-context-broker.js.map +1 -0
- package/lib/runtime-cost-observer.js +145 -0
- package/lib/runtime-cost-observer.js.map +1 -0
- package/lib/types/adapter/contract.d.ts +61 -1
- package/lib/types/adapter/dsh-backend.d.ts +32 -13
- package/lib/types/adapter/dsh-cost.d.ts +13 -0
- package/lib/types/adapter/dsh-session-events.d.ts +16 -0
- package/lib/types/adapter/dsh-usage.d.ts +36 -0
- package/lib/types/capability/admin.d.ts +13 -0
- package/lib/types/capability/dsh-enforcement.d.ts +11 -7
- package/lib/types/capability/service.d.ts +10 -3
- package/lib/types/capability/tool-disclosure.d.ts +36 -0
- package/lib/types/core/binding.d.ts +19 -10
- package/lib/types/core/budget.d.ts +81 -0
- package/lib/types/core/collaboration.d.ts +110 -0
- package/lib/types/core/cost.d.ts +99 -0
- package/lib/types/core/db.d.ts +44 -4
- package/lib/types/core/execution.d.ts +1 -1
- package/lib/types/core/governed-claim.d.ts +7 -0
- package/lib/types/core/governed.d.ts +182 -1
- package/lib/types/core/kingdom.d.ts +3 -0
- package/lib/types/core/owner-binding-intent.d.ts +176 -0
- package/lib/types/core/owner-control.d.ts +53 -0
- package/lib/types/core/owner-window.d.ts +226 -0
- package/lib/types/core/task-service.d.ts +60 -13
- package/lib/types/core/territory.d.ts +9 -2
- package/lib/types/core/usage.d.ts +26 -0
- package/lib/types/core/workspace-admission.d.ts +43 -0
- package/lib/types/dispatch/evidence.d.ts +2 -5
- package/lib/types/dispatch/service.d.ts +62 -4
- package/lib/types/gui/console-app.d.ts +137 -0
- package/lib/types/gui/contract.d.ts +396 -16
- package/lib/types/gui/control-contract.d.ts +111 -0
- package/lib/types/gui/local-control.d.ts +120 -0
- package/lib/types/gui/owner-control.d.ts +45 -0
- package/lib/types/gui/owner-ui.d.ts +2 -0
- package/lib/types/gui/server.d.ts +17 -3
- package/lib/types/gui/snapshot.d.ts +33 -11
- package/lib/types/gui/visual-assets.d.ts +27 -0
- package/lib/types/gui/visual-system.d.ts +2 -0
- package/lib/types/gui/workbench-ui.d.ts +5 -0
- package/lib/types/gui/workbench.d.ts +33 -0
- package/lib/types/index.d.ts +157 -6
- package/lib/types/runner-context-broker.d.ts +119 -0
- package/lib/types/runtime-cost-observer.d.ts +22 -0
- package/lib/types/worker/collaboration.d.ts +35 -0
- package/lib/types/worker/dsh-subagent.d.ts +4 -4
- package/lib/types/worker/executor-factory.d.ts +2 -1
- package/lib/types/worker/executor.d.ts +8 -3
- package/lib/types/worker/governed-executor.d.ts +8 -1
- package/lib/worker/collaboration.js +172 -0
- package/lib/worker/collaboration.js.map +1 -0
- package/lib/worker/dsh-subagent.js +4 -4
- package/lib/worker/executor-factory.js.map +1 -1
- package/lib/worker/executor.js +7 -2
- package/lib/worker/executor.js.map +1 -1
- package/lib/worker/governed-executor.js +295 -84
- package/lib/worker/governed-executor.js.map +1 -1
- package/package.json +23 -8
|
@@ -14,6 +14,40 @@
|
|
|
14
14
|
import { randomUUID } from 'node:crypto';
|
|
15
15
|
import { cleanupDshEnforcement, materializeDshEnforcement, readEnforceableSet, } from '../capability/dsh-enforcement.js';
|
|
16
16
|
import { terminalOutcomeOf } from '../dispatch/evidence.js';
|
|
17
|
+
import { locateDshDispatchRef, readDshSessionEvents } from './dsh-session-events.js';
|
|
18
|
+
/** Deliberately not exported: only this backend can issue a fence token. */
|
|
19
|
+
class DshTrustFenceToken {
|
|
20
|
+
// Runtime identity is checked through an Adapter-instance-private WeakMap;
|
|
21
|
+
// prevents a plain object from being mistaken for an issued token by code
|
|
22
|
+
// that happens to hold the structural type.
|
|
23
|
+
#opaque = true;
|
|
24
|
+
}
|
|
25
|
+
const FENCE_PHASE_ORDER = {
|
|
26
|
+
'terminal-write': 0,
|
|
27
|
+
'cleanup-reserved': 1,
|
|
28
|
+
cleanup: 2,
|
|
29
|
+
settlement: 3,
|
|
30
|
+
release: 4,
|
|
31
|
+
};
|
|
32
|
+
function eventKey(event) {
|
|
33
|
+
try {
|
|
34
|
+
return JSON.stringify(event);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return '<unserializable-event>';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function eventMessageId(event) {
|
|
41
|
+
const id = event.data?.id ?? event.data?.message?.id;
|
|
42
|
+
return typeof id === 'string' ? id : null;
|
|
43
|
+
}
|
|
44
|
+
function boundedFenceReason(value) {
|
|
45
|
+
const text = value.trim();
|
|
46
|
+
return text.length <= 512 ? text : `${text.slice(0, 511)}…`;
|
|
47
|
+
}
|
|
48
|
+
function fenceResult(ok, status, reservation, generation, reason) {
|
|
49
|
+
return { ok, status, reservation, generation, reason: boundedFenceReason(reason) };
|
|
50
|
+
}
|
|
17
51
|
function asAgents(value) {
|
|
18
52
|
return value;
|
|
19
53
|
}
|
|
@@ -44,8 +78,10 @@ function buildUserMessage(text) {
|
|
|
44
78
|
*/
|
|
45
79
|
export function reconstructExecutionObservation(session, sinceDispatchRef) {
|
|
46
80
|
try {
|
|
47
|
-
const events = session
|
|
48
|
-
|
|
81
|
+
const events = readDshSessionEvents(session);
|
|
82
|
+
if (events === null)
|
|
83
|
+
return 'UNKNOWN';
|
|
84
|
+
const startIndex = locateDshDispatchRef(events, sinceDispatchRef);
|
|
49
85
|
if (startIndex === -1)
|
|
50
86
|
return 'UNKNOWN'; // 消息不在本 session 日志(可能未落库)
|
|
51
87
|
const tail = events.slice(startIndex);
|
|
@@ -82,6 +118,8 @@ export function reconstructExecutionObservation(session, sinceDispatchRef) {
|
|
|
82
118
|
/** DSH RuntimeAdapter 实现。 */
|
|
83
119
|
export class DshRuntimeAdapter {
|
|
84
120
|
runtimeType = 'dsh';
|
|
121
|
+
/** Fence tokens are accepted only by the exact Adapter instance that issued them. */
|
|
122
|
+
trustFenceStates = new WeakMap();
|
|
85
123
|
deps;
|
|
86
124
|
constructor(deps) {
|
|
87
125
|
this.deps = {
|
|
@@ -92,6 +130,7 @@ export class DshRuntimeAdapter {
|
|
|
92
130
|
sessionPersistence: asPersistence(deps.sessionPersistence),
|
|
93
131
|
presets: asPresets(deps.presets),
|
|
94
132
|
policy: {
|
|
133
|
+
toolDisclosure: deps.toolDisclosure,
|
|
95
134
|
permission: deps.permission,
|
|
96
135
|
sandboxPolicy: deps.sandboxPolicy,
|
|
97
136
|
approval: deps.approval,
|
|
@@ -176,25 +215,296 @@ export class DshRuntimeAdapter {
|
|
|
176
215
|
async retireSession(handle) {
|
|
177
216
|
await handle.dispose();
|
|
178
217
|
}
|
|
218
|
+
// ── Governed terminal trust fence ─────────────────────────────────────────
|
|
219
|
+
/**
|
|
220
|
+
* Read the current live projection through the exact registry object. A
|
|
221
|
+
* fence never trusts a copied Session/Agent-shaped object supplied by a
|
|
222
|
+
* caller; the registry identity is the Runtime-local authority.
|
|
223
|
+
*/
|
|
224
|
+
currentFenceEvents(state) {
|
|
225
|
+
const current = this.deps.agents.get(state.sessionRef);
|
|
226
|
+
if (!current || current !== state.agent || current.id !== state.sessionRef || current.session !== state.session) {
|
|
227
|
+
throw new Error(`trust fence session ${state.sessionRef} is no longer the exact live registry object`);
|
|
228
|
+
}
|
|
229
|
+
const events = readDshSessionEvents(state.session);
|
|
230
|
+
if (!Array.isArray(events))
|
|
231
|
+
throw new Error(`trust fence session ${state.sessionRef} has no readable event projection`);
|
|
232
|
+
return events;
|
|
233
|
+
}
|
|
234
|
+
taintFence(state, reason) {
|
|
235
|
+
state.status = 'TAINTED';
|
|
236
|
+
state.taintReason = boundedFenceReason(reason);
|
|
237
|
+
return fenceResult(false, 'TAINTED', state.reservation, state.generation, state.taintReason);
|
|
238
|
+
}
|
|
239
|
+
asFenceState(fence) {
|
|
240
|
+
return this.trustFenceStates.get(fence);
|
|
241
|
+
}
|
|
242
|
+
checkFenceExpectation(state, expectation, operation) {
|
|
243
|
+
if (!expectation || !expectation.leaseId.trim() || !expectation.sessionRef.trim()) {
|
|
244
|
+
return this.taintFence(state, `${operation} 缺少完整 lease/session expectation`);
|
|
245
|
+
}
|
|
246
|
+
if (expectation.leaseId !== state.leaseId || expectation.sessionRef !== state.sessionRef) {
|
|
247
|
+
return this.taintFence(state, `${operation} expectation 不匹配:fence=${state.leaseId}/${state.sessionRef} `
|
|
248
|
+
+ `received=${expectation.leaseId}/${expectation.sessionRef}`);
|
|
249
|
+
}
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
inspectFence(state, phase, expectation) {
|
|
253
|
+
const expectationFailure = this.checkFenceExpectation(state, expectation, `trust fence ${phase}`);
|
|
254
|
+
if (expectationFailure)
|
|
255
|
+
return expectationFailure;
|
|
256
|
+
if (state.status === 'RELEASED') {
|
|
257
|
+
return fenceResult(false, 'RELEASED', state.reservation, state.generation, 'trust fence 已释放');
|
|
258
|
+
}
|
|
259
|
+
if (state.status === 'TAINTED') {
|
|
260
|
+
return fenceResult(false, 'TAINTED', state.reservation, state.generation, state.taintReason ?? 'trust fence 已污染');
|
|
261
|
+
}
|
|
262
|
+
const previousPhase = state.lastPhase ? FENCE_PHASE_ORDER[state.lastPhase] : -1;
|
|
263
|
+
if (FENCE_PHASE_ORDER[phase] < previousPhase) {
|
|
264
|
+
return this.taintFence(state, `trust fence phase regression: ${state.lastPhase} -> ${phase}`);
|
|
265
|
+
}
|
|
266
|
+
let events;
|
|
267
|
+
try {
|
|
268
|
+
events = this.currentFenceEvents(state);
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
return this.taintFence(state, error instanceof Error ? error.message : String(error));
|
|
272
|
+
}
|
|
273
|
+
const keys = events.map(eventKey);
|
|
274
|
+
if (keys.length < state.lastKeys.length) {
|
|
275
|
+
return this.taintFence(state, 'Runtime event generation moved backwards');
|
|
276
|
+
}
|
|
277
|
+
for (let i = 0; i < state.lastKeys.length; i++) {
|
|
278
|
+
if (keys[i] !== state.lastKeys[i]) {
|
|
279
|
+
return this.taintFence(state, `Runtime event prefix changed at index ${i}`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
for (let i = 0; i < state.baselineKeys.length; i++) {
|
|
283
|
+
if (keys[i] !== state.baselineKeys[i]) {
|
|
284
|
+
return this.taintFence(state, `Runtime baseline event prefix changed at index ${i}`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (state.runtimeDispatchRef !== null) {
|
|
288
|
+
const dispatchIndex = locateDshDispatchRef(events, state.runtimeDispatchRef);
|
|
289
|
+
// Every user/message appended after the baseline must be the exact
|
|
290
|
+
// owned dispatch message. This catches foreign ingress that arrived
|
|
291
|
+
// while the Lease was active but before the owned Runtime ref existed;
|
|
292
|
+
// slicing only from the owned ref would hide that history.
|
|
293
|
+
for (let i = state.baselineKeys.length; i < events.length; i++) {
|
|
294
|
+
const event = events[i];
|
|
295
|
+
if (event.type !== 'user/message')
|
|
296
|
+
continue;
|
|
297
|
+
const messageId = eventMessageId(event);
|
|
298
|
+
if (messageId !== state.runtimeDispatchRef || (dispatchIndex >= 0 && i < dispatchIndex)) {
|
|
299
|
+
return this.taintFence(state, `foreign user message crossed trust fence${messageId ? `: ${messageId}` : ''}`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (keys.length > state.lastKeys.length)
|
|
304
|
+
state.generation += 1;
|
|
305
|
+
state.lastKeys = keys;
|
|
306
|
+
state.lastPhase = phase;
|
|
307
|
+
return fenceResult(true, 'VALID', state.reservation, state.generation, 'trust fence valid');
|
|
308
|
+
}
|
|
309
|
+
async openTrustFence(input) {
|
|
310
|
+
const sessionRef = input.sessionRef.trim();
|
|
311
|
+
if (!input.leaseId.trim() || !sessionRef)
|
|
312
|
+
throw new Error('trust fence requires leaseId and sessionRef');
|
|
313
|
+
const agent = this.deps.agents.get(sessionRef);
|
|
314
|
+
if (!agent || agent.id !== sessionRef)
|
|
315
|
+
throw new Error(`trust fence cannot resolve exact live Agent ${sessionRef}`);
|
|
316
|
+
if (agent.status !== 'idle')
|
|
317
|
+
throw new Error(`trust fence requires idle Agent ${sessionRef}`);
|
|
318
|
+
if (typeof agent.runMaintenance !== 'function') {
|
|
319
|
+
throw new Error(`trust fence Runtime ingress reservation seam missing for Agent ${sessionRef}`);
|
|
320
|
+
}
|
|
321
|
+
const currentEvents = readDshSessionEvents(agent.session);
|
|
322
|
+
if (!Array.isArray(currentEvents))
|
|
323
|
+
throw new Error(`trust fence cannot read Session events for ${sessionRef}`);
|
|
324
|
+
const baselineKeys = currentEvents.map(eventKey);
|
|
325
|
+
const suppliedKeys = input.baselineEvents.map(eventKey);
|
|
326
|
+
if (baselineKeys.length !== suppliedKeys.length || baselineKeys.some((key, i) => key !== suppliedKeys[i])) {
|
|
327
|
+
throw new Error(`trust fence baseline is stale for Session ${sessionRef}`);
|
|
328
|
+
}
|
|
329
|
+
if (input.runtimeDispatchRef !== null && input.runtimeDispatchRef.trim() === '') {
|
|
330
|
+
throw new Error('trust fence runtimeDispatchRef must be null or non-empty');
|
|
331
|
+
}
|
|
332
|
+
const token = new DshTrustFenceToken();
|
|
333
|
+
this.trustFenceStates.set(token, {
|
|
334
|
+
token,
|
|
335
|
+
leaseId: input.leaseId,
|
|
336
|
+
sessionRef,
|
|
337
|
+
runtimeDispatchRef: input.runtimeDispatchRef,
|
|
338
|
+
agent,
|
|
339
|
+
session: agent.session,
|
|
340
|
+
baselineKeys,
|
|
341
|
+
lastKeys: [...baselineKeys],
|
|
342
|
+
generation: 0,
|
|
343
|
+
lastPhase: null,
|
|
344
|
+
status: 'OPEN',
|
|
345
|
+
taintReason: null,
|
|
346
|
+
cleanupUsed: false,
|
|
347
|
+
maintenanceRelease: null,
|
|
348
|
+
maintenance: null,
|
|
349
|
+
reservation: 'SERIALIZED',
|
|
350
|
+
});
|
|
351
|
+
return token;
|
|
352
|
+
}
|
|
353
|
+
bindTrustFence(fence, runtimeDispatchRef, expectation) {
|
|
354
|
+
const state = this.asFenceState(fence);
|
|
355
|
+
if (!state)
|
|
356
|
+
return fenceResult(false, 'UNKNOWN', 'UNKNOWN', null, 'unknown trust fence token');
|
|
357
|
+
const expectationFailure = this.checkFenceExpectation(state, expectation, 'trust fence bind');
|
|
358
|
+
if (expectationFailure)
|
|
359
|
+
return expectationFailure;
|
|
360
|
+
if (!runtimeDispatchRef.trim())
|
|
361
|
+
return this.taintFence(state, 'runtimeDispatchRef missing at fence bind');
|
|
362
|
+
if (state.runtimeDispatchRef !== null && state.runtimeDispatchRef !== runtimeDispatchRef) {
|
|
363
|
+
return this.taintFence(state, 'runtimeDispatchRef changed after fence bind');
|
|
364
|
+
}
|
|
365
|
+
state.runtimeDispatchRef = runtimeDispatchRef;
|
|
366
|
+
return this.inspectFence(state, 'terminal-write', expectation);
|
|
367
|
+
}
|
|
368
|
+
checkTrustFence(fence, phase, expectation) {
|
|
369
|
+
const state = this.asFenceState(fence);
|
|
370
|
+
if (!state)
|
|
371
|
+
return fenceResult(false, 'UNKNOWN', 'UNKNOWN', null, 'unknown trust fence token');
|
|
372
|
+
return this.inspectFence(state, phase, expectation);
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Execute the disposer while the Runtime's own maintenance ingress
|
|
376
|
+
* reservation is held. Normal followup calls are queued by DSH until the
|
|
377
|
+
* hold is released; an already-running/unmanaged ingress makes the
|
|
378
|
+
* reservation fail and the fence is tainted before any disposer call.
|
|
379
|
+
*/
|
|
380
|
+
async cleanupWithFence(request, context, fence, state, expectation) {
|
|
381
|
+
if (state.cleanupUsed)
|
|
382
|
+
throw new Error('trust fence cleanup is exactly-once');
|
|
383
|
+
state.cleanupUsed = true;
|
|
384
|
+
if (context.sessionRef !== state.sessionRef
|
|
385
|
+
|| context.agent !== state.agent
|
|
386
|
+
|| context.agent.session !== state.session) {
|
|
387
|
+
this.taintFence(state, 'cleanup context is not bound to the fenced Agent/Session');
|
|
388
|
+
throw new Error('cleanup context does not match trust fence');
|
|
389
|
+
}
|
|
390
|
+
let resultResolve;
|
|
391
|
+
let resultReject;
|
|
392
|
+
let resultSettled = false;
|
|
393
|
+
const resultPromise = new Promise((resolve, reject) => {
|
|
394
|
+
resultResolve = resolve;
|
|
395
|
+
resultReject = reject;
|
|
396
|
+
});
|
|
397
|
+
let releaseHold;
|
|
398
|
+
const hold = new Promise(resolve => { releaseHold = resolve; });
|
|
399
|
+
state.maintenanceRelease = releaseHold;
|
|
400
|
+
const settleResult = (result) => {
|
|
401
|
+
if (resultSettled)
|
|
402
|
+
return;
|
|
403
|
+
resultSettled = true;
|
|
404
|
+
resultResolve(result);
|
|
405
|
+
};
|
|
406
|
+
const rejectResult = (error) => {
|
|
407
|
+
if (resultSettled)
|
|
408
|
+
return;
|
|
409
|
+
resultSettled = true;
|
|
410
|
+
resultReject(error);
|
|
411
|
+
};
|
|
412
|
+
try {
|
|
413
|
+
const maintenance = state.agent.runMaintenance(async (signal) => {
|
|
414
|
+
if (signal.aborted) {
|
|
415
|
+
this.taintFence(state, 'Runtime maintenance reservation aborted');
|
|
416
|
+
rejectResult(new Error('Runtime maintenance reservation aborted'));
|
|
417
|
+
await hold;
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
const reserved = this.inspectFence(state, 'cleanup-reserved', expectation);
|
|
421
|
+
if (!reserved.ok) {
|
|
422
|
+
rejectResult(new Error(reserved.reason));
|
|
423
|
+
await hold;
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
const cleanupCheck = this.inspectFence(state, 'cleanup', expectation);
|
|
427
|
+
if (!cleanupCheck.ok) {
|
|
428
|
+
rejectResult(new Error(cleanupCheck.reason));
|
|
429
|
+
await hold;
|
|
430
|
+
return;
|
|
431
|
+
}
|
|
432
|
+
try {
|
|
433
|
+
settleResult(await cleanupDshEnforcement(context));
|
|
434
|
+
}
|
|
435
|
+
catch (error) {
|
|
436
|
+
rejectResult(error);
|
|
437
|
+
}
|
|
438
|
+
await hold;
|
|
439
|
+
});
|
|
440
|
+
state.maintenance = maintenance.then(() => undefined, error => {
|
|
441
|
+
// A rejected reservation is an ingress-fence failure, not merely a
|
|
442
|
+
// cleanup Promise failure. Taint before propagating so the caller's
|
|
443
|
+
// subsequent settlement check cannot persist terminal evidence or
|
|
444
|
+
// release a Lease on an unprotected Runtime path.
|
|
445
|
+
this.taintFence(state, `Runtime maintenance reservation rejected: ${error instanceof Error ? error.message : String(error)}`);
|
|
446
|
+
rejectResult(error);
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
catch (error) {
|
|
450
|
+
this.taintFence(state, `Runtime maintenance reservation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
451
|
+
rejectResult(error);
|
|
452
|
+
state.maintenance = null;
|
|
453
|
+
}
|
|
454
|
+
return resultPromise;
|
|
455
|
+
}
|
|
456
|
+
cleanup(request, context, fence, expectation) {
|
|
457
|
+
const ctx = context;
|
|
458
|
+
if (!ctx?.agent?.session)
|
|
459
|
+
return Promise.resolve({ ok: false, evidenceJson: null });
|
|
460
|
+
if (!fence)
|
|
461
|
+
return cleanupDshEnforcement(ctx);
|
|
462
|
+
const state = this.asFenceState(fence);
|
|
463
|
+
if (!state)
|
|
464
|
+
return Promise.reject(new Error('cleanup received unknown trust fence token'));
|
|
465
|
+
const expectationFailure = this.checkFenceExpectation(state, expectation, 'trust fence cleanup');
|
|
466
|
+
if (expectationFailure)
|
|
467
|
+
return Promise.reject(new Error(expectationFailure.reason));
|
|
468
|
+
const checked = this.inspectFence(state, 'cleanup-reserved', expectation);
|
|
469
|
+
if (!checked.ok)
|
|
470
|
+
return Promise.reject(new Error(checked.reason));
|
|
471
|
+
return this.cleanupWithFence(request, ctx, fence, state, expectation);
|
|
472
|
+
}
|
|
473
|
+
releaseTrustFence(fence, outcome, expectation) {
|
|
474
|
+
const state = this.asFenceState(fence);
|
|
475
|
+
if (!state)
|
|
476
|
+
return fenceResult(false, 'UNKNOWN', 'UNKNOWN', null, 'unknown trust fence token');
|
|
477
|
+
const expectationFailure = this.checkFenceExpectation(state, expectation, 'trust fence release');
|
|
478
|
+
if (expectationFailure)
|
|
479
|
+
return expectationFailure;
|
|
480
|
+
if (state.status === 'RELEASED')
|
|
481
|
+
return fenceResult(true, 'RELEASED', state.reservation, state.generation, 'trust fence already released');
|
|
482
|
+
if (outcome === 'RELEASED') {
|
|
483
|
+
const checked = this.inspectFence(state, 'release', expectation);
|
|
484
|
+
if (!checked.ok)
|
|
485
|
+
return checked;
|
|
486
|
+
}
|
|
487
|
+
state.status = 'RELEASED';
|
|
488
|
+
const release = state.maintenanceRelease;
|
|
489
|
+
state.maintenanceRelease = null;
|
|
490
|
+
release?.();
|
|
491
|
+
return fenceResult(true, 'RELEASED', state.reservation, state.generation, `trust fence released (${outcome})`);
|
|
492
|
+
}
|
|
179
493
|
// ── Capability(S4:context-bound 集合 + preflight/materialize/cleanup)────────
|
|
180
494
|
/**
|
|
181
495
|
* context-bound Runtime Enforceable Set:回答「这次 Session 下**能** enforce 什么」。
|
|
182
|
-
* - tools
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
* - approvalPolicy
|
|
496
|
+
* - tools:只有当前 context 同时暴露 `restrict`/`guard` 时,才计算
|
|
497
|
+
* A∩B(A=真实 `tools.schemas()` Runtime inventory;B=preset 声明面,回退 session 装配面);
|
|
498
|
+
* schemas 单独存在只代表声明,不进入 RuntimeEnforceableSet,见 `readEnforceableSet`;
|
|
499
|
+
* - sandboxMode/approvalPolicy:只从当前 context-bound Session 的最新政策事件重建;
|
|
500
|
+
* 构造期 setter 是否存在不能证明这次 Session 当前已经可 enforce。
|
|
186
501
|
*/
|
|
187
502
|
async capabilities(context) {
|
|
188
503
|
const ctx = context;
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
return {
|
|
193
|
-
tools,
|
|
194
|
-
sandboxMode: hasSandbox ? 'workspace-write' : null,
|
|
195
|
-
approvalPolicy: hasApproval ? 'never' : null,
|
|
196
|
-
presetId: null,
|
|
197
|
-
};
|
|
504
|
+
if (!ctx?.agent?.session) {
|
|
505
|
+
return { tools: [], sandboxMode: null, approvalPolicy: null, presetId: null };
|
|
506
|
+
}
|
|
507
|
+
return readEnforceableSet(ctx, { presets: this.deps.presets });
|
|
198
508
|
}
|
|
199
509
|
/** preflight:纯检查、零副作用(M3-S1 Stage 3)。 */
|
|
200
510
|
async preflight(request, context) {
|
|
@@ -203,7 +513,7 @@ export class DshRuntimeAdapter {
|
|
|
203
513
|
if (request.approvalPolicy !== 'never') {
|
|
204
514
|
reasons.push('governed Execution 要求 approvalPolicy=never(禁扩权);收到 ' + request.approvalPolicy);
|
|
205
515
|
}
|
|
206
|
-
if (
|
|
516
|
+
if (typeof ctx?.agent?.ctx?.tools?.restrict !== 'function' || typeof ctx.agent.ctx.tools.guard !== 'function') {
|
|
207
517
|
reasons.push('agent.ctx.tools 无 restrict/guard(工具面不可 enforce)');
|
|
208
518
|
}
|
|
209
519
|
if (!request.presetId && !this.deps.policy.sandboxPolicy) {
|
|
@@ -224,13 +534,6 @@ export class DshRuntimeAdapter {
|
|
|
224
534
|
return { ok: false, evidenceJson: null, reasons: ['materialize: 缺少 live session context'] };
|
|
225
535
|
return materializeDshEnforcement(this.deps.policy, ctx, request);
|
|
226
536
|
}
|
|
227
|
-
/** cleanup:拆除 per-execution guard/restrict(session 级政策保留)。 */
|
|
228
|
-
async cleanup(_request, context) {
|
|
229
|
-
const ctx = context;
|
|
230
|
-
if (!ctx?.agent?.session)
|
|
231
|
-
return { ok: false, evidenceJson: null };
|
|
232
|
-
return cleanupDshEnforcement(ctx);
|
|
233
|
-
}
|
|
234
537
|
// ── Dispatch / Evidence / Reconcile ────────────────────────────────────────
|
|
235
538
|
async dispatch(input) {
|
|
236
539
|
const agent = this.deps.agents.get(input.sessionRef);
|
|
@@ -250,7 +553,7 @@ export class DshRuntimeAdapter {
|
|
|
250
553
|
}
|
|
251
554
|
async observeExecution(refs, session) {
|
|
252
555
|
const live = session;
|
|
253
|
-
if (!live || !
|
|
556
|
+
if (!live || !refs.runtimeDispatchRef)
|
|
254
557
|
return 'UNKNOWN';
|
|
255
558
|
return reconstructExecutionObservation(live, refs.runtimeDispatchRef);
|
|
256
559
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsh-backend.js","sourceRoot":"","sources":["../../src/adapter/dsh-backend.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dsh-backend.js","sourceRoot":"","sources":["../../src/adapter/dsh-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { loadDshUsageReader, normalizeDshUsageCounts } from './dsh-usage.js';
|
|
2
|
+
import { readDshSessionEvents } from './dsh-session-events.js';
|
|
3
|
+
const count = (value) => typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
|
|
4
|
+
const object = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
|
|
5
|
+
/** An exact turn start is captured by the host observer, not inferred from a tool argument. */
|
|
6
|
+
export function extractDshTurnCost(events, fromSeq, derive) {
|
|
7
|
+
const base = { observationSequence: fromSeq, observedRequests: 0, reportedRequests: 0, usage: null };
|
|
8
|
+
const unavailable = (reasonCode) => ({ ...base, status: 'UNAVAILABLE', reasonCode });
|
|
9
|
+
if (!events || !count(fromSeq))
|
|
10
|
+
return unavailable('EVENTS_UNREADABLE');
|
|
11
|
+
const start = events.findIndex(event => event.seq === fromSeq && event.type === 'turn/start');
|
|
12
|
+
if (start < 0 || events.filter(event => event.seq === fromSeq).length !== 1)
|
|
13
|
+
return unavailable('TURN_START_NOT_FOUND');
|
|
14
|
+
const turn = events[start].data?.turn;
|
|
15
|
+
if (!count(turn))
|
|
16
|
+
return unavailable('TURN_BOUNDARY_INVALID');
|
|
17
|
+
let end = events.length, ended = false, slot = -1;
|
|
18
|
+
const reported = new Set();
|
|
19
|
+
for (let i = start; i < events.length; i++) {
|
|
20
|
+
const event = events[i];
|
|
21
|
+
if (!count(event.seq) || event.seq !== fromSeq + i - start)
|
|
22
|
+
return unavailable('EVENT_SEQUENCE_INVALID');
|
|
23
|
+
base.observationSequence = event.seq;
|
|
24
|
+
if (i > start && event.type === 'turn/start')
|
|
25
|
+
return unavailable('TURN_BOUNDARY_INVALID');
|
|
26
|
+
if (event.type === 'step/start' || event.type === 'llm/retry-started') {
|
|
27
|
+
if (event.data?.turn !== turn || !count(event.data.step))
|
|
28
|
+
return unavailable('REQUEST_BOUNDARY_INVALID');
|
|
29
|
+
slot++;
|
|
30
|
+
base.observedRequests++;
|
|
31
|
+
}
|
|
32
|
+
if ((event.type === 'assistant/message' || event.type === 'assistant/attempt') && slot >= 0) {
|
|
33
|
+
let sample = event.data?.usage;
|
|
34
|
+
if (sample === undefined && Array.isArray(event.data?.stream))
|
|
35
|
+
for (const item of event.data.stream) {
|
|
36
|
+
if (object(item) && item.type === 'chunk' && object(item.chunk) && item.chunk.type === 'usage')
|
|
37
|
+
sample = item.chunk.usage;
|
|
38
|
+
}
|
|
39
|
+
if (object(sample) && count(sample.inputTokens) && count(sample.outputTokens))
|
|
40
|
+
reported.add(slot);
|
|
41
|
+
}
|
|
42
|
+
if (event.type === 'turn/end') {
|
|
43
|
+
if (event.data?.turn !== turn)
|
|
44
|
+
return unavailable('TURN_BOUNDARY_INVALID');
|
|
45
|
+
end = i + 1;
|
|
46
|
+
ended = true;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
base.reportedRequests = reported.size;
|
|
51
|
+
if (!ended)
|
|
52
|
+
return { ...base, status: 'IN_PROGRESS', reasonCode: 'TURN_IN_PROGRESS' };
|
|
53
|
+
if (!derive)
|
|
54
|
+
return unavailable('USAGE_READER_UNAVAILABLE');
|
|
55
|
+
if (reported.size !== base.observedRequests)
|
|
56
|
+
return unavailable('REQUEST_USAGE_MISSING');
|
|
57
|
+
try {
|
|
58
|
+
const usage = normalizeDshUsageCounts(derive(events.slice(start, end)));
|
|
59
|
+
return usage ? { ...base, usage, status: 'COMPLETE', reasonCode: null } : unavailable('USAGE_INCOMPLETE');
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return unavailable('USAGE_READER_FAILED');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export async function observeDshTurnCost(session, fromSeq) {
|
|
66
|
+
return extractDshTurnCost(readDshSessionEvents(session), fromSeq, await loadDshUsageReader());
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=dsh-cost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsh-cost.js","sourceRoot":"","sources":["../../src/adapter/dsh-cost.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read the current snapshot on every call. Only absence of the modern API
|
|
3
|
+
* permits legacy access; a broken advertised API must not hide behind stale
|
|
4
|
+
* legacy evidence. null means unreadable, whereas [] is a proven empty log.
|
|
5
|
+
*/
|
|
6
|
+
export function readDshSessionEvents(session) {
|
|
7
|
+
if (session === null || typeof session !== 'object')
|
|
8
|
+
return null;
|
|
9
|
+
try {
|
|
10
|
+
const source = session;
|
|
11
|
+
let events;
|
|
12
|
+
if ('snapshotEvents' in source) {
|
|
13
|
+
const read = source.snapshotEvents;
|
|
14
|
+
if (typeof read !== 'function')
|
|
15
|
+
return null;
|
|
16
|
+
events = read.call(source);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
events = source.events;
|
|
20
|
+
}
|
|
21
|
+
if (!Array.isArray(events))
|
|
22
|
+
return null;
|
|
23
|
+
for (const event of events) {
|
|
24
|
+
if (event === null || typeof event !== 'object' || Array.isArray(event)
|
|
25
|
+
|| typeof event.type !== 'string' || event.type.length === 0
|
|
26
|
+
|| (event.data !== undefined && (event.data === null || typeof event.data !== 'object' || Array.isArray(event.data))))
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return events;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Only explicit message IDs establish correlation, never text substrings. */
|
|
36
|
+
export function locateDshDispatchRef(events, ref) {
|
|
37
|
+
if (!ref.trim())
|
|
38
|
+
return -1;
|
|
39
|
+
return events.findIndex(event => {
|
|
40
|
+
const nested = event.data?.message;
|
|
41
|
+
if (event.type === 'user/message')
|
|
42
|
+
return (event.data?.id ?? nested?.id) === ref;
|
|
43
|
+
return event.type === 'agent/inbox/spliced' && Array.isArray(event.data?.inserted)
|
|
44
|
+
&& event.data.inserted.some(item => item !== null && typeof item === 'object' && item.id === ref);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** Read only this dispatch's response; absent output never borrows a prior Claim. */
|
|
48
|
+
export function readDshDispatchSummary(session, dispatchRef) {
|
|
49
|
+
const events = readDshSessionEvents(session);
|
|
50
|
+
if (events === null)
|
|
51
|
+
return null;
|
|
52
|
+
const start = locateDshDispatchRef(events, dispatchRef);
|
|
53
|
+
if (start < 0)
|
|
54
|
+
return null;
|
|
55
|
+
let turn = null;
|
|
56
|
+
let summary = null;
|
|
57
|
+
for (let i = start + 1; i < events.length; i++) {
|
|
58
|
+
const event = events[i];
|
|
59
|
+
if (event.type === 'user/message') {
|
|
60
|
+
const id = event.data?.id ?? event.data?.message?.id;
|
|
61
|
+
if (id !== dispatchRef)
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
if (event.type === 'turn/start') {
|
|
65
|
+
if (turn !== null)
|
|
66
|
+
break;
|
|
67
|
+
if (typeof event.data?.turn !== 'number')
|
|
68
|
+
return null;
|
|
69
|
+
turn = event.data.turn;
|
|
70
|
+
}
|
|
71
|
+
if (event.type !== 'assistant/message' || turn === null)
|
|
72
|
+
continue;
|
|
73
|
+
if (event.data?.turn !== undefined && event.data.turn !== turn)
|
|
74
|
+
return null;
|
|
75
|
+
const data = event.data;
|
|
76
|
+
const parts = Array.isArray(data?.message?.content) ? data.message.content : [];
|
|
77
|
+
const texts = parts.flatMap(part => part !== null && typeof part === 'object'
|
|
78
|
+
&& part.type === 'text' && typeof part.text === 'string'
|
|
79
|
+
? [part.text] : []);
|
|
80
|
+
const text = texts.length ? texts.join('\n') : data?.message?.text ?? data?.text;
|
|
81
|
+
if (typeof text === 'string' && text.trim())
|
|
82
|
+
summary = text;
|
|
83
|
+
}
|
|
84
|
+
return summary;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=dsh-session-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsh-session-events.js","sourceRoot":"","sources":["../../src/adapter/dsh-session-events.ts"],"names":[],"mappings":"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"}
|