@victframework/runtime 0.1.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/dist/agent-governance.d.ts +285 -0
- package/dist/agent-governance.js +438 -0
- package/dist/agent-governance.js.map +1 -0
- package/dist/agent-registry.d.ts +103 -0
- package/dist/agent-registry.js +758 -0
- package/dist/agent-registry.js.map +1 -0
- package/dist/agent-types.d.ts +433 -0
- package/dist/agent-types.js +480 -0
- package/dist/agent-types.js.map +1 -0
- package/dist/authority.d.ts +83 -0
- package/dist/authority.js +170 -0
- package/dist/authority.js.map +1 -0
- package/dist/boundary-conformance.d.ts +51 -0
- package/dist/boundary-conformance.js +364 -0
- package/dist/boundary-conformance.js.map +1 -0
- package/dist/control-conformance.d.ts +68 -0
- package/dist/control-conformance.js +1131 -0
- package/dist/control-conformance.js.map +1 -0
- package/dist/control-in-memory.d.ts +257 -0
- package/dist/control-in-memory.js +886 -0
- package/dist/control-in-memory.js.map +1 -0
- package/dist/control-types.d.ts +1017 -0
- package/dist/control-types.js +779 -0
- package/dist/control-types.js.map +1 -0
- package/dist/durable-run.d.ts +73 -0
- package/dist/durable-run.js +262 -0
- package/dist/durable-run.js.map +1 -0
- package/dist/effect-policy.d.ts +22 -0
- package/dist/effect-policy.js +45 -0
- package/dist/effect-policy.js.map +1 -0
- package/dist/errors.d.ts +36 -0
- package/dist/errors.js +71 -0
- package/dist/errors.js.map +1 -0
- package/dist/in-memory-stores.d.ts +16 -0
- package/dist/in-memory-stores.js +522 -0
- package/dist/in-memory-stores.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/operator-config.d.ts +141 -0
- package/dist/operator-config.js +289 -0
- package/dist/operator-config.js.map +1 -0
- package/dist/orchestration-activation.d.ts +116 -0
- package/dist/orchestration-activation.js +223 -0
- package/dist/orchestration-activation.js.map +1 -0
- package/dist/orchestration-canary-conformance.d.ts +10 -0
- package/dist/orchestration-canary-conformance.js +726 -0
- package/dist/orchestration-canary-conformance.js.map +1 -0
- package/dist/orchestration-commands.d.ts +47 -0
- package/dist/orchestration-commands.js +538 -0
- package/dist/orchestration-commands.js.map +1 -0
- package/dist/orchestration-conformance.d.ts +59 -0
- package/dist/orchestration-conformance.js +594 -0
- package/dist/orchestration-conformance.js.map +1 -0
- package/dist/orchestration-driver-types.d.ts +163 -0
- package/dist/orchestration-driver-types.js +21 -0
- package/dist/orchestration-driver-types.js.map +1 -0
- package/dist/orchestration-driver.d.ts +48 -0
- package/dist/orchestration-driver.js +1030 -0
- package/dist/orchestration-driver.js.map +1 -0
- package/dist/orchestration-in-memory.d.ts +18 -0
- package/dist/orchestration-in-memory.js +1313 -0
- package/dist/orchestration-in-memory.js.map +1 -0
- package/dist/orchestration-join-conformance.d.ts +20 -0
- package/dist/orchestration-join-conformance.js +542 -0
- package/dist/orchestration-join-conformance.js.map +1 -0
- package/dist/orchestration-plan.d.ts +52 -0
- package/dist/orchestration-plan.js +265 -0
- package/dist/orchestration-plan.js.map +1 -0
- package/dist/orchestration-race-conformance.d.ts +35 -0
- package/dist/orchestration-race-conformance.js +1265 -0
- package/dist/orchestration-race-conformance.js.map +1 -0
- package/dist/orchestration-remediation-conformance.d.ts +54 -0
- package/dist/orchestration-remediation-conformance.js +632 -0
- package/dist/orchestration-remediation-conformance.js.map +1 -0
- package/dist/orchestration-store-types.d.ts +568 -0
- package/dist/orchestration-store-types.js +2 -0
- package/dist/orchestration-store-types.js.map +1 -0
- package/dist/pack-conformance.d.ts +59 -0
- package/dist/pack-conformance.js +222 -0
- package/dist/pack-conformance.js.map +1 -0
- package/dist/pack-install.d.ts +44 -0
- package/dist/pack-install.js +126 -0
- package/dist/pack-install.js.map +1 -0
- package/dist/registry.d.ts +107 -0
- package/dist/registry.js +481 -0
- package/dist/registry.js.map +1 -0
- package/dist/runtime.d.ts +158 -0
- package/dist/runtime.js +1341 -0
- package/dist/runtime.js.map +1 -0
- package/dist/serialization.d.ts +26 -0
- package/dist/serialization.js +162 -0
- package/dist/serialization.js.map +1 -0
- package/dist/store-conformance.d.ts +45 -0
- package/dist/store-conformance.js +876 -0
- package/dist/store-conformance.js.map +1 -0
- package/dist/store-errors.d.ts +49 -0
- package/dist/store-errors.js +48 -0
- package/dist/store-errors.js.map +1 -0
- package/dist/store-types.d.ts +331 -0
- package/dist/store-types.js +14 -0
- package/dist/store-types.js.map +1 -0
- package/dist/store-validation.d.ts +63 -0
- package/dist/store-validation.js +164 -0
- package/dist/store-validation.js.map +1 -0
- package/dist/stream-hub.d.ts +151 -0
- package/dist/stream-hub.js +402 -0
- package/dist/stream-hub.js.map +1 -0
- package/dist/testing.d.ts +25 -0
- package/dist/testing.js +19 -0
- package/dist/testing.js.map +1 -0
- package/dist/types.d.ts +221 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-types.js","sourceRoot":"","sources":["../src/control-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ExecutionMode, KernelEvent, KernelRunOutput } from '@victframework/kernel';
|
|
2
|
+
import type { PayloadRetention } from './types.js';
|
|
3
|
+
import type { ExecutionStore } from './store-types.js';
|
|
4
|
+
import { VictStoreError } from './store-errors.js';
|
|
5
|
+
export interface DurableRunContext {
|
|
6
|
+
readonly runId: string;
|
|
7
|
+
readonly graphId: string;
|
|
8
|
+
readonly graphVersion: string;
|
|
9
|
+
readonly capabilitySetVersion: string;
|
|
10
|
+
readonly activationVersion: string;
|
|
11
|
+
readonly mode: ExecutionMode;
|
|
12
|
+
readonly retention: PayloadRetention;
|
|
13
|
+
readonly entryNodeId: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Drives the durable lifecycle of one sequential run.
|
|
17
|
+
*
|
|
18
|
+
* Transaction model (DATA-003):
|
|
19
|
+
* - the run is created atomically with its `run.started` event;
|
|
20
|
+
* - each `node.started` is committed atomically with the current-node/step
|
|
21
|
+
* context update;
|
|
22
|
+
* - a node result (`node.completed` / `node.failed` /
|
|
23
|
+
* `contract.rejected` / `effect.blocked`) plus its `signal.routed`
|
|
24
|
+
* follow-ups are committed as one transition;
|
|
25
|
+
* - the terminal event is committed atomically with the terminal record —
|
|
26
|
+
* under `'full'` retention the complete validated output is attached.
|
|
27
|
+
*
|
|
28
|
+
* Write-ahead rule (Stage 02 safety invariant): writes are applied in
|
|
29
|
+
* emission order by a FIFO queue, and `awaitDurableBoundary()` — the
|
|
30
|
+
* kernel's `beforeInvoke` port — resolves only once every write enqueued so
|
|
31
|
+
* far has committed. The kernel awaits it before every capability
|
|
32
|
+
* invocation, so an intent is durable before the corresponding side effect
|
|
33
|
+
* may begin: run creation and the first `node.started` commit before the
|
|
34
|
+
* first invocation; a node-result batch and the next `node.started` commit
|
|
35
|
+
* before the next invocation. A failed write is recorded; the boundary
|
|
36
|
+
* rejects with the structured store error, so the capability is never
|
|
37
|
+
* invoked, and later `onEvent` calls throw so execution fail-fasts.
|
|
38
|
+
* Every write uses optimistic concurrency (expected record revision and
|
|
39
|
+
* expected next event sequence).
|
|
40
|
+
*/
|
|
41
|
+
export declare class DurableRunTracker {
|
|
42
|
+
#private;
|
|
43
|
+
constructor(execution: ExecutionStore, context: DurableRunContext);
|
|
44
|
+
/** Synchronous hook passed to the kernel; throws once a write has failed. */
|
|
45
|
+
onEvent: (event: KernelEvent) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Durable invocation boundary (the kernel's `beforeInvoke` port).
|
|
48
|
+
*
|
|
49
|
+
* Resolves only after every durable write enqueued so far — run creation,
|
|
50
|
+
* any preceding node-result batch, and the current node's `node.started`
|
|
51
|
+
* transition — has committed. Rejects with the recorded structured store
|
|
52
|
+
* failure if any required write failed, which prevents the capability
|
|
53
|
+
* from being invoked. Awaiting the queue is causal, not a timing
|
|
54
|
+
* assumption: the queue promise settles only when all writes enqueued
|
|
55
|
+
* before the boundary call have settled.
|
|
56
|
+
*/
|
|
57
|
+
awaitDurableBoundary(): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Commit the terminal transition (and anything still batched), wait for
|
|
60
|
+
* all outstanding writes, and rethrow the recorded storage failure if any.
|
|
61
|
+
* The completed run's output is attached to the terminal record under
|
|
62
|
+
* explicit `'full'` retention.
|
|
63
|
+
*/
|
|
64
|
+
finish(output: KernelRunOutput): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Await outstanding writes after an execution error. Best effort: flush
|
|
67
|
+
* the last factual batch so the durable record reflects what happened,
|
|
68
|
+
* then surface the recorded storage failure (if any) or the given error.
|
|
69
|
+
*/
|
|
70
|
+
settle(error: unknown): Promise<never>;
|
|
71
|
+
}
|
|
72
|
+
/** True when the given error is a structured store failure (safe to surface). */
|
|
73
|
+
export declare function isStoreError(error: unknown): error is VictStoreError;
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { VictStoreError } from './store-errors.js';
|
|
2
|
+
const TERMINAL_EVENTS = ['run.completed', 'run.failed', 'run.blocked'];
|
|
3
|
+
/**
|
|
4
|
+
* Drives the durable lifecycle of one sequential run.
|
|
5
|
+
*
|
|
6
|
+
* Transaction model (DATA-003):
|
|
7
|
+
* - the run is created atomically with its `run.started` event;
|
|
8
|
+
* - each `node.started` is committed atomically with the current-node/step
|
|
9
|
+
* context update;
|
|
10
|
+
* - a node result (`node.completed` / `node.failed` /
|
|
11
|
+
* `contract.rejected` / `effect.blocked`) plus its `signal.routed`
|
|
12
|
+
* follow-ups are committed as one transition;
|
|
13
|
+
* - the terminal event is committed atomically with the terminal record —
|
|
14
|
+
* under `'full'` retention the complete validated output is attached.
|
|
15
|
+
*
|
|
16
|
+
* Write-ahead rule (Stage 02 safety invariant): writes are applied in
|
|
17
|
+
* emission order by a FIFO queue, and `awaitDurableBoundary()` — the
|
|
18
|
+
* kernel's `beforeInvoke` port — resolves only once every write enqueued so
|
|
19
|
+
* far has committed. The kernel awaits it before every capability
|
|
20
|
+
* invocation, so an intent is durable before the corresponding side effect
|
|
21
|
+
* may begin: run creation and the first `node.started` commit before the
|
|
22
|
+
* first invocation; a node-result batch and the next `node.started` commit
|
|
23
|
+
* before the next invocation. A failed write is recorded; the boundary
|
|
24
|
+
* rejects with the structured store error, so the capability is never
|
|
25
|
+
* invoked, and later `onEvent` calls throw so execution fail-fasts.
|
|
26
|
+
* Every write uses optimistic concurrency (expected record revision and
|
|
27
|
+
* expected next event sequence).
|
|
28
|
+
*/
|
|
29
|
+
export class DurableRunTracker {
|
|
30
|
+
#execution;
|
|
31
|
+
#context;
|
|
32
|
+
#output = undefined;
|
|
33
|
+
#queue = Promise.resolve();
|
|
34
|
+
#expectedRecordRevision = 0;
|
|
35
|
+
#expectedEventSeq = 0;
|
|
36
|
+
#batch = [];
|
|
37
|
+
#batchNodeId = null;
|
|
38
|
+
#nodeStarts = 0;
|
|
39
|
+
#failure;
|
|
40
|
+
constructor(execution, context) {
|
|
41
|
+
this.#execution = execution;
|
|
42
|
+
this.#context = context;
|
|
43
|
+
}
|
|
44
|
+
/** Synchronous hook passed to the kernel; throws once a write has failed. */
|
|
45
|
+
onEvent = (event) => {
|
|
46
|
+
if (this.#failure) {
|
|
47
|
+
throw this.#failure.error;
|
|
48
|
+
}
|
|
49
|
+
switch (event.type) {
|
|
50
|
+
case 'run.started': {
|
|
51
|
+
this.#enqueueCreate(event);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
case 'node.started': {
|
|
55
|
+
this.#flushBatch();
|
|
56
|
+
this.#nodeStarts += 1;
|
|
57
|
+
const expectedRevision = this.#expectedRecordRevision;
|
|
58
|
+
const expectedSeq = this.#expectedEventSeq;
|
|
59
|
+
this.#expectedRecordRevision += 1;
|
|
60
|
+
this.#expectedEventSeq += 1;
|
|
61
|
+
const steps = this.#nodeStarts;
|
|
62
|
+
const nodeId = event.nodeId;
|
|
63
|
+
this.#enqueue(async () => {
|
|
64
|
+
await this.#execution.commitTransition({
|
|
65
|
+
runId: this.#context.runId,
|
|
66
|
+
expectedRecordRevision: expectedRevision,
|
|
67
|
+
expectedNextEventSeq: expectedSeq,
|
|
68
|
+
next: { status: 'running', currentNodeId: nodeId, steps },
|
|
69
|
+
events: [event],
|
|
70
|
+
timestamp: event.timestamp,
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case 'node.completed':
|
|
76
|
+
case 'node.failed':
|
|
77
|
+
case 'effect.blocked':
|
|
78
|
+
case 'contract.rejected': {
|
|
79
|
+
this.#batch.push(event);
|
|
80
|
+
this.#batchNodeId = event.nodeId;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
case 'signal.routed': {
|
|
84
|
+
if (this.#batch.length === 0) {
|
|
85
|
+
// Defensive: routing normally rides with its node-result batch.
|
|
86
|
+
this.#appendSingle(event);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.#batch.push(event);
|
|
90
|
+
}
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
default: {
|
|
94
|
+
if (TERMINAL_EVENTS.includes(event.type)) {
|
|
95
|
+
this.#batch.push(event);
|
|
96
|
+
// The terminal transition is committed by finish(), after the
|
|
97
|
+
// executor has returned and full-retention output is available.
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.#appendSingle(event);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Durable invocation boundary (the kernel's `beforeInvoke` port).
|
|
107
|
+
*
|
|
108
|
+
* Resolves only after every durable write enqueued so far — run creation,
|
|
109
|
+
* any preceding node-result batch, and the current node's `node.started`
|
|
110
|
+
* transition — has committed. Rejects with the recorded structured store
|
|
111
|
+
* failure if any required write failed, which prevents the capability
|
|
112
|
+
* from being invoked. Awaiting the queue is causal, not a timing
|
|
113
|
+
* assumption: the queue promise settles only when all writes enqueued
|
|
114
|
+
* before the boundary call have settled.
|
|
115
|
+
*/
|
|
116
|
+
async awaitDurableBoundary() {
|
|
117
|
+
await this.#queue;
|
|
118
|
+
if (this.#failure) {
|
|
119
|
+
throw this.#failure.error;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Commit the terminal transition (and anything still batched), wait for
|
|
124
|
+
* all outstanding writes, and rethrow the recorded storage failure if any.
|
|
125
|
+
* The completed run's output is attached to the terminal record under
|
|
126
|
+
* explicit `'full'` retention.
|
|
127
|
+
*/
|
|
128
|
+
async finish(output) {
|
|
129
|
+
this.#output = output.output;
|
|
130
|
+
this.#flushBatch();
|
|
131
|
+
await this.#queue;
|
|
132
|
+
if (this.#failure) {
|
|
133
|
+
throw this.#failure.error;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Await outstanding writes after an execution error. Best effort: flush
|
|
138
|
+
* the last factual batch so the durable record reflects what happened,
|
|
139
|
+
* then surface the recorded storage failure (if any) or the given error.
|
|
140
|
+
*/
|
|
141
|
+
async settle(error) {
|
|
142
|
+
try {
|
|
143
|
+
this.#flushBatch();
|
|
144
|
+
await this.#queue;
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
/* the recorded storage failure below takes precedence */
|
|
148
|
+
}
|
|
149
|
+
if (this.#failure) {
|
|
150
|
+
throw this.#failure.error;
|
|
151
|
+
}
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
#enqueue(write) {
|
|
155
|
+
this.#queue = this.#queue.then(() => {
|
|
156
|
+
if (this.#failure) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
return write().catch((error) => {
|
|
160
|
+
if (!this.#failure) {
|
|
161
|
+
this.#failure = { error };
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
#enqueueCreate(event) {
|
|
167
|
+
this.#expectedRecordRevision = 1;
|
|
168
|
+
this.#expectedEventSeq += 1;
|
|
169
|
+
this.#enqueue(async () => {
|
|
170
|
+
await this.#execution.createRun({
|
|
171
|
+
runId: this.#context.runId,
|
|
172
|
+
graphId: this.#context.graphId,
|
|
173
|
+
graphVersion: this.#context.graphVersion,
|
|
174
|
+
capabilitySetVersion: this.#context.capabilitySetVersion,
|
|
175
|
+
activationVersion: this.#context.activationVersion,
|
|
176
|
+
mode: this.#context.mode,
|
|
177
|
+
retention: this.#context.retention,
|
|
178
|
+
currentNodeId: this.#context.entryNodeId,
|
|
179
|
+
steps: 0,
|
|
180
|
+
events: [event],
|
|
181
|
+
timestamp: event.timestamp,
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
#appendSingle(event) {
|
|
186
|
+
const expectedRevision = this.#expectedRecordRevision;
|
|
187
|
+
const expectedSeq = this.#expectedEventSeq;
|
|
188
|
+
this.#expectedRecordRevision += 1;
|
|
189
|
+
this.#expectedEventSeq += 1;
|
|
190
|
+
this.#enqueue(async () => {
|
|
191
|
+
await this.#execution.commitTransition({
|
|
192
|
+
runId: this.#context.runId,
|
|
193
|
+
expectedRecordRevision: expectedRevision,
|
|
194
|
+
expectedNextEventSeq: expectedSeq,
|
|
195
|
+
next: {},
|
|
196
|
+
events: [event],
|
|
197
|
+
timestamp: event.timestamp,
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
#flushBatch() {
|
|
202
|
+
if (this.#batch.length === 0) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
const batch = this.#batch;
|
|
206
|
+
this.#batch = [];
|
|
207
|
+
const batchNodeId = this.#batchNodeId;
|
|
208
|
+
this.#batchNodeId = null;
|
|
209
|
+
const expectedRevision = this.#expectedRecordRevision;
|
|
210
|
+
const expectedSeq = this.#expectedEventSeq;
|
|
211
|
+
this.#expectedRecordRevision += 1;
|
|
212
|
+
this.#expectedEventSeq += batch.length;
|
|
213
|
+
const last = batch.at(-1);
|
|
214
|
+
const timestamp = last.timestamp;
|
|
215
|
+
let next = { status: 'running', currentNodeId: batchNodeId };
|
|
216
|
+
if (last.type === 'run.completed' ||
|
|
217
|
+
last.type === 'run.failed' ||
|
|
218
|
+
last.type === 'run.blocked') {
|
|
219
|
+
const status = last.type === 'run.completed'
|
|
220
|
+
? 'completed'
|
|
221
|
+
: last.type === 'run.failed'
|
|
222
|
+
? 'failed'
|
|
223
|
+
: 'blocked';
|
|
224
|
+
const terminalFields = {
|
|
225
|
+
status,
|
|
226
|
+
steps: last.steps,
|
|
227
|
+
completedAt: timestamp,
|
|
228
|
+
};
|
|
229
|
+
if (last.type === 'run.failed') {
|
|
230
|
+
terminalFields.error = last.error;
|
|
231
|
+
}
|
|
232
|
+
if (last.type === 'run.completed') {
|
|
233
|
+
// Retention boundary (DATA-004/005): 'none' stores no summary at all;
|
|
234
|
+
// the complete output rides only under explicit 'full' retention.
|
|
235
|
+
if (this.#context.retention !== 'none') {
|
|
236
|
+
terminalFields.outputSummary = last.output;
|
|
237
|
+
}
|
|
238
|
+
if (this.#context.retention === 'full' && this.#output !== undefined) {
|
|
239
|
+
terminalFields.output = this.#output;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// 'run.blocked' keeps its reason/remediation/code in the event payload;
|
|
243
|
+
// the record itself needs no fields beyond terminal status.
|
|
244
|
+
next = { ...next, ...terminalFields };
|
|
245
|
+
}
|
|
246
|
+
this.#enqueue(async () => {
|
|
247
|
+
await this.#execution.commitTransition({
|
|
248
|
+
runId: this.#context.runId,
|
|
249
|
+
expectedRecordRevision: expectedRevision,
|
|
250
|
+
expectedNextEventSeq: expectedSeq,
|
|
251
|
+
next,
|
|
252
|
+
events: batch,
|
|
253
|
+
timestamp,
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/** True when the given error is a structured store failure (safe to surface). */
|
|
259
|
+
export function isStoreError(error) {
|
|
260
|
+
return error instanceof VictStoreError;
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=durable-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"durable-run.js","sourceRoot":"","sources":["../src/durable-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { EffectAuthorizationDecision, EffectAuthorizationRequest } from '@victframework/kernel';
|
|
2
|
+
export interface EffectPolicyOverrides {
|
|
3
|
+
/** Explicit caller permission required to run `irreversible` capabilities in normal mode. */
|
|
4
|
+
readonly allowIrreversible?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The Night 01 effect policy table.
|
|
8
|
+
*
|
|
9
|
+
* | Effect | Normal | Simulate | Isolated test |
|
|
10
|
+
* |---------------|-----------------------|-----------------------|------------------------|
|
|
11
|
+
* | pure | real | real | real |
|
|
12
|
+
* | read | real | double required | double required |
|
|
13
|
+
* | write | real | double required | double required |
|
|
14
|
+
* | irreversible | real only with explicit allow | double required (real never runs) | double required (real never runs) |
|
|
15
|
+
*
|
|
16
|
+
* In simulate/test modes the real implementation of read, write and
|
|
17
|
+
* irreversible effects is unreachable: a registered safe double may run, and
|
|
18
|
+
* without one the operation is blocked. The runtime additionally denies a
|
|
19
|
+
* `useDouble` decision when no test double is registered, producing a
|
|
20
|
+
* blocked result with remediation guidance.
|
|
21
|
+
*/
|
|
22
|
+
export declare function decideEffectAuthorization(request: EffectAuthorizationRequest, overrides: EffectPolicyOverrides): EffectAuthorizationDecision;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Night 01 effect policy table.
|
|
3
|
+
*
|
|
4
|
+
* | Effect | Normal | Simulate | Isolated test |
|
|
5
|
+
* |---------------|-----------------------|-----------------------|------------------------|
|
|
6
|
+
* | pure | real | real | real |
|
|
7
|
+
* | read | real | double required | double required |
|
|
8
|
+
* | write | real | double required | double required |
|
|
9
|
+
* | irreversible | real only with explicit allow | double required (real never runs) | double required (real never runs) |
|
|
10
|
+
*
|
|
11
|
+
* In simulate/test modes the real implementation of read, write and
|
|
12
|
+
* irreversible effects is unreachable: a registered safe double may run, and
|
|
13
|
+
* without one the operation is blocked. The runtime additionally denies a
|
|
14
|
+
* `useDouble` decision when no test double is registered, producing a
|
|
15
|
+
* blocked result with remediation guidance.
|
|
16
|
+
*/
|
|
17
|
+
export function decideEffectAuthorization(request, overrides) {
|
|
18
|
+
const { effect, mode, capabilityId } = request;
|
|
19
|
+
if (effect === 'pure') {
|
|
20
|
+
return { allowed: true, useDouble: false };
|
|
21
|
+
}
|
|
22
|
+
if (mode === 'normal') {
|
|
23
|
+
if (effect === 'irreversible') {
|
|
24
|
+
if (overrides.allowIrreversible === true) {
|
|
25
|
+
return { allowed: true, useDouble: false };
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
allowed: false,
|
|
29
|
+
useDouble: false,
|
|
30
|
+
reason: "Effect class 'irreversible' is denied by default in normal execution; irreversible effects are not invoked without explicit permission.",
|
|
31
|
+
remediation: 'Re-run with explicit permission, e.g. run(input, { policy: { allowIrreversible: true } }), or register a test double for non-production modes.',
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// read / write run their real implementation in normal mode.
|
|
35
|
+
return { allowed: true, useDouble: false };
|
|
36
|
+
}
|
|
37
|
+
// simulate / test: read, write, and irreversible all require a registered double.
|
|
38
|
+
return {
|
|
39
|
+
allowed: true,
|
|
40
|
+
useDouble: true,
|
|
41
|
+
reason: `Effect class '${effect}' requires a registered test double in '${mode}' mode.`,
|
|
42
|
+
remediation: `Register a test double for capability '${capabilityId}' with runtime.registerDouble().`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=effect-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-policy.js","sourceRoot":"","sources":["../src/effect-policy.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAmC,EACnC,SAAgC;IAEhC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAE/C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;YAC9B,IAAI,SAAS,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC7C,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,KAAK;gBAChB,MAAM,EACJ,yIAAyI;gBAC3I,WAAW,EACT,gJAAgJ;aACnJ,CAAC;QACJ,CAAC;QACD,6DAA6D;QAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,kFAAkF;IAClF,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,iBAAiB,MAAM,2CAA2C,IAAI,SAAS;QACvF,WAAW,EAAE,0CAA0C,YAAY,kCAAkC;KACtG,CAAC;AACJ,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { VictError } from '@victframework/contracts';
|
|
2
|
+
/** Stable runtime-level error codes used by thrown configuration errors and defensive port failures. */
|
|
3
|
+
export type RuntimeErrorCode = 'VICT_RUNTIME_NO_ACTIVE_GRAPH' | 'VICT_RUNTIME_DUPLICATE_CAPABILITY' | 'VICT_RUNTIME_INVALID_CAPABILITY' | 'VICT_RUNTIME_INVALID_REVISION' | 'VICT_RUNTIME_CONTRACT_CONFLICT' | 'VICT_RUNTIME_INVALID_CONTRACT' | 'VICT_RUNTIME_DOUBLE_FOR_UNKNOWN_CAPABILITY' | 'VICT_RUNTIME_DOUBLE_ALREADY_REGISTERED' | 'VICT_RUNTIME_DOUBLE_NOT_REGISTERED' | 'VICT_RUNTIME_UNKNOWN_NODE' | 'VICT_RUNTIME_CAPABILITY_MISSING' | 'VICT_RUNTIME_CAPABILITY_THREW' | 'VICT_RUNTIME_CONTRACT_PARSER_THREW' | 'VICT_RUNTIME_PERMISSION_DENIED' | 'VICT_RUNTIME_SECRET_UNAVAILABLE' | 'VICT_RUNTIME_CONFIGURATION_UNAVAILABLE' | 'VICT_RUNTIME_INVALID_AUTHORITY' | 'VICT_RUNTIME_UNKNOWN_DEFINITION_FIELD' | 'VICT_RUNTIME_INVALID_EFFECT' | 'VICT_RUNTIME_MISSING_CONTRACT' | 'VICT_RUNTIME_INVALID_RETENTION' | 'VICT_RUNTIME_INVALID_STORES' | 'VICT_RUNTIME_STORE_FAILURE' | 'VICT_RUN_NOT_FOUND' | 'VICT_RUNTIME_ACTIVATION_NOT_FOUND' | 'VICT_RUNTIME_ACTIVATION_UNAVAILABLE' | 'VICT_RUNTIME_ACTIVATION_MISMATCH' | 'VICT_ORCH_ACTIVATION_UNAVAILABLE' | 'VICT_ORCH_INVALID_SIGNAL' | 'VICT_ORCH_SIGNAL_CONTRACT_REJECTED' | 'VICT_ORCH_SIGNAL_ID_CONFLICT' | 'VICT_ORCH_CANCELLATION_CONFLICT' | 'VICT_ORCH_INVALID_REASON' | 'VICT_ORCH_UNKNOWN_RUN' | 'VICT_ORCH_WAIT_NOT_FOUND' | 'VICT_ORCH_SIGNAL_NAME_MISMATCH' | 'VICT_ORCH_INVALID_TRANSITION' | 'VICT_ORCH_OUTCOME_UNKNOWN' | 'VICT_ORCH_AMBIGUOUS_TIMEOUT' | 'VICT_ORCH_OPERATOR_DENIED' | 'VICT_ORCH_OPERATOR_CONFLICT' | 'VICT_ORCH_INVALID_CHECKPOINT' | 'VICT_ORCH_RETRY_EXHAUSTED' | 'VICT_ORCH_UNSUPPORTED_EFFECT' | 'VICT_PACK_INVALID' | 'VICT_PACK_COMPATIBILITY_UNMET' | 'VICT_PACK_DUPLICATE' | 'VICT_AGENT_INVALID_ARTIFACT' | 'VICT_AGENT_UNKNOWN_ARTIFACT_FIELD' | 'VICT_AGENT_DUPLICATE_ARTIFACT' | 'VICT_AGENT_HELPER_TOOL_NOT_PURE' | 'VICT_AGENT_INVALID_PROFILE' | 'VICT_AGENT_DUPLICATE_PROFILE' | 'VICT_AGENT_REPLACE_CONFLICT' | 'VICT_AGENT_PROFILE_NOT_FOUND' | 'VICT_AGENT_ARTIFACT_MISSING' | 'VICT_AGENT_ARTIFACT_REVISION_MISMATCH' | 'VICT_AGENT_CAPABILITY_MISSING' | 'VICT_AGENT_CAPABILITY_RESOLVER_MISSING' | 'VICT_AGENT_DELETION_INTENT_INVALID' | 'VICT_AGENT_ACTIVATION_RECORD_INVALID';
|
|
4
|
+
/** Thrown only for programmer/configuration errors; data-level failures are structured values. */
|
|
5
|
+
export declare class VictRuntimeError extends Error {
|
|
6
|
+
readonly code: RuntimeErrorCode;
|
|
7
|
+
readonly details?: unknown;
|
|
8
|
+
constructor(code: RuntimeErrorCode, message: string, details?: unknown);
|
|
9
|
+
}
|
|
10
|
+
export declare function runtimeError(code: RuntimeErrorCode, message: string, details?: unknown): VictError;
|
|
11
|
+
/** Build sanitised metadata for a thrown (untrusted) error. Never copies the message. */
|
|
12
|
+
export declare function sanitiseThrownError(cause: unknown): {
|
|
13
|
+
errorName: string;
|
|
14
|
+
errorId: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Stable codes a structured in-invocation failure may carry through to the
|
|
18
|
+
* structured error signal (Stage 04 least-authority gate). Everything else
|
|
19
|
+
* is untrusted content and is reduced to CAPABILITY_THREW.
|
|
20
|
+
*/
|
|
21
|
+
export declare const SAFE_INVOCATION_ERROR_CODES: ReadonlySet<RuntimeErrorCode>;
|
|
22
|
+
/**
|
|
23
|
+
* Classify one capability-invocation failure. Structured VictRuntimeError
|
|
24
|
+
* authority failures (permission/secret/configuration) keep their stable
|
|
25
|
+
* code and framework-generated message so authorization outcomes stay
|
|
26
|
+
* observable and classified; any other throw is reduced to the stable
|
|
27
|
+
* CAPABILITY_THREW class with the thrown message never retained.
|
|
28
|
+
*/
|
|
29
|
+
export declare function classifyInvocationFailure(cause: unknown, capabilityId: string, context: {
|
|
30
|
+
readonly nodeId?: string;
|
|
31
|
+
readonly invokedVia?: 'real' | 'double';
|
|
32
|
+
}): {
|
|
33
|
+
code: RuntimeErrorCode;
|
|
34
|
+
message: string;
|
|
35
|
+
details: Record<string, unknown>;
|
|
36
|
+
};
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { victError } from '@victframework/contracts';
|
|
2
|
+
/** Thrown only for programmer/configuration errors; data-level failures are structured values. */
|
|
3
|
+
export class VictRuntimeError extends Error {
|
|
4
|
+
code;
|
|
5
|
+
details;
|
|
6
|
+
constructor(code, message, details) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = 'VictRuntimeError';
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.details = details;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function runtimeError(code, message, details) {
|
|
14
|
+
return victError(code, message, details);
|
|
15
|
+
}
|
|
16
|
+
/** Build sanitised metadata for a thrown (untrusted) error. Never copies the message. */
|
|
17
|
+
export function sanitiseThrownError(cause) {
|
|
18
|
+
return {
|
|
19
|
+
errorName: cause instanceof Error ? cause.name : typeof cause,
|
|
20
|
+
errorId: `err_${randomId()}`,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Stable codes a structured in-invocation failure may carry through to the
|
|
25
|
+
* structured error signal (Stage 04 least-authority gate). Everything else
|
|
26
|
+
* is untrusted content and is reduced to CAPABILITY_THREW.
|
|
27
|
+
*/
|
|
28
|
+
export const SAFE_INVOCATION_ERROR_CODES = new Set([
|
|
29
|
+
'VICT_RUNTIME_PERMISSION_DENIED',
|
|
30
|
+
'VICT_RUNTIME_SECRET_UNAVAILABLE',
|
|
31
|
+
'VICT_RUNTIME_CONFIGURATION_UNAVAILABLE',
|
|
32
|
+
]);
|
|
33
|
+
/**
|
|
34
|
+
* Classify one capability-invocation failure. Structured VictRuntimeError
|
|
35
|
+
* authority failures (permission/secret/configuration) keep their stable
|
|
36
|
+
* code and framework-generated message so authorization outcomes stay
|
|
37
|
+
* observable and classified; any other throw is reduced to the stable
|
|
38
|
+
* CAPABILITY_THREW class with the thrown message never retained.
|
|
39
|
+
*/
|
|
40
|
+
export function classifyInvocationFailure(cause, capabilityId, context) {
|
|
41
|
+
const sanitised = sanitiseThrownError(cause);
|
|
42
|
+
if (cause instanceof VictRuntimeError && SAFE_INVOCATION_ERROR_CODES.has(cause.code)) {
|
|
43
|
+
return {
|
|
44
|
+
code: cause.code,
|
|
45
|
+
message: cause.message,
|
|
46
|
+
details: {
|
|
47
|
+
capabilityId,
|
|
48
|
+
...(context.nodeId !== undefined ? { nodeId: context.nodeId } : {}),
|
|
49
|
+
...(context.invokedVia !== undefined ? { invokedVia: context.invokedVia } : {}),
|
|
50
|
+
errorId: sanitised.errorId,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
code: 'VICT_RUNTIME_CAPABILITY_THREW',
|
|
56
|
+
message: `Capability '${capabilityId}' threw during invocation; the thrown message is not retained.`,
|
|
57
|
+
details: {
|
|
58
|
+
capabilityId,
|
|
59
|
+
...(context.nodeId !== undefined ? { nodeId: context.nodeId } : {}),
|
|
60
|
+
...(context.invokedVia !== undefined ? { invokedVia: context.invokedVia } : {}),
|
|
61
|
+
...sanitised,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function randomId() {
|
|
66
|
+
// Runtime is an in-process Node package; a random correlation id is fine here.
|
|
67
|
+
const bytes = new Uint8Array(8);
|
|
68
|
+
globalThis.crypto.getRandomValues(bytes);
|
|
69
|
+
return Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TransitionFaultHooks, VictStores } from './store-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Conforming in-memory implementation of the semantic store ports.
|
|
4
|
+
*
|
|
5
|
+
* Semantics match the SQLite adapter: atomic transitions, optimistic
|
|
6
|
+
* concurrency, dense append-only event sequences, immutable/defensive
|
|
7
|
+
* snapshots on every read (DATA-012), canonical manifests, and structured
|
|
8
|
+
* safe errors. Optional test-only fault hooks make it possible to prove
|
|
9
|
+
* that a failure staged between the run update and the event append leaves
|
|
10
|
+
* no half-state behind.
|
|
11
|
+
*/
|
|
12
|
+
export interface InMemoryStoresOptions {
|
|
13
|
+
/** Test-only fault hooks; inert when omitted. */
|
|
14
|
+
readonly faults?: TransitionFaultHooks;
|
|
15
|
+
}
|
|
16
|
+
export declare function createInMemoryStores(options?: InMemoryStoresOptions): VictStores;
|