semiotic 3.8.4 → 3.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/CLAUDE.md +6 -3
  2. package/README.md +44 -38
  3. package/ai/componentMetadata.cjs +1 -1
  4. package/ai/dist/mcp-server.js +4 -2
  5. package/ai/examples.md +167 -0
  6. package/ai/schema.json +1004 -1
  7. package/ai/surface-manifest.json +6 -4
  8. package/ai/system-prompt.md +1 -1
  9. package/dist/chunk-chartContainerDataAudit-74TLKIP6.module.min.js +2 -0
  10. package/dist/{chunk-chunk-LQBSXO7K.module.min.js → chunk-chunk-4AANPFOX.module.min.js} +1 -1
  11. package/dist/{chunk-chunk-N6VKKF3A.module.min.js → chunk-chunk-5I3UZV4Q.module.min.js} +1 -1
  12. package/dist/chunk-chunk-74CCPVXB.module.min.js +1 -0
  13. package/dist/{chunk-chunk-6TPGFL7M.module.min.js → chunk-chunk-BANTPINB.module.min.js} +1 -1
  14. package/dist/chunk-chunk-CKMD5NV3.module.min.js +2 -0
  15. package/dist/chunk-chunk-CO5KQMGH.module.min.js +1 -0
  16. package/dist/{chunk-chunk-BFHUYEOS.module.min.js → chunk-chunk-CWQ5YIHX.module.min.js} +1 -1
  17. package/dist/chunk-chunk-E6TXX6MI.module.min.js +1 -0
  18. package/dist/{chunk-chunk-JDXT6ORT.module.min.js → chunk-chunk-I36PJ4OC.module.min.js} +1 -1
  19. package/dist/chunk-chunk-K3DMEW22.module.min.js +1 -0
  20. package/dist/chunk-chunk-KT2VAZMZ.module.min.js +1 -0
  21. package/dist/{chunk-chunk-AQPQN2HH.module.min.js → chunk-chunk-L6EA5V3G.module.min.js} +1 -1
  22. package/dist/{chunk-chunk-FBGHXL72.module.min.js → chunk-chunk-LJLS6DY7.module.min.js} +1 -1
  23. package/dist/chunk-chunk-LJPCLYSC.module.min.js +2 -0
  24. package/dist/{chunk-chunk-7RYBCTK5.module.min.js → chunk-chunk-N5DDKCCF.module.min.js} +1 -1
  25. package/dist/chunk-chunk-NLO44TOS.module.min.js +2 -0
  26. package/dist/{chunk-chunk-F5V4UIE6.module.min.js → chunk-chunk-PZJ2SBLL.module.min.js} +1 -1
  27. package/dist/chunk-chunk-QUJ6TTLY.module.min.js +1 -0
  28. package/dist/chunk-chunk-RBIDBUT4.module.min.js +2 -0
  29. package/dist/chunk-chunk-RFLAG356.module.min.js +1 -0
  30. package/dist/{chunk-chunk-7KZJUTKP.module.min.js → chunk-chunk-RPU4IZAV.module.min.js} +1 -1
  31. package/dist/{chunk-chunk-PLIDPQNG.module.min.js → chunk-chunk-SKMBCFIL.module.min.js} +1 -1
  32. package/dist/{chunk-chunk-SR4ZXOWR.module.min.js → chunk-chunk-TAE7W424.module.min.js} +1 -1
  33. package/dist/{chunk-chunk-KQ546MKE.module.min.js → chunk-chunk-TMWIZL3K.module.min.js} +1 -1
  34. package/dist/chunk-chunk-TUBMTZMU.module.min.js +2 -0
  35. package/dist/chunk-chunk-UFFEXJQY.module.min.js +1 -0
  36. package/dist/chunk-chunk-XSCHTS4D.module.min.js +2 -0
  37. package/dist/{chunk-chunk-F7WFPD4O.module.min.js → chunk-chunk-XXWSHGPL.module.min.js} +1 -1
  38. package/dist/chunk-chunk-ZXIXAPRE.module.min.js +2 -0
  39. package/dist/components/ChartContainer.d.ts +10 -0
  40. package/dist/components/ai/chartCapabilities.d.ts +2 -1
  41. package/dist/components/ai/chartCapabilityTypes.d.ts +14 -0
  42. package/dist/components/chartContainerDataAudit.d.ts +10 -0
  43. package/dist/components/charts/geo/DistanceCartogram.d.ts +29 -3
  44. package/dist/components/charts/index.d.ts +1 -0
  45. package/dist/components/charts/network/ForceDirectedGraph.d.ts +36 -1
  46. package/dist/components/charts/physics/CrucibleChart.capability.d.ts +8 -0
  47. package/dist/components/charts/physics/CrucibleChart.d.ts +63 -0
  48. package/dist/components/charts/physics/crucibleBodyRenderers.d.ts +27 -0
  49. package/dist/components/charts/physics/crucibleChartProps.d.ts +90 -0
  50. package/dist/components/charts/physics/crucibleChrome.d.ts +47 -0
  51. package/dist/components/charts/physics/crucibleController.d.ts +59 -0
  52. package/dist/components/charts/physics/crucibleEffects.d.ts +30 -0
  53. package/dist/components/charts/physics/cruciblePhysics.d.ts +54 -0
  54. package/dist/components/charts/physics/crucibleProgram.d.ts +38 -0
  55. package/dist/components/charts/physics/crucibleTypes.d.ts +415 -0
  56. package/dist/components/charts/shared/chartSpecCore.d.ts +8 -0
  57. package/dist/components/charts/shared/crucibleWireSchema.d.ts +5 -0
  58. package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
  59. package/dist/components/charts/shared/knownChartComponents.d.ts +1 -1
  60. package/dist/components/data/auditData.d.ts +51 -0
  61. package/dist/components/data/dataAuditPresentation.d.ts +18 -0
  62. package/dist/components/data/dataAuditSources.d.ts +9 -0
  63. package/dist/components/data/numericContracts.d.ts +59 -0
  64. package/dist/components/data/numericFieldProfiler.d.ts +23 -0
  65. package/dist/components/recipes/netEnsembleLayout.d.ts +167 -0
  66. package/dist/components/recipes/netEnsembleOverlays.d.ts +20 -0
  67. package/dist/components/recipes/wordTrails.d.ts +156 -0
  68. package/dist/components/recipes/wordTrailsProgressiveReveal.d.ts +42 -0
  69. package/dist/components/semiotic-ai-core.d.ts +3 -0
  70. package/dist/components/semiotic-ai-data-audit.d.ts +4 -0
  71. package/dist/components/semiotic-ai.d.ts +7 -5
  72. package/dist/components/semiotic-physics.d.ts +1 -0
  73. package/dist/components/semiotic-recipes-core.d.ts +4 -0
  74. package/dist/components/semiotic-utils-core.d.ts +3 -0
  75. package/dist/components/semiotic.d.ts +1 -1
  76. package/dist/components/server/renderEvidence.d.ts +27 -0
  77. package/dist/components/server/serverChartConfigs.d.ts +1 -0
  78. package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
  79. package/dist/components/server/staticAnnotations.d.ts +12 -0
  80. package/dist/components/stream/GeoPipelineStore.d.ts +1 -0
  81. package/dist/components/stream/GeoSVGOverlay.d.ts +7 -0
  82. package/dist/components/stream/geoCartogram.d.ts +7 -0
  83. package/dist/components/stream/geoTypes.d.ts +17 -2
  84. package/dist/components/stream/networkFrameHandleTypes.d.ts +4 -0
  85. package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +8 -0
  86. package/dist/components/useChartContainerDataAudit.d.ts +7 -0
  87. package/dist/geo.min.js +1 -1
  88. package/dist/geo.module.min.js +1 -1
  89. package/dist/network.min.js +1 -1
  90. package/dist/network.module.min.js +1 -1
  91. package/dist/ordinal.module.min.js +1 -1
  92. package/dist/physics.min.js +1 -1
  93. package/dist/physics.module.min.js +1 -1
  94. package/dist/realtime.min.js +1 -1
  95. package/dist/realtime.module.min.js +1 -1
  96. package/dist/semiotic-ai-core.d.ts +3 -0
  97. package/dist/semiotic-ai-core.min.js +1 -1
  98. package/dist/semiotic-ai-core.module.min.js +1 -1
  99. package/dist/semiotic-ai.d.ts +7 -5
  100. package/dist/semiotic-ai.min.js +1 -1
  101. package/dist/semiotic-ai.module.min.js +1 -1
  102. package/dist/semiotic-experimental.min.js +1 -1
  103. package/dist/semiotic-experimental.module.min.js +1 -1
  104. package/dist/semiotic-physics.d.ts +1 -0
  105. package/dist/semiotic-realtime-core.min.js +1 -1
  106. package/dist/semiotic-realtime-core.module.min.js +1 -1
  107. package/dist/semiotic-recipes-core.d.ts +4 -0
  108. package/dist/semiotic-recipes-core.min.js +1 -1
  109. package/dist/semiotic-recipes-core.module.min.js +1 -1
  110. package/dist/semiotic-recipes.min.js +1 -1
  111. package/dist/semiotic-recipes.module.min.js +1 -1
  112. package/dist/semiotic-server-edge.min.js +1 -1
  113. package/dist/semiotic-server-edge.module.min.js +1 -1
  114. package/dist/semiotic-server-node.min.js +1 -1
  115. package/dist/semiotic-server-node.module.min.js +1 -1
  116. package/dist/semiotic-utils-core.d.ts +3 -0
  117. package/dist/semiotic-utils-core.min.js +1 -1
  118. package/dist/semiotic-utils-core.module.min.js +1 -1
  119. package/dist/semiotic-utils.min.js +1 -1
  120. package/dist/semiotic-utils.module.min.js +1 -1
  121. package/dist/semiotic.d.ts +1 -1
  122. package/dist/semiotic.min.js +1 -1
  123. package/dist/semiotic.module.min.js +1 -1
  124. package/dist/server.min.js +1 -1
  125. package/dist/server.module.min.js +1 -1
  126. package/dist/xy.module.min.js +1 -1
  127. package/package.json +2 -2
  128. package/dist/chunk-chunk-3ILKBVVQ.module.min.js +0 -1
  129. package/dist/chunk-chunk-ASKSE5F5.module.min.js +0 -1
  130. package/dist/chunk-chunk-B3DRZPBK.module.min.js +0 -2
  131. package/dist/chunk-chunk-FP44FHFO.module.min.js +0 -2
  132. package/dist/chunk-chunk-HKXUAEPJ.module.min.js +0 -2
  133. package/dist/chunk-chunk-ICEXPNDC.module.min.js +0 -2
  134. package/dist/chunk-chunk-JMVEIZXP.module.min.js +0 -1
  135. package/dist/chunk-chunk-KHCOJMGK.module.min.js +0 -1
  136. package/dist/chunk-chunk-MFHF4J2Z.module.min.js +0 -1
  137. package/dist/chunk-chunk-NKZ75IM5.module.min.js +0 -2
  138. package/dist/chunk-chunk-QGZGZI4X.module.min.js +0 -1
  139. package/dist/chunk-chunk-RP7WTID5.module.min.js +0 -1
  140. package/dist/chunk-chunk-S7KLNUO6.module.min.js +0 -1
