semiotic 3.7.5 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/CLAUDE.md +54 -12
  2. package/README.md +121 -27
  3. package/agent-skill/semiotic-charts/SKILL.md +146 -0
  4. package/ai/cli.js +133 -45
  5. package/ai/componentMetadata.cjs +6 -1
  6. package/ai/dist/mcp-server.js +1651 -154
  7. package/ai/examples.md +174 -0
  8. package/ai/schema.json +2733 -536
  9. package/ai/surface-manifest.json +200 -0
  10. package/ai/system-prompt.md +18 -3
  11. package/dist/components/CategoryColors.d.ts +1 -1
  12. package/dist/components/ChartContainer.d.ts +91 -0
  13. package/dist/components/ChartGrid.d.ts +11 -1
  14. package/dist/components/CircularBrush.d.ts +61 -0
  15. package/dist/components/ContextLayout.d.ts +5 -1
  16. package/dist/components/DirectManipulationControl.d.ts +63 -0
  17. package/dist/components/LinkedCharts.d.ts +3 -1
  18. package/dist/components/MobileAnnotationCalloutList.d.ts +13 -0
  19. package/dist/components/MobileChartContainer.d.ts +51 -0
  20. package/dist/components/MobileStandardControls.d.ts +68 -0
  21. package/dist/components/SmallMultipleChart.d.ts +84 -0
  22. package/dist/components/Tooltip/FlippingTooltip.d.ts +21 -0
  23. package/dist/components/ai/ChartRecipe.d.ts +16 -0
  24. package/dist/components/ai/IntentMark.d.ts +15 -0
  25. package/dist/components/ai/chartCapabilities.d.ts +8 -1
  26. package/dist/components/ai/chartCapabilityTypes.d.ts +26 -1
  27. package/dist/components/ai/chartClinic.d.ts +91 -0
  28. package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
  29. package/dist/components/ai/chartRecipes.d.ts +278 -0
  30. package/dist/components/ai/dataPitfallsBridge.d.ts +102 -0
  31. package/dist/components/ai/describeChart.d.ts +7 -0
  32. package/dist/components/ai/describeRecipeChart.d.ts +16 -0
  33. package/dist/components/ai/generativeChart.d.ts +28 -3
  34. package/dist/components/ai/intentManifest.d.ts +62 -0
  35. package/dist/components/ai/navigationTree.d.ts +3 -0
  36. package/dist/components/ai/observedSceneAudit.d.ts +72 -0
  37. package/dist/components/ai/readerGrounding.d.ts +83 -0
  38. package/dist/components/ai/recipeCapability.d.ts +8 -0
  39. package/dist/components/ai/recipeNavigation.d.ts +13 -0
  40. package/dist/components/ai/recipeSemantics.d.ts +11 -0
  41. package/dist/components/ai/repairChartConfig.d.ts +9 -0
  42. package/dist/components/ai/suggestCharts.d.ts +11 -1
  43. package/dist/components/charts/custom/GeoCustomChart.d.ts +48 -0
  44. package/dist/components/charts/custom/NetworkCustomChart.d.ts +8 -2
  45. package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
  46. package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
  47. package/dist/components/charts/geo/DistanceCartogram.d.ts +1 -1
  48. package/dist/components/charts/geo/FlowMap.d.ts +1 -1
  49. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +1 -1
  50. package/dist/components/charts/geo/index.d.ts +2 -0
  51. package/dist/components/charts/index.d.ts +29 -1
  52. package/dist/components/charts/network/ChordDiagram.d.ts +1 -1
  53. package/dist/components/charts/network/CirclePack.d.ts +1 -1
  54. package/dist/components/charts/network/ForceDirectedGraph.d.ts +15 -5
  55. package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
  56. package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
  57. package/dist/components/charts/network/SankeyDiagram.d.ts +1 -1
  58. package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
  59. package/dist/components/charts/network/Treemap.d.ts +1 -1
  60. package/dist/components/charts/network/useForceLayout.d.ts +17 -0
  61. package/dist/components/charts/ordinal/BarChart.d.ts +1 -1
  62. package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
  63. package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
  64. package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
  65. package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
  66. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +1 -1
  67. package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
  68. package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
  69. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
  70. package/dist/components/charts/ordinal/StackedBarChart.d.ts +1 -1
  71. package/dist/components/charts/ordinal/SwarmPlot.d.ts +1 -1
  72. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
  73. package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
  74. package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
  75. package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
  76. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +47 -0
  77. package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
  78. package/dist/components/charts/physics/EventDropChart.d.ts +53 -0
  79. package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
  80. package/dist/components/charts/physics/GaltonBoardChart.d.ts +66 -0
  81. package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
  82. package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
  83. package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
  84. package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
  85. package/dist/components/charts/physics/PhysicsCustomChart.d.ts +120 -0
  86. package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
  87. package/dist/components/charts/physics/PhysicsPileChart.d.ts +53 -0
  88. package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
  89. package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
  90. package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
  91. package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
  92. package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
  93. package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
  94. package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
  95. package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
  96. package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
  97. package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
  98. package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
  99. package/dist/components/charts/physics/gauntletController.d.ts +73 -0
  100. package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
  101. package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
  102. package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
  103. package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
  104. package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
  105. package/dist/components/charts/physics/physicsChartShared.d.ts +41 -0
  106. package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
  107. package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
  108. package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
  109. package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
  110. package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
  111. package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
  112. package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
  113. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
  114. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
  115. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +9 -1
  116. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
  117. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
  118. package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
  119. package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
  120. package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
  121. package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
  122. package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
  123. package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
  124. package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
  125. package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
  126. package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
  127. package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
  128. package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
  129. package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
  130. package/dist/components/charts/shared/colorContrast.d.ts +3 -0
  131. package/dist/components/charts/shared/colorUtils.d.ts +16 -1
  132. package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +4 -0
  133. package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
  134. package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
  135. package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
  136. package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
  137. package/dist/components/charts/shared/hooks.d.ts +28 -5
  138. package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
  139. package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
  140. package/dist/components/charts/shared/streamPropsHelpers.d.ts +12 -2
  141. package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
  142. package/dist/components/charts/shared/types.d.ts +49 -1
  143. package/dist/components/charts/shared/useChartSetup.d.ts +9 -2
  144. package/dist/components/charts/shared/useCustomChartSetup.d.ts +14 -5
  145. package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
  146. package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +1 -1
  147. package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
  148. package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
  149. package/dist/components/charts/shared/validationMap.d.ts +0 -11
  150. package/dist/components/charts/xy/AreaChart.d.ts +1 -1
  151. package/dist/components/charts/xy/BubbleChart.d.ts +1 -1
  152. package/dist/components/charts/xy/LineChart.d.ts +1 -1
  153. package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
  154. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
  155. package/dist/components/charts/xy/QuadrantChart.d.ts +1 -1
  156. package/dist/components/charts/xy/Scatterplot.d.ts +1 -1
  157. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
  158. package/dist/components/charts/xy/StackedAreaChart.d.ts +9 -4
  159. package/dist/components/controls/controlAudit.d.ts +24 -0
  160. package/dist/components/controls/controlContract.d.ts +57 -0
  161. package/dist/components/data/fromFlintChart.d.ts +74 -0
  162. package/dist/components/data/fromVegaLite.d.ts +27 -0
  163. package/dist/components/data/portability/index.d.ts +6 -3
  164. package/dist/components/data/portability/result.d.ts +52 -0
  165. package/dist/components/data/portability/spec.d.ts +31 -0
  166. package/dist/components/data/portability/vegaLite.d.ts +24 -6
  167. package/dist/components/export/chartConfig.d.ts +11 -0
  168. package/dist/components/realtime/types.d.ts +11 -0
  169. package/dist/components/recipes/annotationLayout.d.ts +29 -0
  170. package/dist/components/recipes/axisFixedForce.d.ts +119 -0
  171. package/dist/components/recipes/{gofishBoba.d.ts → boba.d.ts} +2 -2
  172. package/dist/components/recipes/cyclical.d.ts +39 -0
  173. package/dist/components/recipes/edgeRouter.d.ts +103 -0
  174. package/dist/components/recipes/forceLayout.d.ts +48 -0
  175. package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
  176. package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
  177. package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
  178. package/dist/components/recipes/gofishIR.d.ts +178 -132
  179. package/dist/components/recipes/gofishIRExamples.d.ts +30 -81
  180. package/dist/components/recipes/intervalLanes.d.ts +87 -0
  181. package/dist/components/recipes/intervals.d.ts +80 -0
  182. package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
  183. package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
  184. package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
  185. package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
  186. package/dist/components/recipes/networkAnalysis.d.ts +102 -0
  187. package/dist/components/recipes/networkLayouts.d.ts +83 -0
  188. package/dist/components/recipes/physics.d.ts +122 -0
  189. package/dist/components/recipes/physicsReference.d.ts +102 -0
  190. package/dist/components/recipes/processAggregates.d.ts +32 -0
  191. package/dist/components/recipes/processChrome.d.ts +67 -0
  192. package/dist/components/recipes/processJourney.d.ts +54 -0
  193. package/dist/components/recipes/processPhysics.d.ts +300 -0
  194. package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
  195. package/dist/components/recipes/radialCoords.d.ts +69 -0
  196. package/dist/components/recipes/random.d.ts +2 -0
  197. package/dist/components/recipes/recipeChrome.d.ts +91 -0
  198. package/dist/components/recipes/recipeGlyph.d.ts +42 -0
  199. package/dist/components/recipes/recipeLegend.d.ts +53 -1
  200. package/dist/components/recipes/recipeUtils.d.ts +52 -0
  201. package/dist/components/recipes/runs.d.ts +59 -0
  202. package/dist/components/recipes/tokenEncoding.d.ts +157 -0
  203. package/dist/components/recipes/tokenLayer.d.ts +79 -0
  204. package/dist/components/recipes/unitize.d.ts +108 -0
  205. package/dist/components/recipes/vector.d.ts +28 -0
  206. package/dist/components/recipes/waffle.d.ts +43 -0
  207. package/dist/components/semiotic-ai-core.d.ts +47 -0
  208. package/dist/components/semiotic-ai.d.ts +50 -8
  209. package/dist/components/semiotic-controls.d.ts +18 -0
  210. package/dist/components/semiotic-experimental.d.ts +38 -9
  211. package/dist/components/semiotic-geo.d.ts +11 -0
  212. package/dist/components/semiotic-network.d.ts +11 -0
  213. package/dist/components/semiotic-ordinal.d.ts +8 -0
  214. package/dist/components/semiotic-physics-matter.d.ts +10 -0
  215. package/dist/components/semiotic-physics-rapier.d.ts +9 -0
  216. package/dist/components/semiotic-physics.d.ts +56 -0
  217. package/dist/components/semiotic-realtime-core.d.ts +34 -0
  218. package/dist/components/semiotic-realtime-react.d.ts +10 -0
  219. package/dist/components/semiotic-realtime.d.ts +4 -30
  220. package/dist/components/semiotic-recipes-core.d.ts +92 -0
  221. package/dist/components/semiotic-recipes-react.d.ts +7 -0
  222. package/dist/components/semiotic-recipes.d.ts +4 -43
  223. package/dist/components/semiotic-server-edge.d.ts +8 -0
  224. package/dist/components/semiotic-server-node.d.ts +5 -0
  225. package/dist/components/semiotic-server.d.ts +2 -2
  226. package/dist/components/semiotic-themes-core.d.ts +53 -0
  227. package/dist/components/semiotic-themes-react.d.ts +4 -0
  228. package/dist/components/semiotic-themes.d.ts +6 -76
  229. package/dist/components/semiotic-utils-core.d.ts +46 -0
  230. package/dist/components/semiotic-utils-react.d.ts +5 -0
  231. package/dist/components/semiotic-utils.d.ts +3 -39
  232. package/dist/components/semiotic-xy.d.ts +8 -0
  233. package/dist/components/semiotic.d.ts +35 -7
  234. package/dist/components/server/animatedGif.d.ts +36 -0
  235. package/dist/components/server/renderEvidence.d.ts +1 -1
  236. package/dist/components/server/renderToStaticSVG.d.ts +3 -35
  237. package/dist/components/server/serverChartConfigShared.d.ts +17 -0
  238. package/dist/components/server/serverChartConfigs.d.ts +19 -9
  239. package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
  240. package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
  241. package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
  242. package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
  243. package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
  244. package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
  245. package/dist/components/server/staticGeo.d.ts +4 -0
  246. package/dist/components/server/staticLegend.d.ts +1 -1
  247. package/dist/components/server/staticNetwork.d.ts +8 -0
  248. package/dist/components/server/staticOrdinal.d.ts +11 -0
  249. package/dist/components/server/staticPhysics.d.ts +3 -0
  250. package/dist/components/server/staticSVGChrome.d.ts +110 -0
  251. package/dist/components/server/staticXY.d.ts +4 -0
  252. package/dist/components/store/ObservationStore.d.ts +3 -2
  253. package/dist/components/store/themeSerialization.d.ts +32 -0
  254. package/dist/components/store/useChartInterrogation.d.ts +9 -0
  255. package/dist/components/stream/AccessibleDataTable.d.ts +3 -13
  256. package/dist/components/stream/FocusRing.d.ts +4 -2
  257. package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
  258. package/dist/components/stream/GeoPipelineStore.d.ts +28 -0
  259. package/dist/components/stream/NetworkPipelineStore.d.ts +31 -26
  260. package/dist/components/stream/NetworkSVGOverlay.d.ts +4 -1
  261. package/dist/components/stream/OrdinalPipelineStore.d.ts +46 -2
  262. package/dist/components/stream/PipelineStore.d.ts +81 -170
  263. package/dist/components/stream/SceneGraph.d.ts +9 -1
  264. package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
  265. package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
  266. package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
  267. package/dist/components/stream/StreamXYFrame.d.ts +2 -18
  268. package/dist/components/stream/accessibleDataRows.d.ts +33 -0
  269. package/dist/components/stream/accessorUtils.d.ts +23 -10
  270. package/dist/components/stream/brushAccessibility.d.ts +25 -0
  271. package/dist/components/stream/canvasBackground.d.ts +24 -0
  272. package/dist/components/stream/canvasSetup.d.ts +4 -1
  273. package/dist/components/stream/customLayoutFailure.d.ts +33 -0
  274. package/dist/components/stream/customLayoutPalette.d.ts +19 -9
  275. package/dist/components/stream/frameThemeColors.d.ts +24 -0
  276. package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
  277. package/dist/components/stream/geoCartogram.d.ts +17 -0
  278. package/dist/components/stream/geoCustomLayout.d.ts +59 -0
  279. package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
  280. package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
  281. package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
  282. package/dist/components/stream/geoTypes.d.ts +56 -7
  283. package/dist/components/stream/glyphDef.d.ts +98 -0
  284. package/dist/components/stream/hitTarget.d.ts +170 -0
  285. package/dist/components/stream/hoverUtils.d.ts +3 -0
  286. package/dist/components/stream/keyboardNav.d.ts +4 -1
  287. package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
  288. package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +57 -0
  289. package/dist/components/stream/networkBezier.d.ts +10 -0
  290. package/dist/components/stream/networkColorAccessors.d.ts +49 -0
  291. package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
  292. package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
  293. package/dist/components/stream/networkFramePaint.d.ts +43 -0
  294. package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
  295. package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
  296. package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
  297. package/dist/components/stream/networkTypes.d.ts +76 -5
  298. package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
  299. package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
  300. package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
  301. package/dist/components/stream/ordinalDomain.d.ts +38 -0
  302. package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +12 -0
  303. package/dist/components/stream/ordinalPulse.d.ts +10 -0
  304. package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
  305. package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
  306. package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
  307. package/dist/components/stream/ordinalTypes.d.ts +40 -8
  308. package/dist/components/stream/paintNeeds.d.ts +31 -0
  309. package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
  310. package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
  311. package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
  312. package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
  313. package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
  314. package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
  315. package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
  316. package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
  317. package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
  318. package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
  319. package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
  320. package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
  321. package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
  322. package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
  323. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +84 -0
  324. package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
  325. package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +72 -0
  326. package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
  327. package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
  328. package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
  329. package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
  330. package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
  331. package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
  332. package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
  333. package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
  334. package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
  335. package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
  336. package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +302 -0
  337. package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
  338. package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
  339. package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
  340. package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
  341. package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +9 -0
  342. package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
  343. package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
  344. package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +16 -0
  345. package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
  346. package/dist/components/stream/pipelineConfig.d.ts +177 -0
  347. package/dist/components/stream/pipelineDecay.d.ts +20 -2
  348. package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
  349. package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
  350. package/dist/components/stream/pipelinePulse.d.ts +16 -2
  351. package/dist/components/stream/pipelineRibbons.d.ts +41 -0
  352. package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
  353. package/dist/components/stream/pipelineStoreUpdateResults.d.ts +12 -0
  354. package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
  355. package/dist/components/stream/pipelineTransitions.d.ts +2 -0
  356. package/dist/components/stream/pipelineUpdateContract.d.ts +62 -0
  357. package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
  358. package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
  359. package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
  360. package/dist/components/stream/sceneRevisionDiagnostics.d.ts +18 -0
  361. package/dist/components/stream/streamStoreSync.d.ts +37 -0
  362. package/dist/components/stream/types.d.ts +135 -7
  363. package/dist/components/stream/useFrame.d.ts +21 -2
  364. package/dist/components/stream/useHydration.d.ts +6 -0
  365. package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
  366. package/dist/components/stream/workerModuleUrl.d.ts +10 -0
  367. package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
  368. package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
  369. package/dist/components/stream/xyCrosshair.d.ts +11 -0
  370. package/dist/components/stream/xyDateTicks.d.ts +9 -0
  371. package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
  372. package/dist/components/stream/xySceneBuilders/types.d.ts +4 -4
  373. package/dist/controls.min.js +2 -0
  374. package/dist/controls.module.min.js +2 -0
  375. package/dist/forceLayoutWorker.js +1 -0
  376. package/dist/geo.min.js +1 -1
  377. package/dist/geo.module.min.js +1 -1
  378. package/dist/network.min.js +1 -1
  379. package/dist/network.module.min.js +1 -1
  380. package/dist/ordinal.min.js +1 -1
  381. package/dist/ordinal.module.min.js +1 -1
  382. package/dist/physics-matter.min.js +1 -0
  383. package/dist/physics-matter.module.min.js +1 -0
  384. package/dist/physics-rapier.min.js +1 -0
  385. package/dist/physics-rapier.module.min.js +1 -0
  386. package/dist/physics.min.js +2 -0
  387. package/dist/physics.module.min.js +2 -0
  388. package/dist/physicsWorker.js +1 -0
  389. package/dist/realtime.min.js +1 -1
  390. package/dist/realtime.module.min.js +1 -1
  391. package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
  392. package/dist/semiotic-ai-core.d.ts +47 -0
  393. package/dist/semiotic-ai-core.min.js +1 -0
  394. package/dist/semiotic-ai-core.module.min.js +1 -0
  395. package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
  396. package/dist/semiotic-ai.d.ts +50 -8
  397. package/dist/semiotic-ai.min.js +1 -1
  398. package/dist/semiotic-ai.module.min.js +1 -1
  399. package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
  400. package/dist/semiotic-controls.d.ts +18 -0
  401. package/dist/semiotic-data.min.js +1 -1
  402. package/dist/semiotic-data.module.min.js +1 -1
  403. package/dist/semiotic-experimental.d.ts +38 -9
  404. package/dist/semiotic-experimental.min.js +1 -1
  405. package/dist/semiotic-experimental.module.min.js +1 -1
  406. package/dist/semiotic-geo.d.ts +11 -0
  407. package/dist/semiotic-network.d.ts +11 -0
  408. package/dist/semiotic-ordinal.d.ts +8 -0
  409. package/dist/semiotic-physics-matter.d.ts +10 -0
  410. package/dist/semiotic-physics-rapier.d.ts +9 -0
  411. package/dist/semiotic-physics.d.ts +56 -0
  412. package/dist/semiotic-realtime-core.d.ts +34 -0
  413. package/dist/semiotic-realtime-core.min.js +1 -0
  414. package/dist/semiotic-realtime-core.module.min.js +1 -0
  415. package/dist/semiotic-realtime-react.d.ts +10 -0
  416. package/dist/semiotic-realtime-react.min.js +2 -0
  417. package/dist/semiotic-realtime-react.module.min.js +2 -0
  418. package/dist/semiotic-realtime.d.ts +4 -30
  419. package/dist/semiotic-recipes-core.d.ts +92 -0
  420. package/dist/semiotic-recipes-core.min.js +1 -0
  421. package/dist/semiotic-recipes-core.module.min.js +1 -0
  422. package/dist/semiotic-recipes-react.d.ts +7 -0
  423. package/dist/semiotic-recipes-react.min.js +2 -0
  424. package/dist/semiotic-recipes-react.module.min.js +2 -0
  425. package/dist/semiotic-recipes.d.ts +4 -43
  426. package/dist/semiotic-recipes.min.js +1 -1
  427. package/dist/semiotic-recipes.module.min.js +1 -1
  428. package/dist/semiotic-server-edge.d.ts +8 -0
  429. package/dist/semiotic-server-edge.min.js +1 -0
  430. package/dist/semiotic-server-edge.module.min.js +1 -0
  431. package/dist/semiotic-server-node.d.ts +5 -0
  432. package/dist/semiotic-server-node.min.js +1 -0
  433. package/dist/semiotic-server-node.module.min.js +1 -0
  434. package/dist/semiotic-server.d.ts +2 -2
  435. package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
  436. package/dist/semiotic-themes-core.d.ts +53 -0
  437. package/dist/semiotic-themes-core.min.js +1 -0
  438. package/dist/semiotic-themes-core.module.min.js +1 -0
  439. package/dist/semiotic-themes-react.d.ts +4 -0
  440. package/dist/semiotic-themes-react.min.js +2 -0
  441. package/dist/semiotic-themes-react.module.min.js +2 -0
  442. package/dist/semiotic-themes.d.ts +6 -76
  443. package/dist/semiotic-themes.min.js +1 -2
  444. package/dist/semiotic-themes.module.min.js +1 -2
  445. package/dist/semiotic-utils-core.d.ts +46 -0
  446. package/dist/semiotic-utils-core.min.js +1 -0
  447. package/dist/semiotic-utils-core.module.min.js +1 -0
  448. package/dist/semiotic-utils-react.d.ts +5 -0
  449. package/dist/semiotic-utils-react.min.js +2 -0
  450. package/dist/semiotic-utils-react.module.min.js +2 -0
  451. package/dist/semiotic-utils.d.ts +3 -39
  452. package/dist/semiotic-utils.min.js +1 -2
  453. package/dist/semiotic-utils.module.min.js +1 -2
  454. package/dist/semiotic-value.min.js +1 -1
  455. package/dist/semiotic-value.module.min.js +1 -1
  456. package/dist/semiotic-xy.d.ts +8 -0
  457. package/dist/semiotic.d.ts +35 -7
  458. package/dist/semiotic.min.js +1 -1
  459. package/dist/semiotic.module.min.js +1 -1
  460. package/dist/server.min.js +1 -1
  461. package/dist/server.module.min.js +1 -1
  462. package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
  463. package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
  464. package/dist/xy.min.js +1 -1
  465. package/dist/xy.module.min.js +1 -1
  466. package/package.json +239 -87
  467. package/spec/README.md +152 -0
  468. package/spec/bindings/README.md +35 -0
  469. package/spec/bindings/vega-lite.mjs +112 -0
  470. package/spec/v0.1/annotation-provenance.schema.json +127 -0
  471. package/spec/v0.1/audience-profile.schema.json +67 -0
  472. package/spec/v0.1/chart-capability.schema.json +186 -0
  473. package/dist/components/recipes/gofish.d.ts +0 -207
  474. package/dist/components/recipes/gofishInterpreter.d.ts +0 -52
  475. package/dist/components/recipes/gofishLambdas.d.ts +0 -145
  476. package/dist/semiotic-ai-semiotic-ai-u954ylUn.js +0 -2
  477. package/dist/semiotic-ai-statisticalOverlays-CU7jW05Q.js +0 -1
  478. package/dist/semiotic-semiotic-BmrYbi99.js +0 -2
  479. package/dist/semiotic-statisticalOverlays-IjZw8Lsu.js +0 -1
  480. package/dist/xy-semiotic-xy-Dufu3D0-.js +0 -2
  481. package/dist/xy-statisticalOverlays-3Ni9bRph.js +0 -1
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Public types for StreamPhysicsFrame — region effects, body semantics,
3
+ * frame props / handle. Kept separate so region runtime + canvas helpers
4
+ * can import types without pulling the full React frame module.
5
+ */
6
+ import type * as React from "react";
7
+ import type { FrameGraphicsProp, FrameMargin, FrameScheduler } from "../useFrame";
8
+ import type { Style } from "../types";
9
+ import type { Datum } from "../../charts/shared/datumTypes";
10
+ import type { OnObservationCallback } from "../../store/ObservationStore";
11
+ import type { AutoPlaceAnnotations } from "../../recipes/annotationLayout";
12
+ import type { AnnotationContext } from "../../realtime/types";
13
+ import type { GradientLegendConfig, LegendGroup, LegendLayout } from "../../types/legendTypes";
14
+ import type { FocusRingProps } from "../FocusRing";
15
+ import type { PhysicsBodyState, PhysicsColliderBodyFilter, PhysicsColliderShape } from "./PhysicsKernel";
16
+ import type { PhysicsPipelineConfig, PhysicsPipelineControlSurface, PhysicsPipelineStore, PhysicsPipelineTickResult, PhysicsQueuedSpawn, PhysicsSpawnPacingOptions, PhysicsSimulationState, PhysicsObservationEvent } from "./PhysicsPipelineStore";
17
+ import type { PhysicsController } from "./PhysicsControllers";
18
+ import type { PhysicsExecution } from "./PhysicsWorkerProtocol";
19
+ import type { StreamPhysicsPopOptions } from "./physicsBodyCanvas";
20
+ export interface PhysicsBodySelection {
21
+ isActive?: boolean;
22
+ predicate?: (body: PhysicsBodyState) => boolean;
23
+ }
24
+ export type StreamPhysicsRegionKind = "region" | "membrane" | "charge-gate" | "force-field" | "sink" | "source";
25
+ export interface StreamPhysicsRegionVector {
26
+ x?: number;
27
+ y?: number;
28
+ }
29
+ export interface StreamPhysicsBodyRegionState {
30
+ activeRegionIds: string[];
31
+ regionIds: string[];
32
+ charges: Record<string, unknown>;
33
+ attributes: Record<string, unknown>;
34
+ energy: number;
35
+ }
36
+ export interface StreamPhysicsRegionEffectContext {
37
+ body: PhysicsBodyState;
38
+ region: StreamPhysicsRegionEffect;
39
+ regionState: StreamPhysicsBodyRegionState;
40
+ }
41
+ export interface StreamPhysicsRegionEvent {
42
+ type: "region-enter" | "region-exit";
43
+ bodyId: string;
44
+ datum?: unknown;
45
+ observation: PhysicsObservationEvent;
46
+ region: StreamPhysicsRegionEffect;
47
+ regionState: StreamPhysicsBodyRegionState;
48
+ }
49
+ export interface StreamPhysicsRegionEffect {
50
+ /**
51
+ * Stable region id. This is used for observations, accessibility labels,
52
+ * body region state, and generated sensor collider ids.
53
+ */
54
+ id: string;
55
+ /**
56
+ * Visual/semantic intent. The physics behavior is controlled by the other
57
+ * properties; kind lets charts and agents describe the region correctly.
58
+ */
59
+ kind?: StreamPhysicsRegionKind;
60
+ label?: string;
61
+ description?: string;
62
+ shape: PhysicsColliderShape;
63
+ /**
64
+ * Add a solid collider with the same shape in addition to the sensor region.
65
+ * Defaults to false because information membranes normally tax or annotate
66
+ * bodies without hard-blocking them.
67
+ */
68
+ collider?: boolean | "solid" | "boundary";
69
+ /**
70
+ * Optional filter applied to generated region sensors and colliders. This is
71
+ * useful for permeable regions where one body class should observe or collide
72
+ * with a boundary while other bodies pass through.
73
+ */
74
+ bodyFilter?: PhysicsColliderBodyFilter;
75
+ /**
76
+ * Segment thickness used when `collider` is `"boundary"` for an AABB region.
77
+ */
78
+ colliderThickness?: number;
79
+ friction?: number;
80
+ restitution?: number;
81
+ /**
82
+ * The generated sensor collider id. Override only when coordinating with
83
+ * existing observations.
84
+ */
85
+ sensorId?: string;
86
+ binId?: string;
87
+ /**
88
+ * State attached to a body when it enters the region. `true` on a
89
+ * charge-gate means a charge value of 1.
90
+ */
91
+ charge?: boolean | number | string | ((context: StreamPhysicsRegionEffectContext) => unknown);
92
+ energyDelta?: number;
93
+ attributes?: Record<string, unknown> | ((context: StreamPhysicsRegionEffectContext) => Record<string, unknown>);
94
+ /**
95
+ * Continuous force applied while a body is inside the region. This is modeled
96
+ * as a per-frame impulse and currently runs on the sync execution path.
97
+ */
98
+ force?: StreamPhysicsRegionVector | ((context: StreamPhysicsRegionEffectContext) => StreamPhysicsRegionVector | null | undefined);
99
+ /**
100
+ * Linear damping applied while a body is inside the region. Values are
101
+ * per-second-ish coefficients and are intentionally lightweight.
102
+ */
103
+ damping?: number;
104
+ impulseOnEnter?: StreamPhysicsRegionVector | ((context: StreamPhysicsRegionEffectContext) => StreamPhysicsRegionVector | null | undefined);
105
+ impulseOnExit?: StreamPhysicsRegionVector | ((context: StreamPhysicsRegionEffectContext) => StreamPhysicsRegionVector | null | undefined);
106
+ bodyStyle?: Style | ((body: PhysicsBodyState, context: PhysicsBodyStyleContext) => Style);
107
+ /**
108
+ * Set to false to suppress generated keyboard/accessibility semantics.
109
+ * Pass a partial item to override the generated label/description/group.
110
+ */
111
+ semanticItem?: false | Partial<PhysicsSemanticItem>;
112
+ metadata?: unknown;
113
+ onEnter?: (event: StreamPhysicsRegionEvent) => void;
114
+ onExit?: (event: StreamPhysicsRegionEvent) => void;
115
+ }
116
+ export interface PhysicsBodyStyleContext {
117
+ selected: boolean;
118
+ simulationState: PhysicsSimulationState;
119
+ regionState?: StreamPhysicsBodyRegionState;
120
+ regions?: StreamPhysicsRegionEffect[];
121
+ }
122
+ export interface StreamPhysicsExecutionState {
123
+ execution: "sync" | "worker";
124
+ liveBodies: number;
125
+ queuedBodies: number;
126
+ reason?: string;
127
+ requested: PhysicsExecution;
128
+ }
129
+ export interface PhysicsSemanticItem {
130
+ bodyId?: string;
131
+ id?: string;
132
+ label: string;
133
+ description?: string;
134
+ datum?: unknown;
135
+ x: number;
136
+ y: number;
137
+ shape?: FocusRingProps["shape"];
138
+ width?: number;
139
+ height?: number;
140
+ pathData?: string;
141
+ group?: string;
142
+ }
143
+ export interface PhysicsBodySemanticItemContext {
144
+ index: number;
145
+ simulationState: PhysicsSimulationState;
146
+ }
147
+ export type PhysicsBodySemanticItemAccessor = (body: PhysicsBodyState, context: PhysicsBodySemanticItemContext) => false | null | undefined | Partial<PhysicsSemanticItem>;
148
+ export interface StreamPhysicsBodyForceContext {
149
+ body: PhysicsBodyState;
150
+ bodies: readonly PhysicsBodyState[];
151
+ index: number;
152
+ regionState?: StreamPhysicsBodyRegionState;
153
+ regions?: StreamPhysicsRegionEffect[];
154
+ simulationState: PhysicsSimulationState;
155
+ }
156
+ export type StreamPhysicsBodyForce = StreamPhysicsRegionVector | ((context: StreamPhysicsBodyForceContext) => StreamPhysicsRegionVector | null | undefined);
157
+ export interface PhysicsHoverData {
158
+ __semioticHoverData: true;
159
+ body: PhysicsBodyState;
160
+ data: unknown;
161
+ id: string;
162
+ type: "body";
163
+ x: number;
164
+ y: number;
165
+ }
166
+ export interface StreamPhysicsFrameProps {
167
+ accessibleTable?: boolean;
168
+ /**
169
+ * Canvas fill. When set, overrides the theme background unless
170
+ * `backgroundGraphics` already owns the backdrop. Pass `"transparent"`
171
+ * to composite over siblings (same contract as StreamXYFrame).
172
+ */
173
+ background?: string;
174
+ backgroundGraphics?: FrameGraphicsProp;
175
+ /**
176
+ * Optional rAF seam for deterministic frame-loop scheduling in tests.
177
+ * When omitted, the browser's requestAnimationFrame is used.
178
+ */
179
+ frameScheduler?: FrameScheduler;
180
+ /**
181
+ * Monotonic milliseconds used for frame deltas, semantic throttling,
182
+ * pop animations, and frame-originated observation timestamps. Inject a
183
+ * deterministic clock for replayable tests or evidence capture.
184
+ */
185
+ clock?: () => number;
186
+ bodySemanticItemLimit?: number;
187
+ bodySemanticItems?: boolean | PhysicsBodySemanticItemAccessor;
188
+ bodySemanticUpdateMs?: number;
189
+ bodyForces?: StreamPhysicsBodyForce;
190
+ bodyStyle?: Style | ((body: PhysicsBodyState, context: PhysicsBodyStyleContext) => Style);
191
+ /** Identifier included on `onObservation` events and pipeline observations. */
192
+ chartId?: string;
193
+ className?: string;
194
+ /**
195
+ * Uniform fill for bodies when `bodyStyle` does not set `fill`.
196
+ * Accepts CSS vars (`var(--semiotic-primary)`).
197
+ */
198
+ color?: string;
199
+ config?: PhysicsPipelineConfig;
200
+ /**
201
+ * Process plugins that tick with the physics heartbeat (capacity queues,
202
+ * portals, custom process rules). Prefer controllers over pumping
203
+ * `layoutConfig` every frame. Controllers with `continuous` keep RAF alive
204
+ * while they still have work even if the kernel is sleeping.
205
+ */
206
+ controllers?: readonly PhysicsController[];
207
+ /**
208
+ * Keep the animation loop alive even when the physics store reports no
209
+ * pending work. Use for frame-local systems that drive motion from `onTick`
210
+ * or other imperative controls instead of queued spawns/body forces.
211
+ * Also set automatically when any controller opts into continuous mode.
212
+ */
213
+ continuous?: boolean;
214
+ description?: string;
215
+ /** Dashboard hierarchy class hook (`stream-physics-frame--emphasis-*`). */
216
+ emphasis?: "primary" | "secondary";
217
+ /**
218
+ * Chart display mode (primary/context/sparkline/mobile). HOCs resolve this
219
+ * via `useChartMode` and pass it for class hooks + ChartContainer export.
220
+ */
221
+ chartMode?: "primary" | "context" | "sparkline" | "mobile";
222
+ enableHover?: boolean;
223
+ foregroundGraphics?: FrameGraphicsProp;
224
+ hoverRadius?: number;
225
+ initialSpawns?: PhysicsQueuedSpawn[];
226
+ initialSpawnPacing?: PhysicsSpawnPacingOptions;
227
+ /**
228
+ * Semiotic annotations (label/callout/threshold/…). Pixel-space `x`/`y`,
229
+ * or `pointId`/`bodyId` to track a live body. Notes with
230
+ * `physics: "barrier"|"sensor"` also feed colliders via PhysicsAnnotations.
231
+ */
232
+ annotations?: Datum[];
233
+ autoPlaceAnnotations?: AutoPlaceAnnotations;
234
+ svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => React.ReactNode;
235
+ legend?: React.ReactNode | {
236
+ legendGroups: LegendGroup[];
237
+ } | {
238
+ gradient: GradientLegendConfig;
239
+ };
240
+ legendHoverBehavior?: (item: {
241
+ label: string;
242
+ } | null) => void;
243
+ legendClickBehavior?: (item: {
244
+ label: string;
245
+ }) => void;
246
+ legendHighlightedCategory?: string | null;
247
+ legendIsolatedCategories?: Set<string>;
248
+ legendPosition?: "right" | "left" | "top" | "bottom";
249
+ legendLayout?: LegendLayout;
250
+ margin?: Partial<FrameMargin>;
251
+ /**
252
+ * Structured interaction events (hover / hover-end / click / click-end) —
253
+ * same contract as XY/ordinal/network frames for AI + coordinated views.
254
+ */
255
+ onObservation?: OnObservationCallback;
256
+ /**
257
+ * Click on a body (or empty canvas when null). Prefer this over
258
+ * `onBodyPointerDown` when you only need the Semiotic click contract.
259
+ */
260
+ onClick?: (datum: unknown | null, event: {
261
+ x: number;
262
+ y: number;
263
+ body: PhysicsBodyState | null;
264
+ }) => void;
265
+ onRegionEvent?: (event: StreamPhysicsRegionEvent) => void;
266
+ onSimulationExecutionChange?: (state: StreamPhysicsExecutionState) => void;
267
+ onBodyPointerDown?: (body: PhysicsBodyState | null, event: React.PointerEvent<HTMLCanvasElement>) => void;
268
+ onBodyHover?: (body: PhysicsBodyState | null, hover: PhysicsHoverData | null) => void;
269
+ onSemanticItemActivate?: (item: PhysicsSemanticItem) => void;
270
+ onSemanticItemFocus?: (item: PhysicsSemanticItem | null) => void;
271
+ onTick?: (result: PhysicsPipelineTickResult, controls: PhysicsPipelineControlSurface) => void;
272
+ /** Uniform opacity for bodies when `bodyStyle` does not set `opacity`. */
273
+ opacity?: number;
274
+ paused?: boolean;
275
+ responsiveHeight?: boolean;
276
+ responsiveWidth?: boolean;
277
+ regionEffects?: StreamPhysicsRegionEffect[];
278
+ selectedBodyStyle?: Style | ((body: PhysicsBodyState, context: PhysicsBodyStyleContext) => Style);
279
+ selection?: PhysicsBodySelection | null;
280
+ semanticItems?: PhysicsSemanticItem[];
281
+ simulationExecution?: PhysicsExecution;
282
+ size?: [number, number];
283
+ /** Uniform stroke for bodies when `bodyStyle` does not set `stroke`. */
284
+ stroke?: string;
285
+ strokeWidth?: number;
286
+ summary?: string;
287
+ suspendWhenHidden?: boolean;
288
+ title?: string | React.ReactNode;
289
+ tooltipContent?: (hover: PhysicsHoverData) => React.ReactNode;
290
+ workerBodyThreshold?: number;
291
+ renderBody?: (ctx: CanvasRenderingContext2D, body: PhysicsBodyState, style: Style) => void;
292
+ beforePaint?: (ctx: CanvasRenderingContext2D, bodies: PhysicsBodyState[]) => void;
293
+ afterPaint?: (ctx: CanvasRenderingContext2D, bodies: PhysicsBodyState[]) => void;
294
+ }
295
+ export interface StreamPhysicsFrameHandle extends PhysicsPipelineControlSurface {
296
+ getData: () => PhysicsBodyState[];
297
+ getRegionState: (bodyId?: string) => StreamPhysicsBodyRegionState | Record<string, StreamPhysicsBodyRegionState> | undefined;
298
+ clearRegionState: (bodyId?: string) => void;
299
+ getStore: () => PhysicsPipelineStore;
300
+ popBodies: (ids: string[], options?: StreamPhysicsPopOptions) => string[];
301
+ }
302
+ export type { StreamPhysicsPopOptions };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Canvas body drawing + pop animations for StreamPhysicsFrame.
3
+ * Pure paint helpers — no React / store dependency.
4
+ */
5
+ import type { Style } from "../types";
6
+ import type { PhysicsBodyState } from "./PhysicsKernel";
7
+ /**
8
+ * Body mark kinds for process identity without custom renderBody.
9
+ * Set via bodyStyle.mark or datum.__physicsMark / datum.mark.
10
+ */
11
+ export type PhysicsBodyMark = "circle" | "halo" | "faceted" | "pill" | "diamond" | "square";
12
+ export interface StreamPhysicsPopOptions {
13
+ color?: string;
14
+ durationMs?: number;
15
+ radius?: number;
16
+ }
17
+ export interface StreamPhysicsPopAnimation {
18
+ body: PhysicsBodyState;
19
+ color: string;
20
+ durationMs: number;
21
+ radius: number;
22
+ startedAt: number;
23
+ }
24
+ export declare function resolveBodyMark(body: PhysicsBodyState, style: Style): PhysicsBodyMark;
25
+ export declare function drawBody(ctx: CanvasRenderingContext2D, body: PhysicsBodyState, style: Style): void;
26
+ export declare function physicsBodyRadius(body: PhysicsBodyState): number;
27
+ export declare function drawPopAnimations(ctx: CanvasRenderingContext2D, animations: Map<string, StreamPhysicsPopAnimation>, now: number): boolean;
@@ -0,0 +1,4 @@
1
+ import type { PhysicsPipelineStore } from "./PhysicsPipelineStore";
2
+ import type { PhysicsPipelineControlSurface } from "./PhysicsPipelineTypes";
3
+ /** Project the store's public methods into the stable imperative control API. */
4
+ export declare function createPhysicsPipelineControls(store: PhysicsPipelineStore): PhysicsPipelineControlSurface;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Pure physics pipeline helpers: spawn scheduling, colliders, cloning, hit geometry.
3
+ * Extracted from PhysicsPipelineStore so the store class stays orchestration-only.
4
+ */
5
+ import { type PhysicsActiveSensorPair, type PhysicsBodyState, type PhysicsColliderSpec, type PhysicsKernelOptions, type PhysicsKernelSnapshot } from "./PhysicsKernel";
6
+ import type { PhysicsBodyBudgetOptions } from "./PhysicsBodyBudget";
7
+ import type { PhysicsBoundsColliderOptions, PhysicsObservationEvent, PhysicsPipelineConfig, PhysicsPipelineObservationOptions, PhysicsPipelineQueuedSpawnSnapshot, PhysicsPlotBounds, PhysicsQueuedSpawn, PhysicsSensorObservationConfig, PhysicsSimulationState, PhysicsSpawnPacingOptions, PhysicsXBinColliderOptions } from "./PhysicsPipelineTypes";
8
+ export type InternalQueuedSpawn = PhysicsPipelineQueuedSpawnSnapshot;
9
+ export declare const DEFAULT_PHYSICS_PIPELINE_CONFIG: Required<Omit<PhysicsPipelineConfig, "bodyBudget" | "colliders" | "engine" | "kernel" | "observation" | "sediment">>;
10
+ export interface NormalizedObservationConfig {
11
+ chartId: string;
12
+ chartType: string;
13
+ sensors: Record<string, PhysicsSensorObservationConfig>;
14
+ onObservation?: (event: PhysicsObservationEvent) => void;
15
+ onSimulationStateChange?: (state: PhysicsSimulationState, previousState: PhysicsSimulationState) => void;
16
+ }
17
+ export declare const DEFAULT_OBSERVATION_CONFIG: NormalizedObservationConfig;
18
+ export declare function normalizeObservationConfig(options?: PhysicsPipelineObservationOptions, previous?: NormalizedObservationConfig): NormalizedObservationConfig;
19
+ export declare function cloneSpawn(spawn: PhysicsQueuedSpawn): PhysicsQueuedSpawn;
20
+ export declare function finiteNumber(value: unknown): number | undefined;
21
+ export declare function schedulePhysicsSpawns(spawns: PhysicsQueuedSpawn[], options?: PhysicsSpawnPacingOptions): PhysicsQueuedSpawn[];
22
+ export declare function cloneQueuedSpawn(spawn: InternalQueuedSpawn): InternalQueuedSpawn;
23
+ export declare function cloneColliders(colliders: PhysicsColliderSpec[]): PhysicsColliderSpec[];
24
+ export declare function cloneBodyBudgetOptions(options: false | PhysicsBodyBudgetOptions): false | PhysicsBodyBudgetOptions;
25
+ export declare function sortQueue(a: InternalQueuedSpawn, b: InternalQueuedSpawn): number;
26
+ export declare function requiredKernelOptions(kernel: PhysicsKernelSnapshot["options"]): Required<PhysicsKernelOptions>;
27
+ export declare function bodySearchRadius(body: PhysicsBodyState): number;
28
+ export declare function bodyHitDistanceSquared(body: PhysicsBodyState, x: number, y: number, radius: number): number | null;
29
+ export declare function sensorPairKey(sensorId: string, bodyId: string): string;
30
+ export declare function parseSensorPairKey(key: string): PhysicsActiveSensorPair;
31
+ export type PhysicsQuadtreeLeaf = {
32
+ data?: PhysicsBodyState;
33
+ next?: PhysicsQuadtreeLeaf;
34
+ length?: number;
35
+ };
36
+ export declare function collidersFromPlotBounds(bounds: PhysicsPlotBounds, options?: PhysicsBoundsColliderOptions): PhysicsColliderSpec[];
37
+ export declare function collidersFromXScaleBins(options: PhysicsXBinColliderOptions): PhysicsColliderSpec[];
38
+ export interface PhysicsPipelineEvictionResult {
39
+ evicted: string[];
40
+ sedimented: string[];
41
+ }
@@ -0,0 +1,14 @@
1
+ import type { PhysicsEngineAdapter } from "./PhysicsEngineAdapter";
2
+ import type { PhysicsKernelEvent } from "./PhysicsKernel";
3
+ import type { PhysicsObservationEvent, PhysicsSimulationState } from "./PhysicsPipelineTypes";
4
+ import { type NormalizedObservationConfig } from "./physicsPipelineHelpers";
5
+ export interface PhysicsObservationContext {
6
+ elapsedSeconds: number;
7
+ observation: NormalizedObservationConfig;
8
+ emit: (event: PhysicsObservationEvent) => void;
9
+ }
10
+ export declare function observePhysicsKernelEvents(world: PhysicsEngineAdapter, events: PhysicsKernelEvent[], context: PhysicsObservationContext): void;
11
+ export declare function observePhysicsSensorTransitions(world: PhysicsEngineAdapter, previousPairs: ReadonlySet<string>, context: PhysicsObservationContext): Set<string>;
12
+ export declare function removePhysicsSensorPairsForBodies(pairs: Set<string>, bodyIds: ReadonlySet<string>): void;
13
+ export declare function resolvePhysicsSimulationState(paused: boolean, visible: boolean, hasQueuedBodies: boolean, allSleeping: boolean): PhysicsSimulationState;
14
+ export declare function emitPhysicsSimulationStateTransition(previous: PhysicsSimulationState, next: PhysicsSimulationState, context: PhysicsObservationContext): void;
@@ -0,0 +1,9 @@
1
+ import type { PhysicsKernelOptions } from "./PhysicsKernel";
2
+ import type { PhysicsPipelineConfig } from "./PhysicsPipelineTypes";
3
+ import type { Invalidation } from "../pipelineUpdateContract";
4
+ export declare const PHYSICS_BODY_INVALIDATIONS: readonly Invalidation[];
5
+ export declare const PHYSICS_MOTION_INVALIDATIONS: readonly Invalidation[];
6
+ export declare const PHYSICS_CONFIG_INVALIDATIONS: readonly Invalidation[];
7
+ export declare const PHYSICS_STATE_INVALIDATIONS: readonly Invalidation[];
8
+ export declare function physicsKernelOptionsEqual(a: PhysicsKernelOptions | undefined, b: PhysicsKernelOptions | undefined): boolean;
9
+ export declare function changedPhysicsConfigKeys(config: PhysicsPipelineConfig, previous: PhysicsPipelineConfig): string[];
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Region effect application, body forces, and post-tick pipeline for
3
+ * StreamPhysicsFrame. Pure control-surface helpers — no React.
4
+ */
5
+ import type { Style } from "../types";
6
+ import type { PhysicsBodyState, PhysicsColliderSpec } from "./PhysicsKernel";
7
+ import type { PhysicsPipelineControlSurface, PhysicsPipelineStore, PhysicsPipelineTickResult, PhysicsSimulationState } from "./PhysicsPipelineStore";
8
+ import { composePhysicsControllers } from "./PhysicsControllers";
9
+ import type { PhysicsBodySelection, StreamPhysicsBodyForce, StreamPhysicsBodyForceContext, StreamPhysicsBodyRegionState, StreamPhysicsRegionEffect, StreamPhysicsRegionEffectContext, StreamPhysicsRegionVector, PhysicsSemanticItem, StreamPhysicsFrameProps } from "./StreamPhysicsTypes";
10
+ /** Internal region bookkeeping (Sets for O(1) membership). */
11
+ export interface InternalStreamPhysicsBodyRegionState {
12
+ activeRegionIds: Set<string>;
13
+ regionIds: Set<string>;
14
+ charges: Record<string, unknown>;
15
+ attributes: Record<string, unknown>;
16
+ energy: number;
17
+ }
18
+ export declare function isSelected(body: PhysicsBodyState, selection: PhysicsBodySelection | null | undefined): boolean;
19
+ export declare function regionSensorId(region: StreamPhysicsRegionEffect): string;
20
+ export declare function regionBoundaryColliders(region: StreamPhysicsRegionEffect): PhysicsColliderSpec[];
21
+ export declare function publicRegionState(state: InternalStreamPhysicsBodyRegionState | undefined): StreamPhysicsBodyRegionState | undefined;
22
+ export declare function cloneRegionStateSnapshot(state: Map<string, InternalStreamPhysicsBodyRegionState>): Record<string, StreamPhysicsBodyRegionState>;
23
+ export declare function ensureInternalRegionState(state: Map<string, InternalStreamPhysicsBodyRegionState>, bodyId: string): InternalStreamPhysicsBodyRegionState;
24
+ export declare function resolveRegionVector(vector: StreamPhysicsRegionVector | ((context: StreamPhysicsRegionEffectContext) => StreamPhysicsRegionVector | null | undefined) | undefined, context: StreamPhysicsRegionEffectContext): StreamPhysicsRegionVector | null;
25
+ export declare function mergeRegionAttributes(region: StreamPhysicsRegionEffect, context: StreamPhysicsRegionEffectContext, state: InternalStreamPhysicsBodyRegionState): void;
26
+ export declare function resolveRegionCharge(region: StreamPhysicsRegionEffect, context: StreamPhysicsRegionEffectContext): unknown;
27
+ export declare function regionToSemanticItem(region: StreamPhysicsRegionEffect): PhysicsSemanticItem | null;
28
+ export declare function regionRuntimeEffectsRequireSync(regionEffects: readonly StreamPhysicsRegionEffect[]): boolean;
29
+ export declare function applyActiveRegionEffects(controls: PhysicsPipelineControlSurface, regionEffects: readonly StreamPhysicsRegionEffect[], regionState: Map<string, InternalStreamPhysicsBodyRegionState>, dtSeconds: number): boolean;
30
+ export declare function resolveBodyForceVector(force: StreamPhysicsBodyForce | undefined, context: StreamPhysicsBodyForceContext): StreamPhysicsRegionVector | null;
31
+ export declare function applyBodyForces(controls: PhysicsPipelineControlSurface, bodyForces: StreamPhysicsBodyForce | undefined, regionEffects: readonly StreamPhysicsRegionEffect[], regionState: Map<string, InternalStreamPhysicsBodyRegionState>, simulationState: PhysicsSimulationState, dtSeconds: number): boolean;
32
+ /**
33
+ * Shared post-tick pipeline: region forces → body forces → controllers → onTick.
34
+ * Used by the main RAF path and the worker-fallback path (DRY + one snapshot).
35
+ */
36
+ export declare function runPhysicsPostTick(options: {
37
+ store: PhysicsPipelineStore;
38
+ result: PhysicsPipelineTickResult;
39
+ regionEffects: readonly StreamPhysicsRegionEffect[];
40
+ regionState: Map<string, InternalStreamPhysicsBodyRegionState>;
41
+ bodyForces: StreamPhysicsBodyForce | undefined;
42
+ composed: ReturnType<typeof composePhysicsControllers>;
43
+ onTick?: (result: PhysicsPipelineTickResult, controls: PhysicsPipelineControlSurface) => void;
44
+ }): {
45
+ regionEffectsApplied: boolean;
46
+ bodyForcesApplied: boolean;
47
+ snapshot: ReturnType<PhysicsPipelineStore["snapshot"]>;
48
+ };
49
+ export declare function resolveStyle(body: PhysicsBodyState, simulationState: PhysicsSimulationState, bodyStyle: StreamPhysicsFrameProps["bodyStyle"], selectedBodyStyle: StreamPhysicsFrameProps["selectedBodyStyle"], selection: StreamPhysicsFrameProps["selection"], regionState: StreamPhysicsBodyRegionState | undefined, activeRegions: StreamPhysicsRegionEffect[], fallbackFill: string, fallbackStroke: string, primitives?: {
50
+ color?: string;
51
+ stroke?: string;
52
+ strokeWidth?: number;
53
+ opacity?: number;
54
+ }): Style;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Physics frame semantic items, default tooltip, and accessible data table.
3
+ */
4
+ import * as React from "react";
5
+ import type { PhysicsBodyState } from "./PhysicsKernel";
6
+ import type { PhysicsSimulationState } from "./PhysicsPipelineStore";
7
+ import type { PhysicsHoverData, PhysicsSemanticItem, StreamPhysicsFrameProps } from "./StreamPhysicsTypes";
8
+ export declare const SR_ONLY_STYLE: React.CSSProperties;
9
+ declare function physicsHoverData(body: PhysicsBodyState): PhysicsHoverData;
10
+ declare function createBodySemanticItems(bodies: readonly PhysicsBodyState[], simulationState: PhysicsSimulationState, bodySemanticItems: StreamPhysicsFrameProps["bodySemanticItems"], limit: number): PhysicsSemanticItem[];
11
+ declare function semanticItemsChanged(previous: readonly PhysicsSemanticItem[], next: readonly PhysicsSemanticItem[]): boolean;
12
+ declare function DefaultPhysicsTooltip({ hover }: {
13
+ hover: PhysicsHoverData;
14
+ }): React.ReactElement;
15
+ declare function PhysicsSemanticDataTable(props: {
16
+ chartTitle?: string;
17
+ items: readonly PhysicsSemanticItem[];
18
+ tableId: string;
19
+ }): React.ReactElement;
20
+ export { physicsHoverData, createBodySemanticItems, semanticItemsChanged, DefaultPhysicsTooltip, PhysicsSemanticDataTable };
@@ -0,0 +1,16 @@
1
+ import { type MutableRefObject, type RefObject } from "react";
2
+ import type { PhysicsPipelineStore } from "./PhysicsPipelineStore";
3
+ import type { PhysicsWorkerCommand } from "./PhysicsWorkerProtocol";
4
+ export declare function isPhysicsDocumentVisible(): boolean;
5
+ interface PhysicsFrameLifecyclePolicyInput {
6
+ cancelRender: () => void;
7
+ lastFrameTimeRef: MutableRefObject<number | null>;
8
+ paused: boolean;
9
+ postWorkerCommand: (command: PhysicsWorkerCommand, notifyTick?: boolean) => void;
10
+ requestRender: () => void;
11
+ storeRef: RefObject<PhysicsPipelineStore | null>;
12
+ suspendWhenHidden: boolean;
13
+ }
14
+ /** Keep pause and page-visibility scheduling policy consistent for physics frames. */
15
+ export declare function usePhysicsFrameLifecyclePolicy({ cancelRender, lastFrameTimeRef, paused, postWorkerCommand, requestRender, storeRef, suspendWhenHidden }: PhysicsFrameLifecyclePolicyInput): void;
16
+ export {};
@@ -0,0 +1,26 @@
1
+ import { RingBuffer } from "../realtime/RingBuffer";
2
+ /**
3
+ * Resize a data buffer and its optional timestamp companion to fit a bounded
4
+ * replacement dataset. Keeps timestamp/data indices aligned for pulse logic.
5
+ */
6
+ export declare function ensureRingBufferCapacity<T>(buffer: RingBuffer<T>, targetSize: number, timestampBuffer?: RingBuffer<number> | null): void;
7
+ /**
8
+ * Create a timestamp companion for data that predates pulse tracking.
9
+ *
10
+ * A pulse buffer is indexed in lockstep with the datum buffer. When pulse is
11
+ * enabled after mount, an empty companion would make the next inserted datum
12
+ * line up with the *oldest* retained datum. Seed every retained row at the
13
+ * activation time instead, so the two rings start aligned and the newly
14
+ * enabled encoding has a coherent first frame.
15
+ */
16
+ export declare function createTimestampBufferForData<T>(buffer: RingBuffer<T>, timestamp: number): RingBuffer<number>;
17
+ /**
18
+ * Push a datum and its ingest timestamp in lockstep. Returns any evicted datum
19
+ * from the data buffer so callers can update extents/categories.
20
+ */
21
+ export declare function pushWithTimestamp<T>(buffer: RingBuffer<T>, datum: T, timestampBuffer: RingBuffer<number> | null | undefined, timestamp: number): T | undefined;
22
+ /**
23
+ * Compact a timestamp ring buffer before removing matching rows from the data
24
+ * ring buffer. The predicate must be the same one passed to `buffer.remove()`.
25
+ */
26
+ export declare function compactTimestampBufferForRemoval<T>(buffer: RingBuffer<T>, timestampBuffer: RingBuffer<number> | null | undefined, predicate: (item: T) => boolean): void;