@invinite-org/chartlang-runtime 1.0.2 → 1.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/README.md +9 -0
  3. package/dist/createScriptRunner.d.ts +55 -4
  4. package/dist/createScriptRunner.d.ts.map +1 -1
  5. package/dist/createScriptRunner.js +103 -35
  6. package/dist/createScriptRunner.js.map +1 -1
  7. package/dist/dep/DepOutputStore.d.ts +92 -0
  8. package/dist/dep/DepOutputStore.d.ts.map +1 -0
  9. package/dist/dep/DepOutputStore.js +0 -0
  10. package/dist/dep/DepOutputStore.js.map +1 -0
  11. package/dist/dep/DepRunner.d.ts +146 -0
  12. package/dist/dep/DepRunner.d.ts.map +1 -0
  13. package/dist/dep/DepRunner.js +243 -0
  14. package/dist/dep/DepRunner.js.map +1 -0
  15. package/dist/dep/depOutput.d.ts +50 -0
  16. package/dist/dep/depOutput.d.ts.map +1 -0
  17. package/dist/dep/depOutput.js +92 -0
  18. package/dist/dep/depOutput.js.map +1 -0
  19. package/dist/dep/emissionFilter.d.ts +70 -0
  20. package/dist/dep/emissionFilter.d.ts.map +1 -0
  21. package/dist/dep/emissionFilter.js +105 -0
  22. package/dist/dep/emissionFilter.js.map +1 -0
  23. package/dist/dep/index.d.ts +8 -0
  24. package/dist/dep/index.d.ts.map +1 -0
  25. package/dist/dep/index.js +7 -0
  26. package/dist/dep/index.js.map +1 -0
  27. package/dist/emit/applyPlotOverride.d.ts +24 -0
  28. package/dist/emit/applyPlotOverride.d.ts.map +1 -0
  29. package/dist/emit/applyPlotOverride.js +48 -0
  30. package/dist/emit/applyPlotOverride.js.map +1 -0
  31. package/dist/emit/hline.d.ts +6 -4
  32. package/dist/emit/hline.d.ts.map +1 -1
  33. package/dist/emit/hline.js +5 -2
  34. package/dist/emit/hline.js.map +1 -1
  35. package/dist/emit/index.d.ts +2 -1
  36. package/dist/emit/index.d.ts.map +1 -1
  37. package/dist/emit/index.js +2 -1
  38. package/dist/emit/index.js.map +1 -1
  39. package/dist/emit/paneResolver.d.ts +52 -11
  40. package/dist/emit/paneResolver.d.ts.map +1 -1
  41. package/dist/emit/paneResolver.js +69 -26
  42. package/dist/emit/paneResolver.js.map +1 -1
  43. package/dist/emit/plot.d.ts.map +1 -1
  44. package/dist/emit/plot.js +2 -1
  45. package/dist/emit/plot.js.map +1 -1
  46. package/dist/execution/dispose.d.ts.map +1 -1
  47. package/dist/execution/dispose.js +7 -0
  48. package/dist/execution/dispose.js.map +1 -1
  49. package/dist/execution/onBarClose.d.ts +9 -13
  50. package/dist/execution/onBarClose.d.ts.map +1 -1
  51. package/dist/execution/onBarClose.js +28 -59
  52. package/dist/execution/onBarClose.js.map +1 -1
  53. package/dist/execution/onBarTick.d.ts +4 -10
  54. package/dist/execution/onBarTick.d.ts.map +1 -1
  55. package/dist/execution/onBarTick.js +24 -57
  56. package/dist/execution/onBarTick.js.map +1 -1
  57. package/dist/execution/runComputeStep.d.ts +68 -0
  58. package/dist/execution/runComputeStep.d.ts.map +1 -0
  59. package/dist/execution/runComputeStep.js +96 -0
  60. package/dist/execution/runComputeStep.js.map +1 -0
  61. package/dist/index.d.ts +3 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +2 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/internal.d.ts +12 -0
  66. package/dist/internal.d.ts.map +1 -0
  67. package/dist/internal.js +14 -0
  68. package/dist/internal.js.map +1 -0
  69. package/dist/persistentStateStore.runtime.d.ts +18 -4
  70. package/dist/persistentStateStore.runtime.d.ts.map +1 -1
  71. package/dist/persistentStateStore.runtime.js +111 -18
  72. package/dist/persistentStateStore.runtime.js.map +1 -1
  73. package/dist/persistentStateStore.validate.d.ts +11 -1
  74. package/dist/persistentStateStore.validate.d.ts.map +1 -1
  75. package/dist/persistentStateStore.validate.js +32 -3
  76. package/dist/persistentStateStore.validate.js.map +1 -1
  77. package/dist/runtimeContext.d.ts +62 -4
  78. package/dist/runtimeContext.d.ts.map +1 -1
  79. package/dist/runtimeContext.js.map +1 -1
  80. package/dist/state/stateNamespace.d.ts.map +1 -1
  81. package/dist/state/stateNamespace.js +13 -2
  82. package/dist/state/stateNamespace.js.map +1 -1
  83. package/dist/stateStore.d.ts +6 -3
  84. package/dist/stateStore.d.ts.map +1 -1
  85. package/dist/stateStore.js.map +1 -1
  86. package/package.json +7 -3
