@typeonce/effect-machine 0.4.0 → 0.5.1
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.md +166 -588
- package/dist/Machine.d.ts +426 -240
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +219 -43
- package/dist/Machine.js.map +1 -1
- package/dist/internal/machine/activities.d.ts +1 -1
- package/dist/internal/machine/activities.js +1 -1
- package/dist/internal/machine/atom.d.ts +1 -1
- package/dist/internal/machine/atom.js +1 -1
- package/dist/internal/machine/cluster.d.ts +2 -2
- package/dist/internal/machine/cluster.js +1 -1
- package/dist/internal/machine/command.d.ts +1 -1
- package/dist/internal/machine/command.js +1 -1
- package/dist/internal/machine/commandRuntime.d.ts +1 -1
- package/dist/internal/machine/commandRuntime.js +1 -1
- package/dist/internal/machine/configuration.d.ts +1 -1
- package/dist/internal/machine/configuration.js +1 -1
- package/dist/internal/machine/errors.d.ts +7 -7
- package/dist/internal/machine/errors.js +7 -7
- package/dist/internal/machine/executionPlan.d.ts +2 -2
- package/dist/internal/machine/executionPlan.d.ts.map +1 -1
- package/dist/internal/machine/executionPlan.js +17 -8
- package/dist/internal/machine/executionPlan.js.map +1 -1
- package/dist/internal/machine/invocation.d.ts +1 -1
- package/dist/internal/machine/invocation.js +1 -1
- package/dist/internal/machine/planner.d.ts +1 -1
- package/dist/internal/machine/planner.js +1 -1
- package/dist/internal/machine/process.d.ts +1 -1
- package/dist/internal/machine/process.d.ts.map +1 -1
- package/dist/internal/machine/process.js +76 -24
- package/dist/internal/machine/process.js.map +1 -1
- package/dist/internal/machine/protocol.d.ts +1 -1
- package/dist/internal/machine/protocol.js +1 -1
- package/dist/internal/machine/runtime.d.ts +32 -4
- package/dist/internal/machine/runtime.d.ts.map +1 -1
- package/dist/internal/machine/runtime.js +120 -12
- package/dist/internal/machine/runtime.js.map +1 -1
- package/dist/internal/machine/serialization.d.ts +1 -1
- package/dist/internal/machine/serialization.js +1 -1
- package/dist/internal/machine/topology.d.ts +1 -1
- package/dist/internal/machine/topology.js +1 -1
- package/dist/internal/testing/machine/arbitrary.d.ts +3 -3
- package/dist/internal/testing/machine/exploration.d.ts +30 -0
- package/dist/internal/testing/machine/exploration.d.ts.map +1 -0
- package/dist/internal/testing/machine/exploration.js +237 -0
- package/dist/internal/testing/machine/exploration.js.map +1 -0
- package/dist/internal/testing/machine/finiteModel.d.ts +20 -20
- package/dist/internal/testing/machine/finiteModel.js +2 -2
- package/dist/internal/testing/machine/invariant.d.ts +31 -0
- package/dist/internal/testing/machine/invariant.d.ts.map +1 -0
- package/dist/internal/testing/machine/invariant.js +214 -0
- package/dist/internal/testing/machine/invariant.js.map +1 -0
- package/dist/internal/testing/machine/probe.d.ts +26 -0
- package/dist/internal/testing/machine/probe.d.ts.map +1 -0
- package/dist/internal/testing/machine/probe.js +45 -0
- package/dist/internal/testing/machine/probe.js.map +1 -0
- package/dist/internal/testing/machine/referenceModel.d.ts +14 -14
- package/dist/internal/testing/machine/referenceModel.js +2 -2
- package/dist/internal/testing/machine/runtime.d.ts +329 -26
- package/dist/internal/testing/machine/runtime.d.ts.map +1 -1
- package/dist/internal/testing/machine/runtime.js +303 -14
- package/dist/internal/testing/machine/runtime.js.map +1 -1
- package/dist/internal/testing/machine/runtimeInvariant.d.ts +32 -0
- package/dist/internal/testing/machine/runtimeInvariant.d.ts.map +1 -0
- package/dist/internal/testing/machine/runtimeInvariant.js +334 -0
- package/dist/internal/testing/machine/runtimeInvariant.js.map +1 -0
- package/dist/internal/testing/machine/trace.d.ts +17 -0
- package/dist/internal/testing/machine/trace.d.ts.map +1 -0
- package/dist/internal/testing/machine/trace.js +94 -0
- package/dist/internal/testing/machine/trace.js.map +1 -0
- package/dist/internal/testing/machine/verification.d.ts +9 -6
- package/dist/internal/testing/machine/verification.d.ts.map +1 -1
- package/dist/internal/testing/machine/verification.js +8 -79
- package/dist/internal/testing/machine/verification.js.map +1 -1
- package/dist/testing/MachineTest.d.ts +1029 -47
- package/dist/testing/MachineTest.d.ts.map +1 -1
- package/dist/testing/MachineTest.js +315 -11
- package/dist/testing/MachineTest.js.map +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/unstable/cluster/ClusterMachine.d.ts +38 -19
- package/dist/unstable/cluster/ClusterMachine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterMachine.js +27 -9
- package/dist/unstable/cluster/ClusterMachine.js.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.d.ts +82 -31
- package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.js +63 -12
- package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
- package/docs/agent-guide.md +160 -18
- package/package.json +11 -2
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-defined semantic invariants over retained causal runtime evidence.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.4.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Data from "effect/Data";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Result from "effect/Result";
|
|
9
|
+
import * as Machine from "../../../Machine.js";
|
|
10
|
+
const validateName = (name) => {
|
|
11
|
+
if (name.trim().length === 0) {
|
|
12
|
+
throw new Error("MachineTest.runtimeInvariants expected name to be a non-empty string");
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const validateRequirement = (options) => {
|
|
16
|
+
const minimum = options.require?.minObservations;
|
|
17
|
+
if (minimum !== undefined && (!Number.isSafeInteger(minimum) || minimum < 0)) {
|
|
18
|
+
throw new Error("MachineTest.runtimeInvariants expected minObservations to be a non-negative safe integer");
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const snapshotInvariant = (name, check, options = {}) => {
|
|
22
|
+
validateName(name);
|
|
23
|
+
validateRequirement(options);
|
|
24
|
+
return Object.freeze({
|
|
25
|
+
_tag: "RuntimeSnapshotInvariant",
|
|
26
|
+
name,
|
|
27
|
+
observe: options.observe ?? "settled",
|
|
28
|
+
check,
|
|
29
|
+
...(options.when === undefined ? {} : { when: options.when }),
|
|
30
|
+
...(options.require === undefined ? {} : { require: Object.freeze({ ...options.require }) })
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
const commandInvariant = (name, check, options = {}) => {
|
|
34
|
+
validateName(name);
|
|
35
|
+
validateRequirement(options);
|
|
36
|
+
return Object.freeze({
|
|
37
|
+
_tag: "RuntimeCommandInvariant",
|
|
38
|
+
name,
|
|
39
|
+
check,
|
|
40
|
+
...(options.when === undefined ? {} : { when: options.when }),
|
|
41
|
+
...(options.require === undefined ? {} : { require: Object.freeze({ ...options.require }) })
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
const transcriptInvariant = (name, check, options = {}) => {
|
|
45
|
+
validateName(name);
|
|
46
|
+
validateRequirement(options);
|
|
47
|
+
return Object.freeze({
|
|
48
|
+
_tag: "RuntimeTranscriptInvariant",
|
|
49
|
+
name,
|
|
50
|
+
check,
|
|
51
|
+
...(options.when === undefined ? {} : { when: options.when }),
|
|
52
|
+
...(options.require === undefined ? {} : { require: Object.freeze({ ...options.require }) })
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
export const runtimeInvariants = (_machine) => Object.freeze({
|
|
56
|
+
snapshot: snapshotInvariant,
|
|
57
|
+
command: commandInvariant,
|
|
58
|
+
transcript: transcriptInvariant
|
|
59
|
+
});
|
|
60
|
+
export class RuntimeInvariantError extends Data.TaggedError("MachineTestRuntimeInvariantError") {
|
|
61
|
+
}
|
|
62
|
+
const normalizeTranscript = (transcript) => ({
|
|
63
|
+
commands: transcript.commands,
|
|
64
|
+
initial: transcript.initial,
|
|
65
|
+
records: transcript.records.map(({ actual, command, index }) => ({
|
|
66
|
+
index,
|
|
67
|
+
command,
|
|
68
|
+
result: actual.result,
|
|
69
|
+
snapshot: actual.snapshot,
|
|
70
|
+
awaited: actual.awaited
|
|
71
|
+
})),
|
|
72
|
+
final: transcript.final
|
|
73
|
+
});
|
|
74
|
+
const snapshotObservations = (machine, transcript, invariant) => {
|
|
75
|
+
const observations = [];
|
|
76
|
+
let observationIndex = 0;
|
|
77
|
+
const add = (snapshot, phase, record, awaitedIndex) => {
|
|
78
|
+
const context = {
|
|
79
|
+
machine,
|
|
80
|
+
transcript,
|
|
81
|
+
snapshot,
|
|
82
|
+
observationIndex,
|
|
83
|
+
phase,
|
|
84
|
+
commandIndex: record?.index,
|
|
85
|
+
awaitedIndex,
|
|
86
|
+
command: record?.command,
|
|
87
|
+
result: record?.result
|
|
88
|
+
};
|
|
89
|
+
observations.push({
|
|
90
|
+
context,
|
|
91
|
+
observationIndex,
|
|
92
|
+
commandIndex: record?.index,
|
|
93
|
+
...(awaitedIndex === undefined ? {} : { awaitedIndex }),
|
|
94
|
+
phase,
|
|
95
|
+
...(record === undefined ? {} : { command: record.command })
|
|
96
|
+
});
|
|
97
|
+
observationIndex += 1;
|
|
98
|
+
};
|
|
99
|
+
if (invariant.observe === "final") {
|
|
100
|
+
add(transcript.final, "final");
|
|
101
|
+
return observations;
|
|
102
|
+
}
|
|
103
|
+
if (invariant.observe === "settled" || invariant.observe === "all") {
|
|
104
|
+
add(transcript.initial, "initial");
|
|
105
|
+
for (const record of transcript.records)
|
|
106
|
+
add(record.snapshot, "command", record);
|
|
107
|
+
}
|
|
108
|
+
if (invariant.observe === "awaited" || invariant.observe === "all") {
|
|
109
|
+
for (const record of transcript.records) {
|
|
110
|
+
record.awaited.forEach((snapshot, awaitedIndex) => add(snapshot, "awaited", record, awaitedIndex));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return observations;
|
|
114
|
+
};
|
|
115
|
+
const commandObservations = (machine, transcript) => transcript.records.map((record, index) => ({
|
|
116
|
+
context: {
|
|
117
|
+
machine,
|
|
118
|
+
transcript,
|
|
119
|
+
record,
|
|
120
|
+
previous: transcript.records[index - 1],
|
|
121
|
+
index: record.index,
|
|
122
|
+
command: record.command,
|
|
123
|
+
result: record.result,
|
|
124
|
+
snapshot: record.snapshot,
|
|
125
|
+
awaited: record.awaited
|
|
126
|
+
},
|
|
127
|
+
commandIndex: record.index,
|
|
128
|
+
command: record.command
|
|
129
|
+
}));
|
|
130
|
+
const transcriptObservations = (machine, transcript) => [{
|
|
131
|
+
context: { machine, transcript },
|
|
132
|
+
commandIndex: undefined
|
|
133
|
+
}];
|
|
134
|
+
const scopeOf = (invariant) => {
|
|
135
|
+
switch (invariant._tag) {
|
|
136
|
+
case "RuntimeSnapshotInvariant":
|
|
137
|
+
return "snapshot";
|
|
138
|
+
case "RuntimeCommandInvariant":
|
|
139
|
+
return "command";
|
|
140
|
+
case "RuntimeTranscriptInvariant":
|
|
141
|
+
return "transcript";
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
const messageOf = (outcome) => outcome === true ? undefined : typeof outcome === "string" ? outcome : "Invariant predicate returned false";
|
|
145
|
+
const evaluateInvariant = (invariant, scope, observations) => {
|
|
146
|
+
let observed = 0;
|
|
147
|
+
let failures = 0;
|
|
148
|
+
const violations = [];
|
|
149
|
+
for (const observation of observations) {
|
|
150
|
+
if (invariant.when !== undefined && !invariant.when(observation.context))
|
|
151
|
+
continue;
|
|
152
|
+
observed += 1;
|
|
153
|
+
const message = messageOf(invariant.check(observation.context));
|
|
154
|
+
if (message === undefined)
|
|
155
|
+
continue;
|
|
156
|
+
failures += 1;
|
|
157
|
+
violations.push({
|
|
158
|
+
invariant: invariant.name,
|
|
159
|
+
scope,
|
|
160
|
+
kind: "predicate",
|
|
161
|
+
...(observation.observationIndex === undefined ? {} : { observationIndex: observation.observationIndex }),
|
|
162
|
+
commandIndex: observation.commandIndex,
|
|
163
|
+
...(observation.awaitedIndex === undefined ? {} : { awaitedIndex: observation.awaitedIndex }),
|
|
164
|
+
...(observation.phase === undefined ? {} : { phase: observation.phase }),
|
|
165
|
+
...(observation.command === undefined ? {} : { command: observation.command }),
|
|
166
|
+
message
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
const minimum = invariant.require?.minObservations ?? 0;
|
|
170
|
+
const insufficient = observed < minimum;
|
|
171
|
+
if (insufficient) {
|
|
172
|
+
violations.push({
|
|
173
|
+
invariant: invariant.name,
|
|
174
|
+
scope,
|
|
175
|
+
kind: "observations",
|
|
176
|
+
commandIndex: undefined,
|
|
177
|
+
message: `Invariant required at least ${minimum} observation${minimum === 1 ? "" : "s"} but observed ${observed}`
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
check: {
|
|
182
|
+
invariant: invariant.name,
|
|
183
|
+
scope,
|
|
184
|
+
status: failures > 0 ? "failed" : insufficient ? "insufficient" : observed === 0 ? "untested" : "passed",
|
|
185
|
+
observations: observed,
|
|
186
|
+
failures
|
|
187
|
+
},
|
|
188
|
+
violations
|
|
189
|
+
};
|
|
190
|
+
};
|
|
191
|
+
export const checkRuntimeInvariants = (machine, evidence, invariants) => Effect.suspend(() => {
|
|
192
|
+
const transcript = normalizeTranscript(evidence);
|
|
193
|
+
const checks = [];
|
|
194
|
+
const violations = [];
|
|
195
|
+
for (const invariant of invariants) {
|
|
196
|
+
const scope = scopeOf(invariant);
|
|
197
|
+
const result = invariant._tag === "RuntimeSnapshotInvariant"
|
|
198
|
+
? evaluateInvariant(invariant, scope, snapshotObservations(machine, transcript, invariant))
|
|
199
|
+
: invariant._tag === "RuntimeCommandInvariant"
|
|
200
|
+
? evaluateInvariant(invariant, scope, commandObservations(machine, transcript))
|
|
201
|
+
: evaluateInvariant(invariant, scope, transcriptObservations(machine, transcript));
|
|
202
|
+
checks.push(result.check);
|
|
203
|
+
violations.push(...result.violations);
|
|
204
|
+
}
|
|
205
|
+
const report = { checks };
|
|
206
|
+
return violations.length === 0
|
|
207
|
+
? Effect.succeed(report)
|
|
208
|
+
: Effect.fail(new RuntimeInvariantError({ transcript, violations, report }));
|
|
209
|
+
});
|
|
210
|
+
export const assertRuntimeInvariants = (machine, transcript, invariants) => checkRuntimeInvariants(machine, transcript, invariants).pipe(Effect.asVoid);
|
|
211
|
+
export class PlannerRuntimeAgreementError extends Data.TaggedError("MachineTestPlannerRuntimeAgreementError") {
|
|
212
|
+
}
|
|
213
|
+
const fingerprint = (value) => {
|
|
214
|
+
const active = new WeakSet();
|
|
215
|
+
const visit = (current) => {
|
|
216
|
+
if (current === undefined)
|
|
217
|
+
return ["undefined"];
|
|
218
|
+
if (current === null || typeof current === "boolean" || typeof current === "string")
|
|
219
|
+
return current;
|
|
220
|
+
if (typeof current === "number") {
|
|
221
|
+
if (Number.isNaN(current))
|
|
222
|
+
return ["number", "NaN"];
|
|
223
|
+
if (Object.is(current, -0))
|
|
224
|
+
return ["number", "-0"];
|
|
225
|
+
return current;
|
|
226
|
+
}
|
|
227
|
+
if (typeof current === "bigint")
|
|
228
|
+
return ["bigint", String(current)];
|
|
229
|
+
if (typeof current === "symbol")
|
|
230
|
+
return ["symbol", Symbol.keyFor(current) ?? String(current)];
|
|
231
|
+
if (typeof current === "function")
|
|
232
|
+
return ["function", current.name];
|
|
233
|
+
if (active.has(current))
|
|
234
|
+
return ["circular"];
|
|
235
|
+
active.add(current);
|
|
236
|
+
let result;
|
|
237
|
+
if (current instanceof Date) {
|
|
238
|
+
result = ["date", Number.isNaN(current.getTime()) ? "Invalid Date" : current.toISOString()];
|
|
239
|
+
}
|
|
240
|
+
else if (current instanceof Error) {
|
|
241
|
+
result = [
|
|
242
|
+
"error",
|
|
243
|
+
current.name,
|
|
244
|
+
current.message,
|
|
245
|
+
Object.keys(current).sort().map((key) => [key, visit(current[key])])
|
|
246
|
+
];
|
|
247
|
+
}
|
|
248
|
+
else if (ArrayBuffer.isView(current)) {
|
|
249
|
+
result = [current.constructor.name, Array.from(current)];
|
|
250
|
+
}
|
|
251
|
+
else if (Array.isArray(current)) {
|
|
252
|
+
result = current.map(visit);
|
|
253
|
+
}
|
|
254
|
+
else if (current instanceof Map) {
|
|
255
|
+
result = [
|
|
256
|
+
"map",
|
|
257
|
+
Array.from(current, ([key, item]) => [visit(key), visit(item)]).sort((left, right) => JSON.stringify(left).localeCompare(JSON.stringify(right)))
|
|
258
|
+
];
|
|
259
|
+
}
|
|
260
|
+
else if (current instanceof Set) {
|
|
261
|
+
result = [
|
|
262
|
+
"set",
|
|
263
|
+
Array.from(current, visit).sort((left, right) => JSON.stringify(left).localeCompare(JSON.stringify(right)))
|
|
264
|
+
];
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
result = Object.keys(current).sort().map((key) => [key, visit(current[key])]);
|
|
268
|
+
}
|
|
269
|
+
active.delete(current);
|
|
270
|
+
return result;
|
|
271
|
+
};
|
|
272
|
+
return JSON.stringify(visit(value));
|
|
273
|
+
};
|
|
274
|
+
const projection = (plan) => ({
|
|
275
|
+
after: plan.next,
|
|
276
|
+
completion: { done: plan.done, output: plan.output },
|
|
277
|
+
commands: plan.commands.length,
|
|
278
|
+
emittedEvents: plan.emittedEvents,
|
|
279
|
+
microsteps: plan.microsteps.map((microstep) => ({
|
|
280
|
+
next: microstep.next,
|
|
281
|
+
event: microstep.event,
|
|
282
|
+
commands: microstep.commands.length,
|
|
283
|
+
raisedEvents: microstep.raisedEvents,
|
|
284
|
+
emittedEvents: microstep.emittedEvents,
|
|
285
|
+
exitPaths: microstep.exitPaths,
|
|
286
|
+
entryPaths: microstep.entryPaths,
|
|
287
|
+
changed: microstep.changed
|
|
288
|
+
}))
|
|
289
|
+
});
|
|
290
|
+
export const assertPlannerRuntimeAgreement = (machine, evidence) => Effect.gen(function* () {
|
|
291
|
+
const violations = [];
|
|
292
|
+
const add = (record, field, message) => {
|
|
293
|
+
violations.push({ commandIndex: record.index, command: record.command, field, message });
|
|
294
|
+
};
|
|
295
|
+
for (const record of evidence.records) {
|
|
296
|
+
if (record.command._tag !== "Send" || record.actual.result._tag !== "SendProcessed")
|
|
297
|
+
continue;
|
|
298
|
+
const step = record.actual.result.step;
|
|
299
|
+
const planned = yield* Effect.result(Machine.plan(machine, step.before, record.command.event));
|
|
300
|
+
if (Result.isFailure(planned)) {
|
|
301
|
+
add(record, "planning", `Fresh planning failed: ${String(planned.failure)}`);
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
const expected = projection(planned.success);
|
|
305
|
+
const actual = projection(step.plan);
|
|
306
|
+
const compare = (field, left, right) => {
|
|
307
|
+
const actualFingerprint = fingerprint(left);
|
|
308
|
+
const expectedFingerprint = fingerprint(right);
|
|
309
|
+
if (actualFingerprint !== expectedFingerprint) {
|
|
310
|
+
add(record, field, `Runtime ${field} disagreed with fresh planning: expected ${expectedFingerprint}, actual ${actualFingerprint}`);
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
compare("planNext", actual.after, expected.after);
|
|
314
|
+
compare("after", step.after, expected.after);
|
|
315
|
+
compare("completion", actual.completion, expected.completion);
|
|
316
|
+
compare("commands", actual.commands, expected.commands);
|
|
317
|
+
compare("emittedEvents", actual.emittedEvents, expected.emittedEvents);
|
|
318
|
+
compare("microsteps", actual.microsteps, expected.microsteps);
|
|
319
|
+
const handled = planned.success.microsteps.length > 0;
|
|
320
|
+
if (step.handled !== handled)
|
|
321
|
+
add(record, "handled", `Expected handled=${handled} but observed ${step.handled}`);
|
|
322
|
+
const configurationChanged = planned.success.microsteps.some(({ changed }) => changed);
|
|
323
|
+
if (step.configurationChanged !== configurationChanged) {
|
|
324
|
+
add(record, "configurationChanged", `Expected configurationChanged=${configurationChanged} but observed ${step.configurationChanged}`);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (violations.length > 0) {
|
|
328
|
+
return yield* new PlannerRuntimeAgreementError({
|
|
329
|
+
evidence: evidence,
|
|
330
|
+
violations
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
//# sourceMappingURL=runtimeInvariant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeInvariant.js","sourceRoot":"","sources":["../../../../src/internal/testing/machine/runtimeInvariant.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Planner trace construction shared by scenario runs and graph exploration.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.4.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as Machine from "../../../Machine.js";
|
|
8
|
+
import type { RunError, RunFailure, RunServices, Scenario, Trace } from "../../../testing/MachineTest.js";
|
|
9
|
+
import type { EnsureExecutable } from "../../machine/readiness.js";
|
|
10
|
+
type AnyMachine = Machine.Machine.Any;
|
|
11
|
+
type StatePath<M extends AnyMachine> = Machine.Machine.StateIdentifier<Machine.Machine.States<M>>;
|
|
12
|
+
type ReadyMachine<M extends AnyMachine> = M & EnsureExecutable<Machine.Machine.States<M>, Machine.Machine.UnhandledStates<M>, Machine.Machine.OutputStates<M>>;
|
|
13
|
+
export declare const rawConfigurationPaths: <M extends AnyMachine>(machine: M, snapshot: Machine.Machine.Snapshot<Machine.Machine.States<M>>) => ReadonlyArray<StatePath<M>>;
|
|
14
|
+
export declare const appendTrace: <M extends AnyMachine>(machine: ReadyMachine<M>, trace: Trace<M>, event: Machine.Machine.InputEvent<M>, scenario: Scenario<M>) => Effect.Effect<Trace<M>, RunFailure<RunError<M>, M>, RunServices<M>>;
|
|
15
|
+
export declare const run: <M extends AnyMachine>(machine: ReadyMachine<M>, scenario: Scenario<M>) => Effect.Effect<Trace<M>, RunFailure<RunError<M>, M>, RunServices<M>>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../../../src/internal/testing/machine/trace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAC9C,OAAO,KAAK,EAIV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,QAAQ,EACR,KAAK,EAEN,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAElE,KAAK,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAA;AAIrC,KAAK,SAAS,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAEjG,KAAK,YAAY,CAAC,CAAC,SAAS,UAAU,IAClC,CAAC,GACD,gBAAgB,CAChB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAClC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAChC,CAAA;AAEH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,UAAU,EACxD,SAAS,CAAC,EACV,UAAU,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAC5D,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAe5B,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,UAAU,EAC9C,SAAS,YAAY,CAAC,CAAC,CAAC,EACxB,OAAO,KAAK,CAAC,CAAC,CAAC,EACf,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EACpC,UAAU,QAAQ,CAAC,CAAC,CAAC,KACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAsCpE,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,CAAC,CAAC,SAAS,UAAU,EACrC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EACxB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAClB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CA6CrE,CAAA"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Planner trace construction shared by scenario runs and graph exploration.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.4.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as Schema from "effect/Schema";
|
|
8
|
+
import * as Machine from "../../../Machine.js";
|
|
9
|
+
export const rawConfigurationPaths = (machine, snapshot) => {
|
|
10
|
+
const active = new Set();
|
|
11
|
+
const visit = (current) => {
|
|
12
|
+
if (typeof current !== "object" || current === null)
|
|
13
|
+
return;
|
|
14
|
+
const value = current;
|
|
15
|
+
if (typeof value.path === "string")
|
|
16
|
+
active.add(value.path);
|
|
17
|
+
if (value.state !== undefined)
|
|
18
|
+
visit(value.state);
|
|
19
|
+
if (typeof value.states === "object" && value.states !== null) {
|
|
20
|
+
for (const child of Object.values(value.states))
|
|
21
|
+
visit(child);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
visit(snapshot);
|
|
25
|
+
return Machine.stateNodes(machine)
|
|
26
|
+
.filter((node) => node.type !== "history" && node.type !== "choice" && active.has(node.path))
|
|
27
|
+
.map((node) => node.path);
|
|
28
|
+
};
|
|
29
|
+
export const appendTrace = (machine, trace, event, scenario) => {
|
|
30
|
+
const index = trace.steps.length;
|
|
31
|
+
const before = trace.final;
|
|
32
|
+
const beforeConfiguration = rawConfigurationPaths(machine, before);
|
|
33
|
+
return Machine.plan(machine, before, event).pipe(Effect.mapError((cause) => ({
|
|
34
|
+
_tag: "MachineTestRunFailure",
|
|
35
|
+
scenario,
|
|
36
|
+
phase: "event",
|
|
37
|
+
eventIndex: index,
|
|
38
|
+
event,
|
|
39
|
+
initial: trace.initial,
|
|
40
|
+
steps: trace.steps.slice(),
|
|
41
|
+
cause
|
|
42
|
+
})), Effect.map((plan) => {
|
|
43
|
+
const step = {
|
|
44
|
+
index,
|
|
45
|
+
before,
|
|
46
|
+
beforeConfiguration,
|
|
47
|
+
event,
|
|
48
|
+
plan,
|
|
49
|
+
after: plan.next,
|
|
50
|
+
afterConfiguration: rawConfigurationPaths(machine, plan.next)
|
|
51
|
+
};
|
|
52
|
+
return {
|
|
53
|
+
scenario,
|
|
54
|
+
initial: trace.initial,
|
|
55
|
+
steps: [...trace.steps, step],
|
|
56
|
+
final: plan.next,
|
|
57
|
+
finalConfiguration: step.afterConfiguration
|
|
58
|
+
};
|
|
59
|
+
}));
|
|
60
|
+
};
|
|
61
|
+
export const run = Effect.fnUntraced(function* (machine, scenario) {
|
|
62
|
+
const initialEffect = (machine.input === undefined || machine.input === Schema.Void
|
|
63
|
+
? Machine.planInitial(machine)
|
|
64
|
+
: Machine.planInitial(machine, scenario.input));
|
|
65
|
+
const initial = yield* initialEffect.pipe(Effect.mapError((cause) => ({
|
|
66
|
+
_tag: "MachineTestRunFailure",
|
|
67
|
+
scenario,
|
|
68
|
+
phase: "initial",
|
|
69
|
+
eventIndex: undefined,
|
|
70
|
+
event: undefined,
|
|
71
|
+
initial: undefined,
|
|
72
|
+
steps: [],
|
|
73
|
+
cause
|
|
74
|
+
})));
|
|
75
|
+
const initialTrace = {
|
|
76
|
+
plan: initial,
|
|
77
|
+
startingState: initial.startingState,
|
|
78
|
+
startingConfiguration: rawConfigurationPaths(machine, initial.startingState),
|
|
79
|
+
initialEntryPaths: initial.initialEntryPaths,
|
|
80
|
+
configuration: rawConfigurationPaths(machine, initial.state)
|
|
81
|
+
};
|
|
82
|
+
let trace = {
|
|
83
|
+
scenario,
|
|
84
|
+
initial: initialTrace,
|
|
85
|
+
steps: [],
|
|
86
|
+
final: initial.state,
|
|
87
|
+
finalConfiguration: initialTrace.configuration
|
|
88
|
+
};
|
|
89
|
+
for (const event of scenario.events) {
|
|
90
|
+
trace = yield* appendTrace(machine, trace, event, scenario);
|
|
91
|
+
}
|
|
92
|
+
return trace;
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../../src/internal/testing/machine/trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Property-based scenario generation and planner trace utilities.
|
|
3
3
|
*
|
|
4
|
-
* @since 4.0
|
|
4
|
+
* @since 0.4.0
|
|
5
5
|
*/
|
|
6
6
|
import * as Effect from "effect/Effect";
|
|
7
7
|
import * as Machine from "../../../Machine.js";
|
|
8
|
-
import type { Coverage, ObservedGraph,
|
|
9
|
-
import type { EnsureExecutable } from "../../machine/readiness.js";
|
|
8
|
+
import type { Coverage, ObservedGraph, RunFailure, ScenarioOptions, Scenarios, Trace, VerificationViolation, VerifyOptions } from "../../../testing/MachineTest.js";
|
|
10
9
|
import type { FiniteModel } from "./finiteModel.js";
|
|
11
10
|
import * as ReferenceModel from "./referenceModel.js";
|
|
12
|
-
|
|
11
|
+
import { run } from "./trace.js";
|
|
12
|
+
export { advanceCommand, type CausalRuntimeAssertionContext, type CausalRuntimeCommandActual, CausalRuntimeCommandFailure, type CausalRuntimeCommandRecord, type CausalRuntimeCommandResult, type CausalRuntimeInspectionContext, type CausalRuntimeModelOptions, type CausalRuntimeModelStep, type CausalRuntimeTranscript, type CausalVerificationAwaitContext, type CausalVerificationOptions, type CausalVerificationTranscript, checkpointCommand, type EnqueuedRuntimeAssertionContext, type EnqueuedRuntimeCommandActual, type EnqueuedRuntimeCommandRecord, type EnqueuedRuntimeInspectionContext, type EnqueuedRuntimeModelOptions, type EnqueuedRuntimeModelStep, type EnqueuedRuntimeTranscript, formatCausalTranscript, formatEnqueuedTranscript, formatRuntimeTranscript, runCausalCommands, runEnqueuedCommands, runRuntimeCommands, type RuntimeAssertionContext, type RuntimeAwait, type RuntimeCommand, type RuntimeCommandActual, RuntimeCommandFailure, type RuntimeCommandRecord, type RuntimeCommandResult, type RuntimeCommands, runtimeCommands, type RuntimeCommandsDiagnostics, type RuntimeCommandsOptions, type RuntimeInspectionContext, type RuntimeModelOptions, type RuntimeModelStep, RuntimeObservationError, RuntimeSynchronization, type RuntimeTranscript, sendCommand, stopCommand, verifyCausalCommands } from "./runtime.js";
|
|
13
13
|
export type { SchemaArbitraryOpaqueFilterWarning, SchemaArbitraryReport, SchemaArbitraryWarning } from "./arbitrary.js";
|
|
14
14
|
export { compileModel, type FiniteAtomicState, type FiniteAutomaticTransition, type FiniteCompoundState, type FiniteEventTransition, type FiniteFinalState, type FiniteHistoryMutation, type FiniteHistoryScenario, type FiniteHistoryState, type FiniteHistoryTransfer, type FiniteModel, type FiniteModelDiagnostics, type FiniteModelOptions, type FiniteModels, finiteModels, type FiniteParallelState, type FiniteState, type FiniteTransition, type FiniteTransitionTrigger } from "./finiteModel.js";
|
|
15
15
|
export { ModelVerificationError, type ModelVerificationField, type ModelVerificationLocation, type ModelVerificationMismatch, type ReferenceCompletion, type ReferenceHistoryRecord, type ReferenceInitialStep, type ReferenceMicrostep, type ReferenceState, type ReferenceStateValue, type ReferenceStep, type ReferenceTrace, type ReferenceTransition } from "./referenceModel.js";
|
|
16
|
+
export { assertInvariants, checkInvariants, Invariant, InvariantError, invariants } from "./invariant.js";
|
|
17
|
+
export { assertPlannerRuntimeAgreement, assertRuntimeInvariants, checkRuntimeInvariants, PlannerRuntimeAgreementError, RuntimeInvariantError, runtimeInvariants } from "./runtimeInvariant.js";
|
|
18
|
+
export { assertReachable, assertUnreachable, explore, findShortest, ReachabilityError } from "./exploration.js";
|
|
19
|
+
export { probe, ProbeUnavailableError } from "./probe.js";
|
|
20
|
+
export { run };
|
|
16
21
|
export declare const interpretModel: (model: FiniteModel, events: ReadonlyArray<string>) => ReferenceModel.ReferenceTrace;
|
|
17
22
|
type AnyMachine = Machine.Machine.Any;
|
|
18
|
-
type ReadyMachine<M extends AnyMachine> = M & EnsureExecutable<Machine.Machine.States<M>, Machine.Machine.UnhandledStates<M>, Machine.Machine.OutputStates<M>>;
|
|
19
23
|
export declare const scenarios: <M extends AnyMachine>(machine: M, options?: ScenarioOptions<M>) => Scenarios<M>;
|
|
20
24
|
export declare const verifyModel: <M extends AnyMachine>(model: FiniteModel, actualTrace: Trace<M>) => Effect.Effect<void, ReferenceModel.ModelVerificationError>;
|
|
21
|
-
export declare const run: <M extends AnyMachine>(machine: ReadyMachine<M>, scenario: Scenario<M>) => Effect.Effect<Trace<M>, RunFailure<RunError<M>, M>, RunServices<M>>;
|
|
22
25
|
export declare const coverage: <M extends AnyMachine>(machine: M, traceOrTraces: Trace<M> | ReadonlyArray<Trace<M>>) => Coverage<M>;
|
|
23
26
|
export declare const observedGraph: <M extends AnyMachine>(machine: M, traceOrTraces: Trace<M> | ReadonlyArray<Trace<M>>) => Effect.Effect<ObservedGraph<M>, Machine.MachineSchemaEncodeError, Machine.Machine.SnapshotEncodingServices<Machine.Machine.States<M>>>;
|
|
24
27
|
declare const VerificationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../../src/internal/testing/machine/verification.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAKvC,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAC9C,OAAO,KAAK,EACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../../src/internal/testing/machine/verification.ts"],"names":[],"mappings":"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"}
|