@cotal-ai/lang 0.22.0 → 0.24.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.
Files changed (57) hide show
  1. package/README.md +57 -0
  2. package/dist/effects.d.ts +19 -0
  3. package/dist/effects.d.ts.map +1 -1
  4. package/dist/effects.js +23 -0
  5. package/dist/effects.js.map +1 -1
  6. package/dist/errors.d.ts +48 -2
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +90 -2
  9. package/dist/errors.js.map +1 -1
  10. package/dist/grammar.d.ts.map +1 -1
  11. package/dist/grammar.js +561 -128
  12. package/dist/grammar.js.map +1 -1
  13. package/dist/index.d.ts +10 -6
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +10 -6
  16. package/dist/index.js.map +1 -1
  17. package/dist/interpret.d.ts +81 -3
  18. package/dist/interpret.d.ts.map +1 -1
  19. package/dist/interpret.js +1446 -270
  20. package/dist/interpret.js.map +1 -1
  21. package/dist/journal.d.ts +218 -9
  22. package/dist/journal.d.ts.map +1 -1
  23. package/dist/journal.js +232 -12
  24. package/dist/journal.js.map +1 -1
  25. package/dist/keys.d.ts +39 -1
  26. package/dist/keys.d.ts.map +1 -1
  27. package/dist/keys.js +61 -0
  28. package/dist/keys.js.map +1 -1
  29. package/dist/library.d.ts +65 -0
  30. package/dist/library.d.ts.map +1 -0
  31. package/dist/library.js +525 -0
  32. package/dist/library.js.map +1 -0
  33. package/dist/notify-fact.d.ts +8 -0
  34. package/dist/notify-fact.d.ts.map +1 -0
  35. package/dist/notify-fact.js +69 -0
  36. package/dist/notify-fact.js.map +1 -0
  37. package/dist/pins.d.ts +82 -0
  38. package/dist/pins.d.ts.map +1 -0
  39. package/dist/pins.js +87 -0
  40. package/dist/pins.js.map +1 -0
  41. package/dist/primitives.d.ts +14 -0
  42. package/dist/primitives.d.ts.map +1 -1
  43. package/dist/primitives.js +45 -5
  44. package/dist/primitives.js.map +1 -1
  45. package/dist/sim.d.ts +9 -1
  46. package/dist/sim.d.ts.map +1 -1
  47. package/dist/sim.js +9 -1
  48. package/dist/sim.js.map +1 -1
  49. package/dist/syntax.d.ts +34 -0
  50. package/dist/syntax.d.ts.map +1 -0
  51. package/dist/syntax.js +178 -0
  52. package/dist/syntax.js.map +1 -0
  53. package/dist/values.d.ts +20 -1
  54. package/dist/values.d.ts.map +1 -1
  55. package/dist/values.js +0 -0
  56. package/dist/values.js.map +1 -1
  57. package/package.json +2 -2
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The first way this fact breaks the bound, or `null` when it holds.
3
+ *
4
+ * Returns rather than throws so the interpreter raises in its own vocabulary (L3043 with the run's
5
+ * blame frame) and a test can ask the question without catching anything.
6
+ */
7
+ export declare function notifyFactViolation(fact: unknown): string | null;
8
+ //# sourceMappingURL=notify-fact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notify-fact.d.ts","sourceRoot":"","sources":["../src/notify-fact.ts"],"names":[],"mappings":"AAuBA;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyChE"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * The `notify` fact's bound, enforced where the VALUE exists.
3
+ *
4
+ * The validator checks a fact written as a literal, exactly, and its own comment has always said
5
+ * the other half out loud: *a computed one is checked at the effect boundary by the same rules*.
6
+ * This is that half. It matters because the computed case is the one the bound exists for —
7
+ * The rule is that no interpolation hook may launder a turn result's free text into another
8
+ * agent's prompt, and a static check cannot see a string that does not exist until the run
9
+ * produces it. Over-cap is an ERROR, never a truncation: silently shortening prose would make the
10
+ * program's intent unrecoverable while still delivering a message.
11
+ *
12
+ * **A length bound is not a shape bound**, which is the second half of the same rule and is easy to
13
+ * miss: 128 characters is ample room for a closing tag and an instruction after it. The render is a
14
+ * fixed table whose whole property is that it cannot be mistaken for an instruction, and a value
15
+ * carrying a newline is a value that can forge a row, a closing tag, or a line of prose below the
16
+ * table. So a detail string is a SINGLE LINE of printable text, checked here rather than in the
17
+ * renderer: the renderer must be unable to receive one, not merely careful with it.
18
+ */
19
+ import { NOTIFY_BOUND } from "./primitives.js";
20
+ /** C0/C1 controls and the Unicode line separators — everything that can end a line. */
21
+ const CONTROL_RE = /[\u0000-\u001f\u007f-\u009f\u2028\u2029]/;
22
+ /**
23
+ * The first way this fact breaks the bound, or `null` when it holds.
24
+ *
25
+ * Returns rather than throws so the interpreter raises in its own vocabulary (L3043 with the run's
26
+ * blame frame) and a test can ask the question without catching anything.
27
+ */
28
+ export function notifyFactViolation(fact) {
29
+ if (fact === null || typeof fact !== "object" || Array.isArray(fact))
30
+ return "a notify fact is a record with `decision`, `outcome`, and an optional `detail`";
31
+ const o = fact;
32
+ for (const key of Object.keys(o))
33
+ if (key !== "decision" && key !== "outcome" && key !== "detail")
34
+ return `a notify fact carries \`decision\`, \`outcome\`, and an optional \`detail\`, and nothing else; \`${key}\` would be an unbounded channel from the program into another agent's context`;
35
+ for (const field of ["decision", "outcome"]) {
36
+ const value = o[field];
37
+ if (typeof value !== "string")
38
+ return `a notify fact needs a \`${field}\`, named as a token`;
39
+ if (!NOTIFY_BOUND.tokenRe.test(value))
40
+ return `\`${field}\` names a decision, so it is a kebab-case token of 1 to 64 characters; ${JSON.stringify(value.slice(0, 64))} is not one`;
41
+ }
42
+ const detail = o.detail;
43
+ if (detail === undefined)
44
+ return null;
45
+ if (detail === null || typeof detail !== "object" || Array.isArray(detail))
46
+ return "`detail` is a record of short scalars";
47
+ const entries = Object.entries(detail);
48
+ if (entries.length > NOTIFY_BOUND.maxDetailKeys)
49
+ return `\`detail\` carries at most ${NOTIFY_BOUND.maxDetailKeys} keys; this one has ${entries.length}. The cap is what keeps a notice a decision rather than a message`;
50
+ for (const [key, value] of entries) {
51
+ if (!NOTIFY_BOUND.detailKeyRe.test(key))
52
+ return `\`${key}\` is not a detail key; they are kebab-case tokens of at most 32 characters`;
53
+ if (typeof value === "number") {
54
+ if (!Number.isFinite(value))
55
+ return `\`${key}\` is a number that is not finite; a notice records a decision, not a NaN`;
56
+ continue;
57
+ }
58
+ if (typeof value === "boolean")
59
+ continue;
60
+ if (typeof value !== "string")
61
+ return `\`${key}\` is not a scalar; detail values are a short string, a number, or a boolean, because a nested structure is an unbounded pipe into another agent's context`;
62
+ if (value.length > NOTIFY_BOUND.maxDetailStringLength)
63
+ return `a detail string is at most ${NOTIFY_BOUND.maxDetailStringLength} characters; \`${key}\` is ${value.length}. Longer than that is prose, and prose belongs in the channel where the agent can answer it`;
64
+ if (CONTROL_RE.test(value))
65
+ return `\`${key}\` carries a line break or control character; a notice renders as one table row, and a value that can end a line can forge one`;
66
+ }
67
+ return null;
68
+ }
69
+ //# sourceMappingURL=notify-fact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notify-fact.js","sourceRoot":"","sources":["../src/notify-fact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,uFAAuF;AACvF,MAAM,UAAU,GAAG,0CAA0C,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC/C,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAClE,OAAO,gFAAgF,CAAC;IAE1F,MAAM,CAAC,GAAG,IAA+B,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ;YAC7D,OAAO,oGAAoG,GAAG,gFAAgF,CAAC;IAEnM,KAAK,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,SAAS,CAAU,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,2BAA2B,KAAK,sBAAsB,CAAC;QAC7F,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC,OAAO,KAAK,KAAK,2EAA2E,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC;IAChJ,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACxB,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACxE,OAAO,uCAAuC,CAAC;IAEjD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAiC,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,aAAa;QAC7C,OAAO,8BAA8B,YAAY,CAAC,aAAa,uBAAuB,OAAO,CAAC,MAAM,mEAAmE,CAAC;IAE1K,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YACrC,OAAO,KAAK,GAAG,6EAA6E,CAAC;QAC/F,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,GAAG,2EAA2E,CAAC;YACxH,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,SAAS;QACzC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAC3B,OAAO,KAAK,GAAG,4JAA4J,CAAC;QAC9K,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,qBAAqB;YACnD,OAAO,8BAA8B,YAAY,CAAC,qBAAqB,kBAAkB,GAAG,SAAS,KAAK,CAAC,MAAM,6FAA6F,CAAC;QACjN,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,OAAO,KAAK,GAAG,gIAAgI,CAAC;IACpJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/pins.d.ts ADDED
@@ -0,0 +1,82 @@
1
+ /**
2
+ * The run's pins: the resolved values that select which effects a run performs.
3
+ *
4
+ * A run is not pinned by its source alone. The seed decides pure draws, the logical epoch decides
5
+ * what `now()` returns before the first effect, and the three limits decide whether a loop
6
+ * completes or raises. Two runs of one program under different pins are two different runs, so the
7
+ * pins are resolved once at start, recorded, and read back on every resume.
8
+ *
9
+ * The RESOLVED value is what is pinned. Defaulting the seed from the run id is fine; defaulting it
10
+ * again on the next host is not, because "the default" is a property of the interpreter and the
11
+ * interpreter is the thing that may have changed.
12
+ */
13
+ /**
14
+ * The interpreter's own semantic version, bumped when a release changes what a program MEANS: the
15
+ * PRNG, a builtin, numeric behaviour, or walker scheduling.
16
+ *
17
+ * Deliberately NOT the package version. `@cotal-ai/lang` versions in lockstep with every other
18
+ * package in the repo, so a release of an unrelated package would otherwise invalidate every open
19
+ * run in the space — a loud failure with no cause behind it, which is worse than no check at all.
20
+ *
21
+ * It is here because source and seed are not sufficient across an upgrade: unchanged source can
22
+ * take a different branch BEFORE the first effect, where there is no input hash to compare against
23
+ * and nothing to diverge on.
24
+ */
25
+ export declare const LANGUAGE_VERSION = "1";
26
+ export declare const PIN_DEFAULTS: Readonly<{
27
+ yieldEvery: 1024;
28
+ stepBudget: 1000000;
29
+ effectCeiling: 10000;
30
+ }>;
31
+ /** Every pin, resolved. This is what lands on the run record and what a resume reads back. */
32
+ export interface RunPins {
33
+ readonly seed: string;
34
+ /**
35
+ * The run's logical epoch. `now()` derives from THIS, never from the resuming host's clock; the
36
+ * host clock is used only to stamp effects performed live on this attempt.
37
+ */
38
+ readonly startedAt: number;
39
+ readonly yieldEvery: number;
40
+ /**
41
+ * Interpreter dispatches allowed in ONE WALK — not in the run. Steps are not recorded, so a
42
+ * resume has nothing to recover a count from, and a replay re-walks the program anyway. This is
43
+ * deliberately unlike `effectCeiling`, which IS a run bound because the journal records every
44
+ * dispatch: the two are listed together and a lane fixing both for symmetry would invent a
45
+ * counter with no source of truth.
46
+ */
47
+ readonly stepBudget: number;
48
+ readonly effectCeiling: number;
49
+ readonly languageVersion: string;
50
+ }
51
+ /** The loose per-run options a caller may supply. On a resume every one of them must agree. */
52
+ export interface PinnableOptions {
53
+ readonly runId: string;
54
+ readonly seed?: string;
55
+ readonly startedAt?: number;
56
+ readonly yieldEvery?: number;
57
+ readonly stepBudget?: number;
58
+ readonly effectCeiling?: number;
59
+ }
60
+ /** A pin the caller supplied disagrees with the one the run was started under (L5009 / L5008). */
61
+ export declare class PinMismatch extends Error {
62
+ readonly code: "L5008" | "L5009";
63
+ readonly pin: string;
64
+ readonly recorded: string | number;
65
+ readonly supplied: string | number;
66
+ constructor(code: "L5008" | "L5009", pin: string, recorded: string | number, supplied: string | number, message: string);
67
+ }
68
+ /**
69
+ * Resolve the pin set for a FRESH run. `now` is the host clock, read exactly once: the logical
70
+ * epoch is a recorded fact from here on, so a second read could not be the same run's epoch.
71
+ */
72
+ export declare function resolvePins(options: PinnableOptions, now: number): RunPins;
73
+ /**
74
+ * Bind a RESUME to the recorded pins, refusing any caller value that disagrees.
75
+ *
76
+ * The direction matters and is the whole rule: an absent option takes the record, a present one
77
+ * that AGREES is harmless, and a present one that differs is refused rather than honoured. Honouring
78
+ * it would silently make this a different run against the same journal, which is the same failure
79
+ * an edited sleep duration causes and gets the same fail-loud treatment.
80
+ */
81
+ export declare function bindPins(recorded: RunPins, options: PinnableOptions): RunPins;
82
+ //# sourceMappingURL=pins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pins.d.ts","sourceRoot":"","sources":["../src/pins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,YAAY;;;;EAIvB,CAAC;AAEH,8FAA8F;AAC9F,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,+FAA+F;AAC/F,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,kGAAkG;AAClG,qBAAa,WAAY,SAAQ,KAAK;IAElC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;gBAHzB,IAAI,EAAE,OAAO,GAAG,OAAO,EACvB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,QAAQ,EAAE,MAAM,GAAG,MAAM,EAClC,OAAO,EAAE,MAAM;CAKlB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAS1E;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CA6B7E"}
package/dist/pins.js ADDED
@@ -0,0 +1,87 @@
1
+ /**
2
+ * The run's pins: the resolved values that select which effects a run performs.
3
+ *
4
+ * A run is not pinned by its source alone. The seed decides pure draws, the logical epoch decides
5
+ * what `now()` returns before the first effect, and the three limits decide whether a loop
6
+ * completes or raises. Two runs of one program under different pins are two different runs, so the
7
+ * pins are resolved once at start, recorded, and read back on every resume.
8
+ *
9
+ * The RESOLVED value is what is pinned. Defaulting the seed from the run id is fine; defaulting it
10
+ * again on the next host is not, because "the default" is a property of the interpreter and the
11
+ * interpreter is the thing that may have changed.
12
+ */
13
+ import { CATALOG } from "./errors.js";
14
+ /**
15
+ * The interpreter's own semantic version, bumped when a release changes what a program MEANS: the
16
+ * PRNG, a builtin, numeric behaviour, or walker scheduling.
17
+ *
18
+ * Deliberately NOT the package version. `@cotal-ai/lang` versions in lockstep with every other
19
+ * package in the repo, so a release of an unrelated package would otherwise invalidate every open
20
+ * run in the space — a loud failure with no cause behind it, which is worse than no check at all.
21
+ *
22
+ * It is here because source and seed are not sufficient across an upgrade: unchanged source can
23
+ * take a different branch BEFORE the first effect, where there is no input hash to compare against
24
+ * and nothing to diverge on.
25
+ */
26
+ export const LANGUAGE_VERSION = "1";
27
+ export const PIN_DEFAULTS = Object.freeze({
28
+ yieldEvery: 1_024,
29
+ stepBudget: 1_000_000,
30
+ effectCeiling: 10_000,
31
+ });
32
+ /** A pin the caller supplied disagrees with the one the run was started under (L5009 / L5008). */
33
+ export class PinMismatch extends Error {
34
+ code;
35
+ pin;
36
+ recorded;
37
+ supplied;
38
+ constructor(code, pin, recorded, supplied, message) {
39
+ super(`${code} ${CATALOG[code]}\n\n${message}`);
40
+ this.code = code;
41
+ this.pin = pin;
42
+ this.recorded = recorded;
43
+ this.supplied = supplied;
44
+ this.name = "PinMismatch";
45
+ }
46
+ }
47
+ /**
48
+ * Resolve the pin set for a FRESH run. `now` is the host clock, read exactly once: the logical
49
+ * epoch is a recorded fact from here on, so a second read could not be the same run's epoch.
50
+ */
51
+ export function resolvePins(options, now) {
52
+ return Object.freeze({
53
+ seed: options.seed ?? options.runId,
54
+ startedAt: options.startedAt ?? now,
55
+ yieldEvery: options.yieldEvery ?? PIN_DEFAULTS.yieldEvery,
56
+ stepBudget: options.stepBudget ?? PIN_DEFAULTS.stepBudget,
57
+ effectCeiling: options.effectCeiling ?? PIN_DEFAULTS.effectCeiling,
58
+ languageVersion: LANGUAGE_VERSION,
59
+ });
60
+ }
61
+ /**
62
+ * Bind a RESUME to the recorded pins, refusing any caller value that disagrees.
63
+ *
64
+ * The direction matters and is the whole rule: an absent option takes the record, a present one
65
+ * that AGREES is harmless, and a present one that differs is refused rather than honoured. Honouring
66
+ * it would silently make this a different run against the same journal, which is the same failure
67
+ * an edited sleep duration causes and gets the same fail-loud treatment.
68
+ */
69
+ export function bindPins(recorded, options) {
70
+ if (recorded.languageVersion !== LANGUAGE_VERSION) {
71
+ throw new PinMismatch("L5008", "languageVersion", recorded.languageVersion, LANGUAGE_VERSION, `This run started under language version ${recorded.languageVersion} and this interpreter is version ${LANGUAGE_VERSION}. Source and seed do not pin behaviour across a semantics change: unchanged source can take a different branch before the first effect, where there is no input hash to diverge on.\n\nOptions\n resume on the recorded version\n fork(run, <step>) start a new run on this version, keeping the prefix`);
72
+ }
73
+ const checks = [
74
+ ["seed", options.seed, recorded.seed],
75
+ ["startedAt", options.startedAt, recorded.startedAt],
76
+ ["yieldEvery", options.yieldEvery, recorded.yieldEvery],
77
+ ["stepBudget", options.stepBudget, recorded.stepBudget],
78
+ ["effectCeiling", options.effectCeiling, recorded.effectCeiling],
79
+ ];
80
+ for (const [pin, supplied, value] of checks) {
81
+ if (supplied !== undefined && supplied !== value) {
82
+ throw new PinMismatch("L5009", pin, value, supplied, `This run is pinned to ${pin} ${JSON.stringify(value)} and the caller supplied ${JSON.stringify(supplied)}. Pins select which effects run, so a different value is a different run against a journal that was not written for it.\n\nOptions\n resume without the override\n fork(run, <step>) re-run from a step under the new ${pin}`);
83
+ }
84
+ }
85
+ return recorded;
86
+ }
87
+ //# sourceMappingURL=pins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pins.js","sourceRoot":"","sources":["../src/pins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,SAAS;IACrB,aAAa,EAAE,MAAM;CACtB,CAAC,CAAC;AAiCH,kGAAkG;AAClG,MAAM,OAAO,WAAY,SAAQ,KAAK;IAEzB;IACA;IACA;IACA;IAJX,YACW,IAAuB,EACvB,GAAW,EACX,QAAyB,EACzB,QAAyB,EAClC,OAAe;QAEf,KAAK,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QANvC,SAAI,GAAJ,IAAI,CAAmB;QACvB,QAAG,GAAH,GAAG,CAAQ;QACX,aAAQ,GAAR,QAAQ,CAAiB;QACzB,aAAQ,GAAR,QAAQ,CAAiB;QAIlC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAwB,EAAE,GAAW;IAC/D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK;QACnC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG;QACnC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,UAAU;QACzD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,UAAU;QACzD,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY,CAAC,aAAa;QAClE,eAAe,EAAE,gBAAgB;KAClC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAiB,EAAE,OAAwB;IAClE,IAAI,QAAQ,CAAC,eAAe,KAAK,gBAAgB,EAAE,CAAC;QAClD,MAAM,IAAI,WAAW,CACnB,OAAO,EACP,iBAAiB,EACjB,QAAQ,CAAC,eAAe,EACxB,gBAAgB,EAChB,2CAA2C,QAAQ,CAAC,eAAe,oCAAoC,gBAAgB,6SAA6S,CACra,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAsF;QAChG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;QACrC,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;QACpD,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;QACvD,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;QACvD,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC;KACjE,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAC5C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACjD,MAAM,IAAI,WAAW,CACnB,OAAO,EACP,GAAG,EACH,KAAK,EACL,QAAQ,EACR,yBAAyB,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,6NAA6N,GAAG,EAAE,CAC5U,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -56,8 +56,22 @@ export declare const EVENT_CONSTRUCTORS: Readonly<Record<string, CalleeDoc>>;
56
56
  export declare const PURE_PRIMITIVES: Readonly<Record<string, CalleeDoc>>;