@@ -29,10 +29,44 @@ function captureStreams(state) {
29
29
  }
30
30
  return Object.freeze(streams);
31
31
  }
32
+ function primarySectionSlots(state) {
33
+ return Object.freeze({
34
+ ...serialiseStateSlots(state.runtimeContext),
35
+ ...serialiseTaSlots(state.mainStream),
36
+ });
37
+ }
38
+ function runnerSection(ctx) {
39
+ return Object.freeze({
40
+ slots: Object.freeze({ ...serialiseStateSlots(ctx) }),
41
+ });
42
+ }
43
+ function captureSiblings(state) {
44
+ if (state.siblingRunners.length === 0)
45
+ return undefined;
46
+ const out = {};
47
+ for (const sibling of state.siblingRunners) {
48
+ out[sibling.exportName] = runnerSection(sibling.state.runtimeContext);
49
+ }
50
+ return Object.freeze(out);
51
+ }
52
+ function captureDependencies(state) {
53
+ if (state.depRunners.length === 0)
54
+ return undefined;
55
+ const out = {};
56
+ for (const dep of state.depRunners) {
57
+ out[dep.localId] = runnerSection(dep.state.runtimeContext);
58
+ }
59
+ return Object.freeze(out);
60
+ }
32
61
  /**
33
- * Capture the runner's current stream and state-slot snapshot.
62
+ * Capture the runner's current stream + per-runner state-slot snapshot.
34
63
  *
35
- * @since 0.5
64
+ * Returns the structured shape carrying `primary.slots`, optional
65
+ * `siblings[exportName].slots`, and optional `dependencies[localId].slots`.
66
+ * TA slots live in `primary.slots` because the bundle's deps and siblings
67
+ * share the primary's `mainStream` (Task-4 invariant).
68
+ *
69
+ * @since 0.5 — widened to per-runner sections in 0.7.
36
70
  * @internal
37
71
  * @example
38
72
  * // const snapshot = captureStateSnapshot(state, Date.now());
@@ -41,16 +75,16 @@ function captureStreams(state) {
41
75
  */
