@adobe/data 0.9.53 → 0.9.55

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 (147) hide show
  1. package/README.md +1 -1
  2. package/dist/cache/blob-store.browser.test.d.ts +1 -0
  3. package/dist/cache/blob-store.browser.test.js +122 -0
  4. package/dist/cache/blob-store.browser.test.js.map +1 -0
  5. package/dist/cache/data-cache.browser.test.d.ts +1 -0
  6. package/dist/cache/data-cache.browser.test.js +41 -0
  7. package/dist/cache/data-cache.browser.test.js.map +1 -0
  8. package/dist/cache/data-cache.js +26 -6
  9. package/dist/cache/data-cache.js.map +1 -1
  10. package/dist/cache/data-cache.test.js +12 -1
  11. package/dist/cache/data-cache.test.js.map +1 -1
  12. package/dist/cache/expiring-data-cache.browser.test.d.ts +1 -0
  13. package/dist/cache/expiring-data-cache.browser.test.js +42 -0
  14. package/dist/cache/expiring-data-cache.browser.test.js.map +1 -0
  15. package/dist/cache/functions/functions.browser.test.d.ts +1 -0
  16. package/dist/cache/functions/functions.browser.test.js +72 -0
  17. package/dist/cache/functions/functions.browser.test.js.map +1 -0
  18. package/dist/cache/managed-array.js +72 -68
  19. package/dist/cache/managed-array.js.map +1 -1
  20. package/dist/ecs/archetype/create-archetype.js +131 -7
  21. package/dist/ecs/archetype/create-archetype.js.map +1 -1
  22. package/dist/ecs/database/public/create-database-scheduler.browser.test.d.ts +1 -0
  23. package/dist/ecs/database/public/create-database-scheduler.browser.test.js +67 -0
  24. package/dist/ecs/database/public/create-database-scheduler.browser.test.js.map +1 -0
  25. package/dist/ecs/database/transactional-store/coalesce-actions.js +15 -41
  26. package/dist/ecs/database/transactional-store/coalesce-actions.js.map +1 -1
  27. package/dist/ecs/database/transactional-store/coalesce-actions.test.js +30 -1
  28. package/dist/ecs/database/transactional-store/coalesce-actions.test.js.map +1 -1
  29. package/dist/ecs/persistence-service/create-storage-persistence-service.browser.test.d.ts +1 -0
  30. package/dist/ecs/persistence-service/create-storage-persistence-service.browser.test.js +52 -0
  31. package/dist/ecs/persistence-service/create-storage-persistence-service.browser.test.js.map +1 -0
  32. package/dist/functions/serialization/serialize-to-storage.browser.test.d.ts +1 -0
  33. package/dist/functions/serialization/serialize-to-storage.browser.test.js +161 -0
  34. package/dist/functions/serialization/serialize-to-storage.browser.test.js.map +1 -0
  35. package/dist/math/aabb/face/all.d.ts +2 -0
  36. package/dist/math/aabb/face/all.js +10 -0
  37. package/dist/math/aabb/face/all.js.map +1 -0
  38. package/dist/math/aabb/face/face.d.ts +4 -0
  39. package/dist/math/aabb/face/face.js +3 -0
  40. package/dist/math/aabb/face/face.js.map +1 -0
  41. package/dist/math/aabb/face/from-position.d.ts +9 -0
  42. package/dist/math/aabb/face/from-position.js +32 -0
  43. package/dist/math/aabb/face/from-position.js.map +1 -0
  44. package/dist/math/aabb/face/from-position.test.d.ts +1 -0
  45. package/dist/math/aabb/face/from-position.test.js +21 -0
  46. package/dist/math/aabb/face/from-position.test.js.map +1 -0
  47. package/dist/math/aabb/face/get-adjacent.d.ts +3 -0
  48. package/dist/math/aabb/face/get-adjacent.js +24 -0
  49. package/dist/math/aabb/face/get-adjacent.js.map +1 -0
  50. package/dist/math/aabb/face/get-adjacent.test.d.ts +1 -0
  51. package/dist/math/aabb/face/get-adjacent.test.js +27 -0
  52. package/dist/math/aabb/face/get-adjacent.test.js.map +1 -0
  53. package/dist/math/aabb/face/get-faces.d.ts +3 -0
  54. package/dist/math/aabb/face/get-faces.js +11 -0
  55. package/dist/math/aabb/face/get-faces.js.map +1 -0
  56. package/dist/math/aabb/face/get-faces.test.d.ts +1 -0
  57. package/dist/math/aabb/face/get-faces.test.js +16 -0
  58. package/dist/math/aabb/face/get-faces.test.js.map +1 -0
  59. package/dist/math/aabb/face/get-name.d.ts +3 -0
  60. package/dist/math/aabb/face/get-name.js +7 -0
  61. package/dist/math/aabb/face/get-name.js.map +1 -0
  62. package/dist/math/aabb/face/get-name.test.d.ts +1 -0
  63. package/dist/math/aabb/face/get-name.test.js +13 -0
  64. package/dist/math/aabb/face/get-name.test.js.map +1 -0
  65. package/dist/math/aabb/face/get-normal.d.ts +4 -0
  66. package/dist/math/aabb/face/get-normal.js +11 -0
  67. package/dist/math/aabb/face/get-normal.js.map +1 -0
  68. package/dist/math/aabb/face/get-normal.test.d.ts +1 -0
  69. package/dist/math/aabb/face/get-normal.test.js +13 -0
  70. package/dist/math/aabb/face/get-normal.test.js.map +1 -0
  71. package/dist/math/aabb/face/get-opposite.d.ts +3 -0
  72. package/dist/math/aabb/face/get-opposite.js +27 -0
  73. package/dist/math/aabb/face/get-opposite.js.map +1 -0
  74. package/dist/math/aabb/face/get-opposite.test.d.ts +1 -0
  75. package/dist/math/aabb/face/get-opposite.test.js +20 -0
  76. package/dist/math/aabb/face/get-opposite.test.js.map +1 -0
  77. package/dist/math/aabb/face/internals.d.ts +6 -0
  78. package/dist/math/aabb/face/internals.js +34 -0
  79. package/dist/math/aabb/face/internals.js.map +1 -0
  80. package/dist/math/aabb/face/is-adjacent.d.ts +3 -0
  81. package/dist/math/aabb/face/is-adjacent.js +7 -0
  82. package/dist/math/aabb/face/is-adjacent.js.map +1 -0
  83. package/dist/math/aabb/face/is-adjacent.test.d.ts +1 -0
  84. package/dist/math/aabb/face/is-adjacent.test.js +15 -0
  85. package/dist/math/aabb/face/is-adjacent.test.js.map +1 -0
  86. package/dist/math/aabb/face/is-opposite.d.ts +3 -0
  87. package/dist/math/aabb/face/is-opposite.js +7 -0
  88. package/dist/math/aabb/face/is-opposite.js.map +1 -0
  89. package/dist/math/aabb/face/is-opposite.test.d.ts +1 -0
  90. package/dist/math/aabb/face/is-opposite.test.js +15 -0
  91. package/dist/math/aabb/face/is-opposite.test.js.map +1 -0
  92. package/dist/math/aabb/face/neg-x.d.ts +2 -0
  93. package/dist/math/aabb/face/neg-x.js +4 -0
  94. package/dist/math/aabb/face/neg-x.js.map +1 -0
  95. package/dist/math/aabb/face/neg-y.d.ts +2 -0
  96. package/dist/math/aabb/face/neg-y.js +4 -0
  97. package/dist/math/aabb/face/neg-y.js.map +1 -0
  98. package/dist/math/aabb/face/neg-z.d.ts +2 -0
  99. package/dist/math/aabb/face/neg-z.js +4 -0
  100. package/dist/math/aabb/face/neg-z.js.map +1 -0
  101. package/dist/math/aabb/face/none.d.ts +2 -0
  102. package/dist/math/aabb/face/none.js +4 -0
  103. package/dist/math/aabb/face/none.js.map +1 -0
  104. package/dist/math/aabb/face/pos-x.d.ts +2 -0
  105. package/dist/math/aabb/face/pos-x.js +4 -0
  106. package/dist/math/aabb/face/pos-x.js.map +1 -0
  107. package/dist/math/aabb/face/pos-y.d.ts +2 -0
  108. package/dist/math/aabb/face/pos-y.js +4 -0
  109. package/dist/math/aabb/face/pos-y.js.map +1 -0
  110. package/dist/math/aabb/face/pos-z.d.ts +2 -0
  111. package/dist/math/aabb/face/pos-z.js +4 -0
  112. package/dist/math/aabb/face/pos-z.js.map +1 -0
  113. package/dist/math/aabb/face/public.d.ts +16 -1
  114. package/dist/math/aabb/face/public.js +16 -1
  115. package/dist/math/aabb/face/public.js.map +1 -1
  116. package/dist/math/aabb/public.d.ts +1 -1
  117. package/dist/math/aabb/public.js +1 -1
  118. package/dist/math/aabb/public.js.map +1 -1
  119. package/dist/perftest/ecs1-perf.d.ts +54 -0
  120. package/dist/perftest/ecs1-perf.js +214 -0
  121. package/dist/perftest/ecs1-perf.js.map +1 -0
  122. package/dist/perftest/ecs2-perf.d.ts +5 -0
  123. package/dist/perftest/ecs2-perf.js +162 -0
  124. package/dist/perftest/ecs2-perf.js.map +1 -0
  125. package/dist/perftest/index.js +8 -3
  126. package/dist/perftest/index.js.map +1 -1
  127. package/dist/perftest/perf-test.d.ts +7 -0
  128. package/dist/perftest/perf-test.js +69 -7
  129. package/dist/perftest/perf-test.js.map +1 -1
  130. package/dist/perftest/typed-buffer-perf.d.ts +8 -0
  131. package/dist/perftest/typed-buffer-perf.js +133 -0
  132. package/dist/perftest/typed-buffer-perf.js.map +1 -0
  133. package/dist/service/agentic-service/action.d.ts +8 -4
  134. package/dist/service/agentic-service/create.d.ts +5 -1
  135. package/dist/service/agentic-service/create.js +1 -1
  136. package/dist/service/agentic-service/create.js.map +1 -1
  137. package/dist/service/agentic-service/create.test.js +1 -1
  138. package/dist/service/agentic-service/create.test.js.map +1 -1
  139. package/dist/service/agentic-service/create.type-test.js +23 -0
  140. package/dist/service/agentic-service/create.type-test.js.map +1 -1
  141. package/dist/tsconfig.tsbuildinfo +1 -1
  142. package/package.json +2 -2
  143. package/references/data-lit/package.json +1 -1
  144. package/references/data-lit-tictactoe/package.json +1 -1
  145. package/references/data-react/package.json +1 -1
  146. package/references/data-react-hello/package.json +1 -1
  147. package/references/data-react-pixie/package.json +1 -1