57
57
  /** The builtin library. Small on purpose (design doc 4). */
58
58
  export declare const BUILTINS: readonly string[];
59
+ /**
60
+ * Value names: identifiers that name a value rather than a function, and may not be shadowed.
61
+ *
62
+ * `undefined` is what a missing field, an out-of-range index, and a function without a `return`
63
+ * produce, so a program has to be able to name it to test for it. It stays a value that cannot
64
+ * cross an effect boundary (L3041): the journal records `null` for "no value", never `undefined`.
65
+ */
66
+ export declare const VALUE_NAMES: readonly string[];
59
67
  /** Every name the program may reference without defining it, and may never shadow. */
60
68
  export declare const RESERVED_NAMES: ReadonlySet<string>;
69
+ /**
70
+ * Host globals a program might reach for out of habit, each rejected by name (L2012) with the
71
+ * replacement this language offers, when it offers one. A name with no replacement carries the
72
+ * generic fix.
73
+ */
74
+ export declare const HOST_GLOBAL_HINTS: Readonly<Record<string, string>>;
61
75
  /** Host globals a program might reach for out of habit, each rejected by name (L2012). */
62
76
  export declare const FORBIDDEN_GLOBALS: ReadonlySet<string>;
63
77
  /** The Promise API, rejected separately so its error can point at the right replacement (L2011). */
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,8EAA8E;AAC9E,eAAO,MAAM,YAAY,mGAUf,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,kGAAkG;AAClG,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,qFAAqF;IACrF,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,mDAAmD;IACnD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;2FAEuF;IACvF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;IACrE,kEAAkE;IAClE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAmK7D,CAAC;AAEH,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAqBjE,CAAC;AAEH,mDAAmD;AACnD,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAW9D,CAAC;AAEH,4DAA4D;AAC5D,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAcpC,CAAC;AAEH,sFAAsF;AACtF,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAO7C,CAAC;AAEH,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAKhD,CAAC;AAEH,oGAAoG;AACpG,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,CAAwB,CAAC;AAEvE,kDAAkD;AAClD,eAAO,MAAM,YAAY,QAAyC,CAAC;AAEnE;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY;IACvB,sDAAsD;;;;;EAKtD,CAAC;AAEH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEhE"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,8EAA8E;AAC9E,eAAO,MAAM,YAAY,mGAUf,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,kGAAkG;AAClG,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,qFAAqF;IACrF,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,mDAAmD;IACnD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;2FAEuF;IACvF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;IACrE,kEAAkE;IAClE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAmK7D,CAAC;AAEH,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAqBjE,CAAC;AAEH,mDAAmD;AACnD,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAW9D,CAAC;AAEH,4DAA4D;AAC5D,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAcpC,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAAiC,CAAC;AAE3E,sFAAsF;AACtF,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAM7C,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqB7D,CAAC;AAEH,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAWhD,CAAC;AAEH,oGAAoG;AACpG,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,CAAwB,CAAC;AAEvE,kDAAkD;AAClD,eAAO,MAAM,YAAY,QAAyC,CAAC;AAEnE;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY;IACvB,sDAAsD;;;;;EAKtD,CAAC;AAEH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEhE"}
@@ -223,21 +223,61 @@ export const BUILTINS = Object.freeze([
223
223
  // tamed nondeterminism
224
224
  "random", "randomInt", "pick", "now", "duration",
225
225
  ]);