42
76
  export function captureStateSnapshot(state, savedAt) {
43
77
  const streams = captureStreams(state);
44
- const slots = {
45
- ...serialiseStateSlots(state.runtimeContext),
46
- ...serialiseTaSlots(state.mainStream),
47
- };
78
+ const siblings = captureSiblings(state);
79
+ const dependencies = captureDependencies(state);
48
80
  const candidate = {
49
81
  lastBarTime: state.mainStream.bar.time,
50
82
  streams,
51
- slots: Object.freeze(slots),
52
83
  savedAt,
53
84
  snapshotVersion: 1,
85
+ primary: { slots: primarySectionSlots(state) },
86
+ ...(siblings === undefined ? {} : { siblings }),
87
+ ...(dependencies === undefined ? {} : { dependencies }),
54
88
  };
55
89
  if (!validateSnapshot(candidate))
56
90
  return null;
@@ -67,10 +101,60 @@ function resolveMainStreamSnapshot(snapshot, mainInterval) {
67
101
  const fallback = firstStreamKey(snapshot);
68
102
  return fallback === null ? undefined : snapshot.streams[fallback];
69
103
  }
104
+ function nonTaSlots(slots) {
105
+ const out = {};
106
+ for (const [slotKey, value] of Object.entries(slots)) {
107
+ if (!isTaSlotSnapshotKey(slotKey)) {
108
+ out[slotKey] = value;
109
+ }
110
+ }
111
+ return out;
112
+ }
113
+ function pushMalformedSection(state, message) {
114
+ pushDiagnostic(state.emissions, {
115
+ kind: "diagnostic",
116
+ severity: "warning",
117
+ code: "state-snapshot-malformed",
118
+ message,
119
+ slotId: null,
120
+ bar: state.barIndex,
121
+ });
122
+ }
123
+ function restoreSiblingSections(state, siblings) {
124
+ const lookup = new Map(state.siblingRunners.map((sib) => [sib.exportName, sib]));
125
+ for (const [exportName, section] of Object.entries(siblings)) {
126
+ const sibling = lookup.get(exportName);
127
+ if (sibling === undefined) {
128
+ pushMalformedSection(state, `persistent state snapshot referenced unknown sibling "${exportName}"`);
129
+ continue;
130
+ }
131
+ restoreStateSlots(sibling.state.runtimeContext, section.slots);
132
+ }
133
+ }
134
+ function restoreDependencySections(state, dependencies) {
135
+ const lookup = new Map(state.depRunners.map((dep) => [dep.localId, dep]));
136
+ for (const [localId, section] of Object.entries(dependencies)) {
137
+ const dep = lookup.get(localId);
138
+ if (dep === undefined) {
139
+ pushMalformedSection(state, `persistent state snapshot referenced unknown dependency "${localId}"`);
140
+ continue;
141
+ }
142
+ restoreStateSlots(dep.state.runtimeContext, section.slots);
143
+ }
144
+ }
70
145
  /**
71
- * Restore a validated snapshot into the runner's stream and slot store.
146
+ * Restore a validated snapshot into the runner's stream + slot stores.
72
147
  *
73
- * @since 0.5
148
+ * Walks every per-runner section: `primary.slots` rehydrates the
149
+ * primary's `state.*` slots (and TA slots on the shared mainStream);
150
+ * `siblings[exportName].slots` and `dependencies[localId].slots`
151
+ * rehydrate each matching sub-runner. Snapshot sections whose id is not
152
+ * declared by the current bundle are skipped with a
153
+ * `state-snapshot-malformed` diagnostic.
154
+ *
155
+ * Legacy flat-shape snapshots (pre-0.7) restore into the primary only.
156
+ *
157
+ * @since 0.5 — widened to per-runner sections in 0.7.
74
158
  * @internal
75
159
  * @example
76
160
  * // restoreStateSnapshot(state, snapshot);
@@ -89,16 +173,25 @@ export function restoreStateSnapshot(state, snapshot) {
89
173
  secondary.restoreFromSnapshot(secondarySnapshot);
90
174
  }
91
175
  }
92
- restoreTaSlots(state.mainStream, snapshot.slots);
93
- // Non-TA slots: everything not under the ta: namespace persists as
94
- // generic state.* slot data.
95
- const stateSlots = {};
96
- for (const [slotKey, value] of Object.entries(snapshot.slots)) {
97
- if (!isTaSlotSnapshotKey(slotKey)) {
98
- stateSlots[slotKey] = value;
99
- }
176
+ const primarySlots = primarySlotsOf(snapshot);
177
+ restoreTaSlots(state.mainStream, primarySlots);
178
+ restoreStateSlots(state.runtimeContext, nonTaSlots(primarySlots));
179
+ if (snapshot.siblings !== undefined) {
180
+ restoreSiblingSections(state, snapshot.siblings);
181
+ }
182
+ if (snapshot.dependencies !== undefined) {
183
+ restoreDependencySections(state, snapshot.dependencies);
100
184
  }
101
- restoreStateSlots(state.runtimeContext, stateSlots);
185
+ }
186
+ const EMPTY_SLOTS = Object.freeze({});
187
+ function primarySlotsOf(snapshot) {
188
+ const view = snapshot;
189
+ if (view.primary !== undefined)
190
+ return view.primary.slots;
191
+ /* c8 ignore next 2 — validateSnapshot guarantees one of primary/slots is present. */
192
+ if (view.slots === undefined)
193
+ return EMPTY_SLOTS;
194
+ return view.slots;
102
195
  }
