semiotic 3.8.6 → 3.8.7

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 (213) hide show
  1. package/CLAUDE.md +33 -7
  2. package/README.md +82 -55
  3. package/ai/behaviorContracts.cjs +86 -1
  4. package/ai/componentMetadata.cjs +4 -9
  5. package/ai/dist/mcp-server.js +97 -10
  6. package/ai/examples.md +154 -7
  7. package/ai/schema.json +1611 -145
  8. package/ai/surface-manifest.json +12 -10
  9. package/ai/system-prompt.md +9 -3
  10. package/dist/{chunk-chartContainerDataAudit-FEOD5GTQ.module.min.js → chunk-chartContainerDataAudit-JDSVSKGM.module.min.js} +1 -1
  11. package/dist/chunk-chunk-2YAZHXL4.module.min.js +2 -0
  12. package/dist/{chunk-chunk-G7WFWHAD.module.min.js → chunk-chunk-4ITOQRXM.module.min.js} +1 -1
  13. package/dist/chunk-chunk-5SD6BHVW.module.min.js +2 -0
  14. package/dist/chunk-chunk-6V5VQVCT.module.min.js +2 -0
  15. package/dist/chunk-chunk-7TTBHSAG.module.min.js +2 -0
  16. package/dist/chunk-chunk-7ZDJSYKI.module.min.js +2 -0
  17. package/dist/chunk-chunk-BGHPD3RA.module.min.js +1 -0
  18. package/dist/chunk-chunk-BMRZ2SPU.module.min.js +2 -0
  19. package/dist/chunk-chunk-BNGBEY7N.module.min.js +2 -0
  20. package/dist/chunk-chunk-C7APLVQD.module.min.js +2 -0
  21. package/dist/chunk-chunk-DGWFBOGB.module.min.js +1 -0
  22. package/dist/{chunk-chunk-Q2BS46W2.module.min.js → chunk-chunk-DIVE2DRA.module.min.js} +1 -1
  23. package/dist/chunk-chunk-FBUNUIPV.module.min.js +2 -0
  24. package/dist/chunk-chunk-FQPKOAIH.module.min.js +2 -0
  25. package/dist/chunk-chunk-FRO4TRXK.module.min.js +2 -0
  26. package/dist/chunk-chunk-G7QVPZUD.module.min.js +2 -0
  27. package/dist/chunk-chunk-GBPYV4FP.module.min.js +2 -0
  28. package/dist/chunk-chunk-GU2EJIDJ.module.min.js +2 -0
  29. package/dist/chunk-chunk-J5QD4RAM.module.min.js +2 -0
  30. package/dist/{chunk-chunk-RA7JCG7D.module.min.js → chunk-chunk-JWXLNZSM.module.min.js} +1 -1
  31. package/dist/chunk-chunk-KXAFCCDB.module.min.js +2 -0
  32. package/dist/chunk-chunk-LG7YKJAK.module.min.js +2 -0
  33. package/dist/{chunk-chunk-XP3OHHFX.module.min.js → chunk-chunk-LVHDZAT3.module.min.js} +1 -1
  34. package/dist/chunk-chunk-LWITSR2O.module.min.js +2 -0
  35. package/dist/{chunk-chunk-SMVD3EQJ.module.min.js → chunk-chunk-MX35T6RX.module.min.js} +1 -1
  36. package/dist/chunk-chunk-NH4MEAKP.module.min.js +2 -0
  37. package/dist/chunk-chunk-NJETWX42.module.min.js +2 -0
  38. package/dist/chunk-chunk-NW25WGLS.module.min.js +2 -0
  39. package/dist/{chunk-chunk-GFTVACTO.module.min.js → chunk-chunk-OI7R7EJB.module.min.js} +1 -1
  40. package/dist/{chunk-chunk-OM6NWS4H.module.min.js → chunk-chunk-ONMLEXHR.module.min.js} +1 -1
  41. package/dist/chunk-chunk-OY66GCE6.module.min.js +1 -0
  42. package/dist/chunk-chunk-PZFT457G.module.min.js +1 -0
  43. package/dist/chunk-chunk-Q3WW6JGR.module.min.js +1 -0
  44. package/dist/chunk-chunk-Q6XKQTOQ.module.min.js +1 -0
  45. package/dist/chunk-chunk-RJRM2E6P.module.min.js +1 -0
  46. package/dist/chunk-chunk-RPL7WYXI.module.min.js +1 -0
  47. package/dist/chunk-chunk-SV4XAZ3Q.module.min.js +1 -0
  48. package/dist/chunk-chunk-TSCFL235.module.min.js +1 -0
  49. package/dist/chunk-chunk-UOQRPGPK.module.min.js +2 -0
  50. package/dist/chunk-chunk-V3OAKG32.module.min.js +1 -0
  51. package/dist/chunk-chunk-WLOIUMWG.module.min.js +2 -0
  52. package/dist/chunk-chunk-XEGXX4F7.module.min.js +1 -0
  53. package/dist/chunk-chunk-XFRBLXYM.module.min.js +1 -0
  54. package/dist/chunk-chunk-Z2AJERX5.module.min.js +2 -0
  55. package/dist/chunk-chunk-ZXYDYAB7.module.min.js +2 -0
  56. package/dist/components/ai/SemioticVACPBridge.d.ts +22 -0
  57. package/dist/components/ai/chartCapabilities.d.ts +4 -3
  58. package/dist/components/ai/conversationArc.d.ts +2 -176
  59. package/dist/components/ai/conversationArcTypes.d.ts +202 -0
  60. package/dist/components/ai/readerGrounding.d.ts +12 -0
  61. package/dist/components/ai/vacpAdapter.d.ts +13 -0
  62. package/dist/components/ai/vacpAdapterActions.d.ts +2 -0
  63. package/dist/components/ai/vacpAdapterModel.d.ts +7 -0
  64. package/dist/components/ai/vacpAdapterRuntime.d.ts +26 -0
  65. package/dist/components/ai/vacpAdapterState.d.ts +3 -0
  66. package/dist/components/ai/vacpAdapterTypes.d.ts +169 -0
  67. package/dist/components/ai/vacpTypes.d.ts +160 -0
  68. package/dist/components/charts/index.d.ts +4 -4
  69. package/dist/components/charts/physics/ChainReactionChart.capability.d.ts +9 -0
  70. package/dist/components/charts/physics/ChainReactionChart.d.ts +29 -0
  71. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +1 -1
  72. package/dist/components/charts/physics/EventDropChart.d.ts +7 -2
  73. package/dist/components/charts/physics/GaltonBoardChart.d.ts +1 -1
  74. package/dist/components/charts/physics/{PhysicsPileChart.capability.d.ts → PacketFlowChart.capability.d.ts} +1 -1
  75. package/dist/components/charts/physics/{PhysicalFlowChart.d.ts → PacketFlowChart.d.ts} +22 -6
  76. package/dist/components/charts/physics/PhysicsCustomChart.d.ts +1 -1
  77. package/dist/components/charts/physics/ProcessFlowChart.d.ts +7 -4
  78. package/dist/components/charts/physics/{PhysicalFlowChart.capability.d.ts → UnitPileChart.capability.d.ts} +1 -1
  79. package/dist/components/charts/physics/{PhysicsPileChart.d.ts → UnitPileChart.d.ts} +19 -6
  80. package/dist/components/charts/physics/crucibleChartProps.d.ts +1 -1
  81. package/dist/components/charts/physics/crucibleChartUtils.d.ts +9 -0
  82. package/dist/components/charts/physics/gauntletChartProps.d.ts +6 -1
  83. package/dist/components/charts/physics/gauntletTerminal.d.ts +61 -0
  84. package/dist/components/charts/physics/packetFlowSemantics.d.ts +6 -0
  85. package/dist/components/charts/physics/physicsHocUtils.d.ts +45 -2
  86. package/dist/components/charts/shared/auditAccessibilityStyles.d.ts +9 -0
  87. package/dist/components/charts/shared/knownChartComponents.d.ts +1 -1
  88. package/dist/components/charts/shared/useChartLegend.d.ts +8 -1
  89. package/dist/components/charts/shared/useChartSetup.d.ts +7 -0
  90. package/dist/components/data/portability/capabilityBinding.d.ts +41 -0
  91. package/dist/components/data/portability/index.d.ts +2 -0
  92. package/dist/components/legendLayout.d.ts +56 -0
  93. package/dist/components/recipes/geographicDotGrid.d.ts +82 -0
  94. package/dist/components/recipes/geographicGrid.d.ts +100 -0
  95. package/dist/components/recipes/physics.d.ts +2 -0
  96. package/dist/components/recipes/physicsStageGeography.d.ts +137 -0
  97. package/dist/components/semiotic-ai.d.ts +4 -3
  98. package/dist/components/semiotic-experimental-vacp.d.ts +11 -0
  99. package/dist/components/semiotic-experimental.d.ts +6 -3
  100. package/dist/components/semiotic-geo.d.ts +4 -0
  101. package/dist/components/semiotic-physics.d.ts +9 -6
  102. package/dist/components/semiotic-recipes-core.d.ts +6 -1
  103. package/dist/components/server/renderEvidence.d.ts +1 -1
  104. package/dist/components/server/renderToStaticSVG.d.ts +2 -1
  105. package/dist/components/server/serverChartConfigHeatmap.d.ts +6 -0
  106. package/dist/components/server/serverChartConfigNetworkStyles.d.ts +12 -0
  107. package/dist/components/server/serverChartConfigShared.d.ts +16 -0
  108. package/dist/components/server/serverChartConfigs.d.ts +2 -2
  109. package/dist/components/server/serverChartConfigsPhysics.d.ts +2 -2
  110. package/dist/components/server/serverChartConfigsXY.d.ts +0 -1
  111. package/dist/components/server/staticLegend.d.ts +6 -0
  112. package/dist/components/server/staticSVGChrome.d.ts +10 -2
  113. package/dist/components/server/staticValue.d.ts +8 -0
  114. package/dist/components/stream/geoPipelineConfig.d.ts +10 -0
  115. package/dist/components/stream/legendRenderer.d.ts +8 -0
  116. package/dist/components/stream/physics/PhysicsEvidence.d.ts +37 -0
  117. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +9 -0
  118. package/dist/components/stream/physics/PhysicsSettledScene.d.ts +5 -0
  119. package/dist/components/stream/physics/physicsFramePipelineConfig.d.ts +19 -0
  120. package/dist/components/stream/physics/physicsPipelineSettle.d.ts +52 -0
  121. package/dist/components/stream/physics/physicsRegionRuntime.d.ts +23 -0
  122. package/dist/components/stream/types.d.ts +2 -0
  123. package/dist/components/types/legendTypes.d.ts +17 -1
  124. package/dist/controls.min.js +1 -1
  125. package/dist/controls.module.min.js +1 -1
  126. package/dist/geo.min.js +1 -1
  127. package/dist/geo.module.min.js +1 -1
  128. package/dist/network.min.js +1 -1
  129. package/dist/network.module.min.js +1 -1
  130. package/dist/ordinal.min.js +1 -1
  131. package/dist/ordinal.module.min.js +1 -1
  132. package/dist/physics.min.js +1 -1
  133. package/dist/physics.module.min.js +1 -1
  134. package/dist/physicsWorker.js +1 -1
  135. package/dist/realtime.min.js +1 -1
  136. package/dist/realtime.module.min.js +1 -1
  137. package/dist/semiotic-ai-core.min.js +1 -1
  138. package/dist/semiotic-ai-core.module.min.js +1 -1
  139. package/dist/semiotic-ai.d.ts +4 -3
  140. package/dist/semiotic-ai.min.js +1 -1
  141. package/dist/semiotic-ai.module.min.js +1 -1
  142. package/dist/semiotic-data.module.min.js +1 -1
  143. package/dist/semiotic-experimental-vacp.d.ts +11 -0
  144. package/dist/semiotic-experimental-vacp.min.js +1 -0
  145. package/dist/semiotic-experimental-vacp.module.min.js +1 -0
  146. package/dist/semiotic-experimental.d.ts +6 -3
  147. package/dist/semiotic-experimental.min.js +2 -1
  148. package/dist/semiotic-experimental.module.min.js +2 -1
  149. package/dist/semiotic-geo.d.ts +4 -0
  150. package/dist/semiotic-physics.d.ts +9 -6
  151. package/dist/semiotic-realtime-core.min.js +1 -1
  152. package/dist/semiotic-realtime-core.module.min.js +1 -1
  153. package/dist/semiotic-recipes-core.d.ts +6 -1
  154. package/dist/semiotic-recipes-core.min.js +1 -1
  155. package/dist/semiotic-recipes-core.module.min.js +1 -1
  156. package/dist/semiotic-recipes.min.js +1 -1
  157. package/dist/semiotic-recipes.module.min.js +1 -1
  158. package/dist/semiotic-server-edge.min.js +1 -1
  159. package/dist/semiotic-server-edge.module.min.js +1 -1
  160. package/dist/semiotic-server-node.min.js +1 -1
  161. package/dist/semiotic-server-node.module.min.js +1 -1
  162. package/dist/semiotic-utils-core.min.js +1 -1
  163. package/dist/semiotic-utils-core.module.min.js +1 -1
  164. package/dist/semiotic-utils.min.js +1 -1
  165. package/dist/semiotic-utils.module.min.js +1 -1
  166. package/dist/semiotic.min.js +1 -1
  167. package/dist/semiotic.module.min.js +1 -1
  168. package/dist/server.min.js +1 -1
  169. package/dist/server.module.min.js +1 -1
  170. package/dist/xy.min.js +1 -1
  171. package/dist/xy.module.min.js +1 -1
  172. package/package.json +18 -2
  173. package/spec/README.md +94 -2
  174. package/spec/bindings/README.md +14 -3
  175. package/spec/v0.1/examples/annotation-provenance-reviewed-revision.json +27 -0
  176. package/spec/v0.1/examples/annotation-provenance-watcher-threshold.json +21 -0
  177. package/spec/v0.1/examples/audience-profile-executive-review.json +24 -0
  178. package/spec/v0.1/examples/audience-profile-incident-operators.json +42 -0
  179. package/spec/v0.1/examples/chart-capability-bar-comparison.json +48 -0
  180. package/spec/v0.1/examples/chart-capability-service-flow.json +54 -0
  181. package/dist/chunk-chunk-2CHN2TA3.module.min.js +0 -1
  182. package/dist/chunk-chunk-3SHB24AG.module.min.js +0 -1
  183. package/dist/chunk-chunk-4MMOOYTX.module.min.js +0 -2
  184. package/dist/chunk-chunk-5RKXZQ2P.module.min.js +0 -1
  185. package/dist/chunk-chunk-75OTQSXS.module.min.js +0 -1
  186. package/dist/chunk-chunk-7ALTGHK6.module.min.js +0 -1
  187. package/dist/chunk-chunk-A5GRQUOF.module.min.js +0 -1
  188. package/dist/chunk-chunk-AAF5LZAU.module.min.js +0 -2
  189. package/dist/chunk-chunk-ARZGA4LJ.module.min.js +0 -2
  190. package/dist/chunk-chunk-C4YA6TDR.module.min.js +0 -1
  191. package/dist/chunk-chunk-CAFLML4L.module.min.js +0 -2
  192. package/dist/chunk-chunk-CO5KQMGH.module.min.js +0 -1
  193. package/dist/chunk-chunk-FHBN7OEB.module.min.js +0 -2
  194. package/dist/chunk-chunk-GMQ5AYTD.module.min.js +0 -1
  195. package/dist/chunk-chunk-IP2UE74X.module.min.js +0 -1
  196. package/dist/chunk-chunk-ITDWLZXV.module.min.js +0 -2
  197. package/dist/chunk-chunk-JCG72SGW.module.min.js +0 -2
  198. package/dist/chunk-chunk-LPSPATPC.module.min.js +0 -1
  199. package/dist/chunk-chunk-PX5YQGDP.module.min.js +0 -2
  200. package/dist/chunk-chunk-QSQVBIJA.module.min.js +0 -1
  201. package/dist/chunk-chunk-RCF52Z42.module.min.js +0 -2
  202. package/dist/chunk-chunk-RNUHEXZA.module.min.js +0 -2
  203. package/dist/chunk-chunk-ROZWKEUG.module.min.js +0 -1
  204. package/dist/chunk-chunk-T2FKJD4O.module.min.js +0 -2
  205. package/dist/chunk-chunk-UDREYOLV.module.min.js +0 -1
  206. package/dist/chunk-chunk-VOWE3SAP.module.min.js +0 -2
  207. package/dist/chunk-chunk-VQPNBUSW.module.min.js +0 -2
  208. package/dist/chunk-chunk-WAWCIHFJ.module.min.js +0 -1
  209. package/dist/chunk-chunk-WYARAXHR.module.min.js +0 -2
  210. package/dist/chunk-chunk-XV3KGYTR.module.min.js +0 -2
  211. package/dist/chunk-chunk-YC2IVEPX.module.min.js +0 -1
  212. package/dist/chunk-chunk-ZOAQDIJO.module.min.js +0 -1
  213. package/dist/chunk-chunk-ZXIXAPRE.module.min.js +0 -2