@@ -0,0 +1,162 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { Store } from "../ecs/store/index.js";
3
+ import { F32, True, U32 } from "../schema/index.js";
4
+ // Mirror of ecs1-perf.ts on the new ECS, using createStore directly so we
5
+ // measure raw column read/write cost — no plugin, no transactions, no undo
6
+ // machinery. The legacy suite also bypasses transactions, so this matches.
7
+ //
8
+ // Dropped vs ecs1: move_native (no .native typed-array view exposed) and
9
+ // move_wasm* (no custom WASM allocator yet). Add them back here when the
10
+ // new ECS gains those surfaces.
11
+ const storeSchema = Store.Schema.create({
12
+ components: {
13
+ color: U32.schema,
14
+ enabled: True.schema,
15
+ mass: F32.schema,
16
+ positionX: F32.schema,
17
+ positionY: F32.schema,
18
+ positionZ: F32.schema,
19
+ velocityX: F32.schema,
20
+ velocityY: F32.schema,
21
+ velocityZ: F32.schema,
22
+ visible: True.schema,
23
+ },
24
+ archetypes: {
25
+ VisibleEnabled: [
26
+ "color", "enabled", "mass",
27
+ "positionX", "positionY", "positionZ",
28
+ "velocityX", "velocityY", "velocityZ",
29
+ "visible",
30
+ ],
31
+ InvisibleEnabled: [
32
+ "color", "enabled", "mass",
33
+ "positionX", "positionY", "positionZ",
34
+ "velocityX", "velocityY", "velocityZ",
35
+ ],
36
+ VisibleDisabled: [
37
+ "color", "mass",
38
+ "positionX", "positionY", "positionZ",
39
+ "velocityX", "velocityY", "velocityZ",
40
+ "visible",
41
+ ],
42
+ InvisibleDisabled: [
43
+ "color", "mass",
44
+ "positionX", "positionY", "positionZ",
45
+ "velocityX", "velocityY", "velocityZ",
46
+ ],
47
+ },
48
+ });
49
+ // The Archetype.insert signatures differ by component-set type, so the
50
+ // archetype refs can't share a typed array. Cast at the call site — this
51
+ // perftest just needs to fill the rows.
52
+ function seedAll(store, count) {
53
+ const perTable = Math.ceil(count / 4);
54
+ const archetypes = [
55
+ store.archetypes.VisibleEnabled,
56
+ store.archetypes.VisibleDisabled,
57
+ store.archetypes.InvisibleEnabled,
58
+ store.archetypes.InvisibleDisabled,
59
+ ];
60
+ for (let archIndex = 0; archIndex < archetypes.length; archIndex++) {
61
+ const arch = archetypes[archIndex];
62
+ for (let k = 0; k < perTable; k++) {
63
+ const i = archIndex + k * 4;
64
+ arch.insert({
65
+ color: 0xff00ff,
66
+ mass: 10,
67
+ positionX: i + 1,
68
+ positionY: i + 1,
69
+ positionZ: i + 1,
70
+ velocityX: -i,
71
+ velocityY: -i,
72
+ velocityZ: -i,
73
+ });
74
+ }
75
+ }
76
+ }
77
+ function seedSingle(store, count) {
78
+ const archetypes = [
79
+ store.archetypes.VisibleEnabled,
80
+ store.archetypes.VisibleDisabled,
81
+ store.archetypes.InvisibleEnabled,
82
+ store.archetypes.InvisibleDisabled,
83
+ ];
84
+ for (let i = 0; i < count; i++) {
85
+ archetypes[i % 4].insert({
86
+ color: 0xff00ff,
87
+ mass: 10,
88
+ positionX: i + 1,
89
+ positionY: i + 1,
90
+ positionZ: i + 1,
91
+ velocityX: -i,
92
+ velocityY: -i,
93
+ velocityZ: -i,
94
+ });
95
+ }
96
+ }
97
+ const create = () => {
98
+ let count = 0;
99
+ const setup = async (n) => { count = n; };
100
+ const run = () => {
101
+ const store = Store.create(storeSchema);
102
+ seedSingle(store, count);
103
+ };
104
+ const cleanup = async () => { };
105
+ return { setup, run, cleanup, type: "create" };
106
+ };
107
+ const createMoveParticlesPerformanceTest = () => {
108
+ let store;
109
+ const setup = async (n) => {
110
+ store = Store.create(storeSchema);
111
+ seedAll(store, n);
112
+ };
113
+ const run = () => {
114
+ const archetypes = store.queryArchetypes([
115
+ "positionX", "positionY", "positionZ",
116
+ "velocityX", "velocityY", "velocityZ",
117
+ "visible", "enabled",
118
+ ]);
119
+ for (const archetype of archetypes) {
120
+ const { columns, rowCount } = archetype;
121
+ const positionX = columns.positionX;
122
+ const positionY = columns.positionY;
123
+ const positionZ = columns.positionZ;
124
+ const velocityX = columns.velocityX;
125
+ const velocityY = columns.velocityY;
126
+ const velocityZ = columns.velocityZ;
127
+ for (let i = 0; i < rowCount; i++) {
128
+ positionX.set(i, positionX.get(i) + velocityX.get(i));
129
+ positionY.set(i, positionY.get(i) + velocityY.get(i));
130
+ positionZ.set(i, positionZ.get(i) + velocityZ.get(i));
131
+ }
132
+ }
133
+ };
134
+ const getVisibleEnabledPositions = () => {
135
+ const values = [];
136
+ const archetypes = store.queryArchetypes([
137
+ "positionX", "positionY", "positionZ",
138
+ "visible", "enabled",
139
+ ]);
140
+ for (const archetype of archetypes) {
141
+ const { columns, rowCount } = archetype;
142
+ const positionX = columns.positionX;
143
+ const positionY = columns.positionY;
144
+ const positionZ = columns.positionZ;
145
+ for (let i = 0; i < rowCount; i++) {
146
+ values.push(positionX.get(i), positionY.get(i), positionZ.get(i));
147
+ }
148
+ }
149
+ return values;
150
+ };
151
+ const cleanup = async () => { };
152
+ // Lock N to 1M to match ecs1's move tests so cache pressure is the
153
+ // same on both sides — otherwise the auto-tuner picks different N
154
+ // based on cold-probe time and the comparison becomes about cache,
155
+ // not code. See ecs1-perf.ts for the matching note.
156
+ return { setup, run, cleanup, getVisibleEnabledPositions, type: "move", startN: 1_000_000 };
157
+ };
158
+ export const ecs2 = {
159
+ create: create(),
160
+ move_column: createMoveParticlesPerformanceTest(),
161
+ };
162
+ //# sourceMappingURL=ecs2-perf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecs2-perf.js","sourceRoot":"","sources":["../../src/perftest/ecs2-perf.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAGpD,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,gCAAgC;AAEhC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE;QACR,KAAK,EAAE,GAAG,CAAC,MAAM;QACjB,OAAO,EAAE,IAAI,CAAC,MAAM;QACpB,IAAI,EAAE,GAAG,CAAC,MAAM;QAChB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,OAAO,EAAE,IAAI,CAAC,MAAM;KACvB;IACD,UAAU,EAAE;QACR,cAAc,EAAE;YACZ,OAAO,EAAE,SAAS,EAAE,MAAM;YAC1B,WAAW,EAAE,WAAW,EAAE,WAAW;YACrC,WAAW,EAAE,WAAW,EAAE,WAAW;YACrC,SAAS;SACZ;QACD,gBAAgB,EAAE;YACd,OAAO,EAAE,SAAS,EAAE,MAAM;YAC1B,WAAW,EAAE,WAAW,EAAE,WAAW;YACrC,WAAW,EAAE,WAAW,EAAE,WAAW;SACxC;QACD,eAAe,EAAE;YACb,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,WAAW,EAAE,WAAW;YACrC,WAAW,EAAE,WAAW,EAAE,WAAW;YACrC,SAAS;SACZ;QACD,iBAAiB,EAAE;YACf,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,WAAW,EAAE,WAAW;YACrC,WAAW,EAAE,WAAW,EAAE,WAAW;SACxC;KACJ;CACJ,CAAC,CAAC;AAIH,uEAAuE;AACvE,yEAAyE;AACzE,wCAAwC;AAExC,SAAS,OAAO,CAAC,KAAoB,EAAE,KAAa;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG;QACf,KAAK,CAAC,UAAU,CAAC,cAAc;QAC/B,KAAK,CAAC,UAAU,CAAC,eAAe;QAChC,KAAK,CAAC,UAAU,CAAC,gBAAgB;QACjC,KAAK,CAAC,UAAU,CAAC,iBAAiB;KACnB,CAAC;IACpB,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;QACjE,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC;gBACR,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,EAAE;gBACR,SAAS,EAAE,CAAC,GAAG,CAAC;gBAChB,SAAS,EAAE,CAAC,GAAG,CAAC;gBAChB,SAAS,EAAE,CAAC,GAAG,CAAC;gBAChB,SAAS,EAAE,CAAC,CAAC;gBACb,SAAS,EAAE,CAAC,CAAC;gBACb,SAAS,EAAE,CAAC,CAAC;aAChB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB,EAAE,KAAa;IACnD,MAAM,UAAU,GAAG;QACf,KAAK,CAAC,UAAU,CAAC,cAAc;QAC/B,KAAK,CAAC,UAAU,CAAC,eAAe;QAChC,KAAK,CAAC,UAAU,CAAC,gBAAgB;QACjC,KAAK,CAAC,UAAU,CAAC,iBAAiB;KACnB,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YACrB,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,CAAC,GAAG,CAAC;YAChB,SAAS,EAAE,CAAC,GAAG,CAAC;YAChB,SAAS,EAAE,CAAC,GAAG,CAAC;YAChB,SAAS,EAAE,CAAC,CAAC;YACb,SAAS,EAAE,CAAC,CAAC;YACb,SAAS,EAAE,CAAC,CAAC;SAChB,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,MAAM,MAAM,GAAG,GAAoB,EAAE;IACjC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,KAAK,EAAE,CAAS,EAAE,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACxC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC;IAChC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,kCAAkC,GAAG,GAAoB,EAAE;IAC7D,IAAI,KAAoB,CAAC;IACzB,MAAM,KAAK,GAAG,KAAK,EAAE,CAAS,EAAE,EAAE;QAC9B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC;YACrC,WAAW,EAAE,WAAW,EAAE,WAAW;YACrC,WAAW,EAAE,WAAW,EAAE,WAAW;YACrC,SAAS,EAAE,SAAS;SACd,CAAC,CAAC;QACZ,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;YACxC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IACF,MAAM,0BAA0B,GAAG,GAAa,EAAE;QAC9C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC;YACrC,WAAW,EAAE,WAAW,EAAE,WAAW;YACrC,SAAS,EAAE,SAAS;SACd,CAAC,CAAC;QACZ,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;YACxC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC;IAChC,mEAAmE;IACnE,kEAAkE;IAClE,mEAAmE;IACnE,oDAAoD;IACpD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,0BAA0B,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAChG,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG;IAChB,MAAM,EAAE,MAAM,EAAE;IAChB,WAAW,EAAE,kCAAkC,EAAE;CACpD,CAAC"}
@@ -1,12 +1,17 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
2
  import * as vanilla_tests from "./vanilla-perf.js";