103
196
  /**
104
197
  * Save one snapshot and convert malformed/save failures into diagnostics.
@@ -1 +1 @@
1
- {"version":3,"file":"persistentStateStore.runtime.js","sourceRoot":"","sources":["../src/persistentStateStore.runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistentStateStore.runtime.js","sourceRoot":"","sources":["../src/persistentStateStore.runtime.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,17 @@ import type { StateSnapshot } from "@invinite-org/chartlang-core";
2
2
  /**
3
3
  * Validate a PLAN §6.9 persistent state snapshot before restore/save.
4
4
  *
5
- * @since 0.5
5
+ * Accepts two shapes:
6
+ *
7
+ * - **Legacy flat shape** (pre-0.7): `slots: Record<string, JsonValue>`
8
+ * carries every primary-runner slot — both `state.*` and `ta.*`. Loaded
9
+ * into the primary runner; dep / sibling sections default to absent.
10
+ * - **Structured shape** (0.7+): `primary.slots` is required.
11
+ * `siblings[exportName].slots` and `dependencies[localId].slots`
12
+ * are optional; each section is independently restored into its
13
+ * matching runner.
14
+ *
15
+ * @since 0.5 — widened in 0.7 to accept structured per-runner sections.
6
16
  * @internal
7
17
  * @stable
8
18
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"persistentStateStore.validate.d.ts","sourceRoot":"","sources":["../src/persistentStateStore.validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,aAAa,EAAkB,MAAM,8BAA8B,CAAC;AAsC7F;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAOrE"}
1
+ {"version":3,"file":"persistentStateStore.validate.d.ts","sourceRoot":"","sources":["../src/persistentStateStore.validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,aAAa,EAAkB,MAAM,8BAA8B,CAAC;AAkD7F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAiBrE"}
@@ -36,10 +36,29 @@ function isStreamSnapshot(value) {
36
36
  return false;
37
37
  return bufferKeys.every((key) => isBufferArray(buffers[key]));
38
38
  }
39
+ function isSlotsRecord(value) {
40
+ return isRecord(value) && Object.values(value).every((entry) => isJsonValue(entry));
41
+ }
42
+ function isRunnerSnapshot(value) {
43
+ return isRecord(value) && isSlotsRecord(value.slots);
44
+ }
45
+ function isRunnerSnapshotMap(value) {
46
+ return isRecord(value) && Object.values(value).every((entry) => isRunnerSnapshot(entry));
47
+ }
39
48
  /**
40
49
  * Validate a PLAN §6.9 persistent state snapshot before restore/save.
41
50
  *
42
- * @since 0.5
51
+ * Accepts two shapes:
52
+ *
53
+ * - **Legacy flat shape** (pre-0.7): `slots: Record<string, JsonValue>`
54
+ * carries every primary-runner slot — both `state.*` and `ta.*`. Loaded
55
+ * into the primary runner; dep / sibling sections default to absent.
56
+ * - **Structured shape** (0.7+): `primary.slots` is required.
57
+ * `siblings[exportName].slots` and `dependencies[localId].slots`
58
+ * are optional; each section is independently restored into its
59
+ * matching runner.
60
+ *
61
+ * @since 0.5 — widened in 0.7 to accept structured per-runner sections.
43
62
  * @internal
44
63
  * @stable
45
64
  * @example
@@ -54,10 +73,20 @@ export function validateSnapshot(snap) {
54
73
  return false;
55
74
  if (!isSnapshotNumber(snap.lastBarTime) || !isSnapshotNumber(snap.savedAt))
56
75
  return false;
57
- if (!isRecord(snap.streams) || !isRecord(snap.slots))
76
+ if (!isRecord(snap.streams))
58
77
  return false;
59
78
  if (!Object.values(snap.streams).every((stream) => isStreamSnapshot(stream)))
60
79
  return false;
61
- return Object.values(snap.slots).every((slot) => isJsonValue(slot));
80
+ if ("primary" in snap) {
81
+ if (!isRunnerSnapshot(snap.primary))
82
+ return false;
83
+ if (snap.siblings !== undefined && !isRunnerSnapshotMap(snap.siblings))
84
+ return false;
85
+ if (snap.dependencies !== undefined && !isRunnerSnapshotMap(snap.dependencies)) {
86
+ return false;
87
+ }
88
+ return true;
89
+ }
90
+ return isSlotsRecord(snap.slots);
62
91
  }
63
92
  //# sourceMappingURL=persistentStateStore.validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistentStateStore.validate.js","sourceRoot":"","sources":["../src/persistentStateStore.validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistentStateStore.validate.js","sourceRoot":"","sources":["../src/persistentStateStore.validate.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import type { AlertConditionEmission, AlertEmission, Capabilities, DrawingEmission, LogEmission, PlotEmission, RuntimeDiagnostic } from "@invinite-org/chartlang-adapter-kit";
1
+ import type { AlertConditionEmission, AlertEmission, Capabilities, DrawingEmission, LogEmission, PlotEmission, PlotOverride, RuntimeDiagnostic } from "@invinite-org/chartlang-adapter-kit";
2
2
  import type { AlertConditionDefinition, Bar, DrawingBucket, DrawingCounts, DrawingKind, DrawingState, SecurityBar, Series } from "@invinite-org/chartlang-core";
3
+ import type { DepOutputStore } from "./dep/DepOutputStore.js";
3
4
  import type { PersistentStateStore } from "./persistentStateStore.js";
4
5
  import type { StateSlot } from "./state/stateSlot.js";
5
6
  import type { StateStore } from "./stateStore.js";
@@ -131,9 +132,10 @@ export type RuntimeContext = {
131
132
  readonly scriptMaxDrawings: DrawingCounts | null;
132
133
  /**
133
134
  * Runtime `state.*` / `state.tick.*` slot store keyed by
134
- * `${slotId}:state`. Non-tick slots keep committed/tentative values;
135
- * tick slots commit writes immediately. Cleared on `dispose` after
136
- * flushing snapshots to `stateStore`. @since 0.4
135
+ * `${slotIdPrefix ?? ""}${slotId}:state`. Non-tick slots keep
136
+ * committed/tentative values; tick slots commit writes immediately.
137
+ * Cleared on `dispose` after flushing snapshots to `stateStore`.
138
+ * @since 0.4
137
139
  */
