@fundamental-engine/core 0.9.1 → 0.9.3
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 +12 -11
- package/dist/agents/event-agent.d.ts.map +1 -1
- package/dist/agents/event-agent.js +13 -9
- package/dist/agents/event-agent.js.map +1 -1
- package/dist/config/forces.config.js +2 -2
- package/dist/config/forces.config.js.map +1 -1
- package/dist/conformance/run.d.ts +2 -2
- package/dist/conformance/run.d.ts.map +1 -1
- package/dist/conformance/run.js +30 -27
- package/dist/conformance/run.js.map +1 -1
- package/dist/conformance/types.d.ts +3 -0
- package/dist/conformance/types.d.ts.map +1 -1
- package/dist/contracts/guards.d.ts +3 -1
- package/dist/contracts/guards.d.ts.map +1 -1
- package/dist/contracts/guards.js.map +1 -1
- package/dist/contracts/passport.d.ts +6 -0
- package/dist/contracts/passport.d.ts.map +1 -1
- package/dist/contracts/passport.js +12 -3
- package/dist/contracts/passport.js.map +1 -1
- package/dist/core/accretion.d.ts +1 -1
- package/dist/core/accretion.d.ts.map +1 -1
- package/dist/core/accretion.js +1 -1
- package/dist/core/accretion.js.map +1 -1
- package/dist/core/events.d.ts +3 -3
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/events.js +1 -1
- package/dist/core/feedback-sink.d.ts +1 -1
- package/dist/core/feedback-sink.d.ts.map +1 -1
- package/dist/core/feedback-sink.js +1 -2
- package/dist/core/feedback-sink.js.map +1 -1
- package/dist/core/field-snapshot.d.ts +21 -0
- package/dist/core/field-snapshot.d.ts.map +1 -0
- package/dist/core/field-snapshot.js +0 -0
- package/dist/core/field-snapshot.js.map +1 -0
- package/dist/core/field.d.ts.map +1 -1
- package/dist/core/field.js +1006 -58
- package/dist/core/field.js.map +1 -1
- package/dist/core/frame-harness.d.ts +2 -2
- package/dist/core/frame-harness.d.ts.map +1 -1
- package/dist/core/frame-harness.js +2 -2
- package/dist/core/frame-harness.js.map +1 -1
- package/dist/core/geometry.d.ts +9 -0
- package/dist/core/geometry.d.ts.map +1 -1
- package/dist/core/geometry.js +16 -0
- package/dist/core/geometry.js.map +1 -1
- package/dist/core/governance.d.ts +20 -0
- package/dist/core/governance.d.ts.map +1 -0
- package/dist/core/governance.js +77 -0
- package/dist/core/governance.js.map +1 -0
- package/dist/core/host.d.ts +95 -21
- package/dist/core/host.d.ts.map +1 -1
- package/dist/core/host.js +53 -1
- package/dist/core/host.js.map +1 -1
- package/dist/core/integrator.d.ts +42 -1
- package/dist/core/integrator.d.ts.map +1 -1
- package/dist/core/integrator.js +229 -27
- package/dist/core/integrator.js.map +1 -1
- package/dist/core/lane-registry.d.ts +14 -0
- package/dist/core/lane-registry.d.ts.map +1 -0
- package/dist/core/lane-registry.js +64 -0
- package/dist/core/lane-registry.js.map +1 -0
- package/dist/core/projection-agent-json.d.ts +12 -0
- package/dist/core/projection-agent-json.d.ts.map +1 -0
- package/dist/core/projection-agent-json.js +37 -0
- package/dist/core/projection-agent-json.js.map +1 -0
- package/dist/core/query-lens.d.ts +6 -0
- package/dist/core/query-lens.d.ts.map +1 -0
- package/dist/core/query-lens.js +24 -0
- package/dist/core/query-lens.js.map +1 -0
- package/dist/core/reactions.d.ts +7 -0
- package/dist/core/reactions.d.ts.map +1 -1
- package/dist/core/reactions.js +7 -0
- package/dist/core/reactions.js.map +1 -1
- package/dist/core/render-modes.d.ts +64 -0
- package/dist/core/render-modes.d.ts.map +1 -1
- package/dist/core/render-modes.js +165 -0
- package/dist/core/render-modes.js.map +1 -1
- package/dist/core/scanner.d.ts +29 -3
- package/dist/core/scanner.d.ts.map +1 -1
- package/dist/core/scanner.js +46 -3
- package/dist/core/scanner.js.map +1 -1
- package/dist/core/spatial-hash.d.ts +8 -0
- package/dist/core/spatial-hash.d.ts.map +1 -1
- package/dist/core/spatial-hash.js +26 -3
- package/dist/core/spatial-hash.js.map +1 -1
- package/dist/core/types.d.ts +762 -8
- package/dist/core/types.d.ts.map +1 -1
- package/dist/diagnostics/probes.d.ts +11 -1
- package/dist/diagnostics/probes.d.ts.map +1 -1
- package/dist/diagnostics/probes.js +48 -8
- package/dist/diagnostics/probes.js.map +1 -1
- package/dist/forces/extended.d.ts.map +1 -1
- package/dist/forces/extended.js +8 -2
- package/dist/forces/extended.js.map +1 -1
- package/dist/forces/natural.d.ts.map +1 -1
- package/dist/forces/natural.js +11 -12
- package/dist/forces/natural.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/recipes/compile.d.ts.map +1 -1
- package/dist/recipes/compile.js +3 -1
- package/dist/recipes/compile.js.map +1 -1
- package/dist/recipes/schema.d.ts +1 -1
- package/dist/recipes/schema.d.ts.map +1 -1
- package/dist/recipes/schema.js +1 -0
- package/dist/recipes/schema.js.map +1 -1
- package/dist/record/record.d.ts +1 -1
- package/dist/record/record.d.ts.map +1 -1
- package/dist/semantic/layers.d.ts +16 -2
- package/dist/semantic/layers.d.ts.map +1 -1
- package/dist/semantic/layers.js +20 -3
- package/dist/semantic/layers.js.map +1 -1
- package/dist/semantic/materials.js +3 -3
- package/dist/semantic/materials.js.map +1 -1
- package/dist/semantic/states.js +1 -1
- package/dist/semantic/states.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/visual/visualization.d.ts.map +1 -1
- package/dist/visual/visualization.js +4 -0
- package/dist/visual/visualization.js.map +1 -1
- package/package.json +3 -2
package/dist/core/integrator.js
CHANGED
|
@@ -5,6 +5,28 @@
|
|
|
5
5
|
* then integrate and damp. Under first-class mass (§21.3) each additive body force is
|
|
6
6
|
* scaled by `1/m` as it applies, while velocity-replacing (`kinematic`) forces are left
|
|
7
7
|
* untouched. Reduced motion (`dt = 0`) freezes the sim (§18).
|
|
8
|
+
*
|
|
9
|
+
* INTEGRATION SCHEMES (`Env.integrator`): the default `'legacy'` is semi-implicit Euler
|
|
10
|
+
* (forces update v, then `x += v·dt`, then a per-frame decay); `'fixed'` keeps the same order
|
|
11
|
+
* but dt-scales the decays (doc 04 §Step 3). `'velocity-verlet'` (#659) is the opt-in
|
|
12
|
+
* second-order scheme, in the stored-acceleration form:
|
|
13
|
+
*
|
|
14
|
+
* x(t+dt) = x(t) + v(t)·dt + ½·a(t)·dt² (position full-step, BEFORE the force pass)
|
|
15
|
+
* a′ = Δv/dt from the force pass (forces evaluated at x(t+dt))
|
|
16
|
+
* v(t+dt) = v(t) + ½·(a(t) + a′)·dt (velocity half-step average)
|
|
17
|
+
*
|
|
18
|
+
* Approximations, deliberate and documented (physics caveat canon): (1) the engine's force model
|
|
19
|
+
* is impulse-based and velocity-dependent (drag-like forces read the CURRENT v), so a′ is taken
|
|
20
|
+
* as the pass's net Δv/dt rather than re-evaluating forces at the averaged velocity — the
|
|
21
|
+
* standard stored-acceleration treatment; (2) the per-step `FRICTION`/`HEAT_DECAY` decays stay
|
|
22
|
+
* outside the scheme (dt-scaled, like `'fixed'`), which alone makes it NON-symplectic — this
|
|
23
|
+
* buys positional accuracy, it does NOT make energy/momentum conserved (they are non-conserved
|
|
24
|
+
* by design; particle COUNT remains the invariant); (3) a *kinematic* (velocity-REPLACING)
|
|
25
|
+
* force — `jet`/`wall`/`lens`/`gate`/`warp` — is a discontinuity, not an acceleration: when one
|
|
26
|
+
* fires, the replaced velocity stands un-averaged and the stored acceleration resets, so the
|
|
27
|
+
* next position step doesn't extrapolate across the break; (4) a pair force's equal-and-opposite
|
|
28
|
+
* leg on the NEIGHBOUR (`collide`/`link`) folds into that neighbour's own v(t) or Δv whenever
|
|
29
|
+
* its turn comes — same class of caveat the fixed-timestep note below already carries.
|
|
8
30
|
*/
|
|
9
31
|
import { accretionTarget } from "./formations.js";
|
|
10
32
|
import { waveYat, waveSlope, waveDistance } from "./currents.js";
|
|
@@ -38,31 +60,132 @@ function classified(b) {
|
|
|
38
60
|
* scaled identically so depth-enabled fields keep `a = F/m` on all three axes (a heavy particle
|
|
39
61
|
* pushed off-plane accelerates as little along z as it does in x/y).
|
|
40
62
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Apply one force to a particle AND, when `env.accum` is present, record its net per-force Δv into
|
|
65
|
+
* the accumulator (doc 04). The single canonical capture path: the integrator's hot loop, the
|
|
66
|
+
* diagnostics (`accumulateAt`/causality), and any Field-Query probe all run a force through here, so
|
|
67
|
+
* "what did this force contribute?" is computed in exactly one place. The velocity update is unchanged
|
|
68
|
+
* from the pre-accumulator engine — `accum` is a read-only inspection sink. `inv` is the mass factor
|
|
69
|
+
* (1 = unit mass); kinematic forces are left unscaled.
|
|
70
|
+
*/
|
|
71
|
+
export function applyAndRecord(f, b, p, env, inv = 1) {
|
|
46
72
|
const bvx = p.vx;
|
|
47
73
|
const bvy = p.vy;
|
|
48
74
|
const bvz = p.vz ?? 0;
|
|
75
|
+
const bvh = p.heat;
|
|
76
|
+
const bvs = p.spin ?? 0;
|
|
77
|
+
const bage = p.age;
|
|
49
78
|
f.apply(b, p, env);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
79
|
+
if (!(inv === 1 || f.kinematic)) {
|
|
80
|
+
p.vx = bvx + (p.vx - bvx) * inv;
|
|
81
|
+
p.vy = bvy + (p.vy - bvy) * inv;
|
|
82
|
+
if (p.vz !== undefined)
|
|
83
|
+
p.vz = bvz + (p.vz - bvz) * inv;
|
|
84
|
+
}
|
|
85
|
+
// velocity-Verlet (#659): mirror the fast path's discontinuity mark on the capture path too.
|
|
86
|
+
if (f.kinematic && env.integrator === 'velocity-verlet' && (p.vx !== bvx || p.vy !== bvy || (p.vz ?? 0) !== bvz))
|
|
87
|
+
env.kinTouch = true;
|
|
88
|
+
const acc = env.accum;
|
|
89
|
+
if (acc !== undefined) {
|
|
90
|
+
const dvx = p.vx - bvx;
|
|
91
|
+
const dvy = p.vy - bvy;
|
|
92
|
+
const dvz = (p.vz ?? 0) - bvz;
|
|
93
|
+
if (dvx !== 0 || dvy !== 0 || dvz !== 0) {
|
|
94
|
+
acc.linear.x += dvx;
|
|
95
|
+
acc.linear.y += dvy;
|
|
96
|
+
acc.linear.z += dvz;
|
|
97
|
+
acc.attribution.push({ force: f.token, channel: 'linear', contribution: { x: dvx, y: dvy, z: dvz } });
|
|
98
|
+
}
|
|
99
|
+
// thermal channel (doc 04 §Step 6): capture the per-force heat change too, so attribution answers
|
|
100
|
+
// "which force *heated* matter here", not only "which moved it". Capture-only — the heat mutation
|
|
101
|
+
// is the force's own; recording it changes nothing.
|
|
102
|
+
const dh = p.heat - bvh;
|
|
103
|
+
if (dh !== 0) {
|
|
104
|
+
acc.thermal = (acc.thermal ?? 0) + dh;
|
|
105
|
+
acc.attribution.push({ force: f.token, channel: 'thermal', contribution: dh });
|
|
106
|
+
}
|
|
107
|
+
// angular channel (doc 04 §Step 6): capture the per-force change in angular velocity (spin about
|
|
108
|
+
// the z axis). Like thermal, capture-only — a `torque` force writes `p.spin`; recording the delta
|
|
109
|
+
// changes nothing. The accumulator's angular lane is 3D; 2D spin lives in its z component.
|
|
110
|
+
const ds = (p.spin ?? 0) - bvs;
|
|
111
|
+
if (ds !== 0) {
|
|
112
|
+
const ang = (acc.angular ??= { x: 0, y: 0, z: 0 });
|
|
113
|
+
ang.z += ds;
|
|
114
|
+
acc.attribution.push({ force: f.token, channel: 'angular', contribution: ds });
|
|
115
|
+
}
|
|
116
|
+
// temporal channel (doc 04 §Step 6): capture a per-force change in `age` (frames-to-live) for MORTAL
|
|
117
|
+
// matter — "which force aged / extended this particle's life here". Δage lands in `temporal.decay`
|
|
118
|
+
// (life lost when negative). Only mortal particles carry `age`; immortal ones (age undefined) never
|
|
119
|
+
// engage the lane, so this is byte-identical for the conserved base field. Capture-only.
|
|
120
|
+
if (bage !== undefined && p.age !== undefined) {
|
|
121
|
+
const da = p.age - bage;
|
|
122
|
+
if (da !== 0) {
|
|
123
|
+
const tmp = (acc.temporal ??= {});
|
|
124
|
+
tmp.decay = (tmp.decay ?? 0) + da;
|
|
125
|
+
acc.attribution.push({ force: f.token, channel: 'temporal', contribution: da });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// semantic channel (doc 04 §Step 6): annotate the contribution with the body's conserved-attention
|
|
129
|
+
// multiplier in effect (`b.attn` scales this body's effective force strength — integrator §2.4). This
|
|
130
|
+
// is body-level metadata — "this force's influence here was attention-scaled to X" — not a particle
|
|
131
|
+
// delta. Only when attention is active (attn defined and ≠ 1), so the neutral field is byte-identical.
|
|
132
|
+
if (b.attn !== undefined && b.attn !== 1) {
|
|
133
|
+
(acc.semantic ??= {}).attention = b.attn;
|
|
134
|
+
acc.attribution.push({ force: f.token, channel: 'semantic', contribution: b.attn });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
56
137
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
138
|
+
function applyForce(f, b, p, env, inv) {
|
|
139
|
+
// NOTE (doc 04 §Step 3): the fixed-timestep integrator does NOT dt-scale force impulses here. The
|
|
140
|
+
// single-particle capture trick (rescale `p`'s Δv) is unsound for forces that also mutate a
|
|
141
|
+
// neighbour in the same pass — `collide`/`link` apply an equal-and-opposite impulse to `q`, which
|
|
142
|
+
// this path can't see, so scaling only `p` would break momentum conservation. Frame-rate-correct
|
|
143
|
+
// force impulses wait for the force-contract change, where every contribution (including a pair's
|
|
144
|
+
// `q` leg) flows through the accumulator. Fixed mode currently corrects only the per-step decays.
|
|
145
|
+
// Default hot path: byte-identical to the pre-accumulator engine (zero overhead — no capture).
|
|
146
|
+
if (env.accum === undefined) {
|
|
147
|
+
if (inv === 1 || f.kinematic) {
|
|
148
|
+
// velocity-Verlet (#659): a kinematic force that actually changes velocity marks the
|
|
149
|
+
// particle's pass as a discontinuity (env.kinTouch) — the half-step average is skipped.
|
|
150
|
+
// One boolean test on the default path; the capture only runs under the opt-in mode.
|
|
151
|
+
if (f.kinematic && env.integrator === 'velocity-verlet') {
|
|
152
|
+
const bvx = p.vx;
|
|
153
|
+
const bvy = p.vy;
|
|
154
|
+
const bvz = p.vz ?? 0;
|
|
155
|
+
f.apply(b, p, env);
|
|
156
|
+
if (p.vx !== bvx || p.vy !== bvy || (p.vz ?? 0) !== bvz)
|
|
157
|
+
env.kinTouch = true;
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
f.apply(b, p, env);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const bvx = p.vx;
|
|
164
|
+
const bvy = p.vy;
|
|
165
|
+
const bvz = p.vz ?? 0;
|
|
166
|
+
f.apply(b, p, env);
|
|
167
|
+
p.vx = bvx + (p.vx - bvx) * inv;
|
|
168
|
+
p.vy = bvy + (p.vy - bvy) * inv;
|
|
169
|
+
// only rescale z when the force actually engaged the lane — never materialize a spurious 0
|
|
170
|
+
// on a flat (z-less) particle.
|
|
171
|
+
if (p.vz !== undefined)
|
|
172
|
+
p.vz = bvz + (p.vz - bvz) * inv;
|
|
61
173
|
return;
|
|
62
|
-
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
174
|
+
}
|
|
175
|
+
// Attribution requested: delegate to the shared capture path.
|
|
176
|
+
applyAndRecord(f, b, p, env, inv);
|
|
177
|
+
}
|
|
178
|
+
/** A fresh, empty impulse accumulator (dimension-aware shape; only `linear` is populated today). */
|
|
179
|
+
export function makeAccumulator() {
|
|
180
|
+
return { linear: { x: 0, y: 0, z: 0 }, attribution: [] };
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Zero the per-frame density + thermodynamic accumulators on every body. Runs at the top of
|
|
184
|
+
* every step — including the frozen (`dt === 0`) path (#967) — so `b.count` never carries a
|
|
185
|
+
* stale value into `writeFeedback()`. The subsequent particle pass re-accumulates when the sim
|
|
186
|
+
* is live; when frozen, the counts stay at 0 and `--d` drains to the engagement-only baseline.
|
|
187
|
+
*/
|
|
188
|
+
function resetDensity(bodies) {
|
|
66
189
|
for (const b of bodies) {
|
|
67
190
|
b.count = 0;
|
|
68
191
|
// thermodynamic accumulators (workover v0.3 §"Metrics") share the density window/cadence.
|
|
@@ -76,6 +199,29 @@ export function step(input) {
|
|
|
76
199
|
th.sh = 0;
|
|
77
200
|
}
|
|
78
201
|
}
|
|
202
|
+
}
|
|
203
|
+
export function step(input) {
|
|
204
|
+
const { store, bodies, env, forces, conditions, waves, separation } = input;
|
|
205
|
+
const dt = env.dt;
|
|
206
|
+
if (dt === 0) {
|
|
207
|
+
// Motion is frozen (reduced-motion / maxMotionBudget 0): skip integration, but the
|
|
208
|
+
// density/thermo bookkeeping MUST still drain. `writeFeedback()` runs unconditionally
|
|
209
|
+
// every frame, easing `b.d` toward `feedbackTarget(b.count, b.on)`. If we returned before
|
|
210
|
+
// zeroing the counts, `b.count` would hold its last live value forever — `--d`/`--field-density`
|
|
211
|
+
// (and the font-weight channel) would report particle presence from a sim that is no longer
|
|
212
|
+
// running (#967). The doctrine is "motion freezes; the signals stay honest": engagement
|
|
213
|
+
// (`b.on`, dt-independent) still reads truthfully, so `b.d` eases to `feedbackTarget(0, b.on)`
|
|
214
|
+
// — the engagement-only baseline — instead of lying about frozen density.
|
|
215
|
+
resetDensity(bodies);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
// the opt-in second-order scheme (#659) — see the header doc for the math + approximations.
|
|
219
|
+
const verlet = env.integrator === 'velocity-verlet';
|
|
220
|
+
const { W, H, form } = env;
|
|
221
|
+
// expose the net structure field so field-following forces (`fieldflow`) can read the
|
|
222
|
+
// superposition of every body's field() — the same vector the streamlines view draws.
|
|
223
|
+
env.fieldAt = (x, y) => netField(bodies, forces, x, y);
|
|
224
|
+
resetDensity(bodies);
|
|
79
225
|
// visible `screen` bodies (workover v0.3): each damps OTHER bodies' forces on matter inside
|
|
80
226
|
// its range (quiet zones / text shielding). No screens on the page (the common case) ⇒ this
|
|
81
227
|
// stays null and the whole pass is skipped — zero cost and zero behavior change.
|
|
@@ -101,6 +247,10 @@ export function step(input) {
|
|
|
101
247
|
p.y += (p.cap.cy - p.y) * 0.18;
|
|
102
248
|
if (p.z)
|
|
103
249
|
p.z += -p.z * 0.18;
|
|
250
|
+
// held matter has no acceleration of its own — drop any stored Verlet lane so a later
|
|
251
|
+
// release doesn't extrapolate a stale a(t). Only ever defined under the opt-in mode.
|
|
252
|
+
if (p.ax !== undefined)
|
|
253
|
+
p.ax = p.ay = p.az = 0;
|
|
104
254
|
continue;
|
|
105
255
|
}
|
|
106
256
|
// normalize the optional lane once: after this the lane is concrete numbers for
|
|
@@ -109,6 +259,22 @@ export function step(input) {
|
|
|
109
259
|
p.z = 0;
|
|
110
260
|
if (p.vz === undefined)
|
|
111
261
|
p.vz = 0;
|
|
262
|
+
// velocity-Verlet (#659): the position FULL-STEP runs first, from last step's velocity and
|
|
263
|
+
// stored acceleration — x(t+dt) = x(t) + v(t)·dt + ½·a(t)·dt² — so the force pass below
|
|
264
|
+
// evaluates a′ at x(t+dt). v0 keeps v(t) for the half-step average after the pass.
|
|
265
|
+
let v0x = 0;
|
|
266
|
+
let v0y = 0;
|
|
267
|
+
let v0z = 0;
|
|
268
|
+
if (verlet) {
|
|
269
|
+
const h = 0.5 * dt * dt;
|
|
270
|
+
p.x += p.vx * dt + (p.ax ?? 0) * h;
|
|
271
|
+
p.y += p.vy * dt + (p.ay ?? 0) * h;
|
|
272
|
+
p.z += p.vz * dt + (p.az ?? 0) * h;
|
|
273
|
+
v0x = p.vx;
|
|
274
|
+
v0y = p.vy;
|
|
275
|
+
v0z = p.vz;
|
|
276
|
+
env.kinTouch = false;
|
|
277
|
+
}
|
|
112
278
|
const pz = p.z;
|
|
113
279
|
// wave current (§2.3): near a wave line, drift along its slope like debris.
|
|
114
280
|
if (hasWaves) {
|
|
@@ -352,6 +518,28 @@ export function step(input) {
|
|
|
352
518
|
}
|
|
353
519
|
}
|
|
354
520
|
}
|
|
521
|
+
// velocity-Verlet second half (#659): fold this step's impulse into the half-step average.
|
|
522
|
+
if (verlet) {
|
|
523
|
+
// the pass's net Δv is a′·dt — every force above evaluated at the updated position.
|
|
524
|
+
const dvx = p.vx - v0x;
|
|
525
|
+
const dvy = p.vy - v0y;
|
|
526
|
+
const dvz = p.vz - v0z;
|
|
527
|
+
if (env.kinTouch) {
|
|
528
|
+
// a kinematic (velocity-REPLACING) force fired: a discontinuity, not an acceleration.
|
|
529
|
+
// The replaced velocity stands as-is; the stored acceleration resets so the next
|
|
530
|
+
// position step doesn't extrapolate across the break.
|
|
531
|
+
p.ax = p.ay = p.az = 0;
|
|
532
|
+
}
|
|
533
|
+
else {
|
|
534
|
+
// v(t+dt) = v(t) + ½·(a(t) + a′)·dt — ½·a(t)·dt from the stored lane, ½·Δv for a′.
|
|
535
|
+
p.vx = v0x + 0.5 * ((p.ax ?? 0) * dt + dvx);
|
|
536
|
+
p.vy = v0y + 0.5 * ((p.ay ?? 0) * dt + dvy);
|
|
537
|
+
p.vz = v0z + 0.5 * ((p.az ?? 0) * dt + dvz);
|
|
538
|
+
p.ax = dvx / dt;
|
|
539
|
+
p.ay = dvy / dt;
|
|
540
|
+
p.az = dvz / dt;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
355
543
|
// global safety cap (§20.10): no token or composite may drive a free particle past
|
|
356
544
|
// c (the unit system's "speed of light"). The natural primitives self-clamp; this
|
|
357
545
|
// enforces it for *every* force. A non-finite velocity slips the `> c²` test — the
|
|
@@ -376,13 +564,27 @@ export function step(input) {
|
|
|
376
564
|
p.vz *= k;
|
|
377
565
|
}
|
|
378
566
|
}
|
|
379
|
-
// integrate, then damp (§2.2). The z lane integrates identically — inert at 0.
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
567
|
+
// integrate, then damp (§2.2). The z lane integrates identically — inert at 0. Under the opt-in
|
|
568
|
+
// fixed-timestep integrator (doc 04 §Step 3) the per-step damping scales with `dt` (`FRICTION^dt`)
|
|
569
|
+
// so it is frame-rate independent; at `dt === 1` `Math.pow(FRICTION, 1) === FRICTION`, so the
|
|
570
|
+
// default path is byte-identical. Velocity-Verlet already took its position full-step before
|
|
571
|
+
// the force pass (its decays are dt-scaled like fixed's).
|
|
572
|
+
if (!verlet) {
|
|
573
|
+
p.x += p.vx * dt;
|
|
574
|
+
p.y += p.vy * dt;
|
|
575
|
+
p.z += p.vz * dt;
|
|
576
|
+
}
|
|
577
|
+
const fr = env.integrator === 'fixed' || verlet ? Math.pow(FRICTION, dt) : FRICTION;
|
|
578
|
+
p.vx *= fr;
|
|
579
|
+
p.vy *= fr;
|
|
580
|
+
p.vz *= fr;
|
|
581
|
+
// optional orientation lane (doc 04 §Step 6): advance angle by spin and damp the spin, ONLY when a
|
|
582
|
+
// force gave this particle angular velocity — undefined ⇒ inert ⇒ byte-identical to the spin-less
|
|
583
|
+
// engine. Mirrors the position integrate + FRICTION damp above.
|
|
584
|
+
if (p.spin !== undefined) {
|
|
585
|
+
p.orient = (p.orient ?? 0) + p.spin * dt;
|
|
586
|
+
p.spin *= fr;
|
|
587
|
+
}
|
|
386
588
|
// wander (after damping, so it stays lively): a periodic brownian jitter every 40 frames, plus
|
|
387
589
|
// a smooth curl-noise eddy (§7). Agents (report defined) opt out — their motion is force- and
|
|
388
590
|
// steering-driven, not the ambient swarm drift.
|
|
@@ -402,7 +604,7 @@ export function step(input) {
|
|
|
402
604
|
p.vy += Math.sin(cn) * 0.013 * form.wander;
|
|
403
605
|
}
|
|
404
606
|
}
|
|
405
|
-
p.heat *= HEAT_DECAY;
|
|
607
|
+
p.heat *= env.integrator === 'fixed' || verlet ? Math.pow(HEAT_DECAY, dt) : HEAT_DECAY;
|
|
406
608
|
// mortal matter ages (the class-[S] sink): spawned particles carry a finite `age`
|
|
407
609
|
// and despawn at ≤ 0, so a continuous source stays budgeted. Immortal base-field
|
|
408
610
|
// matter (age undefined) is untouched — the conserved field is unchanged.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrator.js","sourceRoot":"","sources":["../../src/core/integrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"integrator.js","sourceRoot":"","sources":["../../src/core/integrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { GovernanceWarning } from './types.ts';
|
|
2
|
+
/** The vocabulary lanes this registry indexes (a conservative subset of the full naming canon — see the
|
|
3
|
+
* design notes above for why `render`/`diagnostic` are merged and `metric` is deferred). */
|
|
4
|
+
export type WordLane = 'force' | 'formation' | 'condition' | 'visualization';
|
|
5
|
+
/** The shipped vocabulary, indexed by lane, drawn from each lane's source-of-truth catalog. */
|
|
6
|
+
export declare const LANE_WORDS: Readonly<Record<WordLane, readonly string[]>>;
|
|
7
|
+
/** Look up the lane a word belongs to, or undefined if it is not a known engine word. */
|
|
8
|
+
export declare function laneOf(word: string): WordLane | undefined;
|
|
9
|
+
/** Lint the registry for the canon's "no word lives in two lanes" rule: report every word that appears
|
|
10
|
+
* in more than one lane (substrate governance 05 — `field/no-word-in-two-lanes`). Pure; runs in CI,
|
|
11
|
+
* devtools, or a docs check with no live field. With the shipped catalogs it returns `[]` — the lane
|
|
12
|
+
* separation holds — so a non-empty result is a real regression. */
|
|
13
|
+
export declare function lintWordLanes(words?: Readonly<Record<string, readonly string[]>>): GovernanceWarning[];
|
|
14
|
+
//# sourceMappingURL=lane-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lane-registry.d.ts","sourceRoot":"","sources":["../../src/core/lane-registry.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;6FAC6F;AAC7F,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC;AAE7E,+FAA+F;AAC/F,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC,CAKnE,CAAC;AAEH,yFAAyF;AACzF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAKzD;AAED;;;qEAGqE;AACrE,wBAAgB,aAAa,CAAC,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAc,GAAG,iBAAiB,EAAE,CAqBlH"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Canonical word→lane registry + the `field/no-word-in-two-lanes` lint (substrate governance 05; the
|
|
2
|
+
// governance module names this as a planned rule). The naming canon's core invariant — "Concepts
|
|
3
|
+
// describe. Tokens execute. Metrics measure. Diagnostics explain. Conditions activate. … No word lives
|
|
4
|
+
// in two lanes." — is, until now, enforced only by review. This indexes the engine's *shipped* vocabulary
|
|
5
|
+
// by lane, drawn straight from the source-of-truth catalogs (not a hand-written list), and the lint
|
|
6
|
+
// reports any word that appears in two lanes.
|
|
7
|
+
//
|
|
8
|
+
// DESIGN NOTES (flagged for review — these are the judgment calls):
|
|
9
|
+
// - Lanes covered: `force` (the 36 force tokens), `formation` (the 5 field-shape modes), `condition`
|
|
10
|
+
// (the data-when keywords), `visualization` (the 16 render+diagnostic modes). These four have clean,
|
|
11
|
+
// single source-of-truth catalogs and are disjoint by construction, so the lint reports nothing today
|
|
12
|
+
// — its job is to guard future drift (a new force token that collides with a formation id, etc.).
|
|
13
|
+
// - `render` and `diagnostic` are kept as ONE `visualization` lane on purpose: the canon splits them
|
|
14
|
+
// ("Diagnostics explain"), but there is no clean catalog boundary — `heatmap`/`contours`/`energy`
|
|
15
|
+
// straddle the README's render-vs-diagnostic line — so splitting here would invent a contested rule.
|
|
16
|
+
// - `metric` is NOT yet a lane: the engine has no single catalog of metric names (they are `--field-*`
|
|
17
|
+
// vars scattered across feedback/atoms). Indexing it cleanly is a follow-up. This is why a word like
|
|
18
|
+
// `memory` (a force token AND a relationship-warmth metric) does not yet trip the lint.
|
|
19
|
+
import { PASSPORTS } from "../contracts/passport.js";
|
|
20
|
+
import { FORMATIONS, CONDITIONS } from "../config/forces.config.js";
|
|
21
|
+
import { RENDER_MODES } from "../visual/visualization.js";
|
|
22
|
+
/** The shipped vocabulary, indexed by lane, drawn from each lane's source-of-truth catalog. */
|
|
23
|
+
export const LANE_WORDS = Object.freeze({
|
|
24
|
+
force: Object.keys(PASSPORTS),
|
|
25
|
+
formation: FORMATIONS.map((f) => f.id),
|
|
26
|
+
condition: CONDITIONS.map((c) => c.id).filter((id) => id !== ''), // '' = "Always" (no keyword)
|
|
27
|
+
visualization: RENDER_MODES.map((m) => m.mode),
|
|
28
|
+
});
|
|
29
|
+
/** Look up the lane a word belongs to, or undefined if it is not a known engine word. */
|
|
30
|
+
export function laneOf(word) {
|
|
31
|
+
for (const lane of Object.keys(LANE_WORDS)) {
|
|
32
|
+
if (LANE_WORDS[lane].includes(word))
|
|
33
|
+
return lane;
|
|
34
|
+
}
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
/** Lint the registry for the canon's "no word lives in two lanes" rule: report every word that appears
|
|
38
|
+
* in more than one lane (substrate governance 05 — `field/no-word-in-two-lanes`). Pure; runs in CI,
|
|
39
|
+
* devtools, or a docs check with no live field. With the shipped catalogs it returns `[]` — the lane
|
|
40
|
+
* separation holds — so a non-empty result is a real regression. */
|
|
41
|
+
export function lintWordLanes(words = LANE_WORDS) {
|
|
42
|
+
const seen = new Map(); // word → lanes it appears in
|
|
43
|
+
for (const [lane, list] of Object.entries(words)) {
|
|
44
|
+
for (const word of list) {
|
|
45
|
+
const lanes = seen.get(word) ?? [];
|
|
46
|
+
if (!lanes.includes(lane))
|
|
47
|
+
lanes.push(lane);
|
|
48
|
+
seen.set(word, lanes);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const out = [];
|
|
52
|
+
for (const [word, lanes] of seen) {
|
|
53
|
+
if (lanes.length > 1) {
|
|
54
|
+
out.push({
|
|
55
|
+
rule: 'field/no-word-in-two-lanes',
|
|
56
|
+
severity: 'error',
|
|
57
|
+
subject: word,
|
|
58
|
+
message: `"${word}" appears in ${lanes.length} lanes (${lanes.join(', ')}); a word must live in exactly one lane.`,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=lane-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lane-registry.js","sourceRoot":"","sources":["../../src/core/lane-registry.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,iGAAiG;AACjG,uGAAuG;AACvG,0GAA0G;AAC1G,oGAAoG;AACpG,8CAA8C;AAC9C,EAAE;AACF,oEAAoE;AACpE,uGAAuG;AACvG,yGAAyG;AACzG,0GAA0G;AAC1G,sGAAsG;AACtG,uGAAuG;AACvG,sGAAsG;AACtG,yGAAyG;AACzG,yGAAyG;AACzG,yGAAyG;AACzG,4FAA4F;AAE5F,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAO1D,+FAA+F;AAC/F,MAAM,CAAC,MAAM,UAAU,GAAkD,MAAM,CAAC,MAAM,CAAC;IACrF,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,6BAA6B;IAC/F,aAAa,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;CAC/C,CAAC,CAAC;AAEH,yFAAyF;AACzF,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAe,EAAE,CAAC;QACzD,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;qEAGqE;AACrE,MAAM,UAAU,aAAa,CAAC,QAAqD,UAAU;IAC3F,MAAM,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC,CAAC,6BAA6B;IACvE,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,4BAA4B;gBAClC,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI,IAAI,gBAAgB,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C;aACnH,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AgentJsonTarget, FieldProjection } from './types.ts';
|
|
2
|
+
/** Create an {@link AgentJsonTarget} — the sink an `agent-json` projection writes into. It captures the
|
|
3
|
+
* last reading as a plain object and serializes it on demand. */
|
|
4
|
+
export declare function agentJsonTarget(): AgentJsonTarget;
|
|
5
|
+
/** Create a projection that targets the `agent-json` surface: its `apply` hands the reading to an
|
|
6
|
+
* {@link AgentJsonTarget} (via `receive`). Pass `accessibilityEquivalent` if this projection IS the
|
|
7
|
+
* alternate surface for a visual one (it usually is — agent-json is inherently non-visual). */
|
|
8
|
+
export declare function agentJsonProjection(id: string, channels: string[], opts?: {
|
|
9
|
+
label?: string;
|
|
10
|
+
accessibilityEquivalent?: string;
|
|
11
|
+
}): FieldProjection;
|
|
12
|
+
//# sourceMappingURL=projection-agent-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-agent-json.d.ts","sourceRoot":"","sources":["../../src/core/projection-agent-json.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnE;kEACkE;AAClE,wBAAgB,eAAe,IAAI,eAAe,CAajD;AAED;;gGAEgG;AAChG,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9D,eAAe,CAWjB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// The `agent-json` projection surface (substrate doc 05): a field projection whose output is a plain,
|
|
2
|
+
// serializable reading object rather than a visual/DOM write — the surface an agent or tool consumes.
|
|
3
|
+
// `agentJsonProjection` is the projection; `agentJsonTarget` is the sink it writes into. Pair them and
|
|
4
|
+
// `bind` them on the registry to get a live, JSON-serializable view of any field channels. Read-only
|
|
5
|
+
// w.r.t. the field — like every projection, this never changes how matter moves. EXPERIMENTAL.
|
|
6
|
+
/** Create an {@link AgentJsonTarget} — the sink an `agent-json` projection writes into. It captures the
|
|
7
|
+
* last reading as a plain object and serializes it on demand. */
|
|
8
|
+
export function agentJsonTarget() {
|
|
9
|
+
let last = null;
|
|
10
|
+
return {
|
|
11
|
+
receive(reading) {
|
|
12
|
+
last = { ...reading };
|
|
13
|
+
},
|
|
14
|
+
value() {
|
|
15
|
+
return last;
|
|
16
|
+
},
|
|
17
|
+
json() {
|
|
18
|
+
return JSON.stringify(last);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/** Create a projection that targets the `agent-json` surface: its `apply` hands the reading to an
|
|
23
|
+
* {@link AgentJsonTarget} (via `receive`). Pass `accessibilityEquivalent` if this projection IS the
|
|
24
|
+
* alternate surface for a visual one (it usually is — agent-json is inherently non-visual). */
|
|
25
|
+
export function agentJsonProjection(id, channels, opts = {}) {
|
|
26
|
+
return {
|
|
27
|
+
id,
|
|
28
|
+
label: opts.label ?? id,
|
|
29
|
+
channels: channels.slice(),
|
|
30
|
+
surfaces: ['agent-json'],
|
|
31
|
+
...(opts.accessibilityEquivalent !== undefined ? { accessibilityEquivalent: opts.accessibilityEquivalent } : {}),
|
|
32
|
+
apply(reading, target) {
|
|
33
|
+
target.receive?.(reading);
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=projection-agent-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-agent-json.js","sourceRoot":"","sources":["../../src/core/projection-agent-json.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,sGAAsG;AACtG,uGAAuG;AACvG,qGAAqG;AACrG,+FAA+F;AAI/F;kEACkE;AAClE,MAAM,UAAU,eAAe;IAC7B,IAAI,IAAI,GAAkC,IAAI,CAAC;IAC/C,OAAO;QACL,OAAO,CAAC,OAAO;YACb,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QACxB,CAAC;QACD,KAAK;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;gGAEgG;AAChG,MAAM,UAAU,mBAAmB,CACjC,EAAU,EACV,QAAkB,EAClB,OAA6D,EAAE;IAE/D,OAAO;QACL,EAAE;QACF,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE;QAC1B,QAAQ,EAAE,CAAC,YAAY,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,uBAAuB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,KAAK,CAAC,OAAO,EAAE,MAAM;YAClB,MAAmC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FieldLens, FieldQueryResult } from './types.ts';
|
|
2
|
+
/** Scope a query result through a lens — keep only the lens's metrics / influence channels / body
|
|
3
|
+
* tokens (each clause is an allow-list; an omitted clause keeps everything in that dimension). Returns
|
|
4
|
+
* a new result tagged with `lens: lens.id`; the input is not mutated. */
|
|
5
|
+
export declare function applyLens(result: FieldQueryResult, lens: FieldLens): FieldQueryResult;
|
|
6
|
+
//# sourceMappingURL=query-lens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-lens.d.ts","sourceRoot":"","sources":["../../src/core/query-lens.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9D;;0EAE0E;AAC1E,wBAAgB,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAarF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Query lenses (substrate query phase 2): a lens is a user-defined, declarative scope over a query
|
|
2
|
+
// reading — it filters which metrics, influence channels, and bodies are reported, and tags the result
|
|
3
|
+
// with the lens id. It is NOT an opinionated preset catalog; the caller supplies the lens. `applyLens`
|
|
4
|
+
// is pure (returns a new result; never mutates), so it composes over a live `query()` answer or any
|
|
5
|
+
// FieldQueryResult-shaped value. Read-only w.r.t. the field. EXPERIMENTAL.
|
|
6
|
+
const pick = (m, keep) => keep ? Object.fromEntries(Object.entries(m).filter(([k]) => keep.has(k))) : m;
|
|
7
|
+
/** Scope a query result through a lens — keep only the lens's metrics / influence channels / body
|
|
8
|
+
* tokens (each clause is an allow-list; an omitted clause keeps everything in that dimension). Returns
|
|
9
|
+
* a new result tagged with `lens: lens.id`; the input is not mutated. */
|
|
10
|
+
export function applyLens(result, lens) {
|
|
11
|
+
const metricKeys = lens.metrics ? new Set(lens.metrics) : null;
|
|
12
|
+
const channelKeys = lens.channels ? new Set(lens.channels) : null;
|
|
13
|
+
const tokenKeys = lens.tokens ? new Set(lens.tokens) : null;
|
|
14
|
+
return {
|
|
15
|
+
...result,
|
|
16
|
+
metrics: pick(result.metrics, metricKeys),
|
|
17
|
+
bodies: result.bodies
|
|
18
|
+
.filter((b) => !tokenKeys || b.tokens.some((t) => tokenKeys.has(t)))
|
|
19
|
+
.map((b) => ({ ...b, metrics: pick(b.metrics, metricKeys), dimensions: pick(b.dimensions, metricKeys) })),
|
|
20
|
+
influences: channelKeys ? result.influences.filter((i) => channelKeys.has(i.channel ?? 'linear')) : result.influences,
|
|
21
|
+
lens: lens.id,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=query-lens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-lens.js","sourceRoot":"","sources":["../../src/core/query-lens.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,uGAAuG;AACvG,uGAAuG;AACvG,oGAAoG;AACpG,2EAA2E;AAI3E,MAAM,IAAI,GAAG,CAAC,CAAyB,EAAE,IAAgC,EAA0B,EAAE,CACnG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhF;;0EAE0E;AAC1E,MAAM,UAAU,SAAS,CAAC,MAAwB,EAAE,IAAe;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,OAAO;QACL,GAAG,MAAM;QACT,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aACnE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3G,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;QACrH,IAAI,EAAE,IAAI,CAAC,EAAE;KACd,CAAC;AACJ,CAAC"}
|