kiokuko-dsh 0.2.21 → 0.2.23
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/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/dist/deep-thinker/current-model.d.ts.map +1 -1
- package/dist/deep-thinker/current-model.js +4 -0
- package/dist/deep-thinker/current-model.js.map +1 -1
- package/dist/dsh/answer-review/contracts.d.ts +1 -0
- package/dist/dsh/answer-review/contracts.d.ts.map +1 -1
- package/dist/dsh/answer-review/coordinator.js +3 -3
- package/dist/dsh/answer-review/coordinator.js.map +1 -1
- package/dist/dsh/clarification-context.d.ts +24 -0
- package/dist/dsh/clarification-context.d.ts.map +1 -0
- package/dist/dsh/clarification-context.js +31 -0
- package/dist/dsh/clarification-context.js.map +1 -0
- package/dist/dsh/coding-question.d.ts +26 -0
- package/dist/dsh/coding-question.d.ts.map +1 -0
- package/dist/dsh/coding-question.js +48 -0
- package/dist/dsh/coding-question.js.map +1 -0
- package/dist/dsh/coding-workflow/contracts.d.ts +2 -2
- package/dist/dsh/coding-workflow/host.d.ts +2 -4
- package/dist/dsh/coding-workflow/host.d.ts.map +1 -1
- package/dist/dsh/coding-workflow/host.js +13 -29
- package/dist/dsh/coding-workflow/host.js.map +1 -1
- package/dist/dsh/coding-workflow/intent.d.ts.map +1 -1
- package/dist/dsh/coding-workflow/intent.js +2 -1
- package/dist/dsh/coding-workflow/intent.js.map +1 -1
- package/dist/dsh/coding-workflow/service.d.ts +6 -6
- package/dist/dsh/coding-workflow/service.d.ts.map +1 -1
- package/dist/dsh/coding-workflow/service.js +5 -3
- package/dist/dsh/coding-workflow/service.js.map +1 -1
- package/dist/dsh/guardrail/contracts.d.ts +33 -1
- package/dist/dsh/guardrail/contracts.d.ts.map +1 -1
- package/dist/dsh/guardrail/contracts.js +1 -1
- package/dist/dsh/guardrail/contracts.js.map +1 -1
- package/dist/dsh/guardrail/engine.d.ts +2 -0
- package/dist/dsh/guardrail/engine.d.ts.map +1 -1
- package/dist/dsh/guardrail/engine.js +18 -7
- package/dist/dsh/guardrail/engine.js.map +1 -1
- package/dist/dsh/guardrail/evidence.d.ts.map +1 -1
- package/dist/dsh/guardrail/evidence.js +29 -1
- package/dist/dsh/guardrail/evidence.js.map +1 -1
- package/dist/dsh/guardrail/service.d.ts +2 -0
- package/dist/dsh/guardrail/service.d.ts.map +1 -1
- package/dist/dsh/guardrail/service.js +44 -2
- package/dist/dsh/guardrail/service.js.map +1 -1
- package/dist/dsh/lisp/ci.d.ts +7 -0
- package/dist/dsh/lisp/ci.d.ts.map +1 -1
- package/dist/dsh/lisp/ci.js +27 -10
- package/dist/dsh/lisp/ci.js.map +1 -1
- package/dist/dsh/lisp/coding-choice.d.ts +2 -0
- package/dist/dsh/lisp/coding-choice.d.ts.map +1 -1
- package/dist/dsh/lisp/coding-choice.js +5 -1
- package/dist/dsh/lisp/coding-choice.js.map +1 -1
- package/dist/dsh/lisp/coding-preparation.d.ts +4 -5
- package/dist/dsh/lisp/coding-preparation.d.ts.map +1 -1
- package/dist/dsh/lisp/coding-preparation.js +57 -18
- package/dist/dsh/lisp/coding-preparation.js.map +1 -1
- package/dist/dsh/lisp/compiled-cache.d.ts.map +1 -1
- package/dist/dsh/lisp/compiled-cache.js +4 -3
- package/dist/dsh/lisp/compiled-cache.js.map +1 -1
- package/dist/dsh/lisp/host-tool-dispatch.d.ts +19 -0
- package/dist/dsh/lisp/host-tool-dispatch.d.ts.map +1 -0
- package/dist/dsh/lisp/host-tool-dispatch.js +23 -0
- package/dist/dsh/lisp/host-tool-dispatch.js.map +1 -0
- package/dist/dsh/lisp/manager.d.ts +3 -0
- package/dist/dsh/lisp/manager.d.ts.map +1 -1
- package/dist/dsh/lisp/manager.js +114 -13
- package/dist/dsh/lisp/manager.js.map +1 -1
- package/dist/dsh/lisp/sandbox.d.ts.map +1 -1
- package/dist/dsh/lisp/sandbox.js +4 -2
- package/dist/dsh/lisp/sandbox.js.map +1 -1
- package/dist/dsh/lisp/surface.d.ts.map +1 -1
- package/dist/dsh/lisp/surface.js +62 -25
- package/dist/dsh/lisp/surface.js.map +1 -1
- package/dist/dsh/lisp/worker.d.ts +10 -2
- package/dist/dsh/lisp/worker.d.ts.map +1 -1
- package/dist/dsh/lisp/worker.js +21 -11
- package/dist/dsh/lisp/worker.js.map +1 -1
- package/dist/dsh/managed-operation-journal.d.ts +115 -0
- package/dist/dsh/managed-operation-journal.d.ts.map +1 -0
- package/dist/dsh/managed-operation-journal.js +336 -0
- package/dist/dsh/managed-operation-journal.js.map +1 -0
- package/dist/dsh/managed-operation-runner.d.ts +33 -0
- package/dist/dsh/managed-operation-runner.d.ts.map +1 -0
- package/dist/dsh/managed-operation-runner.js +104 -0
- package/dist/dsh/managed-operation-runner.js.map +1 -0
- package/dist/dsh/model-routing.d.ts +8 -4
- package/dist/dsh/model-routing.d.ts.map +1 -1
- package/dist/dsh/model-routing.js +81 -22
- package/dist/dsh/model-routing.js.map +1 -1
- package/dist/dsh/models/surface.d.ts.map +1 -1
- package/dist/dsh/models/surface.js +7 -1
- package/dist/dsh/models/surface.js.map +1 -1
- package/dist/dsh/models/vendor/opencode-adapter.d.ts.map +1 -1
- package/dist/dsh/models/vendor/opencode-adapter.js +2 -0
- package/dist/dsh/models/vendor/opencode-adapter.js.map +1 -1
- package/dist/dsh/on-demand-intake.d.ts +12 -0
- package/dist/dsh/on-demand-intake.d.ts.map +1 -1
- package/dist/dsh/on-demand-intake.js +61 -9
- package/dist/dsh/on-demand-intake.js.map +1 -1
- package/dist/dsh/owned-execution.d.ts +2 -0
- package/dist/dsh/owned-execution.d.ts.map +1 -1
- package/dist/dsh/owned-execution.js +242 -110
- package/dist/dsh/owned-execution.js.map +1 -1
- package/dist/dsh/request-interpretation-guidance.d.ts +26 -0
- package/dist/dsh/request-interpretation-guidance.d.ts.map +1 -0
- package/dist/dsh/request-interpretation-guidance.js +35 -0
- package/dist/dsh/request-interpretation-guidance.js.map +1 -0
- package/dist/dsh/semantic-compaction/coordinator.d.ts.map +1 -1
- package/dist/dsh/semantic-compaction/coordinator.js +15 -1
- package/dist/dsh/semantic-compaction/coordinator.js.map +1 -1
- package/dist/dsh/task-completion-guidance.d.ts +25 -0
- package/dist/dsh/task-completion-guidance.d.ts.map +1 -0
- package/dist/dsh/task-completion-guidance.js +36 -0
- package/dist/dsh/task-completion-guidance.js.map +1 -0
- package/dist/dsh/task-completion-host.d.ts.map +1 -1
- package/dist/dsh/task-completion-host.js +17 -7
- package/dist/dsh/task-completion-host.js.map +1 -1
- package/dist/dsh/task-completion.d.ts +26 -2
- package/dist/dsh/task-completion.d.ts.map +1 -1
- package/dist/dsh/task-completion.js +27 -13
- package/dist/dsh/task-completion.js.map +1 -1
- package/dist/enno-oduno/coding-workflow.d.ts +1 -1
- package/dist/locale/en.json +1 -1
- package/dist/locale/ja.json +1 -1
- package/dist/locale/ko.json +1 -1
- package/dist/locale/zh-CN.json +1 -1
- package/docs/current-upstream-compatibility-report.md +85 -0
- package/docs/dsh-plugin.md +6 -2
- package/docs/getting-started.ja.md +1 -1
- package/docs/getting-started.md +1 -1
- package/docs/guardrail.md +11 -4
- package/docs/lisp-prototype-planning.md +1 -1
- package/docs/lisp.md +1 -1
- package/docs/managed-operation-journal.md +21 -0
- package/docs/memory-lifecycle-verification.md +5 -4
- package/docs/tool-exposure.md +2 -0
- package/guardrail/aarch64-apple-darwin/kiokuko-guardrail +0 -0
- package/guardrail/aarch64-apple-darwin/manifest.json +14 -18
- package/guardrail/aarch64-unknown-linux-musl/kiokuko-guardrail +0 -0
- package/guardrail/aarch64-unknown-linux-musl/manifest.json +14 -16
- package/guardrail/build-records.json +198 -0
- package/guardrail/manifest.json +25 -137
- package/guardrail/x86_64-unknown-linux-musl/kiokuko-guardrail +0 -0
- package/guardrail/x86_64-unknown-linux-musl/manifest.json +14 -15
- package/migrations/047_managed_operation_journal.sql +21 -0
- package/package.json +7 -3
- package/scripts/guardrail-artifacts.d.mts +3 -0
- package/scripts/guardrail-artifacts.mjs +34 -2
- package/scripts/repair-continuation-source.mjs +11 -25
package/dist/dsh/lisp/worker.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { managedAdmissionDenied } from '../managed-operation-runner.js';
|
|
1
2
|
import { spawn } from 'node:child_process';
|
|
2
3
|
import { randomUUID } from 'node:crypto';
|
|
3
4
|
import { join } from 'node:path';
|
|
@@ -14,6 +15,7 @@ export class LispWorker {
|
|
|
14
15
|
hostCall;
|
|
15
16
|
rpcAllowed;
|
|
16
17
|
beforeJob;
|
|
18
|
+
auditJob;
|
|
17
19
|
generation = randomUUID();
|
|
18
20
|
jobs = new Map();
|
|
19
21
|
#child;
|
|
@@ -31,12 +33,13 @@ export class LispWorker {
|
|
|
31
33
|
#jobLaunches = 0;
|
|
32
34
|
#stdout = [];
|
|
33
35
|
#stderr = [];
|
|
34
|
-
constructor(layout, config, hostCall, rpcAllowed = () => true, beforeJob) {
|
|
36
|
+
constructor(layout, config, hostCall, rpcAllowed = () => true, beforeJob, auditJob) {
|
|
35
37
|
this.layout = layout;
|
|
36
38
|
this.config = config;
|
|
37
39
|
this.hostCall = hostCall;
|
|
38
40
|
this.rpcAllowed = rpcAllowed;
|
|
39
41
|
this.beforeJob = beforeJob;
|
|
42
|
+
this.auditJob = auditJob;
|
|
40
43
|
}
|
|
41
44
|
get busy() { return this.#pending !== undefined; }
|
|
42
45
|
get healthy() { return !this.#closed && !this.#fatal && this.#child !== undefined; }
|
|
@@ -200,8 +203,8 @@ export class LispWorker {
|
|
|
200
203
|
this.#jobLaunches++;
|
|
201
204
|
let job;
|
|
202
205
|
try {
|
|
203
|
-
|
|
204
|
-
this.
|
|
206
|
+
const launch = async () => { const started = await this.launchJob(input); this.jobs.set(id, started); return started; };
|
|
207
|
+
job = await (this.auditJob ? this.auditJob(input, launch) : launch());
|
|
205
208
|
}
|
|
206
209
|
finally {
|
|
207
210
|
this.#jobLaunches--;
|
|
@@ -243,14 +246,21 @@ export class LispWorker {
|
|
|
243
246
|
}
|
|
244
247
|
async launchJob(input) {
|
|
245
248
|
const pending = this.#pending;
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
249
|
+
const launch = await (async () => {
|
|
250
|
+
try {
|
|
251
|
+
if (!this.beforeJob)
|
|
252
|
+
throw new LispError('TASK_REQUIRED', 'プロセス実行には現在の有効なタスクが必要です。');
|
|
253
|
+
await this.beforeJob();
|
|
254
|
+
const prepared = await sandboxLaunch(this.layout, input.program, input.argv, this.generation, false, input.directory);
|
|
255
|
+
await this.beforeJob();
|
|
256
|
+
if (this.#closed || this.#fatal || !pending || this.#pending !== pending || pending.abort.signal.aborted)
|
|
257
|
+
throw new Error('Worker stopped before job launch');
|
|
258
|
+
return prepared;
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
return managedAdmissionDenied(error);
|
|
262
|
+
}
|
|
263
|
+
})();
|
|
254
264
|
const child = spawn(process.execPath, [join(this.layout.library, 'supervisor.mjs'), JSON.stringify({ ...launch, env: undefined, protocol: false })], { cwd: launch.cwd, env: launch.env, stdio: ['pipe', 'pipe', 'pipe'] });
|
|
255
265
|
const job = { child, done: Promise.resolve() };
|
|
256
266
|
let bytes = 0, stdout = '', stderr = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/dsh/lisp/worker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/dsh/lisp/worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { SqliteDatabase } from '../db/adapter.js';
|
|
2
|
+
/** Audit of plugin-managed boundaries, not a sandbox or an OS-wide tracer. */
|
|
3
|
+
export declare const MANAGED_JOURNAL_COVERAGE: readonly ["lisp-process-bridge", "owned-process", "owned-file"];
|
|
4
|
+
export type JournalState = 'prepared' | 'dispatching' | 'running' | 'completed' | 'denied' | 'cancelled-before-dispatch' | 'cancelled-confirmed' | 'unknown';
|
|
5
|
+
export type JournalDelivery = 'pending' | 'delivered' | 'not-delivered' | 'unknown';
|
|
6
|
+
export type JournalCause = 'permission-denied' | 'cancelled' | 'timeout' | 'dispatch-error' | 'persistence-error' | 'recovery' | 'host-error';
|
|
7
|
+
export interface JournalBinding {
|
|
8
|
+
taskId: string;
|
|
9
|
+
unitId?: string;
|
|
10
|
+
workerGeneration?: string | number;
|
|
11
|
+
protocolBindGeneration?: number;
|
|
12
|
+
leaseAuthorityGeneration?: number;
|
|
13
|
+
leaseRevision?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface JournalScope {
|
|
16
|
+
scopeId: string;
|
|
17
|
+
sessionId: string;
|
|
18
|
+
requestId?: string;
|
|
19
|
+
parentId: string;
|
|
20
|
+
runtimeIdentity: string;
|
|
21
|
+
binding?: JournalBinding;
|
|
22
|
+
createdAt: number;
|
|
23
|
+
coverage: readonly string[];
|
|
24
|
+
}
|
|
25
|
+
export interface JournalTransition {
|
|
26
|
+
state: JournalState;
|
|
27
|
+
outcome?: 'succeeded' | 'failed';
|
|
28
|
+
receiptRef?: string;
|
|
29
|
+
cause?: JournalCause;
|
|
30
|
+
}
|
|
31
|
+
export interface ManagedOperation extends JournalTransition {
|
|
32
|
+
operationId: string;
|
|
33
|
+
scopeId: string;
|
|
34
|
+
parentId: string;
|
|
35
|
+
sequence: number;
|
|
36
|
+
route: 'native' | 'owned';
|
|
37
|
+
kind: 'process' | 'file';
|
|
38
|
+
binding?: JournalBinding;
|
|
39
|
+
requestDigest: string;
|
|
40
|
+
normalizationVersion: 1;
|
|
41
|
+
runtimeIdentity: string;
|
|
42
|
+
originalRef?: string;
|
|
43
|
+
delivery: JournalDelivery;
|
|
44
|
+
createdAt: number;
|
|
45
|
+
updatedAt: number;
|
|
46
|
+
}
|
|
47
|
+
export interface ManagedJournalSnapshot {
|
|
48
|
+
snapshotId: string;
|
|
49
|
+
scopeId: string;
|
|
50
|
+
scope: JournalScope;
|
|
51
|
+
sealed: boolean;
|
|
52
|
+
collectorComplete: boolean;
|
|
53
|
+
complete: boolean;
|
|
54
|
+
unresolved: number;
|
|
55
|
+
operations: readonly ManagedOperation[];
|
|
56
|
+
createdAt: number;
|
|
57
|
+
}
|
|
58
|
+
export interface JournalLimits {
|
|
59
|
+
maxOperations: number;
|
|
60
|
+
maxOperationsPerScope: number;
|
|
61
|
+
maxScopes: number;
|
|
62
|
+
maxSnapshots: number;
|
|
63
|
+
maxRequestBytes: number;
|
|
64
|
+
retentionMs: number;
|
|
65
|
+
}
|
|
66
|
+
/** Typed canonical encoding distinguishes missing, undefined, null and empty values.
|
|
67
|
+
* This keyed private digest is not a claim of anonymous/public-safe secret hashing. */
|
|
68
|
+
export declare function canonicalJournalRequest(value: unknown): string;
|
|
69
|
+
export declare class ManagedOperationJournal {
|
|
70
|
+
private readonly db;
|
|
71
|
+
readonly limits: JournalLimits;
|
|
72
|
+
constructor(db: SqliteDatabase, limits?: Partial<JournalLimits>);
|
|
73
|
+
private transaction;
|
|
74
|
+
private count;
|
|
75
|
+
private scopeRow;
|
|
76
|
+
readScope(id: string): JournalScope;
|
|
77
|
+
createScope(input: Omit<JournalScope, 'scopeId' | 'createdAt' | 'coverage'>): JournalScope;
|
|
78
|
+
private digest;
|
|
79
|
+
prepare(scopeId: string, input: {
|
|
80
|
+
route: 'native' | 'owned';
|
|
81
|
+
kind: 'process' | 'file';
|
|
82
|
+
request: unknown;
|
|
83
|
+
originalRef?: string;
|
|
84
|
+
}): ManagedOperation;
|
|
85
|
+
/** Enrich authority at the host reservation boundary, before any observed result.
|
|
86
|
+
* Evaluation scopes can contain operations from different units; never rewrite scope identity. */
|
|
87
|
+
bindOperation(id: string, input: {
|
|
88
|
+
binding: JournalBinding;
|
|
89
|
+
runtimeIdentity: string;
|
|
90
|
+
bindScope?: boolean;
|
|
91
|
+
}): ManagedOperation;
|
|
92
|
+
attachOriginalRef(id: string, originalRef: string): ManagedOperation;
|
|
93
|
+
lookupOriginalOperation(originalRef: string): ManagedOperation | undefined;
|
|
94
|
+
snapshotForOriginal(originalRef: string): ManagedJournalSnapshot;
|
|
95
|
+
readOperation(id: string): ManagedOperation;
|
|
96
|
+
private append;
|
|
97
|
+
private save;
|
|
98
|
+
/** Only the successful claimant may dispatch; replay is observation, never execution. */
|
|
99
|
+
claim(id: string, request?: unknown): boolean;
|
|
100
|
+
transition(id: string, next: JournalTransition): ManagedOperation;
|
|
101
|
+
/** Host must first verify original receipt/process identity. No dispatch occurs here. */
|
|
102
|
+
reconcile(id: string, next: JournalTransition & {
|
|
103
|
+
receiptRef: string;
|
|
104
|
+
}): ManagedOperation;
|
|
105
|
+
setDelivery(id: string, delivery: JournalDelivery): ManagedOperation;
|
|
106
|
+
markIncomplete(scopeId: string): void;
|
|
107
|
+
seal(scopeId: string): void;
|
|
108
|
+
recover(scopeId: string): void;
|
|
109
|
+
snapshot(scopeId: string): ManagedJournalSnapshot;
|
|
110
|
+
readSnapshot(id: string): ManagedJournalSnapshot;
|
|
111
|
+
retainSnapshot(id: string): void;
|
|
112
|
+
/** Never expire unresolved operations or scopes referenced by retained evidence. */
|
|
113
|
+
prune(now?: number): number;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=managed-operation-journal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-operation-journal.d.ts","sourceRoot":"","sources":["../../src/dsh/managed-operation-journal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import { createHmac, randomBytes, randomUUID } from 'node:crypto';
|
|
2
|
+
import { withImmediateTransaction } from '../db/transaction.js';
|
|
3
|
+
/** Audit of plugin-managed boundaries, not a sandbox or an OS-wide tracer. */
|
|
4
|
+
export const MANAGED_JOURNAL_COVERAGE = Object.freeze(['lisp-process-bridge', 'owned-process', 'owned-file']);
|
|
5
|
+
const defaults = { maxOperations: 100000, maxOperationsPerScope: 4096, maxScopes: 10000, maxSnapshots: 20000, maxRequestBytes: 1048576, retentionMs: 30 * 86400000 };
|
|
6
|
+
const terminal = new Set(['completed', 'denied', 'cancelled-before-dispatch', 'cancelled-confirmed']);
|
|
7
|
+
const states = new Set(['prepared', 'dispatching', 'running', 'completed', 'denied', 'cancelled-before-dispatch', 'cancelled-confirmed', 'unknown']);
|
|
8
|
+
const causes = new Set(['permission-denied', 'cancelled', 'timeout', 'dispatch-error', 'persistence-error', 'recovery', 'host-error']);
|
|
9
|
+
function fail() { throw new Error('Managed operation journal contract violation'); }
|
|
10
|
+
function freeze(value) { if (value && typeof value === 'object') {
|
|
11
|
+
Object.values(value).forEach(freeze);
|
|
12
|
+
Object.freeze(value);
|
|
13
|
+
} ; return value; }
|
|
14
|
+
function exactKeys(value, allowed) { if (Object.keys(value).some(key => !allowed.includes(key)))
|
|
15
|
+
fail(); }
|
|
16
|
+
function boundedText(value) { if (typeof value !== 'string' || value.length < 1 || value.length > 512)
|
|
17
|
+
fail(); }
|
|
18
|
+
/** Typed canonical encoding distinguishes missing, undefined, null and empty values.
|
|
19
|
+
* This keyed private digest is not a claim of anonymous/public-safe secret hashing. */
|
|
20
|
+
export function canonicalJournalRequest(value) {
|
|
21
|
+
const seen = new Set();
|
|
22
|
+
function encode(v, depth) {
|
|
23
|
+
if (depth > 64)
|
|
24
|
+
fail();
|
|
25
|
+
if (v === undefined)
|
|
26
|
+
return ['undefined'];
|
|
27
|
+
if (v === null)
|
|
28
|
+
return ['null'];
|
|
29
|
+
if (typeof v === 'string' || typeof v === 'boolean')
|
|
30
|
+
return [typeof v, v];
|
|
31
|
+
if (typeof v === 'number' && Number.isFinite(v))
|
|
32
|
+
return ['number', Object.is(v, -0) ? '-0' : String(v)];
|
|
33
|
+
if (typeof v !== 'object' || seen.has(v))
|
|
34
|
+
fail();
|
|
35
|
+
seen.add(v);
|
|
36
|
+
let result;
|
|
37
|
+
if (Array.isArray(v))
|
|
38
|
+
result = ['array', Array.from({ length: v.length }, (_, i) => i in v ? encode(v[i], depth + 1) : ['missing'])];
|
|
39
|
+
else {
|
|
40
|
+
if (Object.getPrototypeOf(v) !== Object.prototype && Object.getPrototypeOf(v) !== null)
|
|
41
|
+
fail();
|
|
42
|
+
result = ['object', Object.keys(v).sort().map(key => [key, encode(v[key], depth + 1)])];
|
|
43
|
+
}
|
|
44
|
+
seen.delete(v);
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
return JSON.stringify(['managed-request-v1', encode(value, 0)]);
|
|
48
|
+
}
|
|
49
|
+
export class ManagedOperationJournal {
|
|
50
|
+
db;
|
|
51
|
+
limits;
|
|
52
|
+
constructor(db, limits = {}) {
|
|
53
|
+
this.db = db;
|
|
54
|
+
this.limits = { ...defaults, ...limits };
|
|
55
|
+
for (const value of Object.values(this.limits))
|
|
56
|
+
if (!Number.isSafeInteger(value) || value < 1)
|
|
57
|
+
fail();
|
|
58
|
+
}
|
|
59
|
+
transaction(fn) { return withImmediateTransaction(this.db, fn); }
|
|
60
|
+
count(table) { return this.db.prepare(`SELECT COUNT(*) AS n FROM ${table}`).get().n; }
|
|
61
|
+
scopeRow(id) {
|
|
62
|
+
const row = this.db.prepare('SELECT scope_json,sealed,collector_complete FROM dsh_managed_scopes WHERE scope_id=?').get(id);
|
|
63
|
+
if (!row)
|
|
64
|
+
fail();
|
|
65
|
+
return row;
|
|
66
|
+
}
|
|
67
|
+
readScope(id) { return freeze(JSON.parse(this.scopeRow(id).scope_json)); }
|
|
68
|
+
createScope(input) {
|
|
69
|
+
boundedText(input.sessionId);
|
|
70
|
+
boundedText(input.parentId);
|
|
71
|
+
boundedText(input.runtimeIdentity);
|
|
72
|
+
if (input.requestId !== undefined)
|
|
73
|
+
boundedText(input.requestId);
|
|
74
|
+
if (input.binding) {
|
|
75
|
+
exactKeys(input.binding, ['taskId', 'unitId', 'workerGeneration', 'protocolBindGeneration', 'leaseAuthorityGeneration', 'leaseRevision']);
|
|
76
|
+
boundedText(input.binding.taskId);
|
|
77
|
+
if (input.binding.unitId !== undefined)
|
|
78
|
+
boundedText(input.binding.unitId);
|
|
79
|
+
for (const key of ['protocolBindGeneration', 'leaseAuthorityGeneration', 'leaseRevision']) {
|
|
80
|
+
const value = input.binding[key];
|
|
81
|
+
if (value !== undefined && (!Number.isSafeInteger(value) || value < 0))
|
|
82
|
+
fail();
|
|
83
|
+
}
|
|
84
|
+
const worker = input.binding.workerGeneration;
|
|
85
|
+
if (worker !== undefined && typeof worker !== 'string' && (!Number.isSafeInteger(worker) || worker < 0))
|
|
86
|
+
fail();
|
|
87
|
+
}
|
|
88
|
+
return this.transaction(() => {
|
|
89
|
+
if (this.count('dsh_managed_scopes') >= this.limits.maxScopes)
|
|
90
|
+
throw new Error('Managed journal scope capacity exceeded');
|
|
91
|
+
const scope = { sessionId: input.sessionId, parentId: input.parentId, runtimeIdentity: input.runtimeIdentity,
|
|
92
|
+
...(input.requestId !== undefined ? { requestId: input.requestId } : {}), ...(input.binding ? { binding: JSON.parse(JSON.stringify(input.binding)) } : {}),
|
|
93
|
+
scopeId: randomUUID(), createdAt: Date.now(), coverage: MANAGED_JOURNAL_COVERAGE };
|
|
94
|
+
this.db.prepare('INSERT INTO dsh_managed_scopes(scope_id,scope_json,created_at) VALUES(?,?,?)').run(scope.scopeId, JSON.stringify(scope), scope.createdAt);
|
|
95
|
+
return freeze(scope);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
digest(request) {
|
|
99
|
+
const data = canonicalJournalRequest(request);
|
|
100
|
+
if (Buffer.byteLength(data) > this.limits.maxRequestBytes)
|
|
101
|
+
throw new Error('Managed journal request capacity exceeded');
|
|
102
|
+
let key = this.db.prepare('SELECT secret FROM dsh_managed_journal_keys WHERE id=1').get()?.secret;
|
|
103
|
+
if (!key) {
|
|
104
|
+
key = randomBytes(32).toString('hex');
|
|
105
|
+
this.db.prepare('INSERT INTO dsh_managed_journal_keys VALUES(1,?)').run(key);
|
|
106
|
+
}
|
|
107
|
+
return createHmac('sha256', key).update(data).digest('hex');
|
|
108
|
+
}
|
|
109
|
+
prepare(scopeId, input) {
|
|
110
|
+
if (!['native', 'owned'].includes(input.route) || !['process', 'file'].includes(input.kind))
|
|
111
|
+
fail();
|
|
112
|
+
if (input.originalRef !== undefined)
|
|
113
|
+
boundedText(input.originalRef);
|
|
114
|
+
try {
|
|
115
|
+
return this.transaction(() => {
|
|
116
|
+
const row = this.scopeRow(scopeId);
|
|
117
|
+
if (row.sealed || !row.collector_complete)
|
|
118
|
+
throw new Error('Managed scope is sealed or incomplete');
|
|
119
|
+
const scope = JSON.parse(row.scope_json);
|
|
120
|
+
const n = this.db.prepare('SELECT COUNT(*) AS n FROM dsh_managed_operations WHERE scope_id=?').get(scopeId).n;
|
|
121
|
+
if (n >= this.limits.maxOperationsPerScope || this.count('dsh_managed_operations') >= this.limits.maxOperations)
|
|
122
|
+
throw new Error('Managed journal operation capacity exceeded');
|
|
123
|
+
const now = Date.now(), op = { operationId: randomUUID(), scopeId, parentId: scope.parentId, sequence: n + 1,
|
|
124
|
+
route: input.route, kind: input.kind, ...(scope.binding ? { binding: scope.binding } : {}), requestDigest: this.digest(input.request), normalizationVersion: 1,
|
|
125
|
+
runtimeIdentity: scope.runtimeIdentity, ...(input.originalRef ? { originalRef: input.originalRef } : {}), state: 'prepared', delivery: 'pending', createdAt: now, updatedAt: now };
|
|
126
|
+
this.db.prepare('INSERT INTO dsh_managed_operations VALUES(?,?,?,?,?)').run(op.operationId, scopeId, op.sequence, op.state, JSON.stringify(op));
|
|
127
|
+
this.append(op);
|
|
128
|
+
return freeze(op);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
// Admission/storage failure must not later appear as a complete zero-operation scope.
|
|
133
|
+
try {
|
|
134
|
+
this.markIncomplete(scopeId);
|
|
135
|
+
}
|
|
136
|
+
catch { /* A still-failing DB cannot issue evidence. */ }
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/** Enrich authority at the host reservation boundary, before any observed result.
|
|
141
|
+
* Evaluation scopes can contain operations from different units; never rewrite scope identity. */
|
|
142
|
+
bindOperation(id, input) {
|
|
143
|
+
boundedText(input.runtimeIdentity);
|
|
144
|
+
boundedText(input.binding.taskId);
|
|
145
|
+
exactKeys(input, ['binding', 'runtimeIdentity', 'bindScope']);
|
|
146
|
+
exactKeys(input.binding, ['taskId', 'unitId', 'workerGeneration', 'protocolBindGeneration', 'leaseAuthorityGeneration', 'leaseRevision']);
|
|
147
|
+
if (input.binding.unitId !== undefined)
|
|
148
|
+
boundedText(input.binding.unitId);
|
|
149
|
+
if (typeof input.binding.workerGeneration === 'string')
|
|
150
|
+
boundedText(input.binding.workerGeneration);
|
|
151
|
+
else if (input.binding.workerGeneration !== undefined && (!Number.isSafeInteger(input.binding.workerGeneration) || input.binding.workerGeneration < 0))
|
|
152
|
+
fail();
|
|
153
|
+
for (const key of ['protocolBindGeneration', 'leaseAuthorityGeneration', 'leaseRevision']) {
|
|
154
|
+
const value = input.binding[key];
|
|
155
|
+
if (value !== undefined && (!Number.isSafeInteger(value) || value < 0))
|
|
156
|
+
fail();
|
|
157
|
+
}
|
|
158
|
+
return this.transaction(() => {
|
|
159
|
+
const op = this.readOperation(id);
|
|
160
|
+
if (op.state !== 'dispatching')
|
|
161
|
+
fail();
|
|
162
|
+
if (op.binding) {
|
|
163
|
+
for (const [key, value] of Object.entries(op.binding))
|
|
164
|
+
if (input.binding[key] !== value)
|
|
165
|
+
fail();
|
|
166
|
+
if (op.binding.protocolBindGeneration !== undefined && op.runtimeIdentity !== input.runtimeIdentity)
|
|
167
|
+
fail();
|
|
168
|
+
}
|
|
169
|
+
if (input.bindScope) {
|
|
170
|
+
const row = this.scopeRow(op.scopeId);
|
|
171
|
+
const count = this.db.prepare('SELECT COUNT(*) AS n FROM dsh_managed_operations WHERE scope_id=?').get(op.scopeId).n;
|
|
172
|
+
if (row.sealed || count !== 1)
|
|
173
|
+
fail();
|
|
174
|
+
const scope = JSON.parse(row.scope_json);
|
|
175
|
+
const bound = { ...scope, binding: JSON.parse(JSON.stringify(input.binding)), runtimeIdentity: input.runtimeIdentity };
|
|
176
|
+
this.db.prepare('UPDATE dsh_managed_scopes SET scope_json=? WHERE scope_id=?').run(JSON.stringify(bound), op.scopeId);
|
|
177
|
+
}
|
|
178
|
+
return this.save({ ...op, binding: JSON.parse(JSON.stringify(input.binding)), runtimeIdentity: input.runtimeIdentity, updatedAt: Date.now() });
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
attachOriginalRef(id, originalRef) {
|
|
182
|
+
boundedText(originalRef);
|
|
183
|
+
return this.transaction(() => {
|
|
184
|
+
const op = this.readOperation(id);
|
|
185
|
+
if (op.originalRef && op.originalRef !== originalRef)
|
|
186
|
+
fail();
|
|
187
|
+
if (op.originalRef === originalRef)
|
|
188
|
+
return op;
|
|
189
|
+
return this.save({ ...op, originalRef, updatedAt: Date.now() });
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
lookupOriginalOperation(originalRef) {
|
|
193
|
+
boundedText(originalRef);
|
|
194
|
+
const row = this.db.prepare("SELECT operation_json FROM dsh_managed_operations WHERE json_extract(operation_json,'$.originalRef')=?").get(originalRef);
|
|
195
|
+
return row ? freeze(JSON.parse(row.operation_json)) : undefined;
|
|
196
|
+
}
|
|
197
|
+
snapshotForOriginal(originalRef) {
|
|
198
|
+
const op = this.lookupOriginalOperation(originalRef);
|
|
199
|
+
if (!op)
|
|
200
|
+
fail();
|
|
201
|
+
return this.snapshot(op.scopeId);
|
|
202
|
+
}
|
|
203
|
+
readOperation(id) {
|
|
204
|
+
const row = this.db.prepare('SELECT operation_json FROM dsh_managed_operations WHERE operation_id=?').get(id);
|
|
205
|
+
if (!row)
|
|
206
|
+
fail();
|
|
207
|
+
return freeze(JSON.parse(row.operation_json));
|
|
208
|
+
}
|
|
209
|
+
append(op) {
|
|
210
|
+
const n = this.db.prepare('SELECT COUNT(*) AS n FROM dsh_managed_transitions WHERE operation_id=?').get(op.operationId).n;
|
|
211
|
+
if (n >= 128)
|
|
212
|
+
throw new Error('Managed journal transition capacity exceeded');
|
|
213
|
+
this.db.prepare('INSERT INTO dsh_managed_transitions VALUES(?,?,?)').run(op.operationId, n + 1, JSON.stringify(op));
|
|
214
|
+
}
|
|
215
|
+
save(op) {
|
|
216
|
+
this.db.prepare('UPDATE dsh_managed_operations SET state=?,operation_json=? WHERE operation_id=?').run(op.state, JSON.stringify(op), op.operationId);
|
|
217
|
+
this.append(op);
|
|
218
|
+
return freeze(op);
|
|
219
|
+
}
|
|
220
|
+
/** Only the successful claimant may dispatch; replay is observation, never execution. */
|
|
221
|
+
claim(id, request) {
|
|
222
|
+
return this.transaction(() => {
|
|
223
|
+
const op = this.readOperation(id);
|
|
224
|
+
if (arguments.length > 1 && this.digest(request) !== op.requestDigest)
|
|
225
|
+
throw new Error('Managed operation request mismatch');
|
|
226
|
+
if (op.state !== 'prepared')
|
|
227
|
+
return false;
|
|
228
|
+
const row = this.scopeRow(op.scopeId);
|
|
229
|
+
if (row.sealed || !row.collector_complete)
|
|
230
|
+
return false;
|
|
231
|
+
// SQL CAS as well as the write lock: exactly one claimant can dispatch.
|
|
232
|
+
const claimed = { ...op, state: 'dispatching', updatedAt: Date.now() };
|
|
233
|
+
const rowClaim = this.db.prepare("UPDATE dsh_managed_operations SET state='dispatching',operation_json=? WHERE operation_id=? AND state='prepared' RETURNING operation_id").get(JSON.stringify(claimed), id);
|
|
234
|
+
if (!rowClaim)
|
|
235
|
+
return false;
|
|
236
|
+
this.append(claimed);
|
|
237
|
+
return true;
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
transition(id, next) {
|
|
241
|
+
exactKeys(next, ['state', 'outcome', 'receiptRef', 'cause']);
|
|
242
|
+
return this.transaction(() => {
|
|
243
|
+
const op = this.readOperation(id);
|
|
244
|
+
if (!states.has(next.state) || next.state === 'prepared' || next.state === 'dispatching')
|
|
245
|
+
fail();
|
|
246
|
+
if (next.cause !== undefined && !causes.has(next.cause))
|
|
247
|
+
fail();
|
|
248
|
+
if (next.receiptRef !== undefined)
|
|
249
|
+
boundedText(next.receiptRef);
|
|
250
|
+
if (next.state === 'completed' ? !['succeeded', 'failed'].includes(next.outcome ?? '') : next.outcome !== undefined)
|
|
251
|
+
fail();
|
|
252
|
+
if (terminal.has(op.state)) {
|
|
253
|
+
if (op.state === next.state && op.outcome === next.outcome && op.receiptRef === next.receiptRef && op.cause === next.cause)
|
|
254
|
+
return op;
|
|
255
|
+
fail();
|
|
256
|
+
}
|
|
257
|
+
if (op.state === 'unknown' && next.state !== 'unknown')
|
|
258
|
+
throw new Error('Managed operation requires explicit reconciliation');
|
|
259
|
+
if (op.state === 'prepared' && !['denied', 'cancelled-before-dispatch', 'unknown'].includes(next.state))
|
|
260
|
+
fail();
|
|
261
|
+
if (op.state === 'running' && ['denied', 'cancelled-before-dispatch'].includes(next.state))
|
|
262
|
+
fail();
|
|
263
|
+
return this.save({ ...op, ...next, updatedAt: Date.now() });
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
/** Host must first verify original receipt/process identity. No dispatch occurs here. */
|
|
267
|
+
reconcile(id, next) {
|
|
268
|
+
exactKeys(next, ['state', 'outcome', 'receiptRef', 'cause']);
|
|
269
|
+
return this.transaction(() => {
|
|
270
|
+
const op = this.readOperation(id);
|
|
271
|
+
if (op.state !== 'unknown' || !terminal.has(next.state))
|
|
272
|
+
fail();
|
|
273
|
+
boundedText(next.receiptRef);
|
|
274
|
+
if (next.state === 'completed' ? !['succeeded', 'failed'].includes(next.outcome ?? '') : next.outcome !== undefined)
|
|
275
|
+
fail();
|
|
276
|
+
if (next.cause !== undefined && !causes.has(next.cause))
|
|
277
|
+
fail();
|
|
278
|
+
return this.save({ ...op, ...next, updatedAt: Date.now() });
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
setDelivery(id, delivery) {
|
|
282
|
+
if (!['pending', 'delivered', 'not-delivered', 'unknown'].includes(delivery))
|
|
283
|
+
fail();
|
|
284
|
+
return this.transaction(() => { const op = this.readOperation(id); if (op.delivery === delivery)
|
|
285
|
+
return op; return this.save({ ...op, delivery, updatedAt: Date.now() }); });
|
|
286
|
+
}
|
|
287
|
+
markIncomplete(scopeId) { this.transaction(() => { this.scopeRow(scopeId); this.db.prepare('UPDATE dsh_managed_scopes SET collector_complete=0 WHERE scope_id=?').run(scopeId); }); }
|
|
288
|
+
seal(scopeId) { this.transaction(() => { this.scopeRow(scopeId); this.db.prepare('UPDATE dsh_managed_scopes SET sealed=1 WHERE scope_id=?').run(scopeId); }); }
|
|
289
|
+
recover(scopeId) {
|
|
290
|
+
this.transaction(() => {
|
|
291
|
+
this.scopeRow(scopeId);
|
|
292
|
+
for (const row of this.db.prepare("SELECT operation_id FROM dsh_managed_operations WHERE scope_id=? AND state IN ('dispatching','running')").all(scopeId))
|
|
293
|
+
this.transition(row.operation_id, { state: 'unknown', cause: 'recovery' });
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
snapshot(scopeId) {
|
|
297
|
+
return this.transaction(() => {
|
|
298
|
+
if (this.count('dsh_managed_snapshots') >= this.limits.maxSnapshots)
|
|
299
|
+
throw new Error('Managed journal snapshot capacity exceeded');
|
|
300
|
+
const row = this.scopeRow(scopeId), operations = this.db.prepare('SELECT operation_json FROM dsh_managed_operations WHERE scope_id=? ORDER BY sequence').all(scopeId).map(r => JSON.parse(r.operation_json));
|
|
301
|
+
const unresolved = operations.filter(op => !terminal.has(op.state)).length;
|
|
302
|
+
const snapshot = { snapshotId: randomUUID(), scopeId, scope: JSON.parse(row.scope_json), sealed: !!row.sealed, collectorComplete: !!row.collector_complete,
|
|
303
|
+
complete: !!row.sealed && !!row.collector_complete && unresolved === 0, unresolved, operations, createdAt: Date.now() };
|
|
304
|
+
this.db.prepare('INSERT INTO dsh_managed_snapshots(snapshot_id,scope_id,snapshot_json,created_at) VALUES(?,?,?,?)').run(snapshot.snapshotId, scopeId, JSON.stringify(snapshot), snapshot.createdAt);
|
|
305
|
+
return freeze(snapshot);
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
readSnapshot(id) {
|
|
309
|
+
const row = this.db.prepare('SELECT snapshot_json FROM dsh_managed_snapshots WHERE snapshot_id=?').get(id);
|
|
310
|
+
if (!row)
|
|
311
|
+
fail();
|
|
312
|
+
return freeze(JSON.parse(row.snapshot_json));
|
|
313
|
+
}
|
|
314
|
+
retainSnapshot(id) { this.transaction(() => { this.readSnapshot(id); this.db.prepare('UPDATE dsh_managed_snapshots SET retained=1 WHERE snapshot_id=?').run(id); }); }
|
|
315
|
+
/** Never expire unresolved operations or scopes referenced by retained evidence. */
|
|
316
|
+
prune(now = Date.now()) {
|
|
317
|
+
return this.transaction(() => {
|
|
318
|
+
const rows = this.db.prepare(`WITH RECURSIVE protected(scope_id) AS (
|
|
319
|
+
SELECT scope_id FROM dsh_managed_snapshots WHERE retained=1
|
|
320
|
+
UNION SELECT scope_id FROM dsh_managed_operations WHERE state NOT IN ('completed','denied','cancelled-before-dispatch','cancelled-confirmed')
|
|
321
|
+
UNION SELECT o.scope_id FROM protected p JOIN dsh_managed_scopes c ON c.scope_id=p.scope_id
|
|
322
|
+
JOIN dsh_managed_operations o ON o.operation_id=json_extract(c.scope_json,'$.parentId')
|
|
323
|
+
) SELECT scope_id FROM dsh_managed_scopes s WHERE sealed=1 AND created_at<?
|
|
324
|
+
AND NOT EXISTS(SELECT 1 FROM protected p WHERE p.scope_id=s.scope_id)
|
|
325
|
+
AND NOT EXISTS(SELECT 1 FROM dsh_managed_operations o WHERE o.scope_id=s.scope_id AND state NOT IN ('completed','denied','cancelled-before-dispatch','cancelled-confirmed'))`).all(now - this.limits.retentionMs);
|
|
326
|
+
for (const row of rows) {
|
|
327
|
+
this.db.prepare('DELETE FROM dsh_managed_transitions WHERE operation_id IN (SELECT operation_id FROM dsh_managed_operations WHERE scope_id=?)').run(row.scope_id);
|
|
328
|
+
this.db.prepare('DELETE FROM dsh_managed_operations WHERE scope_id=?').run(row.scope_id);
|
|
329
|
+
this.db.prepare('DELETE FROM dsh_managed_snapshots WHERE scope_id=?').run(row.scope_id);
|
|
330
|
+
this.db.prepare('DELETE FROM dsh_managed_scopes WHERE scope_id=?').run(row.scope_id);
|
|
331
|
+
}
|
|
332
|
+
return rows.length;
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=managed-operation-journal.js.map
|