138
140
  readonly stateSlots: Map<string, StateSlot<unknown>>;
139
141
  /**
@@ -202,6 +204,31 @@ export type RuntimeContext = {
202
204
  * at mount and reused by every compute step. @since 0.4
203
205
  */
204
206
  resolvedInputs: Readonly<Record<string, unknown>>;
207
+ /**
208
+ * Mount-time script pane default. The runner sets it from
209
+ * `manifest.overlay`:
210
+ * - `overlay` absent / `true` → `"overlay"`.
211
+ * - `overlay === false` → `"script:<sanitised(manifest.name)>"`.
212
+ * `resolvePane` reads this value when a `plot()` / `hline()` call
213
+ * has no explicit `pane` opt.
214
+ * @since 0.2
215
+ */
216
+ readonly defaultPane: string;
217
+ /**
218
+ * Stable non-overlay pane key for this script. Explicit
219
+ * `pane: "new"` resolves here even when `defaultPane === "overlay"`
220
+ * so every `"new"` plot in a script joins one script-owned subpane.
221
+ * @since 0.2
222
+ */
223
+ readonly scriptPane: string;
224
+ /**
225
+ * Host-supplied per-slot presentation overrides, keyed by
226
+ * `PlotEmission.slotId`. Applied at emit time by `applyPlotOverride`.
227
+ * Mutable — `setPlotOverrides` swaps it live (presentation-only, so
228
+ * it does not break the frozen-input determinism guarantee). Entries
229
+ * themselves are frozen. @since 0.8
230
+ */
231
+ plotOverrides: Readonly<Record<string, PlotOverride>>;
205
232
  /**
206
233
  * Runtime diagnostic dedupe for mount-time input override failures,
207
234
  * keyed by manifest input key. Cleared on `dispose`. @since 0.4
@@ -213,6 +240,37 @@ export type RuntimeContext = {
213
240
  * @since 0.4
214
241
  */