@@ -0,0 +1,169 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
2
+ import type { SerializedSelections } from "../export/selectionSerializer";
3
+ import type { ChartObservation } from "../store/ObservationStore";
4
+ import type { AudienceProfile } from "./audienceProfile";
5
+ import type { NavTreeNode } from "./navigationTree";
6
+ import type { ChartReaderGrounding, ChartReaderGroundingOptions } from "./readerGrounding";
7
+ import type { VacpActionDescriptor, VacpCapabilitiesRequest, VacpCapabilitiesSnapshot, VacpEdge, VacpNode, VacpRef, VacpStateRequest, VacpStateSnapshot, VacpStateUpdate, VacpWindowBridge } from "./vacpTypes";
8
+ export declare const SEMIOTIC_VACP_SET_POINT_SELECTION_ACTION: "semiotic.set_point_selection";
9
+ export declare const SEMIOTIC_VACP_SET_INTERVAL_SELECTION_ACTION: "semiotic.set_interval_selection";
10
+ export declare const SEMIOTIC_VACP_CLEAR_SELECTION_ACTION: "semiotic.clear_selection";
11
+ export declare const SEMIOTIC_VACP_ACTIVATE_NAVIGATION_ACTION: "semiotic.activate_navigation_node";
12
+ export declare const SEMIOTIC_VACP_INSPECT_DATA_ACTION: "semiotic.inspect_data";
13
+ export type SemioticVACPSelectionMode = "point" | "interval" | "both";
14
+ export interface SemioticVACPSelectionBinding {
15
+ /** Named LinkedCharts selection exposed as one stable VACP Selection node. */
16
+ name: string;
17
+ /** Fields an agent may set. Values outside this allowlist are rejected. */
18
+ fields: string[];
19
+ /** Which semantic mutations are valid. Default "both". */
20
+ mode?: SemioticVACPSelectionMode;
21
+ /** Stable clause owner used for agent-written selection state. */
22
+ clientId?: string;
23
+ }
24
+ export interface SemioticVACPNavigationBinding {
25
+ tree: NavTreeNode;
26
+ /**
27
+ * Durable datum fields used to identify leaves. Procedural NavTreeNode ids
28
+ * are never used as VACP identity.
29
+ */
30
+ matchFields: string[];
31
+ /** Current procedural tree id, when the tree is controlled. */
32
+ activeId?: string;
33
+ /** Enables the validated semantic navigation action. */
34
+ onActiveChange?: (node: NavTreeNode) => void;
35
+ }
36
+ export interface SemioticVACPChart {
37
+ /** Durable identity within this bridge; independent of render order. */
38
+ chartId: string;
39
+ component: string;
40
+ props: Datum;
41
+ title?: string;
42
+ description?: string;
43
+ audience?: AudienceProfile;
44
+ /**
45
+ * Reader-grounding presentation settings. The bridge's internal grounding
46
+ * pass caps navigation structure at one representative leaf per branch.
47
+ */
48
+ grounding?: Omit<ChartReaderGroundingOptions, "audience">;
49
+ selections?: SemioticVACPSelectionBinding[];
50
+ navigation?: SemioticVACPNavigationBinding;
51
+ }
52
+ export interface SemioticVACPSelectionActions {
53
+ setPointSelection?: (selectionName: string, clientId: string, fields: Record<string, unknown[]>) => void | Promise<void>;
54
+ setIntervalSelection?: (selectionName: string, clientId: string, fields: Record<string, [number, number]>) => void | Promise<void>;
55
+ clearSelection?: (selectionName: string) => void | Promise<void>;
56
+ }
57
+ export interface SemioticVACPCustomAction {
58
+ descriptor: VacpActionDescriptor;
59
+ available?: () => boolean;
60
+ validate?: (params: unknown) => void | string;
61
+ execute: (params: unknown) => unknown | Promise<unknown>;
62
+ }
63
+ export interface SemioticVACPDataAccess {
64
+ /** Include bounded `semiotic.inspect_data`. Raw rows are off by default. */
65
+ sample?: boolean;
66
+ /** Maximum rows returned from one inspect call. Default 50. */
67
+ maxSampleRows?: number;
68
+ /** Maximum rows scanned for schema summaries. Default 5000. */
69
+ maxSchemaRows?: number;
70
+ }
71
+ export interface CreateSemioticVACPBridgeOptions {
72
+ appId: string;
73
+ viewId?: string;
74
+ title?: string;
75
+ /** Static charts or a live getter used on every protocol read/action. */
76
+ charts: readonly SemioticVACPChart[] | (() => readonly SemioticVACPChart[]);
77
+ /** JSON-safe snapshot of named LinkedCharts selections. */
78
+ getSelections?: () => SerializedSelections;
79
+ /** Live observation buffer; the latest event per chart becomes VACP state. */
80
+ getObservations?: () => readonly ChartObservation[];
81
+ selectionActions?: SemioticVACPSelectionActions;
82
+ dataAccess?: SemioticVACPDataAccess;
83
+ actions?: readonly SemioticVACPCustomAction[] | (() => readonly SemioticVACPCustomAction[]);
84
+ /** Test/instrumentation clock. */
85
+ now?: () => Date | number | string;
86
+ /** Retained full snapshots available as delta baselines. Default 64. */
87
+ stateCacheSize?: number;
88
+ }
89
+ export interface SemioticVACPRefs {
90
+ app: VacpRef;
91
+ view: VacpRef;
92
+ visualization: (chartId: string) => VacpRef;
93
+ config: (chartId: string) => VacpRef;
94
+ data: (chartId: string, collection?: string) => VacpRef;
95
+ selection: (name: string) => VacpRef;
96
+ navigation: (chartId: string) => VacpRef;
97
+ observation: (chartId: string) => VacpRef;
98
+ }
99
+ export interface SemioticVACPBridge extends VacpWindowBridge {
100
+ readonly refs: SemioticVACPRefs;
101
+ getCapabilities(request?: VacpCapabilitiesRequest): VacpCapabilitiesSnapshot;
102
+ getState(): Promise<VacpStateSnapshot>;
103
+ getState(request: VacpStateRequest): Promise<VacpStateUpdate>;
104
+ }
105
+ export interface InstallSemioticVACPBridgeOptions {
106
+ /** Default browser `window`; inject a record for tests or non-window hosts. */
107
+ target?: Record<string, unknown>;
108
+ /** Default `__vacp`. */
109
+ globalKey?: string;
110
+ }
111
+ export interface SemioticVACPBridgeInstallation {
112
+ installed: boolean;
113
+ globalKey: string;
114
+ bridge: SemioticVACPBridge;
115
+ reason?: string;
116
+ /** Delete the global only while this exact bridge still owns it. */
117
+ cleanup: () => boolean;
118
+ }
119
+ export interface DataHandleModel {
120
+ ref: VacpRef;
121
+ chartId: string;
122
+ collection: string;
123
+ rows: readonly unknown[];
124
+ }
125
+ export interface SelectionModel {
126
+ ref: VacpRef;
127
+ name: string;
128
+ fields: string[];
129
+ modes: Set<"point" | "interval">;
130
+ clientId: string;
131
+ chartRefs: VacpRef[];
132
+ }
133
+ export interface NavigationIndex {
134
+ valid: boolean;
135
+ diagnostic?: string;
136
+ byKey: Map<string, NavTreeNode>;
137
+ matchFields: string[];
138
+ targetRef: (match: Record<string, unknown>) => VacpRef;
139
+ }
140
+ export interface NavigationModel {
141
+ ref: VacpRef;
142
+ chartRef: VacpRef;
143
+ chartId: string;
144
+ binding: SemioticVACPNavigationBinding;
145
+ index: NavigationIndex;
146
+ }
147
+ export interface ChartModel {
148
+ chart: SemioticVACPChart;
149
+ ref: VacpRef;
150
+ configRef: VacpRef;
151
+ grounding: ChartReaderGrounding;
152
+ config: Record<string, unknown>;
153
+ dataHandles: DataHandleModel[];
154
+ navigation?: NavigationModel;
155
+ }
156
+ export interface RuntimeAction {
157
+ descriptor: VacpActionDescriptor;
158
+ execute: (params: unknown) => unknown | Promise<unknown>;
159
+ }
160
+ export interface RuntimeModelBase {
161
+ charts: ChartModel[];
162
+ selections: SelectionModel[];
163
+ dataHandles: DataHandleModel[];
164
+ nodes: VacpNode[];
165
+ edges: VacpEdge[];
166
+ }
167
+ export interface RuntimeModel extends RuntimeModelBase {
168
+ actions: RuntimeAction[];
169
+ }
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Structural VACP 0.1.0 types.
3
+ *
4
+ * VACP's protocol packages are not currently published, so the experimental
5
+ * Semiotic bridge depends only on the documented JSON contract. Keep this file
6
+ * structural and dependency-free so a consumer can replace these types with
7
+ * the canonical package once it becomes public.
8
+ *
9
+ * @see https://github.com/ETH-IVIA-Lab/VACP/blob/main/docs/reference/tool-contract.md
10
+ */
11
+ export declare const VACP_SCHEMA_VERSION: "0.1.0";
12
+ export type VacpSchemaVersion = typeof VACP_SCHEMA_VERSION;
13
+ export type VacpRef = `vacp://${string}`;
14
+ export type VacpLayer = "ConfigLayer" | "ViewLayer" | "VisualizationLayer" | "DataLayer" | "InteractionFeedbackLayer";
15
+ export type VacpNodeKind = "App" | "View" | "Visualization" | "Mark" | "EncodingChannel" | "EncodedField" | "Legend" | "Axis" | "Selection" | "Param" | "Widget" | "DataHandle" | "InteractionTarget";
16
+ export type VacpEdgeKind = "contains" | "controls" | "derivedFrom" | "targets";
17
+ export interface VacpNode {
18
+ ref: VacpRef;
19
+ kind: VacpNodeKind;
20
+ layer: VacpLayer;
21
+ title?: string;
22
+ description?: string;
23
+ data?: Record<string, unknown>;
24
+ }
25
+ export interface VacpEdge {
26
+ from: VacpRef;
27
+ to: VacpRef;
28
+ kind: VacpEdgeKind;
29
+ }
30
+ export interface VacpActionDescriptor {
31
+ name: string;
32
+ title?: string;
33
+ description: string;
34
+ parameters?: Record<string, unknown>;
35
+ targetRef?: VacpRef;
36
+ }
37
+ export interface VacpGraph {
38
+ version: VacpSchemaVersion;
39
+ nodes: VacpNode[];
40
+ edges: VacpEdge[];
41
+ actions: VacpActionDescriptor[];
42
+ }
43
+ export interface VacpCapabilitiesSnapshot {
44
+ version: VacpSchemaVersion;
45
+ createdAt: string;
46
+ graph: VacpGraph;
47
+ }
48
+ export interface VacpCapabilitiesRequest {
49
+ refs?: VacpRef[];
50
+ prefixes?: VacpRef[];
51
+ kinds?: VacpNodeKind[];
52
+ layers?: VacpLayer[];
53
+ includeActions?: boolean;
54
+ includeEdges?: boolean;
55
+ includeNodeData?: boolean;
56
+ }
57
+ export interface VacpStateSnapshot {
58
+ version: VacpSchemaVersion;
59
+ createdAt: string;
60
+ state: Record<VacpRef, unknown>;
61
+ summary?: Record<VacpRef, unknown>;
62
+ }
63
+ export type VacpStateRequestMode = "auto" | "full" | "delta";
64
+ export interface VacpStateRequest {
65
+ mode?: VacpStateRequestMode;
66
+ since?: string;
67
+ refs?: VacpRef[];
68
+ includeSummary?: boolean;
69
+ }
70
+ export interface VacpStateDeltaPayload {
71
+ changed: Record<VacpRef, unknown>;
72
+ removed: VacpRef[];
73
+ summaryChanged?: Record<VacpRef, unknown>;
74
+ summaryRemoved?: VacpRef[];
75
+ }
76
+ export type VacpStateUpdate = {
77
+ version: VacpSchemaVersion;
78
+ createdAt: string;
79
+ mode: "full";
80
+ token: string;
81
+ scope?: {
82
+ refs?: VacpRef[];
83
+ };
84
+ snapshot: VacpStateSnapshot;
85
+ } | {
86
+ version: VacpSchemaVersion;
87
+ createdAt: string;
88
+ mode: "delta";
89
+ token: string;
90
+ baseToken: string;
91
+ scope?: {
92
+ refs?: VacpRef[];
93
+ };
94
+ delta: VacpStateDeltaPayload;
95
+ };
96
+ export interface VacpActionCall {
97
+ callId: string;
98
+ name: string;
99
+ params?: unknown;
100
+ }
101
+ export type VacpActionResult = {
102
+ callId: string;
103
+ ok: true;
104
+ result?: unknown;
105
+ } | {
106
+ callId: string;
107
+ ok: false;
108
+ error: {
109
+ message: string;
110
+ details?: unknown;
111
+ };
112
+ };
113
+ export interface VacpWindowBridge {
114
+ version: VacpSchemaVersion;
115
+ getCapabilities(request?: VacpCapabilitiesRequest): Promise<VacpCapabilitiesSnapshot> | VacpCapabilitiesSnapshot;
116
+ getState(): Promise<VacpStateSnapshot>;
117
+ getState(request: VacpStateRequest): Promise<VacpStateUpdate>;
118
+ execute(call: VacpActionCall): Promise<VacpActionResult>;
119
+ }
120
+ export declare const VACP_DATA_SCHEMA_ACTION: "vacp.data_schema";
121
+ export type VacpDataSchemaDetail = "columns" | "full";
122
+ export interface VacpDataSchemaParams {
123
+ handleRef: VacpRef;
124
+ detail?: VacpDataSchemaDetail;
125
+ sampleRows?: number;
126
+ }
127
+ export interface VacpDataSchemaColumn {
128
+ name: string;
129
+ type: string;
130
+ notNull?: boolean;
131
+ primaryKey?: boolean;
132
+ }
133
+ export interface VacpDataSchemaNumericSummary {
134
+ min: number | null;
135
+ max: number | null;
136
+ avg: number | null;
137
+ unitHint?: "epoch_ms" | "epoch_s" | null;
138
+ minIso?: string | null;
139
+ maxIso?: string | null;
140
+ }
141
+ export interface VacpDataSchemaTemporalSummary {
142
+ minIso: string | null;
143
+ maxIso: string | null;
144
+ minEpochMs: number | null;
145
+ maxEpochMs: number | null;
146
+ }
147
+ export interface VacpDataSchemaResult {
148
+ handleRef: VacpRef;
149
+ detail: VacpDataSchemaDetail;
150
+ table: string | null;
151
+ rowCount: number | null;
152
+ columns: VacpDataSchemaColumn[];
153
+ numeric?: Record<string, VacpDataSchemaNumericSummary>;
154
+ temporal?: Record<string, VacpDataSchemaTemporalSummary>;
155
+ categoricalTopValues?: Record<string, Array<{
156
+ value: string;
157
+ n: number;
158
+ }>>;
159
+ sampledRows?: number | null;
160
+ }
@@ -103,8 +103,8 @@ export { GaltonBoardChart } from "./physics/GaltonBoardChart";
103
103
  export type { GaltonBoardChartProps, GaltonBoardReferenceLine } from "./physics/GaltonBoardChart";