3
- import * as ecs_tests from "./ecs-perf.js";
3
+ import * as horizon_tests from "./horizon-perf.js";
4
+ import * as ecs1_tests from "./ecs1-perf.js";
5
+ import * as ecs2_tests from "./ecs2-perf.js";
6
+ import * as typed_buffer_tests from "./typed-buffer-perf.js";
4
7
  import { runTests } from "./perf-test.js";
5
8
  export function run() {
6
9
  runTests({
7
- ...ecs_tests,
10
+ ...ecs1_tests,
11
+ ...ecs2_tests,
8
12
  ...vanilla_tests,
9
- // ...horizon_tests,
13
+ ...horizon_tests,
14
+ ...typed_buffer_tests,
10
15
  });
11
16
  }
12
17
  if (typeof globalThis.process === "object" && import.meta.url === `file://${process?.argv[1]}`) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/perftest/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,SAAS,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,UAAU,GAAG;IACjB,QAAQ,CAAC;QACP,GAAG,SAAS;QACZ,GAAG,aAAa;QAChB,oBAAoB;KACrB,CAAC,CAAC;AACL,CAAC;AAED,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/F,GAAG,EAAE,CAAC;AACR,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/perftest/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,UAAU,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,UAAU,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,UAAU,GAAG;IACjB,QAAQ,CAAC;QACP,GAAG,UAAU;QACb,GAAG,UAAU;QACb,GAAG,aAAa;QAChB,GAAG,aAAa;QAChB,GAAG,kBAAkB;KACtB,CAAC,CAAC;AACL,CAAC;AAED,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/F,GAAG,EAAE,CAAC;AACR,CAAC"}