215
242
  readonly views: RuntimeViews;
243
+ /**
244
+ * Prefix prepended when emissions from this context flow into the
245
+ * parent runner's queues, and mirrored into every `stateSlots` /
246
+ * `StateStore` key written by `state.*` / `state.tick.*` so each
247
+ * runner's persisted state is isolated. `"dep:<localId>/"` for
248
+ * private dep runners, `"export:<exportName>/"` for sibling
249
+ * runners, and `""` (or absent) for primary single-script and
250
+ * bundle-primary runners.
251
+ *
252
+ * @since 0.7
253
+ */
254
+ slotIdPrefix?: string;
255
+ /**
256
+ * `true` when this context belongs to a private dep runner — its
257
+ * emissions are dropped (or captured into the dep output store) by
258
+ * `applyDepEmissionPolicy`. `false` / absent for primary and
259
+ * sibling runners.
260
+ *
261
+ * @since 0.7
262
+ */
263
+ isDep?: boolean;
264
+ /**
265
+ * Per-bar titled-output buffer shared by the primary and every
266
+ * sibling of a `CompiledScriptBundle`. Populated by
267
+ * `applyDepEmissionPolicy` after each dep/sibling's compute; read
268
+ * by `__chartlang_depOutput` during the consumer's compute. `null`
269
+ * / absent for single-script runners with no deps.
270
+ *
271
+ * @since 0.7
272
+ */
273
+ depOutputStore?: DepOutputStore | null;
216
274
  };
