@fundamental-engine/core 0.9.4 → 0.9.5

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 (134) hide show
  1. package/dist/inspect/report.js +2 -2
  2. package/dist/inspect/report.js.map +1 -1
  3. package/dist/recipes/catalog.d.ts +14 -9
  4. package/dist/recipes/catalog.d.ts.map +1 -1
  5. package/dist/recipes/catalog.js +9 -5
  6. package/dist/recipes/catalog.js.map +1 -1
  7. package/dist/recipes/compile.d.ts +26 -16
  8. package/dist/recipes/compile.d.ts.map +1 -1
  9. package/dist/recipes/compile.js +14 -10
  10. package/dist/recipes/compile.js.map +1 -1
  11. package/dist/recipes/index.d.ts +2 -0
  12. package/dist/recipes/index.d.ts.map +1 -1
  13. package/dist/recipes/index.js +5 -3
  14. package/dist/recipes/index.js.map +1 -1
  15. package/dist/recipes/schema.d.ts +27 -17
  16. package/dist/recipes/schema.d.ts.map +1 -1
  17. package/dist/recipes/schema.js +11 -6
  18. package/dist/recipes/schema.js.map +1 -1
  19. package/dist/recipes/wayfinding.d.ts +1 -1
  20. package/dist/version.d.ts +1 -1
  21. package/dist/version.js +1 -1
  22. package/dist/world/ablation/ablation.d.ts +39 -0
  23. package/dist/world/ablation/ablation.d.ts.map +1 -0
  24. package/dist/world/ablation/ablation.js +449 -0
  25. package/dist/world/ablation/ablation.js.map +1 -0
  26. package/dist/world/adapters/field-runtime.d.ts +56 -0
  27. package/dist/world/adapters/field-runtime.d.ts.map +1 -0
  28. package/dist/world/adapters/field-runtime.js +250 -0
  29. package/dist/world/adapters/field-runtime.js.map +1 -0
  30. package/dist/world/adapters/fsm-runtime.d.ts +18 -0
  31. package/dist/world/adapters/fsm-runtime.d.ts.map +1 -0
  32. package/dist/world/adapters/fsm-runtime.js +153 -0
  33. package/dist/world/adapters/fsm-runtime.js.map +1 -0
  34. package/dist/world/adapters/governor-runtime.d.ts +23 -0
  35. package/dist/world/adapters/governor-runtime.d.ts.map +1 -0
  36. package/dist/world/adapters/governor-runtime.js +185 -0
  37. package/dist/world/adapters/governor-runtime.js.map +1 -0
  38. package/dist/world/adapters/planner-runtime.d.ts +20 -0
  39. package/dist/world/adapters/planner-runtime.d.ts.map +1 -0
  40. package/dist/world/adapters/planner-runtime.js +144 -0
  41. package/dist/world/adapters/planner-runtime.js.map +1 -0
  42. package/dist/world/conformance/corpus.d.ts +89 -0
  43. package/dist/world/conformance/corpus.d.ts.map +1 -0
  44. package/dist/world/conformance/corpus.js +195 -0
  45. package/dist/world/conformance/corpus.js.map +1 -0
  46. package/dist/world/conformance/discoveries.d.ts +50 -0
  47. package/dist/world/conformance/discoveries.d.ts.map +1 -0
  48. package/dist/world/conformance/discoveries.js +71 -0
  49. package/dist/world/conformance/discoveries.js.map +1 -0
  50. package/dist/world/conformance/evidence.d.ts +37 -0
  51. package/dist/world/conformance/evidence.d.ts.map +1 -0
  52. package/dist/world/conformance/evidence.js +53 -0
  53. package/dist/world/conformance/evidence.js.map +1 -0
  54. package/dist/world/conformance/negative-results.d.ts +57 -0
  55. package/dist/world/conformance/negative-results.d.ts.map +1 -0
  56. package/dist/world/conformance/negative-results.js +73 -0
  57. package/dist/world/conformance/negative-results.js.map +1 -0
  58. package/dist/world/conformance/predictions.d.ts +66 -0
  59. package/dist/world/conformance/predictions.d.ts.map +1 -0
  60. package/dist/world/conformance/predictions.js +141 -0
  61. package/dist/world/conformance/predictions.js.map +1 -0
  62. package/dist/world/cross-substrate.d.ts +19 -0
  63. package/dist/world/cross-substrate.d.ts.map +1 -0
  64. package/dist/world/cross-substrate.js +123 -0
  65. package/dist/world/cross-substrate.js.map +1 -0
  66. package/dist/world/dynamics.d.ts +166 -0
  67. package/dist/world/dynamics.d.ts.map +1 -0
  68. package/dist/world/dynamics.js +30 -0
  69. package/dist/world/dynamics.js.map +1 -0
  70. package/dist/world/envelope.d.ts +44 -0
  71. package/dist/world/envelope.d.ts.map +1 -0
  72. package/dist/world/envelope.js +77 -0
  73. package/dist/world/envelope.js.map +1 -0
  74. package/dist/world/episodes/episodes.d.ts +64 -0
  75. package/dist/world/episodes/episodes.d.ts.map +1 -0
  76. package/dist/world/episodes/episodes.js +104 -0
  77. package/dist/world/episodes/episodes.js.map +1 -0
  78. package/dist/world/equivalence.d.ts +70 -0
  79. package/dist/world/equivalence.d.ts.map +1 -0
  80. package/dist/world/equivalence.js +205 -0
  81. package/dist/world/equivalence.js.map +1 -0
  82. package/dist/world/experiments/declarative-dynamics.d.ts +87 -0
  83. package/dist/world/experiments/declarative-dynamics.d.ts.map +1 -0
  84. package/dist/world/experiments/declarative-dynamics.js +153 -0
  85. package/dist/world/experiments/declarative-dynamics.js.map +1 -0
  86. package/dist/world/governor-equivalence.d.ts +51 -0
  87. package/dist/world/governor-equivalence.d.ts.map +1 -0
  88. package/dist/world/governor-equivalence.js +126 -0
  89. package/dist/world/governor-equivalence.js.map +1 -0
  90. package/dist/world/kernel.d.ts +49 -0
  91. package/dist/world/kernel.d.ts.map +1 -0
  92. package/dist/world/kernel.js +64 -0
  93. package/dist/world/kernel.js.map +1 -0
  94. package/dist/world/observatory/capture.d.ts +10 -0
  95. package/dist/world/observatory/capture.d.ts.map +1 -0
  96. package/dist/world/observatory/capture.js +371 -0
  97. package/dist/world/observatory/capture.js.map +1 -0
  98. package/dist/world/observatory/evidence-log.d.ts +131 -0
  99. package/dist/world/observatory/evidence-log.d.ts.map +1 -0
  100. package/dist/world/observatory/evidence-log.js +43 -0
  101. package/dist/world/observatory/evidence-log.js.map +1 -0
  102. package/dist/world/opportunity/opportunity.d.ts +85 -0
  103. package/dist/world/opportunity/opportunity.d.ts.map +1 -0
  104. package/dist/world/opportunity/opportunity.js +67 -0
  105. package/dist/world/opportunity/opportunity.js.map +1 -0
  106. package/dist/world/projection/evidence-profile.d.ts +51 -0
  107. package/dist/world/projection/evidence-profile.d.ts.map +1 -0
  108. package/dist/world/projection/evidence-profile.js +93 -0
  109. package/dist/world/projection/evidence-profile.js.map +1 -0
  110. package/dist/world/projection/projection.d.ts +162 -0
  111. package/dist/world/projection/projection.d.ts.map +1 -0
  112. package/dist/world/projection/projection.js +145 -0
  113. package/dist/world/projection/projection.js.map +1 -0
  114. package/dist/world/properties/properties.d.ts +87 -0
  115. package/dist/world/properties/properties.d.ts.map +1 -0
  116. package/dist/world/properties/properties.js +172 -0
  117. package/dist/world/properties/properties.js.map +1 -0
  118. package/dist/world/substrates/fsm.d.ts +59 -0
  119. package/dist/world/substrates/fsm.d.ts.map +1 -0
  120. package/dist/world/substrates/fsm.js +57 -0
  121. package/dist/world/substrates/fsm.js.map +1 -0
  122. package/dist/world/substrates/governor.d.ts +53 -0
  123. package/dist/world/substrates/governor.d.ts.map +1 -0
  124. package/dist/world/substrates/governor.js +73 -0
  125. package/dist/world/substrates/governor.js.map +1 -0
  126. package/dist/world/substrates/planner.d.ts +82 -0
  127. package/dist/world/substrates/planner.d.ts.map +1 -0
  128. package/dist/world/substrates/planner.js +114 -0
  129. package/dist/world/substrates/planner.js.map +1 -0
  130. package/dist/world/world.d.ts +73 -0
  131. package/dist/world/world.d.ts.map +1 -0
  132. package/dist/world/world.js +2 -0
  133. package/dist/world/world.js.map +1 -0
  134. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../../src/world/substrates/planner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,GAC7E;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAEnC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,8FAA8F;AAC9F,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,cAAc,GAAG,WAAW,CAAC;AAEvE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;CAChC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAEzD;AAkBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY,CAUzE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAS5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,WAAW,CAuCvF;AAED,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAWvG"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Conformance-corpus substrate: a best-first search planner (EXPERIMENTAL, internal).