226
+ /**
227
+ * Value names: identifiers that name a value rather than a function, and may not be shadowed.
228
+ *
229
+ * `undefined` is what a missing field, an out-of-range index, and a function without a `return`
230
+ * produce, so a program has to be able to name it to test for it. It stays a value that cannot
231
+ * cross an effect boundary (L3041): the journal records `null` for "no value", never `undefined`.
232
+ */
233
+ export const VALUE_NAMES = Object.freeze(["undefined"]);
226
234
  /** Every name the program may reference without defining it, and may never shadow. */
227
235
  export const RESERVED_NAMES = new Set([
228
236
  ...Object.keys(PRIMITIVES),
229
237
  ...Object.keys(EVENT_CONSTRUCTORS),
230
238
  ...Object.keys(PURE_PRIMITIVES),
231
239
  ...BUILTINS,
232
- "any",
233
- "all",
240
+ ...VALUE_NAMES,
234
241
  ]);
242
+ /**
243
+ * Host globals a program might reach for out of habit, each rejected by name (L2012) with the
244
+ * replacement this language offers, when it offers one. A name with no replacement carries the
245
+ * generic fix.
246
+ */
247
+ export const HOST_GLOBAL_HINTS = Object.freeze({
248
+ Math: "Use `min`, `max`, `abs`, `floor`, `ceil`, `round`, `random()` and `randomInt(n)`.",
249
+ JSON: "Use `json.parse(text)` and `json.stringify(value)`.",
250
+ Object: "Use `keys`, `values`, `entries`, `has` and `merge`.",
251
+ Array: "Write an array literal, or `range(n)`; `xs.length` and the array methods are available.",
252
+ Number: "Use `parseNumber(text)`; arithmetic needs no conversion.",
253
+ String: "Use a template literal: `${value}`.",
254
+ Boolean: "Use `!!value`, or compare explicitly.",
255
+ parseInt: "Use `floor(parseNumber(text))`.",
256
+ parseFloat: "Use `parseNumber(text)`.",
257
+ isNaN: "Use `parseNumber(text) !== parseNumber(text)`; a NaN cannot cross an effect boundary anyway.",
258
+ isFinite: "Check the input before parsing it; an infinite number cannot cross an effect boundary.",
259
+ Infinity: "There is no infinity here: it has no canonical form and cannot cross an effect boundary.",
260
+ NaN: "There is no NaN value to name here: it has no canonical form and cannot cross an effect boundary.",
261
+ Date: "Use `now()`, which reads the run clock, and `duration(text)` for spans.",
262
+ Map: "Use a record: `{}` with `has`, `keys` and `entries`.",
263
+ Set: "Use an array with `unique`, `contains` and `filter`.",
264
+ Error: "Throw a record: `throw { code: \"my-error\", message: \"...\" }`.",
265
+ console: "Use `log(...values)`.",
266
+ setTimeout: "Use `sleep(duration)`.",
267
+ setInterval: "Use a loop with `sleep(duration)` inside it.",
268
+ });
235
269
  /** Host globals a program might reach for out of habit, each rejected by name (L2012). */