217
275
  /**
218
276
  * Process-wide context slot. Task 6's `createScriptRunner` mutates
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeContext.d.ts","sourceRoot":"","sources":["../src/runtimeContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtimeContext.d.ts","sourceRoot":"","sources":["../src/runtimeContext.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeContext.js","sourceRoot":"","sources":["../src/runtimeContext.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAgP/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAuC;IACtE,OAAO,EAAE,IAAI;CAChB,CAAC"}
1
+ {"version":3,"file":"runtimeContext.js","sourceRoot":"","sources":["../src/runtimeContext.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AA2S/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAuC;IACtE,OAAO,EAAE,IAAI;CAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stateNamespace.d.ts","sourceRoot":"","sources":["../../src/state/stateNamespace.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,8BAA8B,CAAC;AA0ChF;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,CAwBpD"}
1
+ {"version":3,"file":"stateNamespace.d.ts","sourceRoot":"","sources":["../../src/state/stateNamespace.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAsDhF;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,CAwBpD"}
@@ -2,7 +2,18 @@
2
2
  // See the LICENSE file in the repo root for full license text.
3
3
  import { ACTIVE_RUNTIME_CONTEXT } from "../runtimeContext.js";
4
4
  import { asMutableSlot, StateSlot } from "./stateSlot.js";
5
- const stateKey = (slotId) => `${slotId}:state`;
5
+ /**
6
+ * Compose the runtime's `state.*` slot key from the compiler-injected
7
+ * `slotId` plus the active context's `slotIdPrefix`. The primary runner
8
+ * has an absent / empty prefix — its keys stay byte-identical to the
9
+ * Phase-1 `${slotId}:state` shape so single-script snapshots load
10
+ * unchanged. `DepRunner` contexts carry `dep:<localId>/`,
11
+ * `SiblingRunner` contexts carry `export:<exportName>/`.
12
+ *
13
+ * @since 0.7
14
+ * @internal
15
+ */
16
+ const stateKey = (ctx, slotId) => `${ctx.slotIdPrefix ?? ""}${slotId}:state`;
6
17
  function getCtx(name) {
7
18
  const ctx = ACTIVE_RUNTIME_CONTEXT.current;
8
19
  if (ctx === null) {
@@ -12,7 +23,7 @@ function getCtx(name) {
12
23
  }
13
24
  function getOrAllocate(name, slotId, init, tickPersistent) {
14
25
  const ctx = getCtx(name);
15
- const key = stateKey(slotId);
26
+ const key = stateKey(ctx, slotId);
16
27
  const existing = ctx.stateSlots.get(key);
17
28
  if (existing !== undefined) {
18
29
  return asMutableSlot(existing);
@@ -1 +1 @@
1
- {"version":3,"file":"stateNamespace.js","sourceRoot":"","sources":["../../src/state/stateNamespace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stateNamespace.js","sourceRoot":"","sources":["../../src/state/stateNamespace.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  /**
2
- * Per-script slot store the runtime hands stateful primitives. Phase 1
2
+ * Per-runner slot store the runtime hands stateful primitives. Phase 1
3
3
  * ships only the in-memory default — `inMemoryStateStore()` — keyed
4
- * by the compiler-assigned slot id from PLAN.md §5.5. Phase 5 layers a
5
- * `PersistentStateStore` sub-interface on top with snapshot
4
+ * by `${slotIdPrefix ?? ""}${slotId}:state` where the slot id is the
5
+ * compiler-assigned id from PLAN.md §5.5 and the prefix is the active
6
+ * `RuntimeContext.slotIdPrefix` (`""` for primary, `dep:<localId>/`
7
+ * for deps, `export:<exportName>/` for siblings — see Task 5). Phase 5
8
+ * layers a `PersistentStateStore` sub-interface on top with snapshot
6
9
  * `load` / `save` / `clear` methods (see PLAN.md §6.9). Implementations
7
10
  * (IDB-backed for browsers, caller-supplied for servers) satisfy the
8
11
  * Phase-5 sub-interface; the Phase-1 surface stays stable and
@@ -1 +1 @@
1
- {"version":3,"file":"stateStore.d.ts","sourceRoot":"","sources":["../src/stateStore.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IACtC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACvC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,IAAI,UAAU,CAgB/C"}
1
+ {"version":3,"file":"stateStore.d.ts","sourceRoot":"","sources":["../src/stateStore.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IACtC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACvC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,IAAI,UAAU,CAgB/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"stateStore.js","sourceRoot":"","sources":["../src/stateStore.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AA2B/D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB;IAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACzC,OAAO;QACH,GAAG,CAAI,EAAU;YACb,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAkB,CAAC;QAC1C,CAAC;QACD,GAAG,CAAI,EAAU,EAAE,KAAQ;YACvB,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,GAAG,CAAC,EAAU;YACV,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;QACD,KAAK;YACD,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"stateStore.js","sourceRoot":"","sources":["../src/stateStore.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AA8B/D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB;IAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACzC,OAAO;QACH,GAAG,CAAI,EAAU;YACb,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAkB,CAAC;QAC1C,CAAC;QACD,GAAG,CAAI,EAAU,EAAE,KAAQ;YACvB,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,GAAG,CAAC,EAAU;YACV,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;QACD,KAAK;YACD,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;KACJ,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@invinite-org/chartlang-runtime",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Execution engine, Series ring buffers, ta.* math primitives",
@@ -10,6 +10,10 @@
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",
12
12
  "import": "./dist/index.js"
13
+ },
14
+ "./internal": {
15
+ "types": "./dist/internal.d.ts",
16
+ "import": "./dist/internal.js"
13
17
  }
14
18
  },
15
19
  "files": [
@@ -19,8 +23,8 @@
19
23
  "LICENSE"
20
24
  ],
21
25
  "dependencies": {
22
- "@invinite-org/chartlang-adapter-kit": "^1.1.0",
23
- "@invinite-org/chartlang-core": "^1.0.1"
26
+ "@invinite-org/chartlang-adapter-kit": "^1.2.0",
27
+ "@invinite-org/chartlang-core": "^1.1.0"
24
28
  },
25
29
  "devDependencies": {
26
30
  "fast-check": "^3.20.0"