@@ -14,5 +14,12 @@ export interface PerformanceTest {
14
14
  getVisibleEnabledPositions?: () => number[];
15
15
  type: "create" | "move";
16
16
  cleanup: () => Promise<void>;
17
+ /**
18
+ * Optional starting `n` for the auto-tuner. Tests whose per-iteration cost
19
+ * is known to be very high at the default `n` should set this lower so the
20
+ * harness doesn't waste a probe attempt at the default before scaling down.
21
+ * Auto-tune may still adjust this upward or downward as usual.
22
+ */
23
+ startN?: number;
17
24
  }
18
25
  export declare function runTests(testSuites: Record<string, Record<string, PerformanceTest>>): Promise<void>;
@@ -55,16 +55,25 @@ export async function runTests(testSuites) {
55
55
  }
56
56
  // console.log(JSON.stringify(finalPositions));
57
57
  }
58
- const n = test.getVisibleEnabledPositions ? 100_000 : 100_000;
59
- await test.setup(n);
58
+ // Auto-tune n so each measured iteration falls in TARGET_BAND.
59
+ // Tests already in band keep their starting n. Tests can override
60
+ // the seed via `startN` when they know their per-iter cost is far
61
+ // from the default.
62
+ const n = await tuneN(test, test.startN ?? 100_000);
63
+ garbageCollect();
64
+ // Warmup so V8 has fully optimized before any sample is recorded.
65
+ const warmupEnd = getTime() + WARMUP_MS;
66
+ while (getTime() < warmupEnd) {
67
+ test.run();
68
+ }
60
69
  garbageCollect();
