kiokuko-dsh 0.1.17 → 0.1.19
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/dist/client.d.ts +18 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +31 -0
- package/dist/client.js.map +1 -0
- package/dist/dsh/boundary-worker.d.ts +26 -0
- package/dist/dsh/boundary-worker.d.ts.map +1 -0
- package/dist/dsh/boundary-worker.js +111 -0
- package/dist/dsh/boundary-worker.js.map +1 -0
- package/dist/dsh/composition.d.ts +24 -24
- package/dist/dsh/composition.d.ts.map +1 -1
- package/dist/dsh/composition.js +67 -23
- package/dist/dsh/composition.js.map +1 -1
- package/dist/dsh/host-adapter.d.ts +6 -0
- package/dist/dsh/host-adapter.d.ts.map +1 -1
- package/dist/dsh/host-adapter.js +807 -153
- package/dist/dsh/host-adapter.js.map +1 -1
- package/dist/dsh/index.d.ts +8 -0
- package/dist/dsh/index.d.ts.map +1 -1
- package/dist/dsh/index.js +25 -1
- package/dist/dsh/index.js.map +1 -1
- package/dist/dsh/input-claim.d.ts +34 -0
- package/dist/dsh/input-claim.d.ts.map +1 -0
- package/dist/dsh/input-claim.js +119 -0
- package/dist/dsh/input-claim.js.map +1 -0
- package/dist/dsh/intake-gate.d.ts +4 -0
- package/dist/dsh/intake-gate.d.ts.map +1 -1
- package/dist/dsh/intake-gate.js +17 -6
- package/dist/dsh/intake-gate.js.map +1 -1
- package/dist/dsh/paths.d.ts +2 -0
- package/dist/dsh/paths.d.ts.map +1 -1
- package/dist/dsh/paths.js +6 -0
- package/dist/dsh/paths.js.map +1 -1
- package/dist/dsh/prompt-cache.d.ts +40 -0
- package/dist/dsh/prompt-cache.d.ts.map +1 -0
- package/dist/dsh/prompt-cache.js +64 -0
- package/dist/dsh/prompt-cache.js.map +1 -0
- package/dist/dsh/run-intake-service.d.ts +7 -0
- package/dist/dsh/run-intake-service.d.ts.map +1 -1
- package/dist/dsh/run-intake-service.js +7 -0
- package/dist/dsh/run-intake-service.js.map +1 -1
- package/dist/dsh/session-bridge.d.ts +27 -115
- package/dist/dsh/session-bridge.d.ts.map +1 -1
- package/dist/dsh/session-bridge.js +63 -545
- package/dist/dsh/session-bridge.js.map +1 -1
- package/dist/dsh/session-log-export.d.ts +33 -0
- package/dist/dsh/session-log-export.d.ts.map +1 -0
- package/dist/dsh/session-log-export.js +196 -0
- package/dist/dsh/session-log-export.js.map +1 -0
- package/dist/dsh/session-log-mirror.d.ts +104 -0
- package/dist/dsh/session-log-mirror.d.ts.map +1 -0
- package/dist/dsh/session-log-mirror.js +895 -0
- package/dist/dsh/session-log-mirror.js.map +1 -0
- package/dist/dsh/session-log-surface.d.ts +7 -0
- package/dist/dsh/session-log-surface.d.ts.map +1 -0
- package/dist/dsh/session-log-surface.js +70 -0
- package/dist/dsh/session-log-surface.js.map +1 -0
- package/dist/dsh/session-memory-finalizer.d.ts +134 -0
- package/dist/dsh/session-memory-finalizer.d.ts.map +1 -0
- package/dist/dsh/session-memory-finalizer.js +909 -0
- package/dist/dsh/session-memory-finalizer.js.map +1 -0
- package/dist/dsh/task-intake.d.ts +4 -0
- package/dist/dsh/task-intake.d.ts.map +1 -1
- package/dist/dsh/task-intake.js +12 -1
- package/dist/dsh/task-intake.js.map +1 -1
- package/dist/dsh/tool-policy.d.ts +7 -1
- package/dist/dsh/tool-policy.d.ts.map +1 -1
- package/dist/dsh/tool-policy.js +52 -5
- package/dist/dsh/tool-policy.js.map +1 -1
- package/dist/dsh/tools.d.ts.map +1 -1
- package/dist/dsh/tools.js +15 -10
- package/dist/dsh/tools.js.map +1 -1
- package/dist/dsh/turn-process.d.ts +126 -0
- package/dist/dsh/turn-process.d.ts.map +1 -0
- package/dist/dsh/turn-process.js +415 -0
- package/dist/dsh/turn-process.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/docs/architecture.md +42 -7
- package/docs/dsh-plugin.md +34 -31
- package/docs/execution-ledger.md +18 -3
- package/docs/store-evidence.md +5 -3
- package/dsh/cordis.patch.yml +7 -4
- package/migrations/002_dsh_memory_finalization.sql +119 -0
- package/migrations/003_dsh_turn_process.sql +225 -0
- package/package.json +27 -3
- package/skills/kiokuko-enno-oduno/SKILL.md +1 -1
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface DshSessionDownloadOptions {
|
|
2
|
+
readonly endpoint: string;
|
|
3
|
+
readonly sessionId: string;
|
|
4
|
+
readonly fetch?: typeof globalThis.fetch;
|
|
5
|
+
readonly window?: {
|
|
6
|
+
showSaveFilePicker?: (options: unknown) => Promise<{
|
|
7
|
+
createWritable(): Promise<WritableStream<Uint8Array>>;
|
|
8
|
+
}>;
|
|
9
|
+
location: {
|
|
10
|
+
assign(url: string): void;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare const inject: readonly ["slots", "locale"];
|
|
15
|
+
export declare function apply(ctx: import('@deepseek-ai/cordis').Context): Promise<void>;
|
|
16
|
+
/** Browser helper that never builds a whole-log Blob in application memory. */
|
|
17
|
+
export declare function downloadDshSessionLog(options: DshSessionDownloadOptions): Promise<'streamed' | 'navigated'>;
|
|
18
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;YAAE,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;SAAE,CAAC,CAAA;QAC7G,QAAQ,EAAE;YAAE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAA;KACxC,CAAA;CACF;AAID,eAAO,MAAM,MAAM,8BAA+B,CAAA;AAClD,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,qBAAqB,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrF;AAED,+EAA+E;AAC/E,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC,CAiBjH"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/// <reference path="./dsh-session-log-export-client.d.ts" />
|
|
2
|
+
// Keep DSH's native Header modal and `/export` command behavior. Loading is
|
|
3
|
+
// deferred so non-Web consumers can import `./client` without the DSH bundle.
|
|
4
|
+
export const inject = ['slots', 'locale'];
|
|
5
|
+
export async function apply(ctx) {
|
|
6
|
+
const official = await import('@deepseek-ai/dsh-session-log-export/client');
|
|
7
|
+
official.apply(ctx);
|
|
8
|
+
}
|
|
9
|
+
/** Browser helper that never builds a whole-log Blob in application memory. */
|
|
10
|
+
export async function downloadDshSessionLog(options) {
|
|
11
|
+
const url = new URL(options.endpoint);
|
|
12
|
+
url.searchParams.set('sessionId', options.sessionId);
|
|
13
|
+
const browser = options.window ?? globalThis.window;
|
|
14
|
+
if (browser?.showSaveFilePicker === undefined) {
|
|
15
|
+
if (browser === undefined)
|
|
16
|
+
throw new Error('browser download surface is unavailable');
|
|
17
|
+
url.searchParams.set('download', '1');
|
|
18
|
+
browser.location.assign(url.toString());
|
|
19
|
+
return 'navigated';
|
|
20
|
+
}
|
|
21
|
+
const response = await (options.fetch ?? globalThis.fetch)(url);
|
|
22
|
+
if (!response.ok)
|
|
23
|
+
throw new Error(`Session export failed: HTTP ${response.status}`);
|
|
24
|
+
if (response.body === null)
|
|
25
|
+
throw new Error('Session export returned no response stream');
|
|
26
|
+
const handle = await browser.showSaveFilePicker({ suggestedName: `dsh-session-${options.sessionId}.zip`, types: [{ description: 'ZIP archive', accept: { 'application/zip': ['.zip'] } }] });
|
|
27
|
+
const writable = await handle.createWritable();
|
|
28
|
+
await response.body.pipeTo(writable);
|
|
29
|
+
return 'streamed';
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAY7D,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAU,CAAA;AAClD,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,GAA0C;IACpE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,4CAA4C,CAAC,CAAA;IAC3E,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACrB,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAkC;IAC5E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,IAAK,UAA0E,CAAC,MAAM,CAAA;IACpH,IAAI,OAAO,EAAE,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC9C,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QACrF,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QACvC,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IAC/D,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IACnF,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IACzF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,EAAE,aAAa,EAAE,eAAe,OAAO,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;IAC5L,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAA;IAC9C,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACpC,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { DshRuntime } from './runtime.js';
|
|
2
|
+
import { type DshBoundaryCompletion, type DshBoundaryJob, type DshContinuationOutboxItem } from './turn-process.js';
|
|
3
|
+
export interface DshBoundaryWorkerOptions {
|
|
4
|
+
readonly runtime: Pick<DshRuntime, 'withDatabase'>;
|
|
5
|
+
/** One bounded job stage. It must be idempotent under lease recovery. */
|
|
6
|
+
readonly process: (job: DshBoundaryJob) => DshBoundaryCompletion | PromiseLike<DshBoundaryCompletion>;
|
|
7
|
+
/** Native durability barrier. Failure is fail-closed for delivery only. */
|
|
8
|
+
readonly flush: (job: DshBoundaryJob) => void | PromiseLike<void>;
|
|
9
|
+
/** Enqueue one deterministic plugin-owned message into the native Agent. */
|
|
10
|
+
readonly dispatch: (job: DshBoundaryJob, item: DshContinuationOutboxItem) => void | PromiseLike<void>;
|
|
11
|
+
readonly bindNativeAgent?: (sessionId: string, nativeAgent: object) => void;
|
|
12
|
+
readonly now?: () => string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Durable, no-idle outbox driver. `agent/turn-stopping` only calls `kick`;
|
|
16
|
+
* confirmation, verification, advisory, context, and delivery run as separate
|
|
17
|
+
* leased stages outside that callback.
|
|
18
|
+
*/
|
|
19
|
+
export declare class DshBoundaryWorker {
|
|
20
|
+
#private;
|
|
21
|
+
constructor(options: DshBoundaryWorkerOptions);
|
|
22
|
+
kick(sessionId?: string, nativeAgent?: object): void;
|
|
23
|
+
whenIdle(): Promise<void>;
|
|
24
|
+
dispose(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=boundary-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundary-worker.d.ts","sourceRoot":"","sources":["../../src/dsh/boundary-worker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAML,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC/B,MAAM,mBAAmB,CAAA;AAE1B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;IAClD,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,qBAAqB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAA;IACrG,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;IACjE,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,yBAAyB,KAAK,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;IACrG,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAC5B;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;;gBAWhB,OAAO,EAAE,wBAAwB;IAS7C,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAqE9C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAEzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { withImmediateTransaction } from '../db/transaction.js';
|
|
3
|
+
import { claimBoundaryJobInTransaction, completeBoundaryJobInTransaction, failBoundaryJobInTransaction, markOutboxDispatchedInTransaction, readPendingOutbox, } from './turn-process.js';
|
|
4
|
+
/**
|
|
5
|
+
* Durable, no-idle outbox driver. `agent/turn-stopping` only calls `kick`;
|
|
6
|
+
* confirmation, verification, advisory, context, and delivery run as separate
|
|
7
|
+
* leased stages outside that callback.
|
|
8
|
+
*/
|
|
9
|
+
export class DshBoundaryWorker {
|
|
10
|
+
#runtime;
|
|
11
|
+
#process;
|
|
12
|
+
#flush;
|
|
13
|
+
#dispatch;
|
|
14
|
+
#now;
|
|
15
|
+
#bindNativeAgent;
|
|
16
|
+
#tail = Promise.resolve();
|
|
17
|
+
#disposed = false;
|
|
18
|
+
#retryTimers = new Map();
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.#runtime = options.runtime;
|
|
21
|
+
this.#process = options.process;
|
|
22
|
+
this.#flush = options.flush;
|
|
23
|
+
this.#dispatch = options.dispatch;
|
|
24
|
+
this.#bindNativeAgent = options.bindNativeAgent;
|
|
25
|
+
this.#now = options.now ?? (() => new Date().toISOString());
|
|
26
|
+
}
|
|
27
|
+
kick(sessionId, nativeAgent) {
|
|
28
|
+
if (this.#disposed)
|
|
29
|
+
return;
|
|
30
|
+
if (sessionId !== undefined && nativeAgent !== undefined)
|
|
31
|
+
this.#bindNativeAgent?.(sessionId, nativeAgent);
|
|
32
|
+
if (sessionId === undefined)
|
|
33
|
+
return;
|
|
34
|
+
const timer = this.#retryTimers.get(sessionId);
|
|
35
|
+
if (timer !== undefined) {
|
|
36
|
+
clearTimeout(timer);
|
|
37
|
+
this.#retryTimers.delete(sessionId);
|
|
38
|
+
}
|
|
39
|
+
this.#tail = this.#tail.then(() => this.#drain(sessionId)).catch(() => undefined);
|
|
40
|
+
}
|
|
41
|
+
#scheduleRetry(sessionId, retryAt) {
|
|
42
|
+
if (this.#disposed)
|
|
43
|
+
return;
|
|
44
|
+
const delay = Math.max(0, Date.parse(retryAt) - Date.parse(this.#now()));
|
|
45
|
+
const existing = this.#retryTimers.get(sessionId);
|
|
46
|
+
if (existing !== undefined)
|
|
47
|
+
clearTimeout(existing);
|
|
48
|
+
const timer = setTimeout(() => {
|
|
49
|
+
this.#retryTimers.delete(sessionId);
|
|
50
|
+
this.kick(sessionId);
|
|
51
|
+
}, Math.min(delay, 60_000));
|
|
52
|
+
timer.unref?.();
|
|
53
|
+
this.#retryTimers.set(sessionId, timer);
|
|
54
|
+
}
|
|
55
|
+
async #drain(sessionId) {
|
|
56
|
+
while (!this.#disposed) {
|
|
57
|
+
const ownerNonce = randomUUID();
|
|
58
|
+
const job = await this.#runtime.withDatabase((database) => withImmediateTransaction(database, () => (claimBoundaryJobInTransaction(database, ownerNonce, this.#now(), sessionId))));
|
|
59
|
+
if (job === undefined)
|
|
60
|
+
return;
|
|
61
|
+
try {
|
|
62
|
+
let completion;
|
|
63
|
+
if (job.kind === 'delivery') {
|
|
64
|
+
const outbox = await this.#runtime.withDatabase((database) => readPendingOutbox(database, job.dshSessionId)
|
|
65
|
+
.find((item) => item.receiptId === job.receiptId));
|
|
66
|
+
if (outbox === undefined || outbox.status === 'observed' || outbox.status === 'superseded') {
|
|
67
|
+
completion = { kind: 'superseded' };
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
await this.#flush(job);
|
|
71
|
+
await this.#dispatch(job, outbox);
|
|
72
|
+
await this.#runtime.withDatabase((database) => withImmediateTransaction(database, () => {
|
|
73
|
+
markOutboxDispatchedInTransaction(database, outbox.continuationId, this.#now());
|
|
74
|
+
}));
|
|
75
|
+
completion = { kind: 'completed' };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
completion = await this.#process(job);
|
|
80
|
+
}
|
|
81
|
+
await this.#runtime.withDatabase((database) => withImmediateTransaction(database, () => {
|
|
82
|
+
completeBoundaryJobInTransaction(database, job, completion, this.#now());
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
let retryAt;
|
|
87
|
+
try {
|
|
88
|
+
await this.#runtime.withDatabase((database) => withImmediateTransaction(database, () => {
|
|
89
|
+
retryAt = failBoundaryJobInTransaction(database, job, error, this.#now());
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// A Core DB failure cannot be repaired in-memory. The expired lease
|
|
94
|
+
// is the recovery mechanism on the next kick/startup.
|
|
95
|
+
}
|
|
96
|
+
if (retryAt !== undefined)
|
|
97
|
+
this.#scheduleRetry(job.dshSessionId, retryAt);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async whenIdle() { await this.#tail; }
|
|
103
|
+
async dispose() {
|
|
104
|
+
this.#disposed = true;
|
|
105
|
+
for (const timer of this.#retryTimers.values())
|
|
106
|
+
clearTimeout(timer);
|
|
107
|
+
this.#retryTimers.clear();
|
|
108
|
+
await this.#tail;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=boundary-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundary-worker.js","sourceRoot":"","sources":["../../src/dsh/boundary-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Context } from '@deepseek-ai/cordis';
|
|
2
2
|
import { DshEnnoController } from './enno-controller.js';
|
|
3
3
|
import { DshIntakeGate, type DshPreStepEvent } from './intake-gate.js';
|
|
4
|
-
import { type
|
|
4
|
+
import { type DshCloseIntent, type DshNativeSession, type DshRunLifecycle } from './session-bridge.js';
|
|
5
5
|
import { type DshToolPolicy } from './tool-policy.js';
|
|
6
6
|
import { type DshToolHost, type DshToolRegistrationContext } from './tools.js';
|
|
7
7
|
import { DshPonytailModes, type DshPonytailCommandContext } from './commands.js';
|
|
@@ -9,17 +9,16 @@ import { type DshSkillContext } from './standard-skill-provider.js';
|
|
|
9
9
|
import { mountSoulPrompt } from './prompt-policy.js';
|
|
10
10
|
import type { DshUserQuestions } from './user-interaction.js';
|
|
11
11
|
import type { DshRuntime } from './runtime.js';
|
|
12
|
+
import type { DshMemoryFinalizer } from './session-memory-finalizer.js';
|
|
13
|
+
import type { DshMirrorCheckpoint } from './session-log-mirror.js';
|
|
14
|
+
import type { DshBoundaryWorker } from './boundary-worker.js';
|
|
15
|
+
import type { DshSessionLogExportService } from './session-log-export.js';
|
|
12
16
|
/** The optional, explicit host adapter supplied by a dsh profile. */
|
|
13
17
|
export declare const KIOKUKO_DSH_HOST_SERVICE = "kiokukoDsh";
|
|
14
18
|
export interface DshNativePreStepPayload {
|
|
15
19
|
readonly agent: {
|
|
16
20
|
readonly id: string;
|
|
17
|
-
readonly session?:
|
|
18
|
-
readonly id: string;
|
|
19
|
-
readonly header?: {
|
|
20
|
-
readonly cwd?: string;
|
|
21
|
-
};
|
|
22
|
-
};
|
|
21
|
+
readonly session?: DshNativeSession;
|
|
23
22
|
readonly sessionId?: string;
|
|
24
23
|
};
|
|
25
24
|
readonly messages: readonly unknown[];
|
|
@@ -56,25 +55,26 @@ export interface DshCompositionHost {
|
|
|
56
55
|
readonly toolPolicy?: DshToolPolicy;
|
|
57
56
|
readonly intakeGate?: DshIntakeGate;
|
|
58
57
|
readonly mapPreStep?: (payload: DshNativePreStepPayload) => DshPreStepEvent | PromiseLike<DshPreStepEvent>;
|
|
59
|
-
|
|
60
|
-
readonly
|
|
61
|
-
|
|
58
|
+
/** Read-only exact active run binding; never used to mirror session events. */
|
|
59
|
+
readonly resolveSessionRunId?: (session: {
|
|
60
|
+
readonly id: string;
|
|
61
|
+
}) => string | undefined;
|
|
62
|
+
readonly memoryFinalizer?: Pick<DshMemoryFinalizer, 'start' | 'dispose' | 'whenIdle'>;
|
|
63
|
+
readonly memoryFinalizerOwner?: 'composition' | 'host';
|
|
64
|
+
readonly sessionMirror?: {
|
|
65
|
+
readonly start: () => Promise<void>;
|
|
66
|
+
readonly close: () => Promise<void>;
|
|
67
|
+
};
|
|
68
|
+
readonly sessionMirrorOwner?: 'composition' | 'host';
|
|
69
|
+
readonly sessionExport?: DshSessionLogExportService;
|
|
70
|
+
readonly checkpointSessionMirror?: (session: DshNativeSession) => PromiseLike<DshMirrorCheckpoint>;
|
|
62
71
|
readonly ennoController?: DshEnnoController;
|
|
72
|
+
readonly boundaryWorker?: Pick<DshBoundaryWorker, 'kick' | 'dispose' | 'whenIdle'>;
|
|
73
|
+
readonly boundaryWorkerOwner?: 'composition' | 'host';
|
|
63
74
|
readonly lifecycle?: DshRunLifecycle;
|
|
64
|
-
readonly
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
} | PromiseLike<{
|
|
68
|
-
readonly runId: string;
|
|
69
|
-
readonly status: 'completed' | 'failed' | 'cancelled';
|
|
70
|
-
} | undefined> | undefined;
|
|
71
|
-
readonly resolveSessionClose?: (sessionId: string, nativeSession: object) => {
|
|
72
|
-
readonly runId: string;
|
|
73
|
-
readonly status: 'completed' | 'failed' | 'cancelled';
|
|
74
|
-
} | PromiseLike<{
|
|
75
|
-
readonly runId: string;
|
|
76
|
-
readonly status: 'completed' | 'failed' | 'cancelled';
|
|
77
|
-
} | undefined> | undefined;
|
|
75
|
+
readonly lifecycleOwner?: 'composition' | 'host';
|
|
76
|
+
readonly resolveIdleClose?: (agentId: string, sessionId?: string, nativeSession?: object, nativeAgent?: object) => DshCloseIntent | PromiseLike<DshCloseIntent | undefined> | undefined;
|
|
77
|
+
readonly resolveSessionClose?: (sessionId: string, nativeSession: object) => DshCloseIntent | PromiseLike<DshCloseIntent | undefined> | undefined;
|
|
78
78
|
}
|
|
79
79
|
type DshToolHostRegistration = DshToolRegistrationContext['tools']['register'];
|
|
80
80
|
export interface DshCompositionHandle {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/dsh/composition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAA0D,MAAM,sBAAsB,CAAA;AAChH,OAAO,EAAE,aAAa,EAA2B,KAAK,eAAe,EAA0B,MAAM,kBAAkB,CAAA;AACvH,OAAO,
|
|
1
|
+
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/dsh/composition.ts"],"names":[],"mappings":"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"}
|
package/dist/dsh/composition.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import {
|
|
2
|
+
import { mountDshIdleLifecycle, mountDshSessionLifecycle } from './session-bridge.js';
|
|
3
3
|
import { mountDshToolPolicy } from './tool-policy.js';
|
|
4
4
|
import { mountDshModelTools } from './tools.js';
|
|
5
5
|
import { DshPonytailModes, mountDshPonytailCommand } from './commands.js';
|
|
@@ -21,8 +21,14 @@ async function mountRuntime(runtime) {
|
|
|
21
21
|
await runtime.close();
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
function mountNativeIntakeGate(ctx, gate, mapPreStep) {
|
|
25
|
-
return ctx.on('agent/pre-step', async (payload, next) =>
|
|
24
|
+
function mountNativeIntakeGate(ctx, gate, mapPreStep, worker) {
|
|
25
|
+
return ctx.on('agent/pre-step', async (payload, next) => {
|
|
26
|
+
const decision = await gate.preStep(await mapPreStep(payload), next);
|
|
27
|
+
// CapturingGate has now applied human-input precedence and stale-outbox
|
|
28
|
+
// supersession. Only after that point may recovery work be kicked.
|
|
29
|
+
worker?.kick(payload.agent.session?.id ?? payload.agent.sessionId, payload.agent);
|
|
30
|
+
return decision;
|
|
31
|
+
}, { prepend: true });
|
|
26
32
|
}
|
|
27
33
|
function mountNativeEnnoController(ctx, controller) {
|
|
28
34
|
return ctx.on('agent/turn-stopping', async (payload) => {
|
|
@@ -42,6 +48,17 @@ function mountNativeEnnoController(ctx, controller) {
|
|
|
42
48
|
await controller.handle({ agent, turn: payload.turn, signal: payload.signal });
|
|
43
49
|
}, { prepend: true });
|
|
44
50
|
}
|
|
51
|
+
function mountNativeBoundaryKick(ctx, worker) {
|
|
52
|
+
const kick = (payload) => {
|
|
53
|
+
// No validation, LLM call, context construction, or delivery is allowed
|
|
54
|
+
// inside the native turn-stopping callback. The durable worker owns it.
|
|
55
|
+
worker.kick(payload.agent.session?.id ?? payload.agent.sessionId, payload.agent);
|
|
56
|
+
};
|
|
57
|
+
return [
|
|
58
|
+
ctx.on('agent/turn-stopping', kick, { prepend: true }),
|
|
59
|
+
ctx.on('agent/idle', kick),
|
|
60
|
+
];
|
|
61
|
+
}
|
|
45
62
|
/**
|
|
46
63
|
* Mount every seam for which the profile supplied a real host adapter. The
|
|
47
64
|
* adapter is deliberately explicit: a generic Cordis context cannot invent a
|
|
@@ -104,6 +121,27 @@ export async function mountDshComposition(ctx, host) {
|
|
|
104
121
|
if (host.runtimeOwner !== 'host')
|
|
105
122
|
cleanupDisposers.push(disposer);
|
|
106
123
|
}
|
|
124
|
+
if (host.sessionMirror !== undefined) {
|
|
125
|
+
await host.sessionMirror.start();
|
|
126
|
+
const closeMirror = async () => host.sessionMirror.close();
|
|
127
|
+
setupResourceDisposers.push(closeMirror);
|
|
128
|
+
if (host.sessionMirrorOwner !== 'host')
|
|
129
|
+
cleanupDisposers.push(closeMirror);
|
|
130
|
+
}
|
|
131
|
+
if (host.memoryFinalizer !== undefined) {
|
|
132
|
+
await host.memoryFinalizer.start();
|
|
133
|
+
const closeFinalizer = async () => host.memoryFinalizer.dispose();
|
|
134
|
+
setupResourceDisposers.push(closeFinalizer);
|
|
135
|
+
if (host.memoryFinalizerOwner !== 'host')
|
|
136
|
+
cleanupDisposers.push(closeFinalizer);
|
|
137
|
+
}
|
|
138
|
+
if (host.boundaryWorker !== undefined) {
|
|
139
|
+
host.boundaryWorker.kick();
|
|
140
|
+
const closeBoundaryWorker = async () => host.boundaryWorker.dispose();
|
|
141
|
+
setupResourceDisposers.push(closeBoundaryWorker);
|
|
142
|
+
if (host.boundaryWorkerOwner !== 'host')
|
|
143
|
+
cleanupDisposers.push(closeBoundaryWorker);
|
|
144
|
+
}
|
|
107
145
|
if (host.skills !== undefined) {
|
|
108
146
|
const disposer = mountStandardSkillProvider({ skills: host.skills });
|
|
109
147
|
setupResourceDisposers.push(disposer);
|
|
@@ -142,35 +180,41 @@ export async function mountDshComposition(ctx, host) {
|
|
|
142
180
|
if (host.intakeGate !== undefined) {
|
|
143
181
|
if (host.mapPreStep === undefined)
|
|
144
182
|
throw new Error('kiokuko-dsh intake gate requires a native task projection');
|
|
145
|
-
ingressDisposers.push(mountNativeIntakeGate(ctx, host.intakeGate, host.mapPreStep));
|
|
146
|
-
}
|
|
147
|
-
if (host.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
ingressDisposers.push(
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
await host.lifecycle.dispose();
|
|
155
|
-
else
|
|
156
|
-
await host.bridge.close();
|
|
157
|
-
};
|
|
158
|
-
setupResourceDisposers.push(closeBridge);
|
|
159
|
-
if (host.bridgeOwner !== 'host')
|
|
160
|
-
cleanupDisposers.push(closeBridge);
|
|
161
|
-
}
|
|
162
|
-
if (host.ennoController !== undefined)
|
|
183
|
+
ingressDisposers.push(mountNativeIntakeGate(ctx, host.intakeGate, host.mapPreStep, host.boundaryWorker));
|
|
184
|
+
}
|
|
185
|
+
if (host.boundaryWorker !== undefined && host.ennoController !== undefined) {
|
|
186
|
+
throw new Error('kiokuko-dsh must not mount both the durable boundary worker and the legacy turn-stopping controller');
|
|
187
|
+
}
|
|
188
|
+
if (host.boundaryWorker !== undefined) {
|
|
189
|
+
ingressDisposers.push(...mountNativeBoundaryKick(ctx, host.boundaryWorker));
|
|
190
|
+
}
|
|
191
|
+
else if (host.ennoController !== undefined) {
|
|
163
192
|
ingressDisposers.push(mountNativeEnnoController(ctx, host.ennoController));
|
|
193
|
+
}
|
|
164
194
|
if (host.lifecycle !== undefined) {
|
|
165
195
|
if (host.resolveIdleClose === undefined)
|
|
166
196
|
throw new Error('kiokuko-dsh idle lifecycle requires a close resolver');
|
|
167
197
|
const nativeSessions = ctx.get('sessions', false);
|
|
168
198
|
if (nativeSessions?.flush === undefined)
|
|
169
199
|
throw new Error('kiokuko-dsh lifecycle requires the native DSH session flush service');
|
|
170
|
-
ingressDisposers.push(mountDshIdleLifecycle(ctx, host.lifecycle, host.resolveIdleClose, async (session) => {
|
|
200
|
+
ingressDisposers.push(mountDshIdleLifecycle(ctx, host.lifecycle, host.resolveIdleClose, async (session) => {
|
|
201
|
+
await nativeSessions.flush(session);
|
|
202
|
+
try {
|
|
203
|
+
await host.checkpointSessionMirror?.(session);
|
|
204
|
+
}
|
|
205
|
+
catch { /* cache is non-vetoing */ }
|
|
206
|
+
}));
|
|
171
207
|
if (host.resolveSessionClose !== undefined) {
|
|
172
|
-
ingressDisposers.push(mountDshSessionLifecycle(ctx, host.lifecycle, host.resolveSessionClose)
|
|
208
|
+
ingressDisposers.push(mountDshSessionLifecycle(ctx, host.lifecycle, host.resolveSessionClose, async (session) => {
|
|
209
|
+
await nativeSessions.flush(session);
|
|
210
|
+
try {
|
|
211
|
+
await host.checkpointSessionMirror?.(session);
|
|
212
|
+
}
|
|
213
|
+
catch { /* cache is non-vetoing */ }
|
|
214
|
+
}));
|
|
173
215
|
}
|
|
216
|
+
if (host.lifecycleOwner !== 'host')
|
|
217
|
+
cleanupDisposers.push(() => host.lifecycle.dispose());
|
|
174
218
|
}
|
|
175
219
|
}
|
|
176
220
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.js","sourceRoot":"","sources":["../../src/dsh/composition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"composition.js","sourceRoot":"","sources":["../../src/dsh/composition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Context } from '@deepseek-ai/cordis';
|
|
2
2
|
import { KIOKUKO_DSH_HOST_SERVICE, type DshCompositionHost } from './composition.js';
|
|
3
|
+
import { type DshLlm, type DshSessionQuery } from './session-memory-finalizer.js';
|
|
3
4
|
import { type DshAdvisoryCall } from './advisory-runner.js';
|
|
4
5
|
export interface DshAdvisoryHost {
|
|
5
6
|
readonly verifyReadOnly: (call: DshAdvisoryCall) => boolean | PromiseLike<boolean>;
|
|
@@ -10,6 +11,11 @@ export interface DshHostAdapterOptions {
|
|
|
10
11
|
readonly migrationsDirectory?: string;
|
|
11
12
|
readonly repositoryRoot?: string;
|
|
12
13
|
readonly now?: () => string;
|
|
14
|
+
/** Test/custom host override; the normal DSH bundle injects sessionQuery. */
|
|
15
|
+
readonly sessionQuery?: DshSessionQuery;
|
|
16
|
+
/** Test/custom host override; the normal DSH bundle injects llm. */
|
|
17
|
+
readonly llm?: DshLlm;
|
|
18
|
+
readonly sessionCachePath?: string;
|
|
13
19
|
/** Optional host-owned isolated, read-only advisory execution surface. */
|
|
14
20
|
readonly advisory?: DshAdvisoryHost;
|
|
15
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-adapter.d.ts","sourceRoot":"","sources":["../../src/dsh/host-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EAExB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"host-adapter.d.ts","sourceRoot":"","sources":["../../src/dsh/host-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EAExB,MAAM,kBAAkB,CAAA;AAkBzB,OAAO,EAA0C,KAAK,MAAM,EAAgD,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEvK,OAAO,EAAqB,KAAK,eAAe,EAA+B,MAAM,sBAAsB,CAAA;AAqF3G,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IAClF,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9D;AAMD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAA;IACvC,oEAAoE;IACpE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACtC;AA8LD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAm5CtG;AAsBD,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
|