@cotal-ai/lang 0.37.0 → 0.39.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/sim.js CHANGED
@@ -10,7 +10,7 @@
10
10
  * simulator that invents a plausible turn result is a simulator that green-lights broken programs,
11
11
  * which is worse than having no simulator at all.
12
12
  */
13
- import { EffectError } from "./effects.js";
13
+ import { Cancelled, EffectError, askSchemaShape, conformsToAskSchema } from "./effects.js";
14
14
  import { parseDuration } from "./duration.js";
15
15
  import { stepKeyString } from "./keys.js";
16
16
  export class SimUnscriptedError extends Error {
@@ -23,27 +23,15 @@ export class SimUnscriptedError extends Error {
23
23
  this.name = "SimUnscriptedError";
24
24
  }
25
25
  }
26
- /**
27
- * The simulation handler.
28
- *
29
- * Every effect resolves from the script or fails loudly. Sleeps are instant and advance the
30
- * virtual clock by the duration the program asked for, so a program that waits four hours is
31
- * tested in microseconds without pretending the wait did not happen.
32
- *
33
- * ONE clock, advanced in ask order — deliberately, and worth saying here because this file is
34
- * where a reader would conclude otherwise: concurrent branches do NOT get independent virtual
35
- * time. Two racing sleeps advance the same clock as their requests arrive, so under simulation a
36
- * race is decided by ask order (then declaration order), not by which duration is shorter. The
37
- * run clocks (`RunClock`, per branch) sit above this and stay per-branch; it is the TIMEBASE the
38
- * simulator feeds them that is shared. A live handler with real waiting behaves differently, and
39
- * `scopes.smoke` section 1b is the cell that pins the difference.
40
- */
41
26
  export class SimHandler {
42
27
  script;
43
28
  virtualNow;
44
29
  occurrences = new Map();
45
30
  consumed = [];
46
31
  agents = new Map();
32
+ parked = [];
33
+ parkSeq = 0;
34
+ pumpScheduled = false;
47
35
  constructor(script = {}) {
48
36
  this.script = script;
49
37
  this.virtualNow = script.clock?.start ?? 0;
@@ -51,12 +39,72 @@ export class SimHandler {
51
39
  now() {
52
40
  return this.virtualNow;
53
41
  }
54
- /** Advance virtual time. Sleeps do this by their full duration; turns by a scripted default. */
42
+ /** Advance virtual time immediately. The timed effects go through the event queue instead. */
55
43
  advance(ms) {
56
44
  this.virtualNow += ms;
57
45
  }
58
- advanceBy(spec, fallback) {
59
- this.advance(parseDuration(spec ?? fallback));
46
+ /**
47
+ * Park a timed effect until the queue delivers its wake. The wake is computed from the clock
48
+ * at dispatch, which by the pump's invariant is the dispatching branch's own time.
49
+ */
50
+ timed(ms, ctx) {
51
+ return new Promise((resolve, reject) => {
52
+ if (ctx.signal.cancelled) {
53
+ reject(new Cancelled(ctx.signal.reason ?? "cancelled"));
54
+ return;
55
+ }
56
+ const event = {
57
+ wake: this.virtualNow + ms,
58
+ seq: this.parkSeq++,
59
+ done: false,
60
+ deliver: () => {
61
+ if (event.done)
62
+ return;
63
+ event.done = true;
64
+ this.virtualNow = Math.max(this.virtualNow, event.wake);
65
+ resolve();
66
+ },
67
+ cancel: (reason) => {
68
+ if (event.done)
69
+ return;
70
+ event.done = true;
71
+ reject(reason);
72
+ },
73
+ };
74
+ ctx.signal.onCancel((reason) => event.cancel(new Cancelled(reason)));
75
+ this.parked.push(event);
76
+ this.schedulePump();
77
+ });
78
+ }
79
+ /**
80
+ * One delivery per macrotask, with the microtask queue drained between: the delivered branch
81
+ * runs to its next park (or its settle) before the next pop, which is what keeps the clock a
82
+ * parking branch reads equal to that branch's own time.
83
+ */
84
+ schedulePump() {
85
+ if (this.pumpScheduled)
86
+ return;
87
+ this.pumpScheduled = true;
88
+ setImmediate(() => {
89
+ this.pumpScheduled = false;
90
+ let next;
91
+ for (const e of this.parked) {
92
+ if (e.done)
93
+ continue;
94
+ if (next === undefined || e.wake < next.wake || (e.wake === next.wake && e.seq < next.seq))
95
+ next = e;
96
+ }
97
+ next?.deliver();
98
+ for (let i = this.parked.length - 1; i >= 0; i--) {
99
+ if (this.parked[i].done)
100
+ this.parked.splice(i, 1);
101
+ }
102
+ if (this.parked.length > 0)
103
+ this.schedulePump();
104
+ });
105
+ }
106
+ timedBy(spec, fallback, ctx) {
107
+ return this.timed(parseDuration(spec ?? fallback), ctx);
60
108
  }
61
109
  /** Which occurrence of this (table, name) we are on, counted per simulated run. */
62
110
  nextOccurrence(table, name) {
@@ -114,14 +162,40 @@ export class SimHandler {
114
162
  async turn(_req, ctx) {
115
163
  const scripted = this.resolve("turns", this.script.turns, ctx);
116
164
  await ctx.bind({ simGoal: stepKeyString(ctx.key) });
117
- this.advanceBy(this.script.clock?.turn, "5m");
165
+ await this.timedBy(this.script.clock?.turn, "5m", ctx);
118
166
  return { ...scripted, at: this.virtualNow };
119
167
  }
120
- async ask(_req, ctx) {
121
- const value = this.resolve("asks", this.script.asks, ctx);
122
- await ctx.bind({ simGoal: stepKeyString(ctx.key) });
123
- this.advanceBy(this.script.clock?.ask, "1m");
124
- return value;
168
+ /**
169
+ * The one effect with a reply contract. The request's schema is read as the shorthand
170
+ * (`askSchemaShape`), and every scripted reply is checked against it: a non-conforming reply
171
+ * consumes one attempt, one scripted occurrence, and one reply's worth of virtual time, and
172
+ * running out of attempts reports L4006, exactly as a production handler must. An unreadable
173
+ * schema is refused (L4022) rather than skipped, because a schema the handler cannot read and
174
+ * silently ignores is a contract the program believes in and nobody checks. To exercise the
175
+ * exhaustion path, script at least as many replies as `attempts`: the simulator still never
176
+ * invents one, so a script that runs out first fails as L6001.
177
+ */
178
+ async ask(req, ctx) {
179
+ const shape = askSchemaShape(req.schema);
180
+ if (shape === null) {
181
+ this.checkFault(ctx);
182
+ throw new EffectError("L4022", "ask-schema-unreadable", `L4022 Unreadable ask schema\n\n step ${stepKeyString(ctx.key)}\n\nThe schema is not the shorthand a reference handler enforces: a record mapping each field name to one of "string", "number", "boolean", "array", "record", "null".\n\nFix: write the shorthand, for example { steps: "array" }, or pass {} to accept any record.`);
183
+ }
184
+ const attempts = req.attempts ?? 1;
185
+ let bound = false;
186
+ for (let attempt = 1;; attempt++) {
187
+ const value = this.resolve("asks", this.script.asks, ctx);
188
+ if (!bound) {
189
+ await ctx.bind({ simGoal: stepKeyString(ctx.key) });
190
+ bound = true;
191
+ }
192
+ await this.timedBy(this.script.clock?.ask, "1m", ctx);
193
+ if (conformsToAskSchema(value, shape))
194
+ return value;
195
+ if (attempt >= attempts) {
196
+ throw new EffectError("L4006", "ask-nonconforming", `L4006 ask never produced a conforming record\n\n step ${stepKeyString(ctx.key)}\n\n${attempts} repl${attempts === 1 ? "y was" : "ies were"} checked against the schema and none conformed.\n\nFix: script a reply that matches the schema, widen the schema, or raise attempts.`);
197
+ }
198
+ }
125
199
  }
126
200
  /**
127
201
  * Reports WHAT HAPPENED and never whether it throws. A script says `resolved` or `expired`; the
@@ -131,7 +205,7 @@ export class SimHandler {
131
205
  async checkpoint(_req, ctx) {
132
206
  const scripted = this.resolve("checkpoints", this.script.checkpoints, ctx);
133
207
  await ctx.bind({ simCheckpoint: stepKeyString(ctx.key) });
134
- this.advanceBy(this.script.clock?.checkpoint, "1m");
208
+ await this.timedBy(this.script.clock?.checkpoint, "1m", ctx);
135
209
  if (scripted.status === "expired")
136
210
  return { outcome: "expired", at: this.virtualNow };
137
211
  return {
@@ -142,19 +216,19 @@ export class SimHandler {
142
216
  at: this.virtualNow,
143
217
  };
144
218
  }
145
- /** Instant: the SHARED virtual clock moves by what the program asked to wait (see the class note). */
219
+ /** Instant in wall time: the sleep parks at its wake and the queue delivers it in order. */
146
220
  async sleep(req, ctx) {
147
221
  this.checkFault(ctx);
148
- this.advance(parseDuration(req.duration));
222
+ await this.timed(parseDuration(req.duration), ctx);
149
223
  return null;
150
224
  }
151
225
  async wait(req, ctx) {
152
226
  const value = this.resolve("events", this.script.events, ctx);
153
227
  // A scripted null is a timeout, and a timeout consumes the whole timeout budget.
154
228
  if (value === null && req.timeout !== undefined)
155
- this.advance(parseDuration(req.timeout));
229
+ await this.timed(parseDuration(req.timeout), ctx);
156
230
  else
157
- this.advanceBy(this.script.clock?.wait, "1m");
231
+ await this.timedBy(this.script.clock?.wait, "1m", ctx);
158
232
  return value;
159
233
  }
160
234
  async notify(_req, ctx) {
package/dist/sim.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sim.js","sourceRoot":"","sources":["../src/sim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim.js","sourceRoot":"","sources":["../src/sim.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/lang",
3
3
  "description": "cotal-lang: the restricted-JS workflow language. Parser and validator, the effect interface, the step journal, the interpreter, and the simulation handler. Depends on nothing else in the repo.",
4
- "version": "0.37.0",
4
+ "version": "0.39.0",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -34,7 +34,7 @@
34
34
  "scripts": {
35
35
  "typecheck": "tsc -p tsconfig.check.json",
36
36
  "build": "tsc -p tsconfig.json",
37
- "test": "pnpm run build:emit && tsx smoke/grammar.smoke.ts && tsx smoke/keys.smoke.ts && tsx smoke/journal.smoke.ts && tsx smoke/pins.smoke.ts && tsx smoke/scopes.smoke.ts && tsx smoke/sim.smoke.ts && tsx smoke/interpret.smoke.ts && tsx smoke/fuel.smoke.ts && tsx smoke/dryrun.smoke.ts && tsx smoke/examples.smoke.ts && tsx smoke/options.smoke.ts && tsx smoke/notify-fact.smoke.ts && tsx smoke/migrate.smoke.ts && tsx smoke/semantics.smoke.ts && tsx smoke/surface.smoke.ts && tsx smoke/transform.smoke.ts && tsx smoke/differential.smoke.ts && tsx smoke/engine.smoke.ts",
37
+ "test": "pnpm run build:emit && tsx smoke/grammar.smoke.ts && tsx smoke/keys.smoke.ts && tsx smoke/journal.smoke.ts && tsx smoke/fuzz-journal.smoke.ts && tsx smoke/pins.smoke.ts && tsx smoke/scopes.smoke.ts && tsx smoke/sim.smoke.ts && tsx smoke/interpret.smoke.ts && tsx smoke/fuel.smoke.ts && tsx smoke/dryrun.smoke.ts && tsx smoke/examples.smoke.ts && tsx smoke/options.smoke.ts && tsx smoke/notify-fact.smoke.ts && tsx smoke/migrate.smoke.ts && tsx smoke/semantics.smoke.ts && tsx smoke/surface.smoke.ts && tsx smoke/transform.smoke.ts && tsx smoke/differential.smoke.ts && tsx smoke/engine.smoke.ts",
38
38
  "build:emit": "tsc -p tsconfig.json --noCheck"
39
39
  }
40
40
  }