package/ai/schema.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "name": "semiotic",
4
- "version": "3.8.4",
4
+ "version": "3.8.5",
5
5
  "description": "React data visualization library for charts, networks, and beyond",
6
6
  "tools": [
7
7
  {
@@ -11206,6 +11206,14 @@
11206
11206
  "showRingLabels": {
11207
11207
  "type": "boolean",
11208
11208
  "description": "Show numeric distance-ring labels; defaults off in context and sparkline modes."
11209
+ },
11210
+ "cartogramLayout": {
11211
+ "type": "string",
11212
+ "enum": [
11213
+ "radial",
11214
+ "strip"
11215
+ ],
11216
+ "description": "Cost encoding: radial polar cartogram (default) or strip (Langren 1D cost axis). Sparkline mode defaults to strip."
11209
11217
  }
11210
11218
  },
11211
11219
  "required": [
@@ -13527,6 +13535,1001 @@
13527
13535
  ]
13528
13536
  }
13529
13537
  }
13538
+ },
13539
+ {
13540
+ "type": "function",
13541
+ "function": {
13542
+ "name": "CrucibleChart",
13543
+ "description": "Physics-backed authored treatment chart. A bounded source charge passes through explicit phases and events into declared product molds and reason-labelled outlets; physics presents formation and separation but never discovers the program or products.",
13544
+ "parameters": {
13545
+ "type": "object",
13546
+ "properties": {
13547
+ "data": {
13548
+ "type": "array",
13549
+ "description": "Array of source records. Each record becomes one or more simulated bodies."
13550
+ },
13551
+ "size": {
13552
+ "type": "array",
13553
+ "description": "[width, height] in pixels"
13554
+ },
13555
+ "width": {
13556
+ "type": "number",
13557
+ "description": "Alias for size[0]"
13558
+ },
13559
+ "height": {
13560
+ "type": "number",
13561
+ "description": "Alias for size[1]"
13562
+ },
13563
+ "className": {
13564
+ "type": "string"
13565
+ },
13566
+ "title": {
13567
+ "type": "string"
13568
+ },
13569
+ "responsiveWidth": {
13570
+ "type": "boolean"
13571
+ },
13572
+ "responsiveHeight": {
13573
+ "type": "boolean"
13574
+ },
13575
+ "colorBy": {
13576
+ "type": "string",
13577
+ "description": "Color sources by category, status, outlet, product, or a categorical accessor.",
13578
+ "default": "category",
13579
+ "x-semiotic-runtime-types": [
13580
+ "string",
13581
+ "function"
13582
+ ]
13583
+ },
13584
+ "seed": {
13585
+ "type": [
13586
+ "number",
13587
+ "string"
13588
+ ],
13589
+ "description": "Deterministic placement seed. It cannot change events, products, or destinations.",
13590
+ "default": 1
13591
+ },
13592
+ "ballRadius": {
13593
+ "type": "number",
13594
+ "description": "Radius of each simulated circular body in pixels."
13595
+ },
13596
+ "hoverRadius": {
13597
+ "type": "number",
13598
+ "description": "Pixel hit radius for body hover tooltips."
13599
+ },
13600
+ "paused": {
13601
+ "type": "boolean",
13602
+ "description": "Pause semantic playback without altering authored time or terminal accounting.",
13603
+ "default": false
13604
+ },
13605
+ "tooltip": {
13606
+ "type": [
13607
+ "boolean",
13608
+ "object"
13609
+ ],
13610
+ "description": "Tooltip content function/config, true for the default body tooltip, or false to disable hover tooltips.",
13611
+ "x-semiotic-runtime-types": [
13612
+ "boolean",
13613
+ "function",
13614
+ "object"
13615
+ ]
13616
+ },
13617
+ "description": {
13618
+ "type": "string",
13619
+ "description": "Accessible description of the authored charge, treatment, and terminal accounting."
13620
+ },
13621
+ "summary": {
13622
+ "type": "string",
13623
+ "description": "Screen-reader summary of the final products, outlets, and any conservation result."
13624
+ },
13625
+ "phases": {
13626
+ "type": "array",
13627
+ "description": "Required ordered furnace program. Supply unique phase ids, positive durations, labels, and optional authored motion/intensity; phases are never inferred from data.",
13628
+ "minItems": 1,
13629
+ "items": {
13630
+ "type": "object",
13631
+ "properties": {
13632
+ "id": {
13633
+ "type": "string"
13634
+ },
13635
+ "duration": {
13636
+ "type": "number",
13637
+ "exclusiveMinimum": 0
13638
+ },
13639
+ "label": {
13640
+ "type": "string"
13641
+ },
13642
+ "description": {
13643
+ "type": "string"
13644
+ },
13645
+ "intensity": {
13646
+ "type": "number"
13647
+ },
13648
+ "motion": {
13649
+ "type": "string",
13650
+ "enum": [
13651
+ "charge",
13652
+ "mix",
13653
+ "hold",
13654
+ "press",
13655
+ "bind",
13656
+ "separate",
13657
+ "pour",
13658
+ "quench"
13659
+ ]
13660
+ },
13661
+ "color": {
13662
+ "type": "string"
13663
+ },
13664
+ "metrics": {
13665
+ "type": "object"
13666
+ }
13667
+ },
13668
+ "required": [
13669
+ "id",
13670
+ "duration"
13671
+ ],
13672
+ "additionalProperties": false
13673
+ }
13674
+ },
13675
+ "products": {
13676
+ "type": "array",
13677
+ "description": "Declared product molds referenced by combine, contribute, complete-product, and split effects. Products are never inferred from collisions or flat rows.",
13678
+ "items": {
13679
+ "type": "object",
13680
+ "properties": {
13681
+ "id": {
13682
+ "type": "string"
13683
+ },
13684
+ "label": {
13685
+ "type": "string"
13686
+ },
13687
+ "description": {
13688
+ "type": "string"
13689
+ },
13690
+ "category": {
13691
+ "type": "string"
13692
+ },
13693
+ "amount": {
13694
+ "type": "number",
13695
+ "minimum": 0
13696
+ },
13697
+ "color": {
13698
+ "type": "string"
13699
+ },
13700
+ "metrics": {
13701
+ "type": "object",
13702
+ "additionalProperties": {
13703
+ "type": "number"
13704
+ }
13705
+ },
13706
+ "outletId": {
13707
+ "type": "string"
13708
+ },
13709
+ "order": {
13710
+ "type": "number"
13711
+ }
13712
+ },
13713
+ "required": [
13714
+ "id"
13715
+ ],
13716
+ "additionalProperties": false
13717
+ }
13718
+ },
13719
+ "events": {
13720
+ "type": "array",
13721
+ "description": "Serializable authored event tape. Each event has a stable id, a time or phase/progress position, and explicit effects.",
13722
+ "items": {
13723
+ "type": "object",
13724
+ "properties": {
13725
+ "id": {
13726
+ "type": "string"
13727
+ },
13728
+ "at": {
13729
+ "oneOf": [
13730
+ {
13731
+ "type": "object",
13732
+ "properties": {
13733
+ "time": {
13734
+ "type": "number",
13735
+ "minimum": 0
13736
+ }
13737
+ },
13738
+ "required": [
13739
+ "time"
13740
+ ],
13741
+ "additionalProperties": false
13742
+ },
13743
+ {
13744
+ "type": "object",
13745
+ "properties": {
13746
+ "phaseId": {
13747
+ "type": "string"
13748
+ },
13749
+ "progress": {
13750
+ "type": "number",
13751
+ "minimum": 0,
13752
+ "maximum": 1
13753
+ }
13754
+ },
13755
+ "required": [
13756
+ "phaseId"
13757
+ ],
13758
+ "additionalProperties": false
13759
+ }
13760
+ ]
13761
+ },
13762
+ "effects": {
13763
+ "type": "array",
13764
+ "items": {
13765
+ "oneOf": [
13766
+ {
13767
+ "type": "object",
13768
+ "description": "Change the explicit semantic state of selected source components.",
13769
+ "properties": {
13770
+ "type": {
13771
+ "const": "set-state"
13772
+ },
13773
+ "select": {
13774
+ "type": "object",
13775
+ "properties": {
13776
+ "ids": {
13777
+ "type": "array",
13778
+ "items": {
13779
+ "type": "string"
13780
+ },
13781
+ "minItems": 1
13782
+ },
13783
+ "categories": {
13784
+ "type": "array",
13785
+ "items": {
13786
+ "type": "string"
13787
+ },
13788
+ "minItems": 1
13789
+ },
13790
+ "statuses": {
13791
+ "type": "array",
13792
+ "items": {
13793
+ "type": "string",
13794
+ "enum": [
13795
+ "queued",
13796
+ "active",
13797
+ "transformed",
13798
+ "consumed",
13799
+ "retained",
13800
+ "ejected",
13801
+ "failed",
13802
+ "recovered"
13803
+ ]
13804
+ },
13805
+ "minItems": 1
13806
+ },
13807
+ "outletIds": {
13808
+ "type": "array",
13809
+ "items": {
13810
+ "type": "string"
13811
+ },
13812
+ "minItems": 1
13813
+ },
13814
+ "count": {
13815
+ "type": "integer",
13816
+ "minimum": 0
13817
+ }
13818
+ },
13819
+ "additionalProperties": false
13820
+ },
13821
+ "state": {
13822
+ "type": "string",
13823
+ "enum": [
13824
+ "queued",
13825
+ "active",
13826
+ "transformed",
13827
+ "retained",
13828
+ "ejected",
13829
+ "failed",
13830
+ "recovered"
13831
+ ]
13832
+ },
13833
+ "outletId": {
13834
+ "type": "string"
13835
+ },
13836
+ "reason": {
13837
+ "type": "string"
13838
+ },
13839
+ "metricsDelta": {
13840
+ "type": "object",
13841
+ "additionalProperties": {
13842
+ "type": "number"
13843
+ }
13844
+ }
13845
+ },
13846
+ "required": [
13847
+ "type",
13848
+ "select",
13849
+ "state"
13850
+ ],
13851
+ "additionalProperties": false
13852
+ },
13853
+ {
13854
+ "type": "object",
13855
+ "description": "Author a visible relation; physics never discovers one.",
13856
+ "properties": {
13857
+ "type": {
13858
+ "const": "set-relation"
13859
+ },
13860
+ "relation": {
13861
+ "type": "object",
13862
+ "properties": {
13863
+ "id": {
13864
+ "type": "string"
13865
+ },
13866
+ "sourceIds": {
13867
+ "type": "array",
13868
+ "items": {
13869
+ "type": "string"
13870
+ },
13871
+ "minItems": 2
13872
+ },
13873
+ "label": {
13874
+ "type": "string"
13875
+ },
13876
+ "category": {
13877
+ "type": "string"
13878
+ },
13879
+ "strength": {
13880
+ "type": "number"
13881
+ },
13882
+ "metrics": {
13883
+ "type": "object",
13884
+ "additionalProperties": {
13885
+ "type": "number"
13886
+ }
13887
+ }
13888
+ },
13889
+ "required": [
13890
+ "id",
13891
+ "sourceIds"
13892
+ ],
13893
+ "additionalProperties": false
13894
+ }
13895
+ },
13896
+ "required": [
13897
+ "type",
13898
+ "relation"
13899
+ ],
13900
+ "additionalProperties": false
13901
+ },
13902
+ {
13903
+ "type": "object",
13904
+ "description": "Resolve previously authored relations.",
13905
+ "properties": {
13906
+ "type": {
13907
+ "const": "resolve-relation"
13908
+ },
13909
+ "relationIds": {
13910
+ "type": "array",
13911
+ "items": {
13912
+ "type": "string"
13913
+ },
13914
+ "minItems": 1
13915
+ },
13916
+ "resolution": {
13917
+ "type": "string",
13918
+ "enum": [
13919
+ "combined",
13920
+ "rejected",
13921
+ "expired"
13922
+ ]
13923
+ },
13924
+ "reason": {
13925
+ "type": "string"
13926
+ }
13927
+ },
13928
+ "required": [
13929
+ "type",
13930
+ "relationIds",
13931
+ "resolution"
13932
+ ],
13933
+ "additionalProperties": false
13934
+ },
13935
+ {
13936
+ "type": "object",
13937
+ "description": "Combine named sources into a declared product. Set complete=false before later contribute effects.",
13938
+ "properties": {
13939
+ "type": {
13940
+ "const": "combine"
13941
+ },
13942
+ "sourceIds": {
13943
+ "type": "array",
13944
+ "items": {
13945
+ "type": "string"
13946
+ },
13947
+ "minItems": 1
13948
+ },
13949
+ "productId": {
13950
+ "type": "string"
13951
+ },
13952
+ "basisRelationIds": {
13953
+ "type": "array",
13954
+ "items": {
13955
+ "type": "string"
13956
+ },
13957
+ "minItems": 1
13958
+ },
13959
+ "loss": {
13960
+ "type": "object",
13961
+ "properties": {
13962
+ "amount": {
13963
+ "type": "number",
13964
+ "minimum": 0
13965
+ },
13966
+ "metrics": {
13967
+ "type": "object",
13968
+ "additionalProperties": {
13969
+ "type": "number"
13970
+ }
13971
+ },
13972
+ "label": {
13973
+ "type": "string"
13974
+ }
13975
+ },
13976
+ "additionalProperties": false
13977
+ },
13978
+ "complete": {
13979
+ "type": "boolean",
13980
+ "default": true
13981
+ }
13982
+ },
13983
+ "required": [
13984
+ "type",
13985
+ "sourceIds",
13986
+ "productId"
13987
+ ],
13988
+ "additionalProperties": false
13989
+ },
13990
+ {
13991
+ "type": "object",
13992
+ "description": "Add named sources to an explicitly forming product.",
13993
+ "properties": {
13994
+ "type": {
13995
+ "const": "contribute"
13996
+ },
13997
+ "sourceIds": {
13998
+ "type": "array",
13999
+ "items": {
14000
+ "type": "string"
14001
+ },
14002
+ "minItems": 1
14003
+ },
14004
+ "productId": {
14005
+ "type": "string"
14006
+ },
14007
+ "basisRelationIds": {
14008
+ "type": "array",
14009
+ "items": {
14010
+ "type": "string"
14011
+ },
14012
+ "minItems": 1
14013
+ },
14014
+ "loss": {
14015
+ "type": "object",
14016
+ "properties": {
14017
+ "amount": {
14018
+ "type": "number",
14019
+ "minimum": 0
14020
+ },
14021
+ "metrics": {
14022
+ "type": "object",
14023
+ "additionalProperties": {
14024
+ "type": "number"
14025
+ }
14026
+ },
14027
+ "label": {
14028
+ "type": "string"
14029
+ }
14030
+ },
14031
+ "additionalProperties": false
14032
+ }
14033
+ },
14034
+ "required": [
14035
+ "type",
14036
+ "sourceIds",
14037
+ "productId"
14038
+ ],
14039
+ "additionalProperties": false
14040
+ },
14041
+ {
14042
+ "type": "object",
14043
+ "description": "Complete a forming product and optionally route it to a declared outlet.",
14044
+ "properties": {
14045
+ "type": {
14046
+ "const": "complete-product"
14047
+ },
14048
+ "productId": {
14049
+ "type": "string"
14050
+ },
14051
+ "outletId": {
14052
+ "type": "string"
14053
+ },
14054
+ "reason": {
14055
+ "type": "string"
14056
+ }
14057
+ },
14058
+ "required": [
14059
+ "type",
14060
+ "productId"
14061
+ ],
14062
+ "additionalProperties": false
14063
+ },
14064
+ {
14065
+ "type": "object",
14066
+ "description": "Split one named source into explicit product allocations.",
14067
+ "properties": {
14068
+ "type": {
14069
+ "const": "split"
14070
+ },
14071
+ "sourceId": {
14072
+ "type": "string"
14073
+ },
14074
+ "products": {
14075
+ "type": "array",
14076
+ "items": {
14077
+ "type": "object",
14078
+ "properties": {
14079
+ "productId": {
14080
+ "type": "string"
14081
+ },
14082
+ "amount": {
14083
+ "type": "number",
14084
+ "minimum": 0
14085
+ },
14086
+ "metrics": {
14087
+ "type": "object",
14088
+ "additionalProperties": {
14089
+ "type": "number"
14090
+ }
14091
+ }
14092
+ },
14093
+ "required": [
14094
+ "productId"
14095
+ ],
14096
+ "additionalProperties": false
14097
+ },
14098
+ "minItems": 1
14099
+ },
14100
+ "loss": {
14101
+ "type": "object",
14102
+ "properties": {
14103
+ "amount": {
14104
+ "type": "number",
14105
+ "minimum": 0
14106
+ },
14107
+ "metrics": {
14108
+ "type": "object",
14109
+ "additionalProperties": {
14110
+ "type": "number"
14111
+ }
14112
+ },
14113
+ "label": {
14114
+ "type": "string"
14115
+ }
14116
+ },
14117
+ "additionalProperties": false
14118
+ }
14119
+ },
14120
+ "required": [
14121
+ "type",
14122
+ "sourceId",
14123
+ "products"
14124
+ ],
14125
+ "additionalProperties": false
14126
+ },
14127
+ {
14128
+ "type": "object",
14129
+ "description": "Route selected source components to a declared outlet with a reason.",
14130
+ "properties": {
14131
+ "type": {
14132
+ "const": "eject"
14133
+ },
14134
+ "select": {
14135
+ "type": "object",
14136
+ "properties": {
14137
+ "ids": {
14138
+ "type": "array",
14139
+ "items": {
14140
+ "type": "string"
14141
+ },
14142
+ "minItems": 1
14143
+ },
14144
+ "categories": {
14145
+ "type": "array",
14146
+ "items": {
14147
+ "type": "string"
14148
+ },
14149
+ "minItems": 1
14150
+ },
14151
+ "statuses": {
14152
+ "type": "array",
14153
+ "items": {
14154
+ "type": "string",
14155
+ "enum": [
14156
+ "queued",
14157
+ "active",
14158
+ "transformed",
14159
+ "consumed",
14160
+ "retained",
14161
+ "ejected",
14162
+ "failed",
14163
+ "recovered"
14164
+ ]
14165
+ },
14166
+ "minItems": 1
14167
+ },
14168
+ "outletIds": {
14169
+ "type": "array",
14170
+ "items": {
14171
+ "type": "string"
14172
+ },
14173
+ "minItems": 1
14174
+ },
14175
+ "count": {
14176
+ "type": "integer",
14177
+ "minimum": 0
14178
+ }
14179
+ },
14180
+ "additionalProperties": false
14181
+ },
14182
+ "outletId": {
14183
+ "type": "string"
14184
+ },
14185
+ "state": {
14186
+ "type": "string",
14187
+ "enum": [
14188
+ "ejected",
14189
+ "failed",
14190
+ "retained",
14191
+ "recovered"
14192
+ ]
14193
+ },
14194
+ "reason": {
14195
+ "type": "string"
14196
+ }
14197
+ },
14198
+ "required": [
14199
+ "type",
14200
+ "select",
14201
+ "outletId"
14202
+ ],
14203
+ "additionalProperties": false
14204
+ },
14205
+ {
14206
+ "type": "object",
14207
+ "description": "Apply an explicit numeric metric delta to the run, sources, or products.",
14208
+ "properties": {
14209
+ "type": {
14210
+ "const": "set-metric"
14211
+ },
14212
+ "target": {
14213
+ "oneOf": [
14214
+ {
14215
+ "const": "run"
14216
+ },
14217
+ {
14218
+ "type": "object",
14219
+ "properties": {
14220
+ "components": {
14221
+ "type": "object",
14222
+ "properties": {
14223
+ "ids": {
14224
+ "type": "array",
14225
+ "items": {
14226
+ "type": "string"
14227
+ },
14228
+ "minItems": 1
14229
+ },
14230
+ "categories": {
14231
+ "type": "array",
14232
+ "items": {
14233
+ "type": "string"
14234
+ },
14235
+ "minItems": 1
14236
+ },
14237
+ "statuses": {
14238
+ "type": "array",
14239
+ "items": {
14240
+ "type": "string",
14241
+ "enum": [
14242
+ "queued",
14243
+ "active",
14244
+ "transformed",
14245
+ "consumed",
14246
+ "retained",
14247
+ "ejected",
14248
+ "failed",
14249
+ "recovered"
14250
+ ]
14251
+ },
14252
+ "minItems": 1
14253
+ },
14254
+ "outletIds": {
14255
+ "type": "array",
14256
+ "items": {
14257
+ "type": "string"
14258
+ },
14259
+ "minItems": 1
14260
+ },
14261
+ "count": {
14262
+ "type": "integer",
14263
+ "minimum": 0
14264
+ }
14265
+ },
14266
+ "additionalProperties": false
14267
+ }
14268
+ },
14269
+ "required": [
14270
+ "components"
14271
+ ],
14272
+ "additionalProperties": false
14273
+ },
14274
+ {
14275
+ "type": "object",
14276
+ "properties": {
14277
+ "productIds": {
14278
+ "type": "array",
14279
+ "items": {
14280
+ "type": "string"
14281
+ },
14282
+ "minItems": 1
14283
+ }
14284
+ },
14285
+ "required": [
14286
+ "productIds"
14287
+ ],
14288
+ "additionalProperties": false
14289
+ }
14290
+ ]
14291
+ },
14292
+ "metricsDelta": {
14293
+ "type": "object",
14294
+ "additionalProperties": {
14295
+ "type": "number"
14296
+ }
14297
+ }
14298
+ },
14299
+ "required": [
14300
+ "type",
14301
+ "target",
14302
+ "metricsDelta"
14303
+ ],
14304
+ "additionalProperties": false
14305
+ },
14306
+ {
14307
+ "type": "object",
14308
+ "description": "Record an authored run-level outcome and optional summary.",
14309
+ "properties": {
14310
+ "type": {
14311
+ "const": "set-outcome"
14312
+ },
14313
+ "outcome": {
14314
+ "type": "string"
14315
+ },
14316
+ "summary": {
14317
+ "type": "string"
14318
+ }
14319
+ },
14320
+ "required": [
14321
+ "type",
14322
+ "outcome"
14323
+ ],
14324
+ "additionalProperties": false
14325
+ }
14326
+ ]
14327
+ },
14328
+ "minItems": 1
14329
+ },
14330
+ "label": {
14331
+ "type": "string"
14332
+ },
14333
+ "description": {
14334
+ "type": "string"
14335
+ },
14336
+ "summary": {
14337
+ "type": "string"
14338
+ }
14339
+ },
14340
+ "required": [
14341
+ "id",
14342
+ "at",
14343
+ "effects"
14344
+ ],
14345
+ "additionalProperties": false
14346
+ }
14347
+ },
14348
+ "outlets": {
14349
+ "type": "array",
14350
+ "description": "Explicit reason-labelled destinations referenced by product completions and eject effects.",
14351
+ "items": {
14352
+ "type": "object",
14353
+ "properties": {
14354
+ "id": {
14355
+ "type": "string"
14356
+ },
14357
+ "label": {
14358
+ "type": "string"
14359
+ },
14360
+ "description": {
14361
+ "type": "string"
14362
+ },
14363
+ "side": {
14364
+ "type": "string",
14365
+ "enum": [
14366
+ "left",
14367
+ "right",
14368
+ "bottom"
14369
+ ]
14370
+ },
14371
+ "color": {
14372
+ "type": "string"
14373
+ },
14374
+ "order": {
14375
+ "type": "number"
14376
+ }
14377
+ },
14378
+ "required": [
14379
+ "id"
14380
+ ],
14381
+ "additionalProperties": false
14382
+ }
14383
+ },
14384
+ "idAccessor": {
14385
+ "type": "string",
14386
+ "description": "Stable source-component id. Event selectors and product provenance reference these resolved ids.",
14387
+ "default": "id",
14388
+ "x-semiotic-runtime-types": [
14389
+ "string",
14390
+ "function"
14391
+ ]
14392
+ },
14393
+ "labelAccessor": {
14394
+ "type": "string",
14395
+ "description": "Human-readable source-component label.",
14396
+ "default": "label",
14397
+ "x-semiotic-runtime-types": [
14398
+ "string",
14399
+ "function"
14400
+ ]
14401
+ },
14402
+ "categoryAccessor": {
14403
+ "type": "string",
14404
+ "description": "Categorical source field used for color and projection grouping.",
14405
+ "default": "category",
14406
+ "x-semiotic-runtime-types": [
14407
+ "string",
14408
+ "function"
14409
+ ]
14410
+ },
14411
+ "amountAccessor": {
14412
+ "type": "string",
14413
+ "description": "Optional non-negative amount conserved through explicit product, loss, and outlet accounting.",
14414
+ "x-semiotic-runtime-types": [
14415
+ "string",
14416
+ "function"
14417
+ ]
14418
+ },
14419
+ "metricsAccessor": {
14420
+ "type": "string",
14421
+ "description": "Optional per-source numeric metric map used by authored effects and evidence.",
14422
+ "x-semiotic-runtime-types": [
14423
+ "string",
14424
+ "function"
14425
+ ]
14426
+ },
14427
+ "initialStateAccessor": {
14428
+ "type": "string",
14429
+ "description": "Optional initial semantic component status; defaults to active.",
14430
+ "x-semiotic-runtime-types": [
14431
+ "string",
14432
+ "function"
14433
+ ]
14434
+ },
14435
+ "metrics": {
14436
+ "type": "object",
14437
+ "description": "Run-level numeric metrics present before the event tape begins."
14438
+ },
14439
+ "amountLabel": {
14440
+ "type": "string",
14441
+ "description": "Display unit for source, product, loss, and conservation amounts."
14442
+ },
14443
+ "conservation": {
14444
+ "type": [
14445
+ "boolean",
14446
+ "object"
14447
+ ],
14448
+ "description": "Optional exact amount/metric balance check, or false to disable it."
14449
+ },
14450
+ "projection": {
14451
+ "type": "object",
14452
+ "description": "Settled truth layer: { groupBy: status|outlet|category|product, measure: count|amount|metric, order?, showInputBaseline?, showDelta? }."
14453
+ },
14454
+ "playback": {
14455
+ "type": "string",
14456
+ "enum": [
14457
+ "replay",
14458
+ "snapshot"
14459
+ ],
14460
+ "description": "Replay the authored tape, or render one deterministic snapshot without intermediate animation.",
14461
+ "default": "replay"
14462
+ },
14463
+ "snapshotAt": {
14464
+ "type": [
14465
+ "number",
14466
+ "object"
14467
+ ],
14468
+ "description": "Snapshot time in semantic seconds or { phaseId, progress? }; used only with playback=snapshot."
14469
+ },
14470
+ "controls": {
14471
+ "type": [
14472
+ "boolean",
14473
+ "object"
14474
+ ],
14475
+ "description": "Built-in play/pause, reset, phase-step, timeline, and speed controls.",
14476
+ "default": false
14477
+ },
14478
+ "playbackRate": {
14479
+ "type": "number",
14480
+ "description": "Positive wall-clock multiplier for authored semantic playback; 0.5 is half speed and 2 is double speed.",
14481
+ "default": 1
14482
+ },
14483
+ "rerunMS": {
14484
+ "type": [
14485
+ "number",
14486
+ "null"
14487
+ ],
14488
+ "description": "Replay from a fresh deterministic mount this many milliseconds after settling. Null or omission disables looping; zero uses the next timer turn."
14489
+ },
14490
+ "bodyRadius": {
14491
+ "type": "number",
14492
+ "description": "Fixed source-body radius. Per-row radius accessors are outside the bounded V1 contract.",
14493
+ "default": 7
14494
+ },
14495
+ "radiusRange": {
14496
+ "type": "array",
14497
+ "description": "Minimum and maximum source-body radii when amountAccessor drives area.",
14498
+ "default": [
14499
+ 5,
14500
+ 18
14501
+ ]
14502
+ },
14503
+ "showBonds": {
14504
+ "type": "boolean",
14505
+ "description": "Draw authored provisional relations and product-member bonds.",
14506
+ "default": true
14507
+ },
14508
+ "showChrome": {
14509
+ "type": "boolean",
14510
+ "description": "Draw the phase rail, vessel, declared molds, and reason-labelled outlets.",
14511
+ "default": true
14512
+ },
14513
+ "showProjection": {
14514
+ "type": "boolean",
14515
+ "description": "Draw the exact settled projection alongside the physical treatment.",
14516
+ "default": true
14517
+ },
14518
+ "initialSpawnPacing": {
14519
+ "type": "object",
14520
+ "description": "Optional presentation-only pacing for the initial source charge."
14521
+ },
14522
+ "loading": {
14523
+ "type": "boolean",
14524
+ "description": "Show a loading state instead of starting the authored run."
14525
+ }
14526
+ },
14527
+ "required": [
14528
+ "data",
14529
+ "phases"
14530
+ ]
14531
+ }
14532
+ }
13530
14533
  }
13531
14534
  ]
13532
14535
  }