104
104
  export { EventDropChart } from "./physics/EventDropChart";
105
105
  export type { EventDropChartProps } from "./physics/EventDropChart";
106
- export { PhysicsPileChart } from "./physics/PhysicsPileChart";
107
- export type { PhysicsPileChartProps } from "./physics/PhysicsPileChart";
106
+ export { UnitPileChart, PhysicsPileChart } from "./physics/UnitPileChart";
107
+ export type { UnitPileChartProps, PhysicsPileChartProps } from "./physics/UnitPileChart";
108
108
  export { CollisionSwarmChart } from "./physics/CollisionSwarmChart";
109
109
  export type { CollisionSwarmChartProps } from "./physics/CollisionSwarmChart";
110
110
  export * from "./physics/CrucibleChart";
@@ -120,8 +120,8 @@ export type { BodyGroupSpec, BodyGroupSpecOptions, ProcessMembraneDef, ProcessRe
120
120
  export type { RegionCountBucket, RegionCountMap } from "../recipes/processAggregates";
121
121
  export type { ProcessVolumePoint, ProcessVolumePolygon, ProcessVolumePolygonRole } from "../recipes/processVolumeGeometry";
122
122
  export type { ProcessJourneyEntityState, ProcessJourneyLedger, ProcessJourneyRow, ProcessJourneyStage, ProcessJourneyUpdateOptions } from "../recipes/processJourney";
123
- export { PhysicalFlowChart } from "./physics/PhysicalFlowChart";
124
- export type { PhysicalFlowChartProps } from "./physics/PhysicalFlowChart";
123
+ export { PacketFlowChart, PhysicalFlowChart } from "./physics/PacketFlowChart";
124
+ export type { PacketFlowChartProps, PhysicalFlowChartProps } from "./physics/PacketFlowChart";
125
125
  export { ProcessFlowChart } from "./physics/ProcessFlowChart";
126
126
  export type { ProcessFlowChartProps, ProcessFlowProjectionMetadata, ProcessFlowStageDef } from "./physics/ProcessFlowChart";
127
127
  export { PhysicsCustomChart } from "./physics/PhysicsCustomChart";
@@ -0,0 +1,9 @@
1
+ import type { ChartCapability } from "../../ai/chartCapabilityTypes";
2
+ /**
3
+ * ChainReactionChart is intentionally known to the AI surface but never selected
4
+ * from a flat data profile. The chart's whole claim is about a specific
5
+ * dependency topology — which task waits on which — and a profiler cannot
6
+ * responsibly invent edges. A dependency chart with the wrong edges is worse
7
+ * than no chart, so the graph must be authored.
8
+ */
9
+ export declare const ChainReactionChartCapability: ChartCapability;
@@ -2,6 +2,35 @@ import * as React from "react";
2
2
  import type { Datum } from "../shared/datumTypes";
3
3
  import type { ChainReactionChartHandle, ChainReactionChartProps } from "./chainReactionTypes";
4
4
  export type * from "./chainReactionTypes";
5
+ /**
6
+ * Physics-backed dependency chart whose settled reading exposes task state and each blocker's downstream reach.
7
+ *
8
+ * @example
9
+ * <ChainReactionChart
10
+ * data={[
11
+ * { id: "brief", label: "Brief", lane: "Product", dependsOn: [], status: "done" },
12
+ * { id: "release", label: "Release", lane: "Product", dependsOn: ["brief"], status: "waiting" }
13
+ * ]}
14
+ * taskIDAccessor="id"
15
+ * labelAccessor="label"
16
+ * laneAccessor="lane"
17
+ * dependencyAccessor="dependsOn"
18
+ * statusAccessor="status"
19
+ * />
20
+ *
21
+ * @example
22
+ * <ChainReactionChart
23
+ * data={releaseTasks}
24
+ * taskIDAccessor="id"
25
+ * labelAccessor="title"
26
+ * laneAccessor="workstream"
27
+ * dependencyAccessor="prerequisites"
28
+ * completionTimeAccessor="completedAt"
29
+ * mode="replay"
30
+ * controls
31
+ * insight="blocker-amplification"
32
+ * />
33
+ */
5
34
  export declare const ChainReactionChart: {
6
35
  <TDatum extends Datum = Datum>(props: ChainReactionChartProps<TDatum> & React.RefAttributes<ChainReactionChartHandle>): React.ReactElement | null;
7
36
  displayName?: string;
@@ -4,7 +4,7 @@ import type { BaseChartProps, ChartAccessor } from "../shared/types";
4
4
  import type { StyleRule } from "../shared/styleRules";
5
5
  import { type PhysicsFrameHandle } from "./physicsHocHandle";
6
6
  import { type PhysicsHocFrameProps, type PhysicsRerunMS, type PhysicsSharedChartProps, type TooltipProp } from "./physicsHocUtils";
7
- export interface CollisionSwarmChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "margin">, PhysicsSharedChartProps {
7
+ export interface CollisionSwarmChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "margin" | "selection">, PhysicsSharedChartProps {
8
8
  data?: TDatum[];
9
9
  size?: [number, number];
10
10
  xAccessor?: ChartAccessor<TDatum, number>;
@@ -4,8 +4,8 @@ import type { BaseChartProps, ChartAccessor } from "../shared/types";
4
4
  import { type EventDropWindowOptions } from "./physicsChartUtils";
5
5
  import type { StyleRule } from "../shared/styleRules";
6
6
  import { type PhysicsFrameHandle } from "./physicsHocHandle";
7
- import { type PhysicsHocFrameProps, type PhysicsSharedChartProps, type TooltipProp } from "./physicsHocUtils";
8
- export interface EventDropChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "margin">, PhysicsSharedChartProps {
7
+ import { type PhysicsHocFrameProps, type PhysicsRerunMS, type PhysicsSharedChartProps, type TooltipProp } from "./physicsHocUtils";
8
+ export interface EventDropChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "margin" | "selection">, PhysicsSharedChartProps {
9
9
  data?: TDatum[];
10
10
  size?: [number, number];
11
11
  timeAccessor?: ChartAccessor<TDatum, number>;
@@ -28,6 +28,11 @@ export interface EventDropChartProps<TDatum extends Datum = Datum> extends Omit<
28
28
  timeScale?: number;
29
29
  showProjection?: boolean;
30
30
  tooltip?: TooltipProp;
31
+ /**
32
+ * Replay the seeded simulation this many milliseconds after it settles.
33
+ * Omit or pass `null` for a single run; `0` replays on the next timer turn.
34
+ */
35
+ rerunMS?: PhysicsRerunMS;
31
36
  paused?: boolean;
32
37
  frameProps?: PhysicsHocFrameProps<"config">;
33
38
  }
@@ -14,7 +14,7 @@ export interface GaltonBoardReferenceLine {
14
14
  strokeWidth?: number;
15
15
  labelPosition?: "top" | "bottom";
16
16
  }
17
- export interface GaltonBoardChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "margin" | "mode">, PhysicsSharedChartProps {
17
+ export interface GaltonBoardChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "margin" | "mode" | "selection">, PhysicsSharedChartProps {
18
18
  data?: TDatum[];
19
19
  size?: [number, number];
20
20
  valueAccessor?: ChartAccessor<TDatum, number>;
@@ -1,2 +1,2 @@
1
1
  import type { ChartCapability } from "../../ai/chartCapabilityTypes";
2
- export declare const PhysicsPileChartCapability: ChartCapability;
2
+ export declare const PacketFlowChartCapability: ChartCapability;
@@ -4,8 +4,8 @@ import type { StyleRule } from "../shared/styleRules";
4
4
  import type { BaseChartProps, ChartAccessor } from "../shared/types";
5
5
  import { type PhysicalFlowCoordinateMode, type PhysicalFlowPathConstraint, type PhysicalFlowRawPath } from "./physicsChartUtils";
6
6
  import { type PhysicsFrameHandle } from "./physicsHocHandle";
7
- import { type PhysicsHocFrameProps, type PhysicsSharedChartProps, type TooltipProp } from "./physicsHocUtils";
8
- export interface PhysicalFlowChartProps<TNode extends Datum = Datum, TLink extends Datum = Datum> extends Omit<BaseChartProps, "margin">, PhysicsSharedChartProps {
7
+ import { type PhysicsHocFrameProps, type PhysicsRerunMS, type PhysicsSharedChartProps, type TooltipProp } from "./physicsHocUtils";
8
+ export interface PacketFlowChartProps<TNode extends Datum = Datum, TLink extends Datum = Datum> extends Omit<BaseChartProps, "margin" | "selection">, PhysicsSharedChartProps {
9
9
  nodes?: TNode[];
10
10
  links?: TLink[];
11
11
  edges?: TLink[];
@@ -37,15 +37,22 @@ export interface PhysicalFlowChartProps<TNode extends Datum = Datum, TLink exten
37
37
  styleRules?: StyleRule[];
38
38
  seed?: number;
39
39
  tooltip?: TooltipProp;
40
+ /**
41
+ * Replay the seeded simulation this many milliseconds after it settles.
42
+ * Omit or pass `null` for a single run; `0` replays on the next timer turn.
43
+ */
44
+ rerunMS?: PhysicsRerunMS;
40
45
  paused?: boolean;
41
46
  frameProps?: PhysicsHocFrameProps<"config">;
42
47
  }
48
+ /** @deprecated Renamed to {@link PacketFlowChartProps} in 3.9.0. */
49
+ export type PhysicalFlowChartProps<TNode extends Datum = Datum, TLink extends Datum = Datum> = PacketFlowChartProps<TNode, TLink>;
43
50
  /**
44
51
  * Physics-backed flow chart that sends packet bodies along authored routes while retaining a static throughput layer.
45
52
  *
46
53
  * @example
47
54
  * ```tsx
48
- * <PhysicalFlowChart
55
+ * <PacketFlowChart
49
56
  * nodes={[{ id: "in", x: 0.1, y: 0.5 }, { id: "out", x: 0.9, y: 0.5 }]}
50
57
  * links={[{ source: "in", target: "out", value: 40 }]}
51
58
  * coordinateMode="normalized"
@@ -54,7 +61,7 @@ export interface PhysicalFlowChartProps<TNode extends Datum = Datum, TLink exten
54
61
  *
55
62
  * @example
56
63
  * ```tsx
57
- * <PhysicalFlowChart
64
+ * <PacketFlowChart
58
65
  * nodes={ports}
59
66
  * edges={routes}
60
67
  * pathAccessor="path"
@@ -63,8 +70,17 @@ export interface PhysicalFlowChartProps<TNode extends Datum = Datum, TLink exten
63
70
  * />
64
71
  * ```
65
72
  */
73
+ export declare const PacketFlowChart: {
74
+ <TNode extends Datum = Datum, TLink extends Datum = Datum>(props: PacketFlowChartProps<TNode, TLink> & React.RefAttributes<PhysicsFrameHandle>): React.ReactElement | null;
75
+ displayName?: string;
76
+ };
77
+ /**
78
+ * @deprecated Renamed to {@link PacketFlowChart} in 3.9.0. Sends discrete packets along authored routes; "Physical" named the substrate and told a reader nothing about the reading protocol.
79
+ * The alias stays exported indefinitely for existing imports; new code and
80
+ * every registry (schema, capabilities, MCP, server configs) use `PacketFlowChart`.
81
+ */
66
82
  export declare const PhysicalFlowChart: {
67
- <TNode extends Datum = Datum, TLink extends Datum = Datum>(props: PhysicalFlowChartProps<TNode, TLink> & React.RefAttributes<PhysicsFrameHandle>): React.ReactElement | null;
83
+ <TNode extends Datum = Datum, TLink extends Datum = Datum>(props: PacketFlowChartProps<TNode, TLink> & React.RefAttributes<PhysicsFrameHandle>): React.ReactElement | null;
68
84
  displayName?: string;
69
85
  };
70
- export default PhysicalFlowChart;
86
+ export default PacketFlowChart;
@@ -62,7 +62,7 @@ export interface PhysicsCustomLayoutResult {
62
62
  }
63
63
  export type PhysicsCustomLayout<TDatum extends Datum = Datum, TConfig extends object = Record<string, unknown>> = (ctx: PhysicsCustomLayoutContext<TDatum, TConfig>) => PhysicsCustomLayoutResult;
64
64
  export type PhysicsCustomSpawnDatumResult = PhysicsDatumSpawnResult | PhysicsQueuedSpawn | PhysicsQueuedSpawn[];
65
- export interface PhysicsCustomChartProps<TDatum extends Datum = Datum, TConfig extends object = Record<string, unknown>> extends Omit<BaseChartProps, "margin">, PhysicsSharedChartProps {
65
+ export interface PhysicsCustomChartProps<TDatum extends Datum = Datum, TConfig extends object = Record<string, unknown>> extends Omit<BaseChartProps, "margin" | "selection">, PhysicsSharedChartProps {
66
66
  data?: TDatum[];
67
67
  layout: PhysicsCustomLayout<TDatum, TConfig>;
68
68
  /**
@@ -1,12 +1,12 @@
1
1
  import * as React from "react";
2
- import { type PhysicsBodySelection, type StreamPhysicsFrameProps } from "../../stream/physics/StreamPhysicsFrame";
2
+ import { type StreamPhysicsFrameProps } from "../../stream/physics/StreamPhysicsFrame";
3
3
  import { type CapacityQueueSnapshot } from "../../stream/physics/PhysicsControllers";
4
4
  import { type ProcessChromeOptions } from "../../recipes/processChrome";
5
5
  import type { Datum } from "../shared/datumTypes";
6
6
  import type { BaseChartProps, ChartAccessor } from "../shared/types";
7
7
  import { type ProcessFlowProjectionMetadata, type ProcessFlowStageDef } from "./physicsChartUtils";
8
8
  import { type PhysicsFrameHandle } from "./physicsHocHandle";
9
- import { type PhysicsHocFrameProps, type PhysicsSharedChartProps, type TooltipProp } from "./physicsHocUtils";
9
+ import { type PhysicsHocFrameProps, type PhysicsRerunMS, type PhysicsSharedChartProps, type TooltipProp } from "./physicsHocUtils";
10
10
  export type { ProcessFlowStageDef, ProcessFlowProjectionMetadata };
11
11
  export interface ProcessFlowChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "margin" | "selection">, PhysicsSharedChartProps {
12
12
  data?: TDatum[];
@@ -35,6 +35,11 @@ export interface ProcessFlowChartProps<TDatum extends Datum = Datum> extends Omi
35
35
  springDamping?: number;
36
36
  tooltip?: TooltipProp;
37
37
  paused?: boolean;
38
+ /**
39
+ * Replay the seeded simulation this many milliseconds after it settles.
40
+ * Omit or pass `null` for a single run; `0` replays on the next timer turn.
41
+ */
42
+ rerunMS?: PhysicsRerunMS;
38
43
  initialSpawnPacing?: StreamPhysicsFrameProps["initialSpawnPacing"];
39
44
  /**
40
45
  * When true (default), stages with `capacity` install live FIFO queue
@@ -43,8 +48,6 @@ export interface ProcessFlowChartProps<TDatum extends Datum = Datum> extends Omi
43
48
  liveCapacity?: boolean;
44
49
  /** Live capacity metrics callback (queue depth, processed count per region). */
45
50
  onCapacityChange?: (stats: CapacityQueueSnapshot[]) => void;
46
- /** Shared selection (process body restyle without relayout). */
47
- selection?: PhysicsBodySelection | null;
48
51
  /**
49
52
  * Soft body budget: caps live bodies via pipeline bodyLimit (evict oldest).
50
53
  * Use for infinite/long streams with sediment-style history in the readout.
@@ -1,2 +1,2 @@
1
1
  import type { ChartCapability } from "../../ai/chartCapabilityTypes";
2
- export declare const PhysicalFlowChartCapability: ChartCapability;
2
+ export declare const UnitPileChartCapability: ChartCapability;
@@ -3,8 +3,8 @@ import type { Datum } from "../shared/datumTypes";
3
3
  import type { BaseChartProps, ChartAccessor, ChartMode } from "../shared/types";
4
4
  import type { StyleRule } from "../shared/styleRules";
5
5
  import { type PhysicsFrameHandle } from "./physicsHocHandle";
6
- import { type PhysicsHocFrameProps, type PhysicsSharedChartProps, type PhysicsSimulationMode, type TooltipProp } from "./physicsHocUtils";
7
- export interface PhysicsPileChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "margin" | "mode">, PhysicsSharedChartProps {
6
+ import { type PhysicsHocFrameProps, type PhysicsRerunMS, type PhysicsSharedChartProps, type PhysicsSimulationMode, type TooltipProp } from "./physicsHocUtils";
7
+ export interface UnitPileChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "margin" | "mode" | "selection">, PhysicsSharedChartProps {
8
8
  data?: TDatum[];
9
9
  size?: [number, number];
10
10
  categoryAccessor?: ChartAccessor<TDatum, string>;
@@ -30,15 +30,22 @@ export interface PhysicsPileChartProps<TDatum extends Datum = Datum> extends Omi
30
30
  showProjection?: boolean;
31
31
  sediment?: boolean;
32
32
  tooltip?: TooltipProp;
33
+ /**
34
+ * Replay the seeded simulation this many milliseconds after it settles.
35
+ * Omit or pass `null` for a single run; `0` replays on the next timer turn.
36
+ */
37
+ rerunMS?: PhysicsRerunMS;
33
38
  paused?: boolean;
34
39
  frameProps?: PhysicsHocFrameProps<"config">;
35
40
  }
41
+ /** @deprecated Renamed to {@link UnitPileChartProps} in 3.9.0. */
42
+ export type PhysicsPileChartProps<TDatum extends Datum = Datum> = UnitPileChartProps<TDatum>;
36
43
  /**
37
44
  * Physics-backed unit pile chart that converts category values into repeated bodies and a readable settled projection.
38
45
  *
39
46
  * @example
40
47
  * ```tsx
41
- * <PhysicsPileChart
48
+ * <UnitPileChart
42
49
  * data={[{ category: "A", value: 12 }, { category: "B", value: 8 }]}
43
50
  * categoryAccessor="category"
44
51
  * valueAccessor="value"
@@ -48,7 +55,7 @@ export interface PhysicsPileChartProps<TDatum extends Datum = Datum> extends Omi
48
55
  *
49
56
  * @example
50
57
  * ```tsx
51
- * <PhysicsPileChart
58
+ * <UnitPileChart
52
59
  * mode="mechanical"
53
60
  * mechanicalCategories={["North", "South", "West"]}
54
61
  * mechanicalCount={90}
@@ -56,5 +63,11 @@ export interface PhysicsPileChartProps<TDatum extends Datum = Datum> extends Omi
56
63
  * />
57
64
  * ```
58
65
  */
59
- export declare const PhysicsPileChart: React.ForwardRefExoticComponent<PhysicsPileChartProps<Datum> & React.RefAttributes<PhysicsFrameHandle>>;
60
- export default PhysicsPileChart;
66
+ export declare const UnitPileChart: React.ForwardRefExoticComponent<UnitPileChartProps<Datum> & React.RefAttributes<PhysicsFrameHandle>>;
67
+ /**
68
+ * @deprecated Renamed to {@link UnitPileChart} in 3.9.0. Unitizes category values into countable bodies; the substrate is an implementation detail, not the reading.
69
+ * The alias stays exported indefinitely for existing imports; new code and
70
+ * every registry (schema, capabilities, MCP, server configs) use `UnitPileChart`.
71
+ */
72
+ export declare const PhysicsPileChart: React.ForwardRefExoticComponent<UnitPileChartProps<Datum> & React.RefAttributes<PhysicsFrameHandle>>;
73
+ export default UnitPileChart;
@@ -32,7 +32,7 @@ export type CrucibleSnapshotAt = number | {
32
32
  progress?: number;
33
33
  };
34
34
  export type CrucibleColorBy<TDatum extends Datum = Datum> = "category" | "status" | "outlet" | "product" | ChartAccessor<TDatum, string>;
35
- export interface CrucibleChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "margin" | "onClick">, PhysicsSharedChartProps {
35
+ export interface CrucibleChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "margin" | "onClick" | "selection">, PhysicsSharedChartProps {
36
36
  /** Controlled, bounded source charge. CrucibleChart has no live push API. */
37
37
  data: TDatum[];
38
38
  /** Ordered furnace program. Every phase must have a unique id and duration. */
@@ -0,0 +1,9 @@
1
+ import type { Datum } from "../shared/datumTypes";
2
+ import type { CrucibleColorBy, CrucibleControls } from "./crucibleChartProps";
3
+ import type { CrucibleComponentState, CrucibleRunState } from "./crucibleTypes";
4
+ export declare function numericCrucibleSeed(seed: number | string | undefined): number;
5
+ export declare function boundedCruciblePlaybackRate(value: unknown): number;
6
+ export declare function resolveCrucibleControls(controls: boolean | CrucibleControls | undefined): Required<CrucibleControls>;
7
+ export declare function crucibleColorKey<TDatum extends Datum>(component: CrucibleComponentState<TDatum>, colorBy: CrucibleColorBy<TDatum>, index: number): string;
8
+ export declare function crucibleColorForKey(key: string): string;
9
+ export declare function crucibleStateSummary<TDatum extends Datum>(state: CrucibleRunState<TDatum>, amountLabel?: string): string;