61
70
  const baselineMemory = getMemory();
62
71
  const timeStart = getTime();
63
72
  // only run for 1 second
64
- while (getTime() - timeStart < 100) {
73
+ while (getTime() - timeStart < 1000) {
65
74
  const result = runOnce(test.run, test);
66
75
  result.memoryKb -= baselineMemory;
67
- testResults.push({ ...result, flops: n * typeToFlops[test.type] });
76
+ testResults.push({ ...result, flops: n * typeToFlops[test.type], n });
68
77
  }
69
78
  await test.cleanup();
70
79
  garbageCollect();
@@ -86,6 +95,7 @@ export async function runTests(testSuites) {
86
95
  const totalFlops = testResults.reduce((a, b) => a + b.flops, 0);
87
96
  const averageFlopsPerSecond = (totalFlops * 1000) / totalTime;
88
97
  tableValues[`${display(suite)}:${display(name)}`] = {
98
+ N: testResults[0]?.n ?? 0,
89
99
  Passes: memoryKb.length,
90
100
  // 'Mem Min (Mb)': Math.min(...memoryKb).toFixed(2),
91
101
  // 'Mem Max (Mb)': Math.max(...memoryKb).toFixed(2),
@@ -113,12 +123,64 @@ export async function runTests(testSuites) {
113
123
  }
114
124
  }
115
125
  }
126
+ // Browsers without cross-origin isolation clamp performance.now() to ~0.1ms
127
+ // resolution, so very fast operations register as 0ms. For move tests we
128
+ // inner-loop until the elapsed time exceeds this threshold and report the
129
+ // per-iteration average. Create tests are not inner-looped because some
130
+ // allocate WASM-backed memory that is not reclaimed between calls.
131
+ const MIN_SAMPLE_MS = 2;
132
+ // Target per-iteration time band. Tests faster than the lower bound get
133
+ // their n scaled up so each call does meaningful work and dominates
134
+ // timing-call overhead. Tests slower than the upper bound get their n
135
+ // scaled down so we collect enough samples within the 1s budget. Setting
136
+ // TARGET_MAX_MS conservatively (250ms) keeps moderate-cost tests
137
+ // (ecs1:create at ~65ms, horizon:create at ~200ms) at their original n;
138
+ // only pathologically slow tests get down-scaled.
139
+ const TARGET_MIN_MS = 0.5;
140
+ const TARGET_MAX_MS = 250;
141
+ const MIN_AUTO_N = 100;
142
+ const MAX_AUTO_N = 1_000_000;
143
+ const WARMUP_MS = 50;
144
+ async function tuneN(test, startN) {
145
+ let n = startN;
146
+ for (let attempt = 0; attempt < 4; attempt++) {
147
+ await test.setup(n);
148
+ const probe = runOnce(test.run, test);
149
+ const probeMs = Math.max(probe.timeMs, 0.001);
150
+ if (probeMs >= TARGET_MIN_MS && probeMs <= TARGET_MAX_MS) {
151
+ return n;
152
+ }
153
+ const target = (TARGET_MIN_MS + TARGET_MAX_MS) / 2;
154
+ const ratio = target / probeMs;
155
+ const scaled = Math.round(n * ratio);
156
+ const newN = Math.max(MIN_AUTO_N, Math.min(MAX_AUTO_N, scaled));
157
+ if (newN === n) {
158
+ return n;
159
+ }
160
+ await test.cleanup();
161
+ n = newN;
162
+ }
163
+ return n;
164
+ }
116
165
  function runOnce(fn, test) {
117
166
  const start = getTime();
118
- const result = fn();
119
- const end = getTime();
167
+ let result;
168
+ let iterations = 0;
169
+ let now = start;
170
+ if (test.type === "move") {
171
+ do {
172
+ result = fn();
173
+ iterations++;
174
+ now = getTime();
175
+ } while (now - start < MIN_SAMPLE_MS);
176
+ }
177
+ else {
178
+ result = fn();
179
+ iterations = 1;
180
+ now = getTime();
181
+ }
120
182
  const after = getMemory();
121
- const timeMs = end - start;
183
+ const timeMs = (now - start) / iterations;
122
184
  return { memoryKb: after, timeMs, result };
123
185
  }
124
186
  //# sourceMappingURL=perf-test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"perf-test.js","sourceRoot":"","sources":["../../src/perftest/perf-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"perf-test.js","sourceRoot":"","sources":["../../src/perftest/perf-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { PerformanceTest } from "./perf-test.js";
2
+ export declare const typed_buffer: {
3
+ number_get_set: PerformanceTest;
4
+ array_get: PerformanceTest;
5
+ struct_get: PerformanceTest;
6
+ struct_set: PerformanceTest;
7
+ struct_round_trip: PerformanceTest;
8
+ };
@@ -0,0 +1,133 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { createNumberBuffer } from "../typed-buffer/create-number-buffer.js";
3
+ import { createArrayBuffer } from "../typed-buffer/create-array-buffer.js";
4
+ import { createStructBuffer } from "../typed-buffer/create-struct-buffer.js";
5
+ import { F32 } from "../math/f32/index.js";
6
+ const Vec3Schema = {
7
+ type: "object",
8
+ properties: {
9
+ x: F32.schema,
10
+ y: F32.schema,
11
+ z: F32.schema,
12
+ },
13
+ required: ["x", "y", "z"],
14
+ };
15
+ // number buffer get+set sweep — direct typed-array baseline through TypedBuffer.
16
+ const numberBufferGetSet = () => {
17
+ let buffer;
18
+ let count = 0;
19
+ let sink = 0;
20
+ const setup = async (n) => {
21
+ count = n;
22
+ buffer = createNumberBuffer(F32.schema, n);
23
+ for (let i = 0; i < n; i++) {
24
+ buffer.set(i, i + 1);
25
+ }
26
+ };
27
+ const run = () => {
28
+ let total = 0;
29
+ for (let i = 0; i < count; i++) {
30
+ total += buffer.get(i);
31
+ }
32
+ sink ^= total | 0;
33
+ for (let i = 0; i < count; i++) {
34
+ buffer.set(i, buffer.get(i) + 1);
35
+ }
36
+ };
37
+ const cleanup = async () => { sink = 0; };
38
+ return { setup, run, cleanup, type: "move" };
39
+ };
40
+ // array buffer get+set with object payloads — non-typed-array baseline.
41
+ const arrayBufferGetSet = () => {
42
+ let buffer;
43
+ let count = 0;
44
+ let sink = 0;
45
+ const setup = async (n) => {
46
+ count = n;
47
+ buffer = createArrayBuffer(Vec3Schema, n);
48
+ for (let i = 0; i < n; i++) {
49
+ buffer.set(i, { x: i + 1, y: i + 1, z: i + 1 });
50
+ }
51
+ };
52
+ const run = () => {
53
+ let total = 0;
54
+ for (let i = 0; i < count; i++) {
55
+ const v = buffer.get(i);
56
+ total += v.x + v.y + v.z;
57
+ }
58
+ sink ^= total | 0;
59
+ };
60
+ const cleanup = async () => { sink = 0; };
61
+ return { setup, run, cleanup, type: "move" };
62
+ };
63
+ // struct_get — read every element and accumulate a sink to defeat DCE.
64
+ const structBufferGet = () => {
65
+ let buffer;
66
+ let count = 0;
67
+ let sink = 0;
68
+ const setup = async (n) => {
69
+ count = n;
70
+ buffer = createStructBuffer(Vec3Schema, n);
71
+ for (let i = 0; i < n; i++) {
72
+ buffer.set(i, { x: i + 1, y: i + 2, z: i + 3 });
73
+ }
74
+ };
75
+ const run = () => {
76
+ let total = 0;
77
+ for (let i = 0; i < count; i++) {
78
+ const v = buffer.get(i);
79
+ total += v.x + v.y + v.z;
80
+ }
81
+ sink ^= total | 0;
82
+ };
83
+ const cleanup = async () => { sink = 0; };
84
+ return { setup, run, cleanup, type: "move" };
85
+ };
86
+ // struct_set — write every element from a fixed literal.
87
+ const structBufferSet = () => {
88
+ let buffer;
89
+ let count = 0;
90
+ const literal = { x: 1, y: 2, z: 3 };
91
+ const setup = async (n) => {
92
+ count = n;
93
+ buffer = createStructBuffer(Vec3Schema, n);
94
+ };
95
+ const run = () => {
96
+ for (let i = 0; i < count; i++) {
97
+ buffer.set(i, literal);
98
+ }
99
+ };
100
+ const cleanup = async () => { };
101
+ return { setup, run, cleanup, type: "move" };
102
+ };
103
+ // struct_round_trip — get, mutate, set. Mirrors the per-frame ECS pattern.
104
+ const structBufferRoundTrip = () => {
105
+ let buffer;
106
+ let count = 0;
107
+ const setup = async (n) => {
108
+ count = n;
109
+ buffer = createStructBuffer(Vec3Schema, n);
110
+ for (let i = 0; i < n; i++) {
111
+ buffer.set(i, { x: i + 1, y: i + 1, z: i + 1 });
112
+ }
113
+ };
114
+ const run = () => {
115
+ for (let i = 0; i < count; i++) {
116
+ const v = buffer.get(i);
117
+ v.x += 1;
118
+ v.y += 1;
119
+ v.z += 1;
120
+ buffer.set(i, v);
121
+ }
122
+ };
123
+ const cleanup = async () => { };
124
+ return { setup, run, cleanup, type: "move" };
125
+ };
126
+ export const typed_buffer = {
127
+ number_get_set: numberBufferGetSet(),
128
+ array_get: arrayBufferGetSet(),
129
+ struct_get: structBufferGet(),
130
+ struct_set: structBufferSet(),
131
+ struct_round_trip: structBufferRoundTrip(),
132
+ };
133
+ //# sourceMappingURL=typed-buffer-perf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-buffer-perf.js","sourceRoot":"","sources":["../../src/perftest/typed-buffer-perf.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
+ import { Data } from "../../data.js";
1
2
  import { Schema } from "../../schema/index.js";
2
- import type { ActionError } from "./action-error.js";
3
- export type Action<S extends Schema | false = Schema> = {
3
+ type ParametersFromSchemas<P extends readonly Schema[]> = {
4
+ [K in keyof P]: P[K] extends Schema ? Schema.ToType<P[K]> : never;
5
+ };
6
+ export type Action<P extends readonly Schema[] = readonly Schema[]> = {
4
7
  description: string;
5
- schema: S;
6
- execute: Schema.ToType<S> extends void ? (() => Promise<void | ActionError> | void) : ((state: Schema.ToType<S>) => Promise<void | ActionError> | void);
8
+ parameters: P;
9
+ execute: (...input: ParametersFromSchemas<P>) => Promise<void | Data> | Data | void;
7
10
  };
11
+ export {};
@@ -1,5 +1,6 @@
1
1
  import { Observe } from "../../observe/index.js";
2
2
  import { Schema } from "../../schema/index.js";
3
+ import { Data } from "../../data.js";
3
4
  import { AgenticService } from "./agentic-service.js";
4
5
  /** State declaration: kind + schema for value + description */
5
6
  type StateDeclaration<S extends Schema = Schema> = {
@@ -49,5 +50,8 @@ export type ImplementationFromDeclarations<D extends Declarations> = {
49
50
  type: "link";
50
51
  } ? AgenticService | Observe<AgenticService> : never;
51
52
  };
52
- type ExecuteFromParameters<P extends readonly Schema[]> = P extends readonly [] ? (() => Promise<void | AgenticService.ActionError> | void) : P extends readonly [infer S extends Schema, ...readonly Schema[]] ? ((input: Schema.ToType<S>) => Promise<void | AgenticService.ActionError> | void) : never;
53
+ type ParametersFromSchemas<P extends readonly Schema[]> = {
54
+ [K in keyof P]: P[K] extends Schema ? Schema.ToType<P[K]> : never;
55
+ };
56
+ type ExecuteFromParameters<P extends readonly Schema[]> = (...input: ParametersFromSchemas<P>) => Promise<void | Data> | Data | void;
53
57
  export {};
@@ -26,7 +26,7 @@ export function create(config) {
26
26
  actionKeys.push(key);
27
27
  actionMeta[key] = {
28
28
  description: entry.description,
29
- schema: entry.parameters[0] ?? false,
29
+ parameters: [...entry.parameters],
30
30
  execute: implementation[key],
31
31
  };
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/service/agentic-service/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/service/agentic-service/create.ts"],"names":[],"mappings":"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"}
@@ -404,7 +404,7 @@ describe("AgenticService.create", () => {
404
404
  const actions = await Observe.toPromise(service.actions);
405
405
  expect(actions).toHaveProperty("heal");
406
406
  expect(actions.heal.description).toBe("Heal player");
407
- expect(actions.heal.schema).toEqual({ type: "number" });
407
+ expect(actions.heal.parameters).toEqual([{ type: "number" }]);
408
408
  expect(typeof actions.heal.execute).toBe("function");
409
409
  });
410
410
  it("should omit disabled actions", async () => {