@descix/frqtl-node 0.0.0-stage → 0.6.0-p0.2
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/CLAUDE.md +87 -0
- package/LICENSE.md +664 -0
- package/README.md +84 -2
- package/dist/dist-manifest.json +218 -0
- package/dist/eyes/index.js +109 -0
- package/dist/fat/pkg-node/egpt_wasm.js +1277 -0
- package/dist/fat/pkg-node/egpt_wasm_bg.wasm +0 -0
- package/dist/fat/pkg-node/package.json +12 -0
- package/dist/frqtl/assets/vendor/chroma.mjs +64 -0
- package/dist/frqtl/compat/boot-node.js +34 -0
- package/dist/frqtl/compat/engine.js +127 -0
- package/dist/frqtl/compat/package-root.js +24 -0
- package/dist/frqtl/compat/providers/wasm-engine.js +2499 -0
- package/dist/frqtl/compat/providers/wasm-load-browser.js +134 -0
- package/dist/frqtl/compat/providers/wasm-load-node.js +59 -0
- package/dist/frqtl/compat/renderer/FieldBuilder.js +145 -0
- package/dist/frqtl/compat/renderer/Filters.js +163 -0
- package/dist/frqtl/compat/renderer/RenderFamily.js +84 -0
- package/dist/frqtl/compat/renderer/RenderMesh.js +99 -0
- package/dist/frqtl/compat/renderer/RenderShape.js +154 -0
- package/dist/frqtl/compat/renderer/camera2d-geometry.js +183 -0
- package/dist/frqtl/compat/renderer/captureStill-common.js +258 -0
- package/dist/frqtl/compat/renderer/display-slot.js +96 -0
- package/dist/frqtl/compat/renderer/lo-drawn-center.js +231 -0
- package/dist/frqtl/compat/renderer/orbit-bag.js +216 -0
- package/dist/frqtl/compat/renderer/providers/godrays-layer.js +213 -0
- package/dist/frqtl/compat/renderer/providers/index.js +22 -0
- package/dist/frqtl/compat/renderer/providers/p5-provider.js +861 -0
- package/dist/frqtl/compat/renderer/providers/three-camera-contract.js +160 -0
- package/dist/frqtl/compat/renderer/providers/three-camera-geometry.js +571 -0
- package/dist/frqtl/compat/renderer/providers/three-provider.js +2470 -0
- package/dist/frqtl/compat/renderer/renderCapabilities-common.js +186 -0
- package/dist/frqtl/compat/renderer/renderer-provider-contract.js +238 -0
- package/dist/frqtl/compat/renderer/unprojectStill.js +172 -0
- package/dist/frqtl/compat/vendor.js +196 -0
- package/dist/frqtl/node-entry.js +17 -0
- package/dist/frqtl/objects/FrqtlApp.js +2920 -0
- package/dist/frqtl/objects/ObjectFactory.js +296 -0
- package/dist/frqtl/objects/RecipeContext.js +322 -0
- package/dist/frqtl/objects/collectors/DataCollector.js +116 -0
- package/dist/frqtl/objects/constants/WallBehaviors.js +178 -0
- package/dist/frqtl/objects/geometry/SlabFace.js +258 -0
- package/dist/frqtl/objects/instruments/capture-host.js +453 -0
- package/dist/frqtl/objects/instruments/capture.js +710 -0
- package/dist/frqtl/objects/instruments/hosted-eyes.js +984 -0
- package/dist/frqtl/objects/kinds-entry.js +14 -0
- package/dist/frqtl/objects/kinds.js +190 -0
- package/dist/frqtl/objects/objects/Box.js +273 -0
- package/dist/frqtl/objects/objects/Bullet.js +155 -0
- package/dist/frqtl/objects/objects/CircuitGate.js +380 -0
- package/dist/frqtl/objects/objects/CircuitProbe.js +214 -0
- package/dist/frqtl/objects/objects/DirectedTunnel.js +411 -0
- package/dist/frqtl/objects/objects/EgptFractal.js +164 -0
- package/dist/frqtl/objects/objects/LightSource.js +351 -0
- package/dist/frqtl/objects/objects/QuantumEmitter.js +760 -0
- package/dist/frqtl/objects/objects/Tube.js +471 -0
- package/dist/frqtl/objects/objects/absorbRadiation.js +309 -0
- package/dist/frqtl/objects/objects/actionCompiler.js +1747 -0
- package/dist/frqtl/objects/objects/controlAction.js +89 -0
- package/dist/frqtl/objects/objects/controlBind.js +278 -0
- package/dist/frqtl/objects/objects/directedRedirectProgram.js +120 -0
- package/dist/frqtl/objects/objects/emitterProgram.js +209 -0
- package/dist/frqtl/objects/objects/frqtl-control-slider.js +197 -0
- package/dist/frqtl/objects/objects/frqtl-control-sync.js +272 -0
- package/dist/frqtl/objects/objects/frqtl-control-widgets.js +219 -0
- package/dist/frqtl/objects/objects/frqtl-control-write-queue.js +174 -0
- package/dist/frqtl/objects/objects/makeControlsForObject.js +820 -0
- package/dist/frqtl/objects/objects/makeControlsForRenderSurface.js +161 -0
- package/dist/frqtl/objects/objects/slitLinerScatter.js +261 -0
- package/dist/frqtl/objects/objects/sustainedSource.js +298 -0
- package/dist/frqtl/objects/objects/tagger.js +228 -0
- package/dist/frqtl/objects/schema/engine-scopes.js +468 -0
- package/dist/frqtl/objects/schema/index.js +256 -0
- package/dist/frqtl/objects/schema/scopes.js +457 -0
- package/dist/frqtl/objects/schema/validate-descriptor.js +49 -0
- package/dist/frqtl/objects/schema/valueNormalizer.js +366 -0
- package/dist/frqtl/objects/setup/_collisionMatrixLanes.js +66 -0
- package/dist/frqtl/objects/setup/_setupOptions.js +118 -0
- package/dist/frqtl/objects/setup/_worldInit.js +162 -0
- package/dist/frqtl/objects/setup/setupBlackbodySubstrate.js +242 -0
- package/dist/frqtl/objects/setup/setupCircuitBasic.js +447 -0
- package/dist/frqtl/objects/setup/setupCollisionMatrix.js +188 -0
- package/dist/frqtl/objects/setup/setupConeEmitter3D.js +250 -0
- package/dist/frqtl/objects/setup/setupDoubleSlit.js +326 -0
- package/dist/frqtl/objects/setup/setupDoubleSlit_Laser.js +229 -0
- package/dist/frqtl/objects/setup/setupEmpty.js +59 -0
- package/dist/frqtl/objects/setup/setupFxSmoke.js +209 -0
- package/dist/frqtl/objects/setup/setupG1Race.js +80 -0
- package/dist/frqtl/objects/setup/setupG2Sweep.js +89 -0
- package/dist/frqtl/objects/setup/setupG3Collide.js +177 -0
- package/dist/frqtl/objects/setup/setupLightSourceLab.js +277 -0
- package/dist/frqtl/objects/setup/setupOscillator.js +68 -0
- package/dist/frqtl/objects/setup/setupParticleWalk.js +93 -0
- package/dist/frqtl/objects/setup/setupParticleWalk3D.js +133 -0
- package/dist/frqtl/objects/setup/setupSphereEmitter3D.js +1258 -0
- package/dist/frqtl/objects/setup/setupTraceCircuit.js +239 -0
- package/dist/frqtl/objects/setup/setupTunnelLab.js +240 -0
- package/dist/frqtl/objects/setup/setupTunnelPointExit.js +306 -0
- package/dist/frqtl/objects/setup/setupWaveInterference.js +177 -0
- package/dist/frqtl/objects/v1-replacements.js +29 -0
- package/dist/frqtl/package-core.js +23 -0
- package/dist/frqtl/parts/CameraControls.js +643 -0
- package/dist/frqtl/parts/CameraPath.js +575 -0
- package/dist/frqtl/parts/CollisionActions.js +34 -0
- package/dist/frqtl/parts/CollisionTypes.js +30 -0
- package/dist/frqtl/parts/DetectorWall.js +496 -0
- package/dist/frqtl/parts/FrqtlControlOverlay.js +227 -0
- package/dist/frqtl/parts/FrqtlControlsPanel.js +415 -0
- package/dist/frqtl/parts/FrqtlVision.js +818 -0
- package/dist/frqtl/parts/GraphingDetectorWall.js +489 -0
- package/dist/frqtl/parts/LargeObject.js +405 -0
- package/dist/frqtl/parts/LightColor.js +255 -0
- package/dist/frqtl/parts/LiveChart.js +285 -0
- package/dist/frqtl/parts/LogicGate.js +717 -0
- package/dist/frqtl/parts/OvenBox.js +611 -0
- package/dist/frqtl/parts/PointSource.js +762 -0
- package/dist/frqtl/parts/Rectangle.js +200 -0
- package/dist/frqtl/parts/SlitLightSource.js +234 -0
- package/dist/frqtl/parts/SlitScreen.js +628 -0
- package/dist/frqtl/parts/SphereEmitter.js +946 -0
- package/dist/frqtl/parts/Trace.js +508 -0
- package/dist/frqtl/parts/Tunnel.js +1057 -0
- package/dist/frqtl/parts/Wall.js +1211 -0
- package/dist/frqtl/parts/index.js +33 -0
- package/dist/frqtl/scenes/absorbing-wall-3d.js +33 -0
- package/dist/frqtl/scenes/absorbing-wall.js +32 -0
- package/dist/frqtl/scenes/atomic-model.js +88 -0
- package/dist/frqtl/scenes/big-bang.js +46 -0
- package/dist/frqtl/scenes/blackbody.js +81 -0
- package/dist/frqtl/scenes/circuit-sat.js +127 -0
- package/dist/frqtl/scenes/collision-matrix-3d.js +107 -0
- package/dist/frqtl/scenes/counting-wall-3d.js +36 -0
- package/dist/frqtl/scenes/counting-wall.js +38 -0
- package/dist/frqtl/scenes/double-slit.js +31 -0
- package/dist/frqtl/scenes/dse-one-emitter.js +196 -0
- package/dist/frqtl/scenes/dse-one-slit.js +114 -0
- package/dist/frqtl/scenes/dse-photoelectric.js +70 -0
- package/dist/frqtl/scenes/dse-tunnel-rebuild.js +243 -0
- package/dist/frqtl/scenes/dse-two-emitters.js +196 -0
- package/dist/frqtl/scenes/dse-two-slits.js +132 -0
- package/dist/frqtl/scenes/empty.js +14 -0
- package/dist/frqtl/scenes/laser-buildup.js +49 -0
- package/dist/frqtl/scenes/mirror-3d.js +56 -0
- package/dist/frqtl/scenes/mirror-route.js +140 -0
- package/dist/frqtl/scenes/mirror.js +38 -0
- package/dist/frqtl/scenes/omni-3d.js +27 -0
- package/dist/frqtl/scenes/omni-source.js +22 -0
- package/dist/frqtl/scenes/self-interference.js +39 -0
- package/dist/frqtl/scenes/smoking-gun.js +122 -0
- package/dist/frqtl/scenes/straight-walk.js +22 -0
- package/dist/frqtl/scenes/sun.js +39 -0
- package/dist/frqtl/scenes/two-source.js +37 -0
- package/dist/frqtl/scenes/wave.js +26 -0
- package/dist/shim/bundle/frqnb.js +112 -0
- package/dist/shim/bundle/index.js +121 -0
- package/dist/shim/bundle/indexHtml.js +107 -0
- package/dist/shim/bundle/manifest.js +95 -0
- package/dist/shim/bundle/zip.js +243 -0
- package/dist/shim/bus.js +67 -0
- package/dist/shim/controls/index.js +627 -0
- package/dist/shim/controls/registry.js +274 -0
- package/dist/shim/engine/artifact-shell.js +211 -0
- package/dist/shim/engine/boot-phases.js +44 -0
- package/dist/shim/engine/engine-stack-boot.js +59 -0
- package/dist/shim/engine/router.js +690 -0
- package/dist/shim/experiment-frame/index.js +296 -0
- package/dist/shim/expr/ast-schema.js +369 -0
- package/dist/shim/field-descriptor/index.js +325 -0
- package/dist/shim/frame-data/index.js +224 -0
- package/dist/shim/index.js +67 -0
- package/dist/shim/notebook/canvas-guard.js +82 -0
- package/dist/shim/notebook/catalog.js +35 -0
- package/dist/shim/notebook/format.js +736 -0
- package/dist/shim/notebook/frqtl-setups-importmap.js +81 -0
- package/dist/shim/notebook/kernel.js +671 -0
- package/dist/shim/notebook/knob.js +150 -0
- package/dist/shim/notebook/module-resolver.js +260 -0
- package/dist/shim/notebook/notebook-knobs.js +65 -0
- package/dist/shim/notebook/produced-bindings.js +67 -0
- package/dist/shim/notebook/realm-registry.js +121 -0
- package/dist/shim/notebook/realm-transport.js +73 -0
- package/dist/shim/notebook/setup-builder.js +507 -0
- package/dist/shim/notebook/store.js +159 -0
- package/dist/shim/notebook/vendor-importmap.js +134 -0
- package/dist/shim/notebook/view-builder.js +189 -0
- package/dist/shim/notebook/view-ctx.js +100 -0
- package/dist/shim/notebook/view-handle.js +202 -0
- package/dist/shim/notebook/warmup.js +102 -0
- package/dist/shim/package.json +4 -0
- package/dist/shim/page-params/index.js +213 -0
- package/dist/shim/project/identity.js +112 -0
- package/dist/shim/project/index.js +19 -0
- package/dist/shim/project/link.js +402 -0
- package/dist/shim/project/node-specifier-hook.mjs +35 -0
- package/dist/shim/project/register-node.mjs +17 -0
- package/dist/shim/project/specifiers.js +106 -0
- package/dist/shim/registry/copy-gate.js +110 -0
- package/dist/shim/registry/exhibits.js +455 -0
- package/dist/shim/registry/experiments.js +215 -0
- package/dist/shim/registry/index.js +19 -0
- package/dist/shim/registry/scene-source.js +157 -0
- package/dist/shim/registry/walkthrough.js +804 -0
- package/dist/shim/render/capture-envelope.js +279 -0
- package/dist/shim/render/heat-colormap.js +92 -0
- package/dist/shim/render/render-stages.js +855 -0
- package/dist/shim/render/sun-look.js +33 -0
- package/dist/shim/render-state/apply.js +262 -0
- package/dist/shim/render-state/index.js +74 -0
- package/dist/shim/rpc/index.js +207 -0
- package/dist/shim/runtime/index.js +1023 -0
- package/dist/shim/storage/boot.js +69 -0
- package/dist/shim/storage/index.js +169 -0
- package/dist/shim/storage/local-storage-provider.js +230 -0
- package/dist/shim/storage/make-namespace-store.js +132 -0
- package/dist/shim/storage/modules.js +249 -0
- package/dist/shim/storage/projects.js +150 -0
- package/llms.txt +12 -0
- package/package.json +63 -4
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/* Copyright 2023-2026 by Essam Abadir */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* canvas-guard — the SOLE C8 migration-guard authority for a DECLARED canvas cell
|
|
5
|
+
* PURE module — NO DOM / engine / Runtime / Bus
|
|
6
|
+
* import. The notebook-pane's `_resolveDeclaredCanvas` imports this one helper so no
|
|
7
|
+
* host re-derives the legality test (DRY — one guard).
|
|
8
|
+
*
|
|
9
|
+
* ── The guard (C8 / FLAG-A) ──────────────────────────────────────────────────
|
|
10
|
+
*
|
|
11
|
+
* Folding `produces`→`out` (format.js) means a declared-producing canvas now
|
|
12
|
+
* LEGITIMATELY carries `out`. The guard must distinguish:
|
|
13
|
+
*
|
|
14
|
+
* LEGAL — `setup` present AND every `out` name is also a `produces` name AND no
|
|
15
|
+
* `bind` AND no `in`. (Equivalently `out ⊆ produces`.)
|
|
16
|
+
* ILLEGAL — any `spec` (the retired opaque factory name, C3); any `bind` (a retired
|
|
17
|
+
* runner ref); any `in` (a retired consumed-runner ref); any `out` name NOT
|
|
18
|
+
* in `produces` (a legacy `out=<runner>` ref); or no `setup` at all.
|
|
19
|
+
*
|
|
20
|
+
* Get this EXACTLY right or a legacy runner-ref cell slips through (silent) or a valid
|
|
21
|
+
* producing canvas FAILS LOUD (false positive). The function THROWS the FAIL-LOUD error
|
|
22
|
+
* (so callers `try`/`catch` and surface it) rather than returning a flag — there is no
|
|
23
|
+
* "legal-but-degraded" path.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
'use strict';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Assert a `canvas` cell is a LEGAL declared producing canvas, or FAIL-LOUD-throw.
|
|
30
|
+
*
|
|
31
|
+
* @param {object} cell — a parsed canvas cell `{ id, setup, spec, bind, in[], out[], produces[] }`.
|
|
32
|
+
* @returns {{ produces: string[] }} the cleaned declared produces names (for the caller's commit loop).
|
|
33
|
+
* @throws {Error} FAIL-LOUD on any retired shape (spec / bind / in / out∉produces / missing setup).
|
|
34
|
+
*/
|
|
35
|
+
export function assertDeclaredCanvasLegal(cell) {
|
|
36
|
+
cell = cell || {};
|
|
37
|
+
var id = cell.id || '(unnamed)';
|
|
38
|
+
var produces = Array.isArray(cell.produces) ? cell.produces : [];
|
|
39
|
+
var out = Array.isArray(cell.out) ? cell.out : [];
|
|
40
|
+
var inArr = Array.isArray(cell.in) ? cell.in : [];
|
|
41
|
+
|
|
42
|
+
// (1) A `spec` on a canvas is the RETIRED opaque-factory shorthand (C3).
|
|
43
|
+
if (cell.spec) {
|
|
44
|
+
throw new Error(
|
|
45
|
+
'[frqtl] canvas cell "' + id + '" carries a `spec` ("' + cell.spec +
|
|
46
|
+
'", an opaque factory name) — that path is RETIRED. Declare ' +
|
|
47
|
+
'`setup="<module>#<export>"` on the canvas instead. (FAIL-LOUD.)');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// The non-produces `out` names: an `out` name NOT also declared in `produces` is a
|
|
51
|
+
// legacy `out=<runner>` runner ref (the retired authored-builder bind). C8.
|
|
52
|
+
var outNotProduced = out.filter(function (n) { return produces.indexOf(n) === -1; });
|
|
53
|
+
var hasLegacyRunnerRef = !!cell.bind || inArr.length > 0 || outNotProduced.length > 0;
|
|
54
|
+
|
|
55
|
+
// (2) No `setup` → no remaining render path (no builder, no factory).
|
|
56
|
+
if (!cell.setup) {
|
|
57
|
+
throw new Error(
|
|
58
|
+
'[frqtl] canvas cell "' + id + '" declares no `setup="<module>#<export>"` ' +
|
|
59
|
+
(hasLegacyRunnerRef
|
|
60
|
+
? 'but carries a legacy `bind=`/`in=`/`out=` runner reference — that authored ' +
|
|
61
|
+
'builder path is DELETED. Convert it to a declarative canvas. '
|
|
62
|
+
: '— nothing to render. ') +
|
|
63
|
+
'(FAIL-LOUD — one developer-facing way: module + declarative canvas.)');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// (3) `setup` present BUT a legacy runner ref alongside it → unconverted; FAIL-LOUD.
|
|
67
|
+
// A `produces`-derived `out` is LEGAL (out ⊆ produces); a `bind`, an `in`, or an
|
|
68
|
+
// `out` name NOT in `produces` is the retired runner-ref shape.
|
|
69
|
+
if (hasLegacyRunnerRef) {
|
|
70
|
+
throw new Error(
|
|
71
|
+
'[frqtl] canvas cell "' + id + '" declares `setup` AND carries a legacy ' +
|
|
72
|
+
'`bind=`/`in=`/`out=` runner reference (' +
|
|
73
|
+
(cell.bind ? 'bind="' + cell.bind + '" ' : '') +
|
|
74
|
+
(inArr.length ? 'in=[' + inArr.join(', ') + '] ' : '') +
|
|
75
|
+
(outNotProduced.length ? 'out=[' + outNotProduced.join(', ') + '] not in produces ' : '') +
|
|
76
|
+
'). A declared canvas needs ONLY `setup`/`opts`/`stage`/`seed` (+ optional ' +
|
|
77
|
+
'`produces`/`produceVia`). The authored runner-building builder is RETIRED. ' +
|
|
78
|
+
'(FAIL-LOUD — never silently prefer one authority.)');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return { produces: produces.slice() };
|
|
82
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* Copyright 2023-2026 by Essam Abadir */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* firstContactNotebook — the ONE reader of the notebook catalog's first-contact default.
|
|
5
|
+
*
|
|
6
|
+
* The catalog (lib/notebooks/notebooks.json) owns the notebook roster AND, beside it, the
|
|
7
|
+
* `firstContact` id: the notebook FAT opens on when no `?notebook=` is named (the
|
|
8
|
+
* Entropy-Log Bijection). Declared beside the roster, as the walkthrough registry
|
|
9
|
+
* declares FIRST_CONTACT_WALKTHROUGH_ID beside its rungs. A deep link naming a notebook wins;
|
|
10
|
+
* that branch never reaches this reader.
|
|
11
|
+
*
|
|
12
|
+
* Callers: NotebookBrowserView (the served catalog, at open), scripts/assemble-static-deploy.mjs
|
|
13
|
+
* (every roster the bundle carries, after narrowing it to the shipped set) and the catalog test.
|
|
14
|
+
*
|
|
15
|
+
* Named ESM export. PURE — no DOM, no fetch, no Runtime.
|
|
16
|
+
*
|
|
17
|
+
* @param {{notebooks: Array<{id: string}>, firstContact?: string}} catalog — a parsed notebooks.json.
|
|
18
|
+
* @returns {{id: string, file: string, title: string, group: string}} the roster row named by `firstContact`.
|
|
19
|
+
* @throws {Error} `firstContact` absent, not a string, or naming an id outside `notebooks[]`.
|
|
20
|
+
*/
|
|
21
|
+
export function firstContactNotebook(catalog) {
|
|
22
|
+
if (!catalog || !Array.isArray(catalog.notebooks)) {
|
|
23
|
+
throw new Error('[notebook catalog] no notebooks[] array — cannot resolve the first-contact notebook.');
|
|
24
|
+
}
|
|
25
|
+
var id = catalog.firstContact;
|
|
26
|
+
if (typeof id !== 'string' || id === '') {
|
|
27
|
+
throw new Error('[notebook catalog] notebooks.json declares no "firstContact" notebook id — ' +
|
|
28
|
+
'FAT has nothing to open with no ?notebook= (lib/notebooks/notebooks.json).');
|
|
29
|
+
}
|
|
30
|
+
for (var i = 0; i < catalog.notebooks.length; i++) {
|
|
31
|
+
if (catalog.notebooks[i].id === id) { return catalog.notebooks[i]; }
|
|
32
|
+
}
|
|
33
|
+
throw new Error('[notebook catalog] firstContact "' + id + '" is not in the catalog — listed ids: [' +
|
|
34
|
+
catalog.notebooks.map(function (n) { return n.id; }).join(', ') + '].');
|
|
35
|
+
}
|