3
+ *
4
+ * Written from search semantics, with the API a planner library would naturally have — a weighted
5
+ * graph, a frontier, an explored set, one expansion per step, and a plan extracted at the end. It has
6
+ * NO knowledge of `DynamicsContract`; per the corpus protocol it is committed before its adapter exists
7
+ * and may not be edited to make that adapter cleaner.
8
+ *
9
+ * Its role in the corpus is the **falsification candidate**, for two reasons:
10
+ *
11
+ * 1. It is the first corpus substrate that FINISHES. The field simulates indefinitely and the governor
12
+ * consumes frames indefinitely; neither ever reaches a state where asking for another transition is
13
+ * meaningless. A search does: the frontier empties, or the goal is found.
14
+ * 2. Its transition law is only PARTIALLY declarable. Expansion order and edge costs are a table; the
15
+ * `euclidean` heuristic is computed in code and cannot be written down as rules.
16
+ *
17
+ * Determinism is exact: the frontier is ordered by (priority, node id), so ties break by name rather
18
+ * than by insertion accident. No clock, no RNG.
19
+ */
20
+ export function isTerminal(status) {
21
+ return status === 'goal-reached' || status === 'exhausted';
22
+ }
23
+ function heuristicFor(problem, node) {
24
+ const h = problem.heuristic;
25
+ if (h.kind === 'zero')
26
+ return 0;
27
+ if (h.kind === 'table')
28
+ return h.values[node] ?? 0;
29
+ // euclidean: computed, not declarable
30
+ const from = problem.nodes.find((n) => n.id === node);
31
+ const goal = problem.nodes.find((n) => n.id === problem.goal);
32
+ if (!from || !goal || from.x === undefined || from.y === undefined || goal.x === undefined || goal.y === undefined)
33
+ return 0;
34
+ return Math.hypot(goal.x - from.x, goal.y - from.y);
35
+ }
36
+ /** Deterministic ordering: cheapest priority first, node id as the tie-break. */
37
+ function ordered(entries) {
38
+ return [...entries].sort((a, b) => (a.priority - b.priority) || a.node.localeCompare(b.node));
39
+ }
40
+ export function initialPlannerState(problem) {
41
+ const start = problem.start;
42
+ return {
43
+ frontier: [{ node: start, cost: 0, priority: heuristicFor(problem, start) }],
44
+ explored: [],
45
+ cameFrom: {},
46
+ costSoFar: { [start]: 0 },
47
+ status: problem.start === problem.goal ? 'goal-reached' : 'searching',
48
+ expansions: 0,
49
+ };
50
+ }
51
+ export function isPlannerState(v) {
52
+ if (typeof v !== 'object' || v === null)
53
+ return false;
54
+ const s = v;
55
+ return (Array.isArray(s.frontier) &&
56
+ Array.isArray(s.explored) &&
57
+ typeof s.expansions === 'number' &&
58
+ (s.status === 'searching' || s.status === 'goal-reached' || s.status === 'exhausted'));
59
+ }
60
+ /**
61
+ * Expand exactly one node. Asking a finished search to expand is not an error and not progress — the
62
+ * state is returned unchanged with its terminal status, and no node is reported as expanded.
63
+ */
64
+ export function expandPlanner(problem, state) {
65
+ if (isTerminal(state.status)) {
66
+ return { state, status: state.status };
67
+ }
68
+ const queue = ordered(state.frontier);
69
+ const head = queue[0];
70
+ if (!head) {
71
+ const exhausted = { ...state, status: 'exhausted' };
72
+ return { state: exhausted, status: 'exhausted' };
73
+ }
74
+ const rest = queue.slice(1);
75
+ if (head.node === problem.goal) {
76
+ const reached = { ...state, frontier: rest, status: 'goal-reached', expansions: state.expansions + 1 };
77
+ return { state: reached, expanded: head.node, status: 'goal-reached' };
78
+ }
79
+ const cameFrom = { ...state.cameFrom };
80
+ const costSoFar = { ...state.costSoFar };
81
+ const frontier = [...rest];
82
+ for (const edge of problem.edges.filter((e) => e.from === head.node)) {
83
+ const next = head.cost + edge.cost;
84
+ const known = costSoFar[edge.to];
85
+ if (known === undefined || next < known) {
86
+ costSoFar[edge.to] = next;
87
+ cameFrom[edge.to] = head.node;
88
+ frontier.push({ node: edge.to, cost: next, priority: next + heuristicFor(problem, edge.to) });
89
+ }
90
+ }
91
+ const explored = [...state.explored, head.node];
92
+ const status = frontier.length === 0 ? 'exhausted' : 'searching';
93
+ return {
94
+ state: { frontier: ordered(frontier), explored, cameFrom, costSoFar, status, expansions: state.expansions + 1 },
95
+ expanded: head.node,
96
+ status,
97
+ };
98
+ }
99
+ /** The plan, once the goal was reached. `undefined` while searching or when exhausted. */
100
+ export function extractPlan(problem, state) {
101
+ if (state.status !== 'goal-reached')
102
+ return undefined;
103
+ const path = [problem.goal];
104
+ let cursor = problem.goal;
105
+ while (cursor !== problem.start) {
106
+ const prev = state.cameFrom[cursor];
107
+ if (prev === undefined)
108
+ return undefined;
109
+ path.unshift(prev);
110
+ cursor = prev;
111
+ }
112
+ return path;
113
+ }
114
+ //# sourceMappingURL=planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.js","sourceRoot":"","sources":["../../../src/world/substrates/planner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Generic declarative world (A′, F1.1c). A `World` is the representation-independent declaration of
3
+ * what exists and relates — NO knowledge of fields, forces, particles, tokens-as-physics, or the DOM.
4
+ * Its lawful evolution lives behind a {@link DynamicsContract} (see `./dynamics.ts`), which the kernel
5
+ * executes but does not understand.
6
+ *
7
+ * Finding (F1.1): a `CompiledPattern` is NOT a complete world declaration — its lawful evolution exists
8
+ * only as executable force code. So `World` carries the representable subset (entities, relations,
9
+ * invariants, projections, identity, state) as data; evolution is delegated to a contract.
10
+ *
11
+ * EXPERIMENTAL. Not exported from the package entry. Must remain field-free (enforced by
12
+ * `world/architecture.test.ts`).
13
+ */
14
+ import type { WorldVersionEnvelope } from './envelope.ts';
15
+ export interface EntityIdentity {
16
+ readonly id: string;
17
+ readonly namespace?: string;
18
+ readonly kind?: string;
19
+ readonly host?: string;
20
+ }
21
+ export type ParamValue = number | string | boolean;
22
+ /** A declared participant in the world: a stable identity, opaque behavior tokens, and typed params. */
23
+ export interface WorldEntity {
24
+ readonly identity: EntityIdentity;
25
+ /** Behavior tokens — opaque *names* to the kernel; their meaning lives in the dynamics substrate. */
26
+ readonly tokens: readonly string[];
27
+ readonly params: Readonly<Record<string, ParamValue>>;
28
+ }
29
+ export interface WorldRelation {
30
+ readonly from: string;
31
+ readonly to: string;
32
+ readonly type: string;
33
+ readonly strength?: number;
34
+ }
35
+ export interface WorldInvariant {
36
+ readonly id: string;
37
+ /** Generic invariant kind the kernel can check against a snapshot: `count` | `range`. */
38
+ readonly kind: string;
39
+ readonly spec: Readonly<Record<string, ParamValue>>;
40
+ }
41
+ export interface WorldProjection {
42
+ readonly id: string;
43
+ /** Generic surface label (e.g. `underlay` / `overlay` / `feedback`) — NOT the field render taxonomy. */
44
+ readonly surface: string;
45
+ readonly declares: readonly string[];
46
+ }
47
+ export interface EntityStateReading {
48
+ readonly id: string;
49
+ readonly position?: {
50
+ readonly x: number;
51
+ readonly y: number;
52
+ readonly z?: number;
53
+ };
54
+ readonly metrics?: Readonly<Record<string, number>>;
55
+ }
56
+ /** A read-only, serializable projection of world state — the only window the kernel has into an
57
+ * opaque dynamics substrate. */
58
+ export interface WorldStateSnapshot {
59
+ readonly envelope: WorldVersionEnvelope;
60
+ readonly step: number;
61
+ readonly entities: readonly EntityStateReading[];
62
+ readonly metrics: Readonly<Record<string, number>>;
63
+ }
64
+ /** A generic declarative world. Evolution is NOT part of the declaration — it is bound as a
65
+ * {@link DynamicsContract} when the world is hosted. */
66
+ export interface World {
67
+ readonly envelope: WorldVersionEnvelope;
68
+ readonly entities: readonly WorldEntity[];
69
+ readonly relations: readonly WorldRelation[];
70
+ readonly invariants: readonly WorldInvariant[];
71
+ readonly projections: readonly WorldProjection[];
72
+ }
73
+ //# sourceMappingURL=world.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnD,wGAAwG;AACxG,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,qGAAqG;IACrG,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,wGAAwG;IACxG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpF,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED;iCACiC;AACjC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED;yDACyD;AACzD,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CAClD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=world.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world.js","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-engine/core",
3
- "version": "0.9.4",
3
+ "version": "0.9.5",
4
4
  "description": "A reciprocal DOM-physics field — elements bend the field; the field's density bends them back.",
5
5
  "type": "module",
6
6
  "license": "MIT",