semiotic 3.8.5 → 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.
- package/CLAUDE.md +37 -10
- package/README.md +83 -56
- package/ai/behaviorContracts.cjs +88 -3
- package/ai/componentMetadata.cjs +5 -10
- package/ai/dist/mcp-server.js +99 -10
- package/ai/examples.md +198 -9
- package/ai/schema.json +2002 -165
- package/ai/surface-manifest.json +14 -10
- package/ai/system-prompt.md +9 -3
- package/dist/{chunk-chartContainerDataAudit-74TLKIP6.module.min.js → chunk-chartContainerDataAudit-JDSVSKGM.module.min.js} +1 -1
- package/dist/chunk-chunk-2JGJ5GUG.module.min.js +1 -0
- package/dist/chunk-chunk-2YAZHXL4.module.min.js +2 -0
- package/dist/chunk-chunk-3NGIKFD6.module.min.js +1 -0
- package/dist/{chunk-chunk-G7WFWHAD.module.min.js → chunk-chunk-4ITOQRXM.module.min.js} +1 -1
- package/dist/chunk-chunk-5SD6BHVW.module.min.js +2 -0
- package/dist/chunk-chunk-6V5VQVCT.module.min.js +2 -0
- package/dist/chunk-chunk-7TTBHSAG.module.min.js +2 -0
- package/dist/chunk-chunk-7ZDJSYKI.module.min.js +2 -0
- package/dist/chunk-chunk-BGHPD3RA.module.min.js +1 -0
- package/dist/chunk-chunk-BMRZ2SPU.module.min.js +2 -0
- package/dist/chunk-chunk-BNGBEY7N.module.min.js +2 -0
- package/dist/chunk-chunk-C7APLVQD.module.min.js +2 -0
- package/dist/chunk-chunk-DGWFBOGB.module.min.js +1 -0
- package/dist/chunk-chunk-DIVE2DRA.module.min.js +2 -0
- package/dist/chunk-chunk-FBUNUIPV.module.min.js +2 -0
- package/dist/chunk-chunk-FQPKOAIH.module.min.js +2 -0
- package/dist/chunk-chunk-FRO4TRXK.module.min.js +2 -0
- package/dist/chunk-chunk-G7QVPZUD.module.min.js +2 -0
- package/dist/chunk-chunk-GBPYV4FP.module.min.js +2 -0
- package/dist/chunk-chunk-GU2EJIDJ.module.min.js +2 -0
- package/dist/chunk-chunk-J5QD4RAM.module.min.js +2 -0
- package/dist/{chunk-chunk-LJLS6DY7.module.min.js → chunk-chunk-JWXLNZSM.module.min.js} +1 -1
- package/dist/chunk-chunk-KXAFCCDB.module.min.js +2 -0
- package/dist/chunk-chunk-LG7YKJAK.module.min.js +2 -0
- package/dist/{chunk-chunk-I36PJ4OC.module.min.js → chunk-chunk-LVHDZAT3.module.min.js} +1 -1
- package/dist/chunk-chunk-LWITSR2O.module.min.js +2 -0
- package/dist/chunk-chunk-MX35T6RX.module.min.js +2 -0
- package/dist/chunk-chunk-NH4MEAKP.module.min.js +2 -0
- package/dist/chunk-chunk-NJETWX42.module.min.js +2 -0
- package/dist/chunk-chunk-NW25WGLS.module.min.js +2 -0
- package/dist/{chunk-chunk-TMWIZL3K.module.min.js → chunk-chunk-OI7R7EJB.module.min.js} +1 -1
- package/dist/chunk-chunk-ONMLEXHR.module.min.js +2 -0
- package/dist/chunk-chunk-OY66GCE6.module.min.js +1 -0
- package/dist/chunk-chunk-PZFT457G.module.min.js +1 -0
- package/dist/chunk-chunk-Q3WW6JGR.module.min.js +1 -0
- package/dist/chunk-chunk-Q6XKQTOQ.module.min.js +1 -0
- package/dist/chunk-chunk-RJRM2E6P.module.min.js +1 -0
- package/dist/chunk-chunk-RPL7WYXI.module.min.js +1 -0
- package/dist/chunk-chunk-SV4XAZ3Q.module.min.js +1 -0
- package/dist/chunk-chunk-TSCFL235.module.min.js +1 -0
- package/dist/chunk-chunk-UOQRPGPK.module.min.js +2 -0
- package/dist/chunk-chunk-V3OAKG32.module.min.js +1 -0
- package/dist/chunk-chunk-WLOIUMWG.module.min.js +2 -0
- package/dist/chunk-chunk-XEGXX4F7.module.min.js +1 -0
- package/dist/chunk-chunk-XFRBLXYM.module.min.js +1 -0
- package/dist/chunk-chunk-Z2AJERX5.module.min.js +2 -0
- package/dist/chunk-chunk-ZXYDYAB7.module.min.js +2 -0
- package/dist/components/ai/SemioticVACPBridge.d.ts +22 -0
- package/dist/components/ai/chartCapabilities.d.ts +5 -3
- package/dist/components/ai/conversationArc.d.ts +2 -176
- package/dist/components/ai/conversationArcTypes.d.ts +202 -0
- package/dist/components/ai/readerGrounding.d.ts +12 -0
- package/dist/components/ai/vacpAdapter.d.ts +13 -0
- package/dist/components/ai/vacpAdapterActions.d.ts +2 -0
- package/dist/components/ai/vacpAdapterModel.d.ts +7 -0
- package/dist/components/ai/vacpAdapterRuntime.d.ts +26 -0
- package/dist/components/ai/vacpAdapterState.d.ts +3 -0
- package/dist/components/ai/vacpAdapterTypes.d.ts +169 -0
- package/dist/components/ai/vacpTypes.d.ts +160 -0
- package/dist/components/charts/custom/XYCustomChart.d.ts +3 -0
- package/dist/components/charts/geo/DistanceCartogram.d.ts +1 -1
- package/dist/components/charts/index.d.ts +7 -4
- package/dist/components/charts/ordinal/BarChart.d.ts +7 -14
- package/dist/components/charts/ordinal/GaugeChart.d.ts +3 -0
- package/dist/components/charts/ordinal/GroupedBarChart.d.ts +3 -0
- package/dist/components/charts/ordinal/StackedBarChart.d.ts +3 -0
- package/dist/components/charts/ordinal/SwimlaneChart.d.ts +4 -14
- package/dist/components/charts/physics/ChainReactionChart.capability.d.ts +9 -0
- package/dist/components/charts/physics/ChainReactionChart.d.ts +29 -0
- package/dist/components/charts/physics/CollisionSwarmChart.d.ts +1 -1
- package/dist/components/charts/physics/EventDropChart.d.ts +7 -2
- package/dist/components/charts/physics/GaltonBoardChart.d.ts +1 -1
- package/dist/components/charts/physics/{PhysicsPileChart.capability.d.ts → PacketFlowChart.capability.d.ts} +1 -1
- package/dist/components/charts/physics/{PhysicalFlowChart.d.ts → PacketFlowChart.d.ts} +22 -6
- package/dist/components/charts/physics/PhysicsCustomChart.d.ts +1 -1
- package/dist/components/charts/physics/ProcessFlowChart.d.ts +7 -4
- package/dist/components/charts/physics/{PhysicalFlowChart.capability.d.ts → UnitPileChart.capability.d.ts} +1 -1
- package/dist/components/charts/physics/{PhysicsPileChart.d.ts → UnitPileChart.d.ts} +19 -6
- package/dist/components/charts/physics/crucibleChartProps.d.ts +1 -1
- package/dist/components/charts/physics/crucibleChartUtils.d.ts +9 -0
- package/dist/components/charts/physics/gauntletChartProps.d.ts +6 -1
- package/dist/components/charts/physics/gauntletTerminal.d.ts +61 -0
- package/dist/components/charts/physics/packetFlowSemantics.d.ts +6 -0
- package/dist/components/charts/physics/physicsHocUtils.d.ts +45 -2
- package/dist/components/charts/shared/auditAccessibilityStyles.d.ts +9 -0
- package/dist/components/charts/shared/chartSpecCore.d.ts +2 -4
- package/dist/components/charts/shared/gaugeGradient.d.ts +4 -8
- package/dist/components/charts/shared/gradient.d.ts +35 -0
- package/dist/components/charts/shared/hatchFill.d.ts +3 -10
- package/dist/components/charts/shared/hooks.d.ts +2 -50
- package/dist/components/charts/shared/knownChartComponents.d.ts +1 -1
- package/dist/components/charts/shared/streamPropsHelpers.d.ts +1 -2
- package/dist/components/charts/shared/useChartLegend.d.ts +65 -0
- package/dist/components/charts/shared/useChartSetup.d.ts +12 -0
- package/dist/components/charts/shared/useCustomChartSetup.d.ts +6 -1
- package/dist/components/charts/shared/useNetworkChartSetup.d.ts +1 -0
- package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
- package/dist/components/charts/xy/AreaChart.d.ts +25 -42
- package/dist/components/charts/xy/BumpChart.capability.d.ts +11 -0
- package/dist/components/charts/xy/BumpChart.d.ts +161 -0
- package/dist/components/charts/xy/DifferenceChart.d.ts +3 -10
- package/dist/components/charts/xy/Heatmap.d.ts +3 -0
- package/dist/components/charts/xy/LineChart.d.ts +6 -8
- package/dist/components/data/portability/capabilityBinding.d.ts +41 -0
- package/dist/components/data/portability/index.d.ts +2 -0
- package/dist/components/geometry/bumpRibbonGeometry.d.ts +36 -0
- package/dist/components/legendLayout.d.ts +75 -1
- package/dist/components/recipes/geographicDotGrid.d.ts +82 -0
- package/dist/components/recipes/geographicGrid.d.ts +100 -0
- package/dist/components/recipes/physics.d.ts +2 -0
- package/dist/components/recipes/physicsStageGeography.d.ts +137 -0
- package/dist/components/semiotic-ai.d.ts +6 -4
- package/dist/components/semiotic-experimental-vacp.d.ts +11 -0
- package/dist/components/semiotic-experimental.d.ts +6 -3
- package/dist/components/semiotic-geo.d.ts +5 -0
- package/dist/components/semiotic-network.d.ts +1 -0
- package/dist/components/semiotic-ordinal.d.ts +2 -0
- package/dist/components/semiotic-physics.d.ts +10 -6
- package/dist/components/semiotic-realtime-core.d.ts +1 -0
- package/dist/components/semiotic-recipes-core.d.ts +6 -1
- package/dist/components/semiotic-server-edge.d.ts +1 -1
- package/dist/components/semiotic-server.d.ts +1 -1
- package/dist/components/semiotic-xy.d.ts +4 -0
- package/dist/components/semiotic.d.ts +4 -4
- package/dist/components/server/renderEvidence.d.ts +1 -1
- package/dist/components/server/renderToStaticSVG.d.ts +2 -1
- package/dist/components/server/serverChartConfigHeatmap.d.ts +6 -0
- package/dist/components/server/serverChartConfigNetworkStyles.d.ts +12 -0
- package/dist/components/server/serverChartConfigShared.d.ts +16 -0
- package/dist/components/server/serverChartConfigs.d.ts +3 -2
- package/dist/components/server/serverChartConfigsPhysics.d.ts +2 -2
- package/dist/components/server/serverChartConfigsXY.d.ts +1 -1
- package/dist/components/server/staticLegend.d.ts +10 -2
- package/dist/components/server/staticSVGChrome.d.ts +14 -6
- package/dist/components/server/staticValue.d.ts +8 -0
- package/dist/components/stream/GeoSVGOverlay.d.ts +4 -10
- package/dist/components/stream/NetworkSVGOverlay.d.ts +2 -6
- package/dist/components/stream/OrdinalSVGOverlay.d.ts +2 -6
- package/dist/components/stream/SVGOverlay.d.ts +2 -6
- package/dist/components/stream/StalenessBadge.d.ts +2 -6
- package/dist/components/stream/geoPipelineConfig.d.ts +10 -0
- package/dist/components/stream/geoTypes.d.ts +3 -6
- package/dist/components/stream/legendRenderer.d.ts +10 -6
- package/dist/components/stream/ordinalTypes.d.ts +7 -31
- package/dist/components/stream/physics/PhysicsEvidence.d.ts +37 -0
- package/dist/components/stream/physics/PhysicsKernel.d.ts +1 -0
- package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +9 -0
- package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +2 -6
- package/dist/components/stream/physics/PhysicsSettledScene.d.ts +5 -0
- package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +2 -6
- package/dist/components/stream/physics/physicsFramePipelineConfig.d.ts +19 -0
- package/dist/components/stream/physics/physicsPipelineSettle.d.ts +52 -0
- package/dist/components/stream/physics/physicsRegionRuntime.d.ts +23 -0
- package/dist/components/stream/pipelineConfig.d.ts +7 -15
- package/dist/components/stream/renderers/canvasRenderHelpers.d.ts +9 -69
- package/dist/components/stream/renderers/cornerRadii.d.ts +2 -9
- package/dist/components/stream/renderers/thresholdLineSegments.d.ts +12 -0
- package/dist/components/stream/sceneToSVGShared.d.ts +3 -5
- package/dist/components/stream/types.d.ts +34 -56
- package/dist/components/stream/xySceneBuilders/areaGradient.d.ts +4 -20
- package/dist/components/stream/xySceneBuilders/types.d.ts +6 -6
- package/dist/components/types/legendTypes.d.ts +31 -6
- package/dist/controls.min.js +1 -1
- package/dist/controls.module.min.js +1 -1
- package/dist/geo.min.js +1 -1
- package/dist/geo.module.min.js +1 -1
- package/dist/network.min.js +1 -1
- package/dist/network.module.min.js +1 -1
- package/dist/ordinal.min.js +1 -1
- package/dist/ordinal.module.min.js +1 -1
- package/dist/physics.min.js +1 -1
- package/dist/physics.module.min.js +1 -1
- package/dist/physicsWorker.js +1 -1
- package/dist/realtime.min.js +1 -1
- package/dist/realtime.module.min.js +1 -1
- package/dist/semiotic-ai-core.min.js +1 -1
- package/dist/semiotic-ai-core.module.min.js +1 -1
- package/dist/semiotic-ai.d.ts +6 -4
- package/dist/semiotic-ai.min.js +1 -1
- package/dist/semiotic-ai.module.min.js +1 -1
- package/dist/semiotic-data.module.min.js +1 -1
- package/dist/semiotic-experimental-vacp.d.ts +11 -0
- package/dist/semiotic-experimental-vacp.min.js +1 -0
- package/dist/semiotic-experimental-vacp.module.min.js +1 -0
- package/dist/semiotic-experimental.d.ts +6 -3
- package/dist/semiotic-experimental.min.js +2 -1
- package/dist/semiotic-experimental.module.min.js +2 -1
- package/dist/semiotic-geo.d.ts +5 -0
- package/dist/semiotic-network.d.ts +1 -0
- package/dist/semiotic-ordinal.d.ts +2 -0
- package/dist/semiotic-physics.d.ts +10 -6
- package/dist/semiotic-realtime-core.d.ts +1 -0
- package/dist/semiotic-realtime-core.min.js +1 -1
- package/dist/semiotic-realtime-core.module.min.js +1 -1
- package/dist/semiotic-recipes-core.d.ts +6 -1
- package/dist/semiotic-recipes-core.min.js +1 -1
- package/dist/semiotic-recipes-core.module.min.js +1 -1
- package/dist/semiotic-recipes.min.js +1 -1
- package/dist/semiotic-recipes.module.min.js +1 -1
- package/dist/semiotic-server-edge.d.ts +1 -1
- package/dist/semiotic-server-edge.min.js +1 -1
- package/dist/semiotic-server-edge.module.min.js +1 -1
- package/dist/semiotic-server-node.min.js +1 -1
- package/dist/semiotic-server-node.module.min.js +1 -1
- package/dist/semiotic-server.d.ts +1 -1
- package/dist/semiotic-utils-core.min.js +1 -1
- package/dist/semiotic-utils-core.module.min.js +1 -1
- package/dist/semiotic-utils.min.js +1 -1
- package/dist/semiotic-utils.module.min.js +1 -1
- package/dist/semiotic-xy.d.ts +4 -0
- package/dist/semiotic.d.ts +4 -4
- package/dist/semiotic.min.js +1 -1
- package/dist/semiotic.module.min.js +1 -1
- package/dist/server.min.js +1 -1
- package/dist/server.module.min.js +1 -1
- package/dist/xy.min.js +1 -1
- package/dist/xy.module.min.js +1 -1
- package/package.json +18 -2
- package/spec/README.md +94 -2
- package/spec/bindings/README.md +14 -3
- package/spec/v0.1/examples/annotation-provenance-reviewed-revision.json +27 -0
- package/spec/v0.1/examples/annotation-provenance-watcher-threshold.json +21 -0
- package/spec/v0.1/examples/audience-profile-executive-review.json +24 -0
- package/spec/v0.1/examples/audience-profile-incident-operators.json +42 -0
- package/spec/v0.1/examples/chart-capability-bar-comparison.json +48 -0
- package/spec/v0.1/examples/chart-capability-service-flow.json +54 -0
- package/dist/chunk-chunk-4AANPFOX.module.min.js +0 -2
- package/dist/chunk-chunk-5I3UZV4Q.module.min.js +0 -2
- package/dist/chunk-chunk-5RKXZQ2P.module.min.js +0 -1
- package/dist/chunk-chunk-74CCPVXB.module.min.js +0 -1
- package/dist/chunk-chunk-7ALTGHK6.module.min.js +0 -1
- package/dist/chunk-chunk-ANYDWOZF.module.min.js +0 -1
- package/dist/chunk-chunk-AVBI6GDT.module.min.js +0 -1
- package/dist/chunk-chunk-BANTPINB.module.min.js +0 -2
- package/dist/chunk-chunk-C4YA6TDR.module.min.js +0 -1
- package/dist/chunk-chunk-C57LR3YG.module.min.js +0 -1
- package/dist/chunk-chunk-CKMD5NV3.module.min.js +0 -2
- package/dist/chunk-chunk-CO5KQMGH.module.min.js +0 -1
- package/dist/chunk-chunk-CWQ5YIHX.module.min.js +0 -2
- package/dist/chunk-chunk-E6TXX6MI.module.min.js +0 -1
- package/dist/chunk-chunk-GMQ5AYTD.module.min.js +0 -1
- package/dist/chunk-chunk-JCG72SGW.module.min.js +0 -2
- package/dist/chunk-chunk-K3DMEW22.module.min.js +0 -1
- package/dist/chunk-chunk-KT2VAZMZ.module.min.js +0 -1
- package/dist/chunk-chunk-L6EA5V3G.module.min.js +0 -2
- package/dist/chunk-chunk-LJPCLYSC.module.min.js +0 -2
- package/dist/chunk-chunk-LRIFN2HK.module.min.js +0 -1
- package/dist/chunk-chunk-N5DDKCCF.module.min.js +0 -1
- package/dist/chunk-chunk-NEVE562N.module.min.js +0 -1
- package/dist/chunk-chunk-NLO44TOS.module.min.js +0 -2
- package/dist/chunk-chunk-PZJ2SBLL.module.min.js +0 -2
- package/dist/chunk-chunk-QSQVBIJA.module.min.js +0 -1
- package/dist/chunk-chunk-QUJ6TTLY.module.min.js +0 -1
- package/dist/chunk-chunk-RBIDBUT4.module.min.js +0 -2
- package/dist/chunk-chunk-RCF52Z42.module.min.js +0 -2
- package/dist/chunk-chunk-RFLAG356.module.min.js +0 -1
- package/dist/chunk-chunk-RPU4IZAV.module.min.js +0 -2
- package/dist/chunk-chunk-SKMBCFIL.module.min.js +0 -2
- package/dist/chunk-chunk-TAE7W424.module.min.js +0 -2
- package/dist/chunk-chunk-TUBMTZMU.module.min.js +0 -2
- package/dist/chunk-chunk-UFFEXJQY.module.min.js +0 -1
- package/dist/chunk-chunk-XSCHTS4D.module.min.js +0 -2
- package/dist/chunk-chunk-XXWSHGPL.module.min.js +0 -2
- package/dist/chunk-chunk-ZOAQDIJO.module.min.js +0 -1
- package/dist/chunk-chunk-ZXIXAPRE.module.min.js +0 -2
- package/dist/chunk-statisticalOverlays-QGDLRUHX.module.min.js +0 -1
- package/dist/chunk-statisticalOverlays-T77OKLDY.module.min.js +0 -1
package/dist/xy.module.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{DEFAULT_HIT_RADIUS as m,hitTargetPoint as n,hitTargetRect as u}from"./chunk-chunk-J3XWETBJ.module.min.js";import{AreaChart as o,BubbleChart as c,
|
|
2
|
+
import{DEFAULT_HIT_RADIUS as m,hitTargetPoint as n,hitTargetRect as u}from"./chunk-chunk-J3XWETBJ.module.min.js";import{AreaChart as o,BubbleChart as c,BumpChart as h,CandlestickChart as i,ConnectedScatterplot as k,DifferenceChart as r,Heatmap as e,LineChart as t,MinimapChart as p,MultiAxisLineChart as s,QuadrantChart as d,Scatterplot as j,ScatterplotMatrix as l,StackedAreaChart as B,XYCustomChart as E,rankBumpData as X}from"./chunk-chunk-7TTBHSAG.module.min.js";import"./chunk-chunk-YCQYG6J5.module.min.js";import"./chunk-chunk-FBUNUIPV.module.min.js";import"./chunk-chunk-J5QD4RAM.module.min.js";import{StreamXYFrame_default as J}from"./chunk-chunk-KXAFCCDB.module.min.js";import"./chunk-chunk-MX35T6RX.module.min.js";import"./chunk-chunk-6V5VQVCT.module.min.js";import"./chunk-chunk-2YAZHXL4.module.min.js";import"./chunk-chunk-ONMLEXHR.module.min.js";import"./chunk-chunk-NJETWX42.module.min.js";import"./chunk-chunk-OI7R7EJB.module.min.js";import"./chunk-chunk-NH4MEAKP.module.min.js";import{useCustomLayoutSelection as H}from"./chunk-chunk-5UKL5W76.module.min.js";import"./chunk-chunk-BNGBEY7N.module.min.js";import{composeStyleRules as N,makeRuleValueResolver as T,makeXYRuleContext as f,matchesThreshold as C,resolveStyleRules as M,ruleMatches as Y}from"./chunk-chunk-EMO5NUGE.module.min.js";import"./chunk-chunk-5SD6BHVW.module.min.js";import{hatchFillId as A,hatchPatternDef as O,isHatchFill as W,resolveResponsiveRules as D,resolveSvgFill as K,responsiveRuleMatches as R}from"./chunk-chunk-7ZDJSYKI.module.min.js";import"./chunk-chunk-JJ2OOIET.module.min.js";import"./chunk-chunk-WCX6U47H.module.min.js";import{glyphExtent as U,glyphPlacement as V}from"./chunk-chunk-KTWEBFMX.module.min.js";import"./chunk-chunk-ACLDBMRH.module.min.js";import"./chunk-chunk-YHNZCPOZ.module.min.js";export{o as AreaChart,c as BubbleChart,h as BumpChart,i as CandlestickChart,k as ConnectedScatterplot,m as DEFAULT_HIT_RADIUS,r as DifferenceChart,e as Heatmap,t as LineChart,p as MinimapChart,s as MultiAxisLineChart,d as QuadrantChart,j as Scatterplot,l as ScatterplotMatrix,B as StackedAreaChart,J as StreamXYFrame,E as XYCustomChart,N as composeStyleRules,U as glyphExtent,V as glyphPlacement,A as hatchFillId,O as hatchPatternDef,n as hitTargetPoint,u as hitTargetRect,W as isHatchFill,T as makeRuleValueResolver,f as makeXYRuleContext,C as matchesThreshold,X as rankBumpData,D as resolveResponsiveRules,M as resolveStyleRules,K as resolveSvgFill,R as responsiveRuleMatches,Y as ruleMatches,H as useCustomLayoutSelection};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "semiotic",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.7",
|
|
4
4
|
"mcpName": "io.github.nteract/semiotic",
|
|
5
5
|
"description": "Verified generative visualization for React and agents, with deterministic chart validation, repair, rendering evidence, and MCP.",
|
|
6
6
|
"main": "dist/semiotic.min.js",
|
|
@@ -186,6 +186,12 @@
|
|
|
186
186
|
"require": "./dist/semiotic-experimental.min.js",
|
|
187
187
|
"default": "./dist/semiotic-experimental.module.min.js"
|
|
188
188
|
},
|
|
189
|
+
"./experimental/vacp": {
|
|
190
|
+
"types": "./dist/semiotic-experimental-vacp.d.ts",
|
|
191
|
+
"import": "./dist/semiotic-experimental-vacp.module.min.js",
|
|
192
|
+
"require": "./dist/semiotic-experimental-vacp.min.js",
|
|
193
|
+
"default": "./dist/semiotic-experimental-vacp.module.min.js"
|
|
194
|
+
},
|
|
189
195
|
"./value": {
|
|
190
196
|
"types": "./dist/semiotic-value.d.ts",
|
|
191
197
|
"import": "./dist/semiotic-value.module.min.js",
|
|
@@ -228,7 +234,7 @@
|
|
|
228
234
|
"test:dist": "playwright test",
|
|
229
235
|
"test:examples:source": "playwright test --config playwright.docs-examples.config.ts",
|
|
230
236
|
"test:visual:update": "playwright test --update-snapshots",
|
|
231
|
-
"test:visual:bootstrap": "
|
|
237
|
+
"test:visual:bootstrap": "node scripts/run-playwright-missing-snapshot-bootstrap.mjs",
|
|
232
238
|
"test:visual:update:docker": "node scripts/run-playwright-linux-bootstrap.mjs --update-snapshots=all",
|
|
233
239
|
"test:visual:bootstrap:docker": "node scripts/run-playwright-linux-bootstrap.mjs --update-snapshots=missing",
|
|
234
240
|
"bench": "vitest bench",
|
|
@@ -267,6 +273,10 @@
|
|
|
267
273
|
"generate:gofish-fixtures": "node --experimental-strip-types scripts/gen-gofish-fixtures.ts --write",
|
|
268
274
|
"generate:demo-gifs": "node -e \"try{require.resolve('sharp');require.resolve('gifenc')}catch{console.log('Skipping GIF generation (sharp/gifenc not installed)');process.exit(0)}\" && npx tsx scripts/generate-demo-gifs.ts",
|
|
269
275
|
"generate:weather-baselines": "npx tsx scripts/generate-open-meteo-preset-baselines.mjs",
|
|
276
|
+
"generate:hra-wpp-pilot": "node scripts/build-hra-wpp-kidney-pilot.mjs --write",
|
|
277
|
+
"test:hra-wpp-pilot": "node --test scripts/build-hra-wpp-kidney-pilot.test.mjs",
|
|
278
|
+
"capture:conference-demo": "node scripts/capture-conference-demo.mjs",
|
|
279
|
+
"test:conference-demo-assets": "node --test scripts/conference-demo-assets.test.mjs",
|
|
270
280
|
"generate:blog-og-cards": "node scripts/generate-blog-og-cards.mjs",
|
|
271
281
|
"generate:example-og-cards": "node scripts/generate-example-og-cards.mjs",
|
|
272
282
|
"generate:blog-rss": "node scripts/generate-blog-rss.mjs",
|
|
@@ -298,6 +308,11 @@
|
|
|
298
308
|
"check:ai-surface": "node scripts/generate-ai-surface-manifest.mjs --check",
|
|
299
309
|
"check:agent-skill": "node scripts/check-agent-skill.mjs",
|
|
300
310
|
"eval:ai": "node scripts/run-ai-evals.mjs",
|
|
311
|
+
"eval:ai:openai": "node scripts/run-openai-ai-evals.mjs",
|
|
312
|
+
"eval:ai:trials": "node scripts/summarize-openai-ai-eval-trials.mjs",
|
|
313
|
+
"test:ai-evals": "node --test scripts/ai-eval-scoring.test.mjs scripts/ai-eval-report-summary.test.mjs scripts/run-openai-ai-evals.test.mjs scripts/summarize-openai-ai-eval-trials.test.mjs",
|
|
314
|
+
"test:ai:openai": "node --test scripts/run-openai-ai-evals.test.mjs",
|
|
315
|
+
"prepare:ai-evals": "node scripts/prepare-ai-evals.mjs",
|
|
301
316
|
"check:ai-contracts": "node scripts/generate-ai-behavior-contracts.mjs --check",
|
|
302
317
|
"check:ai-instructions": "node scripts/sync-ai-instructions.mjs --check",
|
|
303
318
|
"check:ssr": "node scripts/check-ssr-alignment.js",
|
|
@@ -462,6 +477,7 @@
|
|
|
462
477
|
"eslint": "^10.6.0",
|
|
463
478
|
"eslint-plugin-react": "^7.37.5",
|
|
464
479
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
480
|
+
"ffmpeg-static": "^5.3.0",
|
|
465
481
|
"globals": "^17.7.0",
|
|
466
482
|
"gofish-graphics": "^0.1.0-nightly.20260624",
|
|
467
483
|
"gofish-ir": "^0.1.0-nightly.20260624",
|
package/spec/README.md
CHANGED
|
@@ -47,11 +47,43 @@ faithful to the runtime contract — recognized values are documented, but a con
|
|
|
47
47
|
own label and it is preserved. Genuinely closed unions (`lifecycle.freshness`, `lifecycle.status`,
|
|
48
48
|
`lifecycle.anchor`) use a strict `enum`.
|
|
49
49
|
|
|
50
|
+
### The paper/runtime union for annotation metadata
|
|
51
|
+
|
|
52
|
+
The annotation schema publishes the **union** of the research vocabulary and the fields learned
|
|
53
|
+
while implementing it. The paper emphasized `provenance.basis` and the editorial
|
|
54
|
+
`lifecycle.status` / `lifecycle.supersedes` chain; the shipping runtime added the stable and
|
|
55
|
+
temporal mechanics needed to make those claims survive refreshes:
|
|
56
|
+
`provenance.stableId`, `lifecycle.anchor`, and `lifecycle.freshness`. The remaining provenance
|
|
57
|
+
fields (`author`, `authorKind`, `source`, `confidence`, `createdAt`, `dataVersion`) and
|
|
58
|
+
`lifecycle.ttlHint` are the shared connective vocabulary.
|
|
59
|
+
|
|
60
|
+
That origin history is not a maturity label. Every field in this v0.1 union is implemented by the
|
|
61
|
+
reference runtime and therefore carries `x-idid-status: "shipped"`. A future paper-only or
|
|
62
|
+
design-only addition must carry `"proposed"` until a reference implementation makes it executable
|
|
63
|
+
and testable.
|
|
64
|
+
|
|
50
65
|
Chart capabilities may also include a `mobile` block. This is intentionally part of capability,
|
|
51
66
|
not rendering props: it lets a custom chart, Vega-Lite binding, or recipe adapter state its mobile
|
|
52
67
|
strategy, breakpoints, mark budget, touch target, label plan, and custom scene semantics without
|
|
53
68
|
requiring the receiving library to execute the renderer.
|
|
54
69
|
|
|
70
|
+
### Stretch-pick admission is a rule
|
|
71
|
+
|
|
72
|
+
`AudienceProfile.exposureLevel` controls a separate, visibly labeled stretch surface; it never
|
|
73
|
+
silently turns a stretch into the primary recommendation. Level `0` disables stretch picks. At
|
|
74
|
+
level `1`, a candidate's effective familiarity must be at most `3`; level `2` widens that ceiling
|
|
75
|
+
to `4`. A host admits a candidate only when all of the following are true:
|
|
76
|
+
|
|
77
|
+
1. the host's chart implementation says the chart fits the data;
|
|
78
|
+
2. it is at or below the active familiarity ceiling; and
|
|
79
|
+
3. it is either an explicit `targets[component].direction: "increase"` choice or scores within
|
|
80
|
+
the host's declared tolerance of the top familiar choice for the same task (the reference
|
|
81
|
+
implementation defaults to `1.5` score points).
|
|
82
|
+
|
|
83
|
+
Each admitted stretch should retain its rationale and caveats, name the familiar chart it could
|
|
84
|
+
replace when one exists, and ship with interpretation scaffolding. This is governed literacy
|
|
85
|
+
exposure, not a novelty bonus.
|
|
86
|
+
|
|
55
87
|
## Versioning
|
|
56
88
|
|
|
57
89
|
The spec is versioned by directory (`v0.1/`). A `0.x` line may add `proposed` fields and tighten
|
|
@@ -65,6 +97,30 @@ The canonical files ship in the `semiotic` npm tarball and are exposed as
|
|
|
65
97
|
`semiotic/spec/v0.1/<schema-name>` resource paths; they also remain available in this directory
|
|
66
98
|
for repository consumers.
|
|
67
99
|
|
|
100
|
+
The exact npm resource paths are:
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
semiotic/spec/v0.1/chart-capability.schema.json
|
|
104
|
+
semiotic/spec/v0.1/audience-profile.schema.json
|
|
105
|
+
semiotic/spec/v0.1/annotation-provenance.schema.json
|
|
106
|
+
semiotic/spec/v0.1/examples/<example-name>.json
|
|
107
|
+
semiotic/spec/bindings/vega-lite.mjs
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
CommonJS can load a schema directly:
|
|
111
|
+
|
|
112
|
+
```js
|
|
113
|
+
const capabilitySchema =
|
|
114
|
+
require("semiotic/spec/v0.1/chart-capability.schema.json")
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Node ESM can use a JSON import attribute:
|
|
118
|
+
|
|
119
|
+
```js
|
|
120
|
+
import capabilitySchema from
|
|
121
|
+
"semiotic/spec/v0.1/chart-capability.schema.json" with { type: "json" }
|
|
122
|
+
```
|
|
123
|
+
|
|
68
124
|
## Validation
|
|
69
125
|
|
|
70
126
|
These are plain [JSON Schema 2020-12](https://json-schema.org/draft/2020-12) documents. Validate
|
|
@@ -72,6 +128,18 @@ with any compliant validator (ajv, `jsonschema`, etc.) — no library dependency
|
|
|
72
128
|
is the point. A reference implementation also ships small dependency-free structural validators
|
|
73
129
|
(see *The Vega-Lite binding*, below) for hosts that do not want to pull in a full schema engine.
|
|
74
130
|
|
|
131
|
+
## Worked examples
|
|
132
|
+
|
|
133
|
+
Each schema has exactly two canonical JSON fixtures. They are packed with npm and validated in CI
|
|
134
|
+
against both the published Draft 2020-12 schema and the reference implementation's
|
|
135
|
+
dependency-free structural validator.
|
|
136
|
+
|
|
137
|
+
| Schema | Example 1 | Example 2 |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| Chart Capability | [`chart-capability-bar-comparison.json`](./v0.1/examples/chart-capability-bar-comparison.json) — a familiar categorical comparison with a ranked variant and mobile contract | [`chart-capability-service-flow.json`](./v0.1/examples/chart-capability-service-flow.json) — an operational flow view with accessible interaction alternatives and a namespaced domain extension |
|
|
140
|
+
| Audience Profile | [`audience-profile-executive-review.json`](./v0.1/examples/audience-profile-executive-review.json) — visual executive readers with inspectable adoption targets | [`audience-profile-incident-operators.json`](./v0.1/examples/audience-profile-incident-operators.json) — screen-reader reception plus namespaced role, literacy, and decision context |
|
|
141
|
+
| Annotation Provenance & Lifecycle | [`annotation-provenance-watcher-threshold.json`](./v0.1/examples/annotation-provenance-watcher-threshold.json) — a proposed watcher threshold with semantic anchoring | [`annotation-provenance-reviewed-revision.json`](./v0.1/examples/annotation-provenance-reviewed-revision.json) — a human-reviewed accepted note that supersedes an earlier claim |
|
|
142
|
+
|
|
75
143
|
## The Vega-Lite binding (carrying IDID metadata on a portable spec)
|
|
76
144
|
|
|
77
145
|
Vega-Lite is the closest thing the ecosystem has to a neutral chart-interchange format, but it has
|
|
@@ -98,8 +166,11 @@ namespaced key:
|
|
|
98
166
|
}
|
|
99
167
|
```
|
|
100
168
|
|
|
101
|
-
A consumer reads `spec.usermeta.idid.capability`
|
|
102
|
-
|
|
169
|
+
A consumer reads `spec.usermeta.idid.capability` as the static scoring and communication metadata
|
|
170
|
+
for its own chart implementation; the spec still renders as ordinary Vega-Lite everywhere else.
|
|
171
|
+
A portable descriptor deliberately has no executable `fits` or `buildProps` functions. A host
|
|
172
|
+
whose suggestion engine requires those functions must resolve the descriptor's `component` to a
|
|
173
|
+
host implementation rather than inventing a permissive fit.
|
|
103
174
|
|
|
104
175
|
### Provenanced annotations → `usermeta.idid.annotations`
|
|
105
176
|
|
|
@@ -145,6 +216,27 @@ semantics. Unsupported composition or chart semantics must return a typed refusa
|
|
|
145
216
|
plausible fallback. IDID-enriched annotation layers recover their one base view, while arbitrary
|
|
146
217
|
Vega-Lite layer composition remains deliberately unsupported.
|
|
147
218
|
|
|
219
|
+
## Appendix: typology crosswalk
|
|
220
|
+
|
|
221
|
+
The core schemas are intentionally small. They carry axes that already have interoperable runtime
|
|
222
|
+
behavior and leave organization- or domain-specific classifications in namespaced extension
|
|
223
|
+
vocabularies. Because the three root schemas permit additional properties, a consumer can add one
|
|
224
|
+
object such as `x-example-context` without pretending its local ontology is universal.
|
|
225
|
+
|
|
226
|
+
| Typology axis | Where it lives in v0.1 | Core or extension? |
|
|
227
|
+
|---|---|---|
|
|
228
|
+
| Data/domain entity + scale | `ChartCapability.family`, `tags`, and `mobile` describe chart/rendering characteristics, not domain entities or scientific/organizational scale. Put entity types, units, granularity, and domain scale in a namespaced context object. | **Extension vocabulary.** Do not overload `family` with a domain ontology. |
|
|
229
|
+
| Analytical task | `ChartCapability.intentScores`, keyed by open intent ids. The schema lists the reference implementation's 13 recognized tasks without closing the vocabulary. | **Core field; extensible values.** |
|
|
230
|
+
| Communicative act | Some acts can be inferred by a host from the strongest analytical intent, but v0.1 has no separate act field for report, alert, explain, persuade, teach, and similar purposes. | **Extension vocabulary** when task and act differ. |
|
|
231
|
+
| Audience role + literacy | `AudienceProfile.familiarity`, `targets`, and `exposureLevel` carry chart familiarity and governed literacy growth. Job/reader role, domain knowledge, and mastered visualization concepts are not core fields. | **Mixed:** chart familiarity/growth are core; role, domain literacy, and concept mastery are extensions. |
|
|
232
|
+
| Reception modality | `AudienceProfile.receptionModality`: `visual`, `screen-reader`, `sonified`, or `agent`. | **Core field and closed vocabulary in v0.1.** |
|
|
233
|
+
| Decision/use context | No core field. Put decision type, workflow stage, urgency, cadence, collaboration setting, or regulatory context in a namespaced context object. | **Extension vocabulary.** |
|
|
234
|
+
| Provenance + lifecycle | An annotation's `provenance` records actor, evidence basis, confidence, time/data version, and stable identity; `lifecycle` records freshness, editorial status, supersession, TTL, and anchoring. | **Core fields.** Open source/basis labels permit local evidence vocabularies; freshness/status/anchor remain closed. |
|
|
235
|
+
|
|
236
|
+
Extension vocabularies should be documented, versioned, and preserved verbatim by bindings. They
|
|
237
|
+
should graduate into a future core schema only after more than one adopter needs interoperable
|
|
238
|
+
behavior, not merely because one domain has a useful label.
|
|
239
|
+
|
|
148
240
|
---
|
|
149
241
|
|
|
150
242
|
*This directory is the canonical published copy of the schemas and is packed unchanged into npm.
|
package/spec/bindings/README.md
CHANGED
|
@@ -17,17 +17,28 @@ meaning travel together.
|
|
|
17
17
|
import {
|
|
18
18
|
attachIdid, readIdid, attachIdidAnnotations, readIdidAnnotations,
|
|
19
19
|
suggestionInputFromSpec,
|
|
20
|
-
} from "
|
|
20
|
+
} from "semiotic/spec/bindings/vega-lite.mjs"
|
|
21
21
|
|
|
22
22
|
let spec = { mark: "bar", encoding: { /* … */ } }
|
|
23
23
|
spec = attachIdid(spec, { capability, audience }) // ride under usermeta.idid
|
|
24
24
|
spec = attachIdidAnnotations(spec, [provenancedNote]) // + a note with its evidence
|
|
25
25
|
|
|
26
|
-
// An IDID-aware host reads it back and acts on it
|
|
27
|
-
// capability + audience through any chart-suggestion engine:
|
|
26
|
+
// An IDID-aware host reads it back and acts on it:
|
|
28
27
|
const input = suggestionInputFromSpec(spec) // { capability, audience } | null
|
|
29
28
|
```
|
|
30
29
|
|
|
30
|
+
The binding is available from the npm package at
|
|
31
|
+
`semiotic/spec/bindings/vega-lite.mjs`; the three schemas and six worked
|
|
32
|
+
fixtures resolve under `semiotic/spec/v0.1/`.
|
|
33
|
+
|
|
34
|
+
`suggestionInputFromSpec` extracts metadata; it does not invent executable
|
|
35
|
+
chart behavior. The portable capability contains static rubric/intent metadata
|
|
36
|
+
but deliberately omits host-specific `fits` and `buildProps` functions. A host
|
|
37
|
+
with a suggestion engine that requires those functions must resolve
|
|
38
|
+
`capability.component` to its own implementation before scoring it. This
|
|
39
|
+
standalone binding refuses to assume that every carried chart fits every
|
|
40
|
+
dataset.
|
|
41
|
+
|
|
31
42
|
The output is byte-compatible with Semiotic's TypeScript binding
|
|
32
43
|
(`semiotic/experimental`: `unstable_attachIDID`, `unstable_readIDID`,
|
|
33
44
|
`unstable_attachIDIDAnnotations`, …), so a spec enriched in one can be read in
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "callout",
|
|
3
|
+
"x": "2026-07-25T14:18:00Z",
|
|
4
|
+
"y": 1280,
|
|
5
|
+
"label": "Database pool saturation confirmed after trace review.",
|
|
6
|
+
"provenance": {
|
|
7
|
+
"author": "operator-17",
|
|
8
|
+
"authorKind": "human",
|
|
9
|
+
"source": "user",
|
|
10
|
+
"basis": "manual-review",
|
|
11
|
+
"confidence": 1,
|
|
12
|
+
"createdAt": "2026-07-25T14:31:00Z",
|
|
13
|
+
"dataVersion": "incident-1842-window-8",
|
|
14
|
+
"stableId": "annotation:incident-1842:confirmed-cause"
|
|
15
|
+
},
|
|
16
|
+
"lifecycle": {
|
|
17
|
+
"freshness": "fresh",
|
|
18
|
+
"status": "accepted",
|
|
19
|
+
"supersedes": "annotation:incident-1842:suspected-cause",
|
|
20
|
+
"ttlHint": 86400000,
|
|
21
|
+
"anchor": "fixed"
|
|
22
|
+
},
|
|
23
|
+
"x-example-context": {
|
|
24
|
+
"review": "incident-1842-postmortem",
|
|
25
|
+
"decisionUse": "retain as the accepted causal note"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "y-threshold",
|
|
3
|
+
"value": 1000,
|
|
4
|
+
"label": "SLA breach threshold",
|
|
5
|
+
"provenance": {
|
|
6
|
+
"author": "latency-watcher",
|
|
7
|
+
"authorKind": "watcher",
|
|
8
|
+
"source": "computed",
|
|
9
|
+
"basis": "statistical-test",
|
|
10
|
+
"confidence": 0.82,
|
|
11
|
+
"createdAt": "2026-07-25T14:00:00Z",
|
|
12
|
+
"dataVersion": "incident-1842-window-7",
|
|
13
|
+
"stableId": "annotation:incident-1842:latency-threshold"
|
|
14
|
+
},
|
|
15
|
+
"lifecycle": {
|
|
16
|
+
"freshness": "fresh",
|
|
17
|
+
"status": "proposed",
|
|
18
|
+
"ttlHint": "PT6H",
|
|
19
|
+
"anchor": "semantic"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"specVersion": "0.1",
|
|
3
|
+
"name": "Quarterly executive review",
|
|
4
|
+
"familiarity": {
|
|
5
|
+
"BarChart": 5,
|
|
6
|
+
"LineChart": 5,
|
|
7
|
+
"PieChart": 5,
|
|
8
|
+
"BoxPlot": 2
|
|
9
|
+
},
|
|
10
|
+
"targets": {
|
|
11
|
+
"PieChart": {
|
|
12
|
+
"direction": "decrease",
|
|
13
|
+
"weight": 2,
|
|
14
|
+
"reason": "Prefer position and length when exact category comparison matters."
|
|
15
|
+
},
|
|
16
|
+
"BoxPlot": {
|
|
17
|
+
"direction": "increase",
|
|
18
|
+
"weight": 1,
|
|
19
|
+
"reason": "Build familiarity with distribution rather than reporting only averages."
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"exposureLevel": 1,
|
|
23
|
+
"receptionModality": "visual"
|
|
24
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"specVersion": "0.1",
|
|
3
|
+
"name": "Incident review operators",
|
|
4
|
+
"familiarity": {
|
|
5
|
+
"LineChart": 5,
|
|
6
|
+
"Heatmap": 4,
|
|
7
|
+
"SankeyDiagram": 3,
|
|
8
|
+
"ForceDirectedGraph": 2
|
|
9
|
+
},
|
|
10
|
+
"targets": {
|
|
11
|
+
"SankeyDiagram": {
|
|
12
|
+
"direction": "increase",
|
|
13
|
+
"weight": 2,
|
|
14
|
+
"reason": "Practice tracing affected traffic through service dependencies."
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"exposureLevel": 2,
|
|
18
|
+
"receptionModality": "screen-reader",
|
|
19
|
+
"x-example-context": {
|
|
20
|
+
"roles": [
|
|
21
|
+
"on-call operator",
|
|
22
|
+
"incident commander"
|
|
23
|
+
],
|
|
24
|
+
"visualizationLiteracy": {
|
|
25
|
+
"mastered": [
|
|
26
|
+
"ordered-series",
|
|
27
|
+
"threshold"
|
|
28
|
+
],
|
|
29
|
+
"learning": [
|
|
30
|
+
"flow"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"domainKnowledge": [
|
|
34
|
+
"service topology",
|
|
35
|
+
"latency objectives"
|
|
36
|
+
],
|
|
37
|
+
"useContext": {
|
|
38
|
+
"decision": "incident triage",
|
|
39
|
+
"cadence": "live"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"specVersion": "0.1",
|
|
3
|
+
"component": "BarChart",
|
|
4
|
+
"family": "categorical",
|
|
5
|
+
"importPath": "semiotic/ordinal",
|
|
6
|
+
"rubric": {
|
|
7
|
+
"familiarity": 5,
|
|
8
|
+
"accuracy": 5,
|
|
9
|
+
"precision": 4
|
|
10
|
+
},
|
|
11
|
+
"intentScores": {
|
|
12
|
+
"compare-categories": 5,
|
|
13
|
+
"rank": 4
|
|
14
|
+
},
|
|
15
|
+
"variants": [
|
|
16
|
+
{
|
|
17
|
+
"key": "ranked",
|
|
18
|
+
"label": "Ranked bars",
|
|
19
|
+
"description": "Sort categories by value when rank is the primary task.",
|
|
20
|
+
"intentDeltas": {
|
|
21
|
+
"rank": 1
|
|
22
|
+
},
|
|
23
|
+
"props": {
|
|
24
|
+
"sort": "descending"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"caveats": [
|
|
29
|
+
"Dense category sets should be filtered or grouped before rendering."
|
|
30
|
+
],
|
|
31
|
+
"mobile": {
|
|
32
|
+
"strategy": "direct-labels",
|
|
33
|
+
"responsive": true,
|
|
34
|
+
"breakpoints": [
|
|
35
|
+
480
|
|
36
|
+
],
|
|
37
|
+
"maxMarks": 12,
|
|
38
|
+
"minimumHitTarget": 24,
|
|
39
|
+
"labels": {
|
|
40
|
+
"strategy": "direct",
|
|
41
|
+
"minFontSize": 12
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"tags": [
|
|
45
|
+
"comparison",
|
|
46
|
+
"categorical"
|
|
47
|
+
]
|
|
48
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"specVersion": "0.1",
|
|
3
|
+
"component": "SankeyDiagram",
|
|
4
|
+
"family": "flow",
|
|
5
|
+
"importPath": "semiotic/network",
|
|
6
|
+
"rubric": {
|
|
7
|
+
"familiarity": 3,
|
|
8
|
+
"accuracy": 4,
|
|
9
|
+
"precision": 2
|
|
10
|
+
},
|
|
11
|
+
"intentScores": {
|
|
12
|
+
"flow": 5,
|
|
13
|
+
"change-detection": 3
|
|
14
|
+
},
|
|
15
|
+
"caveats": [
|
|
16
|
+
"Link width supports flow comparison but is not a precise lookup channel.",
|
|
17
|
+
"Cycles require a host-specific layout strategy."
|
|
18
|
+
],
|
|
19
|
+
"mobile": {
|
|
20
|
+
"strategy": "summary-cards",
|
|
21
|
+
"responsive": true,
|
|
22
|
+
"minViewportWidth": 320,
|
|
23
|
+
"maxMarks": 40,
|
|
24
|
+
"summary": "Lead with the largest sources, destinations, and bottlenecks.",
|
|
25
|
+
"interaction": {
|
|
26
|
+
"primary": "select-flow",
|
|
27
|
+
"alternatives": [
|
|
28
|
+
"accessible-flow-table"
|
|
29
|
+
],
|
|
30
|
+
"hoverFallback": "focus-or-tap",
|
|
31
|
+
"targetSize": 24
|
|
32
|
+
},
|
|
33
|
+
"custom": {
|
|
34
|
+
"dataBearingSceneNodes": true,
|
|
35
|
+
"stableIds": true,
|
|
36
|
+
"navigationGranularity": "source, target, then link"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"tags": [
|
|
40
|
+
"flow",
|
|
41
|
+
"operations"
|
|
42
|
+
],
|
|
43
|
+
"x-example-context": {
|
|
44
|
+
"domainEntities": [
|
|
45
|
+
"service",
|
|
46
|
+
"request"
|
|
47
|
+
],
|
|
48
|
+
"domainScale": {
|
|
49
|
+
"entityLevel": "service",
|
|
50
|
+
"measure": "requests-per-minute"
|
|
51
|
+
},
|
|
52
|
+
"communicativeAct": "diagnose"
|
|
53
|
+
}
|
|
54
|
+
}
|