236
270
  export const FORBIDDEN_GLOBALS = new Set([
237
- "globalThis", "global", "window", "self", "process", "console", "fetch", "Date", "Math",
238
- "RegExp", "Object", "Reflect", "Proxy", "Symbol", "WeakMap", "WeakSet", "Function",
239
- "setTimeout", "setInterval", "setImmediate", "queueMicrotask", "require", "module",
271
+ ...Object.keys(HOST_GLOBAL_HINTS),
272
+ "globalThis", "global", "window", "self", "process", "fetch",
273
+ "RegExp", "Reflect", "Proxy", "Symbol", "WeakMap", "WeakSet", "WeakRef", "Function",
274
+ "setImmediate", "queueMicrotask", "require", "module",
240
275
  "exports", "__dirname", "__filename", "Buffer", "crypto", "performance", "structuredClone",
276
+ "eval", "arguments", "BigInt", "Intl", "Atomics", "SharedArrayBuffer", "ArrayBuffer",
277
+ "DataView", "TextEncoder", "TextDecoder", "URL", "URLSearchParams", "AbortController",
278
+ "encodeURIComponent", "decodeURIComponent", "encodeURI", "decodeURI", "escape", "unescape",
279
+ "Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array",
280
+ "Uint32Array", "Float32Array", "Float64Array", "BigInt64Array", "BigUint64Array",
241
281
  ]);
242
282
  /** The Promise API, rejected separately so its error can point at the right replacement (L2011). */
243
283
  export const PROMISE_NAMES = new Set(["Promise"]);
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}
package/dist/sim.d.ts CHANGED
@@ -52,6 +52,14 @@ interface Consumption {
52
52
  * Every effect resolves from the script or fails loudly. Sleeps are instant and advance the
53
53
  * virtual clock by the duration the program asked for, so a program that waits four hours is
54
54
  * tested in microseconds without pretending the wait did not happen.
55
+ *
56
+ * ONE clock, advanced in ask order — deliberately, and worth saying here because this file is
57
+ * where a reader would conclude otherwise: concurrent branches do NOT get independent virtual
58
+ * time. Two racing sleeps advance the same clock as their requests arrive, so under simulation a
59
+ * race is decided by ask order (then declaration order), not by which duration is shorter. The
60
+ * run clocks (`RunClock`, per branch) sit above this and stay per-branch; it is the TIMEBASE the
61
+ * simulator feeds them that is shared. A live handler with real waiting behaves differently, and
62
+ * `scopes.smoke` section 1b is the cell that pins the difference.
55
63
  */
56
64
  export declare class SimHandler implements EffectHandler {
57
65
  readonly script: SimScript;
@@ -82,7 +90,7 @@ export declare class SimHandler implements EffectHandler {
82
90
  * the disposition would bake it into the record exactly as a production handler would.
83
91
  */
84
92
  checkpoint(_req: CheckpointRequest, ctx: EffectContext): Promise<CheckpointRaw>;
85
- /** Instant, and honest: the clock moves by exactly what the program asked to wait. */
93
+ /** Instant: the SHARED virtual clock moves by what the program asked to wait (see the class note). */
86
94
  sleep(req: SleepRequest, ctx: EffectContext): Promise<null>;
87
95
  wait(req: WaitRequest, ctx: EffectContext): Promise<unknown | null>;
88
96
  notify(_req: NotifyRequest, ctx: EffectContext): Promise<null>;
package/dist/sim.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sim.d.ts","sourceRoot":"","sources":["../src/sim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim.d.ts","sourceRoot":"","sources":["../src/sim.ts"],"names":[],"mappings":"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"}
package/dist/sim.js CHANGED
@@ -29,6 +29,14 @@ export class SimUnscriptedError extends Error {
29
29
  * Every effect resolves from the script or fails loudly. Sleeps are instant and advance the
30
30
  * virtual clock by the duration the program asked for, so a program that waits four hours is
31
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.
32
40
  */
33
41
  export class SimHandler {
34
42
  script;
@@ -134,7 +142,7 @@ export class SimHandler {
134
142
  at: this.virtualNow,
135
143
  };
136
144
  }
137
- /** Instant, and honest: the clock moves by exactly what the program asked to wait. */
145
+ /** Instant: the SHARED virtual clock moves by what the program asked to wait (see the class note). */
138
146
  async sleep(req, ctx) {
139
147
  this.checkFault(ctx);
140
148
  this.advance(parseDuration(req.duration));
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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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * The syntax table: every node type acorn can produce, sorted into the sets the language is made of.
3
+ *
4
+ * ONE TABLE, READ BY BOTH HALVES. The validator admits exactly {@link ADMITTED_NODES} and
5
+ * {@link STRUCTURAL_NODES}, refuses each row of {@link FORBIDDEN_NODES} with its own code, and refuses
6
+ * everything else with L1029. The interpreter executes exactly the admitted set. `surface.smoke`
7
+ * holds the two halves to this file: every admitted node type is executed by a program, every
8
+ * `case` label in the interpreter's node switches is on this table, and every node type acorn knows
9
+ * lands in exactly one set. Before this table existed the two halves were two hand-kept lists, and
10
+ * `x++`, `?.`, rest parameters and `**` were admitted by one and refused by the other.
11
+ */
12
+ import type { LangErrorCode } from "./errors.js";
13
+ /** Node types the interpreter executes. A validated program is made of these and nothing else. */
14
+ export declare const ADMITTED_NODES: ReadonlySet<string>;
15
+ /**
16
+ * Node types that only occur INSIDE an admitted node and are executed as part of it: a `Property`
17
+ * inside an object literal, a `SwitchCase` inside a `switch`, a pattern inside a declaration.
18
+ */
19
+ export declare const STRUCTURAL_NODES: ReadonlySet<string>;
20
+ /** Node types rejected outright, with the code and the repair to suggest. */
21
+ export declare const FORBIDDEN_NODES: Readonly<Record<string, {
22
+ readonly code: LangErrorCode;
23
+ readonly cause: string;
24
+ readonly fix: string;
25
+ }>>;
26
+ /** Node types that occur only inside a forbidden node and are reported through their parent's row. */
27
+ export declare const FORBIDDEN_CHILDREN: readonly string[];
28
+ /**
29
+ * Every node type acorn 8 emits for `ecmaVersion: 2023, sourceType: "module"`, whether or not it
30
+ * is in the language. `surface.smoke` asserts each one lands in exactly one of the sets above, so a
31
+ * node type acorn adds or one this file forgets is a red suite rather than a runtime surprise.
32
+ */
33
+ export declare const KNOWN_NODES: readonly string[];
34
+ //# sourceMappingURL=syntax.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../src/syntax.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,kGAAkG;AAClG,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAoC7C,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAW/C,CAAC;AAEH,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,QAAQ,CACpC,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAuF9F,CAAC;AAEH,sGAAsG;AACtG,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAW9C,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAKvC,CAAC"}