@almadar/shell-web 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/LICENSE +72 -0
  2. package/dist/AvlGlyph-KZMJDBEB.js +5 -0
  3. package/dist/AvlStateMachine-KVZMFHFU.js +8 -0
  4. package/dist/AvlTransitionDetail-7DVGV27I.js +10 -0
  5. package/dist/AvlTransitionExplainer-RMJ5LQLK.js +11 -0
  6. package/dist/BehaviorView-EYRPME67.js +10 -0
  7. package/dist/{FileTree-BCFnBEuQ.d.ts → FileTree-B3GDAjaQ.d.ts} +131 -4
  8. package/dist/FlowCanvas-J54627TC.js +23 -0
  9. package/dist/{FlowCanvas-3JRMNJLV.css → FlowCanvas-R4LL3KRI.css} +190 -192
  10. package/dist/{GameAudioProvider-ceM_n0ey.d.ts → GameAudioProvider-BgWOOYT3.d.ts} +15 -20
  11. package/dist/{KernelEngineContext-CcxGYtlr.d.ts → KernelEngineContext-BPx-q0iw.d.ts} +15 -2
  12. package/dist/{LayersPanel-M2LHWUFF.js → LayersPanel-PSXI4EHG.js} +4 -4
  13. package/dist/ModuleCard-TNRLL45H.js +6 -0
  14. package/dist/{OrbInspector-MHLJ6OEE.css → OrbInspector-2EGVZLOJ.css} +190 -192
  15. package/dist/OrbInspector-UBEQWWZ2.js +23 -0
  16. package/dist/{parseLessonSegments-GpCeMrb2.d.ts → SegmentRenderer-BAQ6Jwf6.d.ts} +4 -20
  17. package/dist/{Select-B-iDdnvE.d.ts → Select-BJ8Fgc8A.d.ts} +1 -1
  18. package/dist/{UISlotContext-Dl_ewwCI.d.ts → UISlotContext-7r0SQdTL.d.ts} +1 -1
  19. package/dist/UISlotRenderer-5OURMAP2.js +23 -0
  20. package/dist/{UISlotRenderer-KVFO6J7R.css → UISlotRenderer-SJBSQGBQ.css} +190 -192
  21. package/dist/auth/react/index.js +7 -6
  22. package/dist/avl/index.css +190 -192
  23. package/dist/avl/index.d.ts +19 -7
  24. package/dist/avl/index.js +170 -39
  25. package/dist/{chunk-AE7VCQB6.js → chunk-2LNXLMK3.js} +2 -2
  26. package/dist/{chunk-REXYVBUO.js → chunk-3DA36FOA.js} +1 -1
  27. package/dist/{chunk-UXLE3IPR.js → chunk-3UQNFRYV.js} +207 -9
  28. package/dist/{chunk-AGXD77SL.js → chunk-3YUMGEEW.js} +1 -1
  29. package/dist/{chunk-K4MOPSEL.js → chunk-6RXP5ZXE.js} +7 -8
  30. package/dist/{chunk-E6KA4J6N.js → chunk-7UCL26QB.js} +4 -5
  31. package/dist/{chunk-57DC34LY.js → chunk-AL2XXMYR.js} +2 -2
  32. package/dist/{chunk-YHMRX6YA.js → chunk-ANTJUQRD.js} +53 -13
  33. package/dist/{chunk-P4ZFUQFF.js → chunk-AZ74UPG6.js} +4 -1
  34. package/dist/{chunk-ROICKAU7.js → chunk-B23EZH2P.js} +3 -3
  35. package/dist/{chunk-CPLN6NBQ.js → chunk-CCO2ZH7F.js} +3 -4
  36. package/dist/{chunk-4YXBKHHM.js → chunk-D5FJU4XC.js} +87 -16
  37. package/dist/{chunk-HH5KSMH5.js → chunk-DPDKBY6Z.js} +1 -1
  38. package/dist/{chunk-A2LR6VQQ.js → chunk-ECC3WQIB.js} +9 -93
  39. package/dist/{chunk-VO2TTLS5.js → chunk-GHAF7QUD.js} +1 -1
  40. package/dist/{chunk-TXAUOLWZ.js → chunk-HA2BYO5E.js} +1 -1
  41. package/dist/{chunk-ILQXJ2AR.js → chunk-JEN4EIUF.js} +1 -1
  42. package/dist/{chunk-UTDC2NEA.js → chunk-KTYOYEVA.js} +1 -1
  43. package/dist/{chunk-X3DMMX27.js → chunk-LINJRTNB.js} +2 -2
  44. package/dist/{chunk-TUPZWTRE.js → chunk-LKL5RULQ.js} +467 -141
  45. package/dist/{chunk-UU57VNS2.js → chunk-PWXZN5G5.js} +2 -2
  46. package/dist/{chunk-SP5CDJ6K.js → chunk-RDPELAFQ.js} +4 -4
  47. package/dist/{chunk-PRXQGGCO.js → chunk-S3LS3B7N.js} +1 -1
  48. package/dist/{chunk-LHP2TK7O.js → chunk-TAEOMNDK.js} +3611 -4737
  49. package/dist/{chunk-3S54FWRC.js → chunk-UFQLHCFJ.js} +1 -1
  50. package/dist/{chunk-AB3X7QTE.js → chunk-V5SVGUYN.js} +2 -3
  51. package/dist/{chunk-3VZ36ZKO.js → chunk-ZDRDJKYB.js} +5 -2
  52. package/dist/components/index.css +190 -192
  53. package/dist/components/index.d.ts +568 -190
  54. package/dist/components/index.js +27 -30
  55. package/dist/context/index.d.ts +2 -2
  56. package/dist/context/index.js +5 -5
  57. package/dist/core.d.ts +21 -4
  58. package/dist/core.js +1 -1
  59. package/dist/{fx-CmQjnHmT.d.ts → fx-Bx5RqplG.d.ts} +10 -7
  60. package/dist/hooks/index.d.ts +8 -8
  61. package/dist/hooks/index.js +6 -6
  62. package/dist/index.d.ts +4 -0
  63. package/dist/index.js +2 -2
  64. package/dist/{katexPlugin-FA7NX4PE.css → katexPlugin-BUHVNRBJ.css} +1 -1
  65. package/dist/{kernel-client-TZKGHJRY.js → kernel-client-NMZ56JVU.js} +60 -6
  66. package/dist/{kernel-wire-wNdAPfhJ.d.ts → kernel-wire-CRsHtLsf.d.ts} +8 -1
  67. package/dist/lib/index.d.ts +3 -4
  68. package/dist/lib/index.js +435 -4
  69. package/dist/providers/index.css +190 -192
  70. package/dist/providers/index.d.ts +6 -8
  71. package/dist/providers/index.js +21 -25
  72. package/dist/renderer/index.d.ts +3 -79
  73. package/dist/renderer/index.js +2 -2
  74. package/dist/runtime/index.css +190 -192
  75. package/dist/runtime/index.d.ts +9 -2
  76. package/dist/runtime/index.js +20 -23
  77. package/dist/ssr/index.cjs +105 -28
  78. package/dist/ssr/index.js +106 -29
  79. package/dist/test-support.js +2 -2
  80. package/dist/{useUISlots-CiobNFGb.d.ts → useUISlots-BLcGd__D.d.ts} +2 -0
  81. package/dist/{paintDispatch-CuJLsr9Y.d.ts → verificationRegistry-BLuQU1JV.d.ts} +127 -15
  82. package/package.json +10 -38
  83. package/src/core/locales/ar.json +10 -1
  84. package/src/core/locales/en.json +10 -1
  85. package/src/core/locales/sl.json +10 -1
  86. package/tailwind-preset.cjs +8 -4
  87. package/dist/AvlGlyph-EPJKFEO3.js +0 -6
  88. package/dist/AvlStateMachine-RKZIKNGC.js +0 -9
  89. package/dist/AvlTransitionDetail-63SD6GZF.js +0 -11
  90. package/dist/AvlTransitionExplainer-ZBTLOM3T.js +0 -12
  91. package/dist/BehaviorView-YS5G4GNB.js +0 -11
  92. package/dist/Canvas3DHost-BkZQB5l2.d.ts +0 -552
  93. package/dist/FlowCanvas-AUMTWMNG.js +0 -26
  94. package/dist/ModuleCard-QHDGK5XK.js +0 -7
  95. package/dist/OrbInspector-QCPEPUPH.js +0 -26
  96. package/dist/UISlotRenderer-C7WWOK43.js +0 -26
  97. package/dist/avl-3d-context-BycmO6tG.d.ts +0 -201
  98. package/dist/avl-schema-parser-CtJxJ9KU.d.ts +0 -132
  99. package/dist/avl-zoom-state-CKMVuBFg.d.ts +0 -17
  100. package/dist/chunk-4T3P43NS.js +0 -1133
  101. package/dist/chunk-DZBQA2OW.js +0 -176
  102. package/dist/chunk-EOWMARUB.js +0 -16
  103. package/dist/chunk-GFXCPUMX.js +0 -1334
  104. package/dist/chunk-ILZ7ORX7.js +0 -432
  105. package/dist/three/index.css +0 -503
  106. package/dist/three/index.d.ts +0 -1185
  107. package/dist/three/index.js +0 -3908
  108. package/dist/verificationRegistry-CVrcxG1s.d.ts +0 -122
  109. /package/dist/{katexPlugin-NCDKOOQY.js → katexPlugin-WGJ4JFZU.js} +0 -0
@@ -1,37 +1,34 @@
1
1
  "use client";
2
2
  export { assertUniqueSlotsPerHost } from '../chunk-5QTYQTPS.js';
3
- export { BehaviorView } from '../chunk-ROICKAU7.js';
4
- export { ModuleCard } from '../chunk-E6KA4J6N.js';
5
- import { JsonTreeEditor } from '../chunk-ILQXJ2AR.js';
6
- export { JsonTreeEditor } from '../chunk-ILQXJ2AR.js';
7
- export { SharedEntityStoreContext, createSharedEntityStore, runTickFrame, useAgentChat, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useExtensions, useFileEditor, useFileSystem, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, usePreview, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useTickVisibility, useTraitListens, useUIEvents, useValidation } from '../chunk-UU57VNS2.js';
8
- import { resolveSheetDirection, frameRect, GridPicker, FormSection } from '../chunk-LHP2TK7O.js';
9
- export { Card as ActionCard, ActionPalette, ActionTile, ActivationBlock, ActivityRail, AgentActivityFeed, AgentActivityRow, AgentChatFeed, AgentThinkingRow, Alert, AlgoGraphCanvas, AlgorithmCanvas, AnimatedCounter, AuthLayout, BiologyCanvas, BloomQuizBlock, BranchingLogicBuilder, Breadcrumb, ButtonGroup, COMPACT_MEDIA_QUERY, CalendarGrid, Canvas, Canvas2D, Carousel, ChangeList, Chart, ChartLegend, ChatBar, ChemistryCanvas, ChoiceButton, CodeBlock, CodeRunnerPanel, CommandPalette, CommitRow, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTION_KEYS, DEFAULT_MATRIX_COLUMN_KEYS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DateRangePicker, DateRangeSelector, DetailPanel, DialogueBubble, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DockLayout, DocumentDetails, DocumentPanel, DocumentViewer, StateMachineView as DomStateMachineVisualizer, DrawShapeLayer, DrawSprite, DrawSpriteLayer, DrawText, DrawTextLayer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EmojiPicker, ErrorBoundary, ErrorState, FEATURE_COLORS, FLOOR_HEIGHT, FeatureCard, FeatureGrid, FilterGroup, Flex, FlipCard, FloatingActionButton, FloatingToolbar, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, FxOverlay, GameAudioContext, GameAudioCue, GameAudioProvider, GameAudioToggle, GameHud, GameMenu, GameShell, Gantt, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, GuestView, Header, HealthBar, IconButton, ImportPreviewTree, ImportProgress, ImportSourcePicker, InputGroup, JazariStateMachine, LearningCanvas, LearningScene3D, Lightbox, LikertScale, LineChart, LoadingState, MachinePanel, MapView, MarkdownContent, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, Navigation, NumberStepper, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, PageHeader, PageTransition, Pagination, PhysicsCanvas, PositionedCanvas, ProgressDots, PullToRefresh, QrScanner, QuizBlock, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichTextEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SegmentRenderer, SequenceBar, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SkeletonTree, SlotContentRenderer, SocialProof, SortableList, Split, SplitPane, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, SubagentTracePanel, SwipeableRow, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagInput, Timeline, TimerDisplay, Toast, ToastSlot, TopNavItem, TraitFrame, TraitSlot, TraitStateViewer, UISlotComponent, UISlotRenderer, UploadDropZone, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, activityRowFacts, applyCompletion, applySuggestions, arrowBetween, billboardLabel, createUnitAnimationState, cylinderBetween, dispatchCommandPaletteCommand, get3DClickPayload, getCurrentFrame, groupIntoConversations, inferDirection, isoToScreen, meshSphere, parseEditFocus, preloadCodeHighlighter, registerCodeLanguageLoader, renderPatternValue, resolveFrame, resolveSheetDirection, sanitizeRichHtml, screenToIso, tickAnimationState, toCodeLanguage, transitionAnimation, useCamera, useCompactLayout, useDockLayout, useGameAudio, useGameAudioContext, useImageCache } from '../chunk-LHP2TK7O.js';
10
- export { FileTree } from '../chunk-57DC34LY.js';
11
- import '../chunk-SP5CDJ6K.js';
12
- import '../chunk-CPLN6NBQ.js';
13
- import '../chunk-HH5KSMH5.js';
14
- export { Accordion } from '../chunk-REXYVBUO.js';
15
- export { EmptyState } from '../chunk-AGXD77SL.js';
16
- import '../chunk-TXAUOLWZ.js';
17
- import { ThemedPortal } from '../chunk-AB3X7QTE.js';
18
- export { Popover, Tooltip } from '../chunk-AB3X7QTE.js';
19
- import '../chunk-DZBQA2OW.js';
20
- export { parseLessonSegments, parseMarkdownWithCodeBlocks } from '../chunk-TUPZWTRE.js';
21
- import '../chunk-TZZBINQY.js';
22
- export { DrawFxLayer, DrawGroup, DrawMesh, DrawShape, DrawSkinnedMesh } from '../chunk-4T3P43NS.js';
3
+ export { BehaviorView } from '../chunk-B23EZH2P.js';
4
+ export { ModuleCard } from '../chunk-7UCL26QB.js';
5
+ import { JsonTreeEditor } from '../chunk-JEN4EIUF.js';
6
+ export { JsonTreeEditor } from '../chunk-JEN4EIUF.js';
7
+ export { SharedEntityStoreContext, createSharedEntityStore, runTickFrame, useAgentChat, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useExtensions, useFileEditor, useFileSystem, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, usePreview, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useTickVisibility, useTraitListens, useUIEvents, useValidation } from '../chunk-PWXZN5G5.js';
8
+ import { resolveSheetDirection, frameRect, GridPicker, FormSection } from '../chunk-TAEOMNDK.js';
9
+ export { Card as ActionCard, ActionPalette, ActionTile, ActivationBlock, ActivityRail, AgentActivityFeed, AgentActivityRow, AgentChatFeed, AgentThinkingRow, Alert, AlgoGraphCanvas, AlgorithmCanvas, AnimatedCounter, AuthLayout, BiologyCanvas, BloomQuizBlock, BranchingLogicBuilder, Breadcrumb, ButtonGroup, COMPACT_MEDIA_QUERY, CalendarGrid, Canvas, Canvas2D, Carousel, ChangeList, Chart, ChartLegend, ChatBar, ChemistryCanvas, ChoiceButton, CodeBlock, CodeRunnerPanel, CommandPalette, CommitRow, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTION_KEYS, DEFAULT_MATRIX_COLUMN_KEYS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DateRangePicker, DateRangeSelector, DetailPanel, DialogueBubble, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DockLayout, DocumentDetails, DocumentPanel, DocumentViewer, StateMachineView as DomStateMachineVisualizer, DrawFxLayer, DrawGroup, DrawMesh, DrawShape, DrawShapeLayer, DrawSkinnedMesh, DrawSprite, DrawSpriteLayer, DrawText, DrawTextLayer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EmojiPicker, ErrorBoundary, ErrorState, FEATURE_COLORS, FLOOR_HEIGHT, FeatureCard, FeatureGrid, FilterGroup, Flex, FlipCard, FloatingActionButton, FloatingToolbar, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, FxOverlay, GameAudioContext, GameAudioCue, GameAudioProvider, GameAudioToggle, GameHud, GameMenu, GameShell, Gantt, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, GuestView, Header, HealthBar, IconButton, ImportPreviewTree, ImportProgress, ImportSourcePicker, InputGroup, JazariStateMachine, LearningCanvas, Lightbox, LikertScale, LineChart, LoadingState, MachinePanel, MapView, MarkdownContent, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, Navigation, NumberStepper, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, PageHeader, PageTransition, Pagination, PhysicsCanvas, PositionedCanvas, ProgressDots, PullToRefresh, QrScanner, QuizBlock, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichTextEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SegmentRenderer, SequenceBar, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SkeletonTree, SlotContentRenderer, SocialProof, SortableList, Split, SplitPane, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, SubagentTracePanel, SwipeableRow, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagInput, Timeline, TimerDisplay, Toast, ToastSlot, TopNavItem, TraitFrame, TraitSlot, TraitStateViewer, UISlotComponent, UISlotRenderer, UploadDropZone, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, activityRowFacts, applyCompletion, applySuggestions, createUnitAnimationState, dispatchCommandPaletteCommand, getCurrentFrame, groupIntoConversations, inferDirection, isoToScreen, parseEditFocus, parseMarkdownWithCodeBlocks, preloadCodeHighlighter, registerCodeLanguageLoader, renderPatternValue, resolveFrame, resolveSheetDirection, sanitizeRichHtml, screenToIso, tickAnimationState, toCodeLanguage, transitionAnimation, useCamera, useCompactLayout, useDockLayout, useGameAudio, useGameAudioContext, useImageCache } from '../chunk-TAEOMNDK.js';
10
+ export { FileTree } from '../chunk-AL2XXMYR.js';
11
+ import '../chunk-RDPELAFQ.js';
12
+ import '../chunk-CCO2ZH7F.js';
13
+ import '../chunk-DPDKBY6Z.js';
14
+ export { Accordion } from '../chunk-3DA36FOA.js';
15
+ export { EmptyState } from '../chunk-3YUMGEEW.js';
16
+ import '../chunk-HA2BYO5E.js';
23
17
  import '../chunk-PCR37T3U.js';
24
- import '../chunk-UXLE3IPR.js';
25
- import '../chunk-ILZ7ORX7.js';
26
- import '../chunk-3VZ36ZKO.js';
27
- export { claimDelivery, keyChord, mergeCaptureTables, parseQueryBinding, useAuthContext, useCanvasGestures, useDragReorder, useKeyboardRouter, useLongPress, usePageHead, usePullToRefresh, useQuerySingleton, useSwipeGesture } from '../chunk-PRXQGGCO.js';
28
- export { ALMADAR_DND_MIME, useDraggable, useDropZone } from '../chunk-VO2TTLS5.js';
29
- import '../chunk-AE7VCQB6.js';
18
+ import { ThemedPortal } from '../chunk-V5SVGUYN.js';
19
+ export { Popover, Tooltip } from '../chunk-V5SVGUYN.js';
20
+ import '../chunk-3UQNFRYV.js';
21
+ import '../chunk-LKL5RULQ.js';
22
+ import '../chunk-TZZBINQY.js';
23
+ import '../chunk-ZDRDJKYB.js';
24
+ export { claimDelivery, keyChord, mergeCaptureTables, parseQueryBinding, useAuthContext, useCanvasGestures, useDragReorder, useKeyboardRouter, useLongPress, usePageHead, usePullToRefresh, useQuerySingleton, useSwipeGesture } from '../chunk-S3LS3B7N.js';
25
+ export { ALMADAR_DND_MIME, useDraggable, useDropZone } from '../chunk-GHAF7QUD.js';
26
+ import '../chunk-2LNXLMK3.js';
30
27
  import '../chunk-3BBUBJFF.js';
31
- export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-YHMRX6YA.js';
32
- import { VStack, Button, HStack, GameIcon, Typography, Box, useTranslate, Badge, Icon, cn, Select, domPassthrough, Switch, Input } from '../chunk-4YXBKHHM.js';
33
- import { getKnownPatterns, getPatternDefinition } from '../chunk-A2LR6VQQ.js';
34
- import '../chunk-P4ZFUQFF.js';
28
+ export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-ANTJUQRD.js';
29
+ import { VStack, Button, HStack, GameIcon, Typography, Box, useTranslate, Badge, Icon, cn, Select, domPassthrough, Switch, Input } from '../chunk-D5FJU4XC.js';
30
+ import { getKnownPatterns, getPatternDefinition } from '../chunk-ECC3WQIB.js';
31
+ import '../chunk-AZ74UPG6.js';
35
32
  import '../chunk-G7DCAZ22.js';
36
33
  import React4, { useRef, useState, useMemo, useEffect, useCallback, useLayoutEffect } from 'react';
37
34
  import * as LucideIcons from 'lucide-react';
@@ -1,8 +1,8 @@
1
- export { U as UISlotContext, a as UISlotProvider, u as useSlotContent, b as useSlotHasContent, c as useUISlots } from '../UISlotContext-Dl_ewwCI.js';
1
+ export { U as UISlotContext, a as UISlotProvider, u as useSlotContent, b as useSlotHasContent, c as useUISlots } from '../UISlotContext-7r0SQdTL.js';
2
2
  export { T as ThemeMode, r as resolveThemeForRuntime, t as themeTokensToCssVars } from '../themeTokens-CRd8AEDF.js';
3
3
  export { A as ARBITRARY_CLASS_STYLE_ID, a as ArbitraryClassCompiler, b as ArbitraryClassCompilerProvider, c as ArbitraryClassCompilerProviderProps, C as CurrentPagePathContext, d as CurrentPagePathProvider, e as CurrentPagePathProviderProps, D as DesignThemeProvider, O as OrbitalThemeProvider, f as OrbitalThemeProviderProps, U as UserContext, g as UserContextValue, h as UserData, i as UserProvider, j as UserProviderProps, u as useArbitraryClassStyles, k as useCurrentPagePath, l as useDesignTheme, m as useHasPermission, n as useHasRole, o as useUser, p as useUserForEvaluation } from '../ArbitraryClassCompiler-CO_iASBn.js';
4
4
  export { ANONYMOUS_USER, UISlot } from '@almadar/core';
5
- export { S as SlotChangeCallback, a as SlotContent, b as SlotRenderConfig, U as UISlotManager } from '../useUISlots-CiobNFGb.js';
5
+ export { S as SlotChangeCallback, a as SlotContent, b as SlotRenderConfig, U as UISlotManager } from '../useUISlots-BLcGd__D.js';
6
6
  import 'react';
7
7
  import '../EventBusProvider-BFFHfN4O.js';
8
8
  import '../ThemeContext-DJmO59xd.js';
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- export { DesignThemeProvider, useDesignTheme } from '../chunk-UTDC2NEA.js';
3
- export { ANONYMOUS_USER, ARBITRARY_CLASS_STYLE_ID, ArbitraryClassCompilerProvider, CurrentPagePathContext, CurrentPagePathProvider, OrbitalThemeProvider, UISlotContext, UISlotProvider, UserContext, UserProvider, useArbitraryClassStyles, useCurrentPagePath, useHasPermission, useHasRole, useSlotContent, useSlotHasContent, useUISlots, useUser, useUserForEvaluation } from '../chunk-AE7VCQB6.js';
2
+ export { DesignThemeProvider, useDesignTheme } from '../chunk-KTYOYEVA.js';
3
+ export { ANONYMOUS_USER, ARBITRARY_CLASS_STYLE_ID, ArbitraryClassCompilerProvider, CurrentPagePathContext, CurrentPagePathProvider, OrbitalThemeProvider, UISlotContext, UISlotProvider, UserContext, UserProvider, useArbitraryClassStyles, useCurrentPagePath, useHasPermission, useHasRole, useSlotContent, useSlotHasContent, useUISlots, useUser, useUserForEvaluation } from '../chunk-2LNXLMK3.js';
4
4
  export { resolveThemeForRuntime, themeTokensToCssVars } from '../chunk-3BBUBJFF.js';
5
- import '../chunk-YHMRX6YA.js';
6
- import '../chunk-4YXBKHHM.js';
7
- import '../chunk-P4ZFUQFF.js';
5
+ import '../chunk-ANTJUQRD.js';
6
+ import '../chunk-D5FJU4XC.js';
7
+ import '../chunk-AZ74UPG6.js';
8
8
  import '../chunk-G7DCAZ22.js';
package/dist/core.d.ts CHANGED
@@ -2,9 +2,9 @@ import * as React$1 from 'react';
2
2
  import React__default, { RefObject } from 'react';
3
3
  import { A11yProps, AssetUrl, EventKey, TextureAtlas, Tilesheet, SpriteSheetAtlas, EventPayload, EventEmit, FieldValue, SExpr, Asset, OrbitalSchema, OrbitalPage, NavStackEntry, IconFamily as IconFamily$1, JsonValue, SurfaceMode } from '@almadar/core';
4
4
  export { BusEvent, BusEventListener, BusEventSource, BusEventListener as EventListener, SurfaceMode, Unsubscribe, comparePathSpecificity, matchPath, matchPathAmong } from '@almadar/core';
5
- import { I as IconInput } from './fx-CmQjnHmT.js';
6
- export { B as Badge, b as BadgeColor, c as BadgeProps, d as BadgeSize, e as BadgeVariant, C as CONFETTI_BURST_KEYFRAMES, f as CONFETTI_COLORS, g as ColorToken, h as ConfettiParticle, D as DisplayField, i as DisplayFieldFormat, j as DisplayFieldVariant, F as FxItem, k as FxLifecycle, l as FxOverlayItem, m as FxOverlayKind, a as FxPreset, n as FxProceduralShape, o as FxSpace, p as FxView, q as Icon, r as IconAnimation, s as IconProps, t as IconSize, u as ImageSource, L as LinkAction, P as Point, R as Rect, U as UiError, v as createConfettiParticles, w as fxHash01, x as fxLifecycle, y as resolveFxView, z as resolveIcon } from './fx-CmQjnHmT.js';
7
- export { B as Button, a as ButtonProps, b as ButtonSize, c as ButtonVariant, I as Input, d as InputProps, P as PatternTile, e as PatternTileProps, f as PatternVariant, S as Select, g as SelectOption, h as SelectOptionGroup, i as SelectProps, j as getTileDimensions } from './Select-B-iDdnvE.js';
5
+ import { I as IconInput } from './fx-Bx5RqplG.js';
6
+ export { B as Badge, b as BadgeColor, c as BadgeProps, d as BadgeSize, e as BadgeVariant, C as CONFETTI_BURST_KEYFRAMES, f as CONFETTI_COLORS, g as ColorToken, h as ConfettiParticle, D as DisplayField, i as DisplayFieldFormat, j as DisplayFieldVariant, F as FxItem, k as FxLifecycle, l as FxOverlayItem, m as FxOverlayKind, a as FxPreset, n as FxProceduralShape, o as FxSpace, p as FxView, q as Icon, r as IconAnimation, s as IconProps, t as IconSize, u as ImageSource, L as LinkAction, P as Point, R as Rect, U as UiError, v as createConfettiParticles, w as fxHash01, x as fxLifecycle, y as isColorToken, z as resolveColorToken, A as resolveFxView, E as resolveIcon } from './fx-Bx5RqplG.js';
7
+ export { B as Button, a as ButtonProps, b as ButtonSize, c as ButtonVariant, I as Input, d as InputProps, P as PatternTile, e as PatternTileProps, f as PatternVariant, S as Select, g as SelectOption, h as SelectOptionGroup, i as SelectProps, j as getTileDimensions } from './Select-BJ8Fgc8A.js';
8
8
  export { E as EventBusContext, a as EventBusContextType, b as EventBusContextTypeExtended, c as EventBusProvider, V as VideoEmbed, d as VideoEmbedProps, e as VideoErrorPayload, f as VideoPlayPayload, g as VideoReadyPayload, h as getGlobalEventBus, s as setGlobalEventBus, u as useEmitEvent, i as useEventBus, j as useEventListener, k as useEventSubscription, l as useRootEventBus } from './EventBusProvider-BFFHfN4O.js';
9
9
  import { ClassValue } from 'clsx';
10
10
  import { LucideIcon } from 'lucide-react';
@@ -324,6 +324,17 @@ type BoxMargin = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "auto";
324
324
  type BoxBg = "transparent" | "primary" | "secondary" | "muted" | "accent" | "surface" | "overlay" | "gradient" | "inverse";
325
325
  type BoxRounded = "none" | "sm" | "md" | "lg" | "xl" | "2xl" | "full";
326
326
  type BoxShadow = "none" | "sm" | "md" | "lg" | "xl";
327
+ /** An endless strip: the content moves toward `direction` at `speed` px/s. */
328
+ interface BoxMarquee {
329
+ /** "start" moves toward the reading start (left in LTR), "end" toward the reading end */
330
+ direction: "start" | "end";
331
+ /** Speed in pixels per second */
332
+ speed: number;
333
+ /** Clip the strip to the box and fade its two edges */
334
+ clip: boolean;
335
+ /** Repeat the content right after itself so the strip never runs out; without it the content leaves and starts over */
336
+ loop: boolean;
337
+ }
327
338
  interface BoxProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, keyof A11yProps>, A11yProps {
328
339
  /** Additional CSS classes applied to the root element. */
329
340
  className?: string;
@@ -398,6 +409,8 @@ interface BoxProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, k
398
409
  texture?: boolean;
399
410
  /** Content that appears or changes inside the box eases in instead of switching in one frame (new rows, swapped views, changed text), played in presentation motion (the theme's dramatic duration, standard easing) so it can be watched. Off under reduced motion. */
400
411
  animateChanges?: boolean;
412
+ /** Scroll the content as a moving strip (pauses on hover; stands still and wraps under reduced motion) */
413
+ marquee?: BoxMarquee;
401
414
  /** Scene behind the band's content (photo, illustration, pattern); never takes clicks */
402
415
  backdrop?: React__default.ReactNode;
403
416
  /** Children elements */
@@ -666,6 +679,10 @@ interface FilterPillProps extends Omit<React__default.HTMLAttributes<HTMLSpanEle
666
679
  clickEvent?: EventEmit<{
667
680
  label: string | number | undefined;
668
681
  }>;
682
+ /** Payload sent with clickEvent beside the label, so a pill rendered from data names its item without matching on text
683
+ * @payloadFor clickEvent
684
+ */
685
+ clickPayload?: EventPayload;
669
686
  /** Event name dispatched via event bus when the remove (×) button is clicked. Payload: { label }
670
687
  * @offByDefault */
671
688
  removeEvent?: EventEmit<{
@@ -2596,4 +2613,4 @@ declare const localeMeta: Record<SupportedLocale, LocaleMeta>;
2596
2613
  declare function mergeMessages(locale: SupportedLocale, projectMessages: Record<string, string>): Record<string, string>;
2597
2614
 
2598
2615
  export { AnimatedGraphic, AnimatedReveal, Aside, AtlasImage, AtlasPanel, Avatar, BAND_ACCENT_FALLBACK, BAND_EDGE_FILL, BAND_SHAPES, BUILT_IN_THEMES, Box, Card, CardBody, CardContent, CardFooter, CardHeader, CardTitle, Center, Checkbox, ConditionalWrapper, ConfettiEffect, DEFAULT_CURRENCY, DayCell, Dialog, Divider, FilterPill, FlipContainer, GameIcon, HStack, I18nProvider, INLINE_TEXT_ATTR, IconInput, Image, InfiniteScrollSentinel, Label, LawReferenceTooltip, NavStackProvider, NavStackRouterBridge, NavigationProvider, Overlay, PendingScopeContext, Presence, ProgressBar, Radio, RangeSlider, STRETCHED_ABOVE, STRETCHED_CONTROL, SVG_MOTION_CLASSES, SectionHeader, Spacer, Sparkline, Spinner, Stack, StatusDot, SurfaceBoundary, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, Switch, THEME_SCALE_KEYS, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, TraitScopeProvider, TrendIndicator, TypewriterText, Typography, UIThemeDefinition, VStack, atlasFailed, atlasUrlOf, bandEdgeHeight, bandEdgeLayerStyle, bandEdgeMask, bandPadding, beginPending, blit, boxesOf, cn, compareCellValues, coreMessages, createTraitPresence, createTranslate, cssTimeMs, domPassthrough, endPending, entriesFor, evaluateBinding, evaluateBindings, extractRouteParams, findPageByName, findPageByPath, followHref, formatDate, formatDateTime, formatTime, formatValue, getAllPages, getAtlas, getCurrentIconFamily, getDefaultPage, getTraitPresence, guardsHold, isAbsoluteHref, isAtlasAsset, isInertNavStack, isMotionEnabled, isPending, isSpriteSheetAtlas, kebabToPascal, layoutScale, localeMeta, lucideIconKey, matchNavPage, mergeMessages, motionTiming, navLabelsFromItems, newPendingKey, pageEntryLabel, parseCalendarDate, pathMatches, presenceGroup, pressableProps, previousEntry, relabelCurrent, resolveAssetSource, resolveEntryLabels, resolveIconForFamily, resolveLucideByName, rowActivationProps, rowOpenControlProps, sortRows, subRectFor, subscribePending, svgMotionClass, syncNavStack, toDateInputValue, toDateTimeInputValue, useActivePage, useAnimateChanges, useAtlasSliceDataUrl, useContentSurface, useDialogBehavior, useFormatContext, useIconFamily, useInfiniteScroll, useInitPayload, useMediaQuery, useNavStack, useNavigateTo, useNavigation, useNavigationId, useNavigationState, useOnSurface, usePendingAction, usePendingRows, usePendingScopeValue, usePrefersReducedMotion, usePresence, useRenderI18n, useResolvedIcon, useScopeHasPending, useTapReveal, useThemeIconStrokeApplies, useTraitScope, useTraitScopeChain, useTranslate };
2599
- export type { AnimatedGraphicProps, AnimatedRevealProps, AsideProps, AssetSource, AtlasImageAsset, AtlasImageProps, AtlasPanelProps, AvatarProps, AvatarSize, AvatarStatus, BandEdge, BandEdgeColor, BandEdgeLayerStyle, BooleanLabels, BoxBg, BoxMargin, BoxPadding, BoxProps, BoxRounded, BoxShadow, CardLook, CardProps, CardShadow, CenterProps, CheckboxProps, ConditionalContext, ConditionalWrapperProps, ConfettiEffectProps, ContentSurface, DayCellProps, DialogBehaviorOptions, DialogProps, DividerOrientation, DividerProps, DividerVariant, DomPassthrough, FilterPillProps, FilterPillSize, FilterPillVariant, FlipContainerProps, FormatContext, GameIconProps, GraphicAnimation, HStackProps, HighlightType, I18nContextValue, I18nProviderProps, IconFamily, ImageAspect, ImageFit, ImagePosition, ImageProps, ImageRounded, InfiniteScrollOptions, InfiniteScrollResult, InfiniteScrollSentinelProps, LabelProps, LawReference, LawReferenceTooltipProps, LocaleMeta, NavItemDecl, NavItemLabels, NavPageDecl, NavStackApi, NavStackProviderProps, NavStackRouterBridgeProps, NavStackState, NavigationContextValue, NavigationProviderProps, NavigationState, OverlayProps, PendingCrumb, PendingScopeValue, PresenceAnimation, PresenceProps, PresenceResult, PressableProps, ProgressBarColor, ProgressBarProps, ProgressBarType, ProgressBarVariant, RadioProps, RangeSliderProps, RangeSliderSize, RenderI18n, RenderedIcon, RenderedIconProps, RevealAnimation, RevealTrigger, RowActivationProps, SectionHeaderProps, SortDirection, SpacerProps, SpacerSize, SparklineColor, SparklineProps, SpinnerProps, SpinnerSize, SpriteRef, StackAlign, StackDirection, StackGap, StackJustify, StackProps, StatusDotProps, StatusDotSize, StatusDotStatus, SubRect, SupportedLocale, SvgBranchProps, SvgConnectionProps, SvgFlowProps, SvgGridProps, SvgLobeProps, SvgMeshProps, SvgMorphProps, SvgMotion, SvgNodeProps, SvgPulseProps, SvgRingProps, SvgShieldProps, SvgStackProps, SwitchProps, TapRevealOptions, TapRevealResult, TextHighlightProps, TextareaProps, ThemeToggleProps, TimeSlotCellProps, TraitPresence, TraitPresenceState, TraitScope, TraitScopeProviderProps, TranslateFunction, TrendDirection, TrendIndicatorProps, TrendIndicatorSize, TypewriterTextProps, TypographyProps, TypographySize, TypographyVariant, UsePresenceOptions, VStackProps, ValueFormat };
2616
+ export type { AnimatedGraphicProps, AnimatedRevealProps, AsideProps, AssetSource, AtlasImageAsset, AtlasImageProps, AtlasPanelProps, AvatarProps, AvatarSize, AvatarStatus, BandEdge, BandEdgeColor, BandEdgeLayerStyle, BooleanLabels, BoxBg, BoxMargin, BoxMarquee, BoxPadding, BoxProps, BoxRounded, BoxShadow, CardLook, CardProps, CardShadow, CenterProps, CheckboxProps, ConditionalContext, ConditionalWrapperProps, ConfettiEffectProps, ContentSurface, DayCellProps, DialogBehaviorOptions, DialogProps, DividerOrientation, DividerProps, DividerVariant, DomPassthrough, FilterPillProps, FilterPillSize, FilterPillVariant, FlipContainerProps, FormatContext, GameIconProps, GraphicAnimation, HStackProps, HighlightType, I18nContextValue, I18nProviderProps, IconFamily, ImageAspect, ImageFit, ImagePosition, ImageProps, ImageRounded, InfiniteScrollOptions, InfiniteScrollResult, InfiniteScrollSentinelProps, LabelProps, LawReference, LawReferenceTooltipProps, LocaleMeta, NavItemDecl, NavItemLabels, NavPageDecl, NavStackApi, NavStackProviderProps, NavStackRouterBridgeProps, NavStackState, NavigationContextValue, NavigationProviderProps, NavigationState, OverlayProps, PendingCrumb, PendingScopeValue, PresenceAnimation, PresenceProps, PresenceResult, PressableProps, ProgressBarColor, ProgressBarProps, ProgressBarType, ProgressBarVariant, RadioProps, RangeSliderProps, RangeSliderSize, RenderI18n, RenderedIcon, RenderedIconProps, RevealAnimation, RevealTrigger, RowActivationProps, SectionHeaderProps, SortDirection, SpacerProps, SpacerSize, SparklineColor, SparklineProps, SpinnerProps, SpinnerSize, SpriteRef, StackAlign, StackDirection, StackGap, StackJustify, StackProps, StatusDotProps, StatusDotSize, StatusDotStatus, SubRect, SupportedLocale, SvgBranchProps, SvgConnectionProps, SvgFlowProps, SvgGridProps, SvgLobeProps, SvgMeshProps, SvgMorphProps, SvgMotion, SvgNodeProps, SvgPulseProps, SvgRingProps, SvgShieldProps, SvgStackProps, SwitchProps, TapRevealOptions, TapRevealResult, TextHighlightProps, TextareaProps, ThemeToggleProps, TimeSlotCellProps, TraitPresence, TraitPresenceState, TraitScope, TraitScopeProviderProps, TranslateFunction, TrendDirection, TrendIndicatorProps, TrendIndicatorSize, TypewriterTextProps, TypographyProps, TypographySize, TypographyVariant, UsePresenceOptions, VStackProps, ValueFormat };
package/dist/core.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- export { AnimatedGraphic, AnimatedReveal, Aside, AtlasImage, AtlasPanel, Avatar, BAND_ACCENT_FALLBACK, BAND_EDGE_FILL, BAND_SHAPES, BUILT_IN_THEMES, Badge, Box, Button, CONFETTI_BURST_KEYFRAMES, CONFETTI_COLORS, Card, CardBody, CardContent, CardFooter, CardHeader, CardTitle, Center, Checkbox, ConditionalWrapper, ConfettiEffect, DEFAULT_CURRENCY, DayCell, Dialog, Divider, EventBusContext, EventBusProvider, FilterPill, FlipContainer, GameIcon, HStack, I18nProvider, INLINE_TEXT_ATTR, Icon, Image, InfiniteScrollSentinel, Input, Label, LawReferenceTooltip, NavStackProvider, NavStackRouterBridge, NavigationProvider, Overlay, PatternTile, PendingScopeContext, Presence, ProgressBar, Radio, RangeSlider, STRETCHED_ABOVE, STRETCHED_CONTROL, SVG_MOTION_CLASSES, SectionHeader, Select, Spacer, Sparkline, Spinner, Stack, StatusDot, SurfaceBoundary, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, Switch, THEME_SCALE_KEYS, TextHighlight, Textarea, ThemeProvider, ThemeScopeContext, ThemeToggle, TimeSlotCell, TraitScopeProvider, TrendIndicator, TypewriterText, Typography, VStack, VideoEmbed, atlasFailed, atlasUrlOf, bandEdgeHeight, bandEdgeLayerStyle, bandEdgeMask, bandPadding, beginPending, blit, boxesOf, cn, compareCellValues, comparePathSpecificity, coreMessages, createConfettiParticles, createTraitPresence, createTranslate, cssTimeMs, domPassthrough, endPending, entriesFor, evaluateBinding, evaluateBindings, extractRouteParams, findPageByName, findPageByPath, followHref, formatDate, formatDateTime, formatTime, formatValue, fxHash01, fxLifecycle, getAllPages, getAtlas, getCurrentIconFamily, getDefaultPage, getGlobalEventBus, getTileDimensions, getTraitPresence, guardsHold, isAbsoluteHref, isAtlasAsset, isInertNavStack, isMotionEnabled, isPending, isSpriteSheetAtlas, kebabToPascal, keyInViewerMode, layoutScale, localeMeta, lucideIconKey, matchNavPage, matchPath, matchPathAmong, mergeMessages, motionTiming, navLabelsFromItems, newPendingKey, pageEntryLabel, parseCalendarDate, pathMatches, presenceGroup, pressableProps, previousEntry, registryKeyMode, registryKeyTheme, relabelCurrent, resolveAssetSource, resolveEntryLabels, resolveFxView, resolveIcon, resolveIconForFamily, resolveLucideByName, rowActivationProps, rowOpenControlProps, setGlobalEventBus, sortRows, subRectFor, subscribePending, svgMotionClass, syncNavStack, themeHasMode, toDateInputValue, toDateTimeInputValue, useActivePage, useAnimateChanges, useAtlasSliceDataUrl, useContentSurface, useDialogBehavior, useEmitEvent, useEventBus, useEventListener, useEventSubscription, useFormatContext, useIconFamily, useInfiniteScroll, useInitPayload, useMediaQuery, useNavStack, useNavigateTo, useNavigation, useNavigationId, useNavigationState, useOnSurface, usePendingAction, usePendingRows, usePendingScopeValue, usePrefersReducedMotion, usePresence, useRenderI18n, useResolvedIcon, useRootEventBus, useScopeHasPending, useScopedMode, useTapReveal, useTheme, useThemeIconStrokeApplies, useThemeScope, useTraitScope, useTraitScopeChain, useTranslate } from './chunk-4YXBKHHM.js';
2
+ export { AnimatedGraphic, AnimatedReveal, Aside, AtlasImage, AtlasPanel, Avatar, BAND_ACCENT_FALLBACK, BAND_EDGE_FILL, BAND_SHAPES, BUILT_IN_THEMES, Badge, Box, Button, CONFETTI_BURST_KEYFRAMES, CONFETTI_COLORS, Card, CardBody, CardContent, CardFooter, CardHeader, CardTitle, Center, Checkbox, ConditionalWrapper, ConfettiEffect, DEFAULT_CURRENCY, DayCell, Dialog, Divider, EventBusContext, EventBusProvider, FilterPill, FlipContainer, GameIcon, HStack, I18nProvider, INLINE_TEXT_ATTR, Icon, Image, InfiniteScrollSentinel, Input, Label, LawReferenceTooltip, NavStackProvider, NavStackRouterBridge, NavigationProvider, Overlay, PatternTile, PendingScopeContext, Presence, ProgressBar, Radio, RangeSlider, STRETCHED_ABOVE, STRETCHED_CONTROL, SVG_MOTION_CLASSES, SectionHeader, Select, Spacer, Sparkline, Spinner, Stack, StatusDot, SurfaceBoundary, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, Switch, THEME_SCALE_KEYS, TextHighlight, Textarea, ThemeProvider, ThemeScopeContext, ThemeToggle, TimeSlotCell, TraitScopeProvider, TrendIndicator, TypewriterText, Typography, VStack, VideoEmbed, atlasFailed, atlasUrlOf, bandEdgeHeight, bandEdgeLayerStyle, bandEdgeMask, bandPadding, beginPending, blit, boxesOf, cn, compareCellValues, comparePathSpecificity, coreMessages, createConfettiParticles, createTraitPresence, createTranslate, cssTimeMs, domPassthrough, endPending, entriesFor, evaluateBinding, evaluateBindings, extractRouteParams, findPageByName, findPageByPath, followHref, formatDate, formatDateTime, formatTime, formatValue, fxHash01, fxLifecycle, getAllPages, getAtlas, getCurrentIconFamily, getDefaultPage, getGlobalEventBus, getTileDimensions, getTraitPresence, guardsHold, isAbsoluteHref, isAtlasAsset, isColorToken, isInertNavStack, isMotionEnabled, isPending, isSpriteSheetAtlas, kebabToPascal, keyInViewerMode, layoutScale, localeMeta, lucideIconKey, matchNavPage, matchPath, matchPathAmong, mergeMessages, motionTiming, navLabelsFromItems, newPendingKey, pageEntryLabel, parseCalendarDate, pathMatches, presenceGroup, pressableProps, previousEntry, registryKeyMode, registryKeyTheme, relabelCurrent, resolveAssetSource, resolveColorToken, resolveEntryLabels, resolveFxView, resolveIcon, resolveIconForFamily, resolveLucideByName, rowActivationProps, rowOpenControlProps, setGlobalEventBus, sortRows, subRectFor, subscribePending, svgMotionClass, syncNavStack, themeHasMode, toDateInputValue, toDateTimeInputValue, useActivePage, useAnimateChanges, useAtlasSliceDataUrl, useContentSurface, useDialogBehavior, useEmitEvent, useEventBus, useEventListener, useEventSubscription, useFormatContext, useIconFamily, useInfiniteScroll, useInitPayload, useMediaQuery, useNavStack, useNavigateTo, useNavigation, useNavigationId, useNavigationState, useOnSurface, usePendingAction, usePendingRows, usePendingScopeValue, usePrefersReducedMotion, usePresence, useRenderI18n, useResolvedIcon, useRootEventBus, useScopeHasPending, useScopedMode, useTapReveal, useTheme, useThemeIconStrokeApplies, useThemeScope, useTraitScope, useTraitScopeChain, useTranslate } from './chunk-D5FJU4XC.js';
3
3
  import './chunk-G7DCAZ22.js';
@@ -40,6 +40,9 @@ declare const Badge: React__default.ForwardRefExoticComponent<BadgeProps & React
40
40
  * over a bare `string` for any `color` or `variant` prop.
41
41
  */
42
42
  type ColorToken = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'muted';
43
+ declare function isColorToken(value: string): value is ColorToken;
44
+ /** A palette token's CSS variable, or the raw CSS color value passed through. */
45
+ declare function resolveColorToken(color: ColorToken | string): string;
43
46
  /**
44
47
  * Concrete error-state shape read by display components (`error.message`,
45
48
  * occasionally `error.stack`). Structurally assignable from the global `Error`,
@@ -198,7 +201,7 @@ interface FxItem {
198
201
  id: string;
199
202
  /** Effect-kind key into the consumer-declared `FxPreset[]` table. */
200
203
  type: string;
201
- /** Canonical scene position; when absent the renderer derives it from `x`/`z`/`y`. */
204
+ /** Scene position `{x, y: ground row, z: height}`; the fx mechanic stamps it from `x`/`z`/`y`, and the layer refuses an item without it. */
202
205
  position?: ScenePos;
203
206
  /** Scene x in world units. */
204
207
  x: number;
@@ -253,11 +256,11 @@ interface FxPreset {
253
256
  /** Glow strength — soft shadow blur in world units around procedural particles. */
254
257
  glow?: number;
255
258
  /** Downward acceleration in world-units/sec² applied to the drift. */
256
- gravity?: number;
257
- /** Default drift velocities, world-units/sec. */
258
- vx?: number;
259
- vy?: number;
260
- vz?: number;
259
+ gravity: number;
260
+ /** Drift velocities in world-units/sec; an item's own velocity wins. `vy` is the height axis, read in 3D only. */
261
+ vx: number;
262
+ vy: number;
263
+ vz: number;
261
264
  /** Render substrate routing for this kind. */
262
265
  space?: FxSpace;
263
266
  /** Screen-space render kind for this kind. */
@@ -367,5 +370,5 @@ declare function createConfettiParticles(count: number, seed: string): ConfettiP
367
370
  /** The confetti burst keyframes (per-particle travel via CSS custom props). */
368
371
  declare const CONFETTI_BURST_KEYFRAMES = "\n@keyframes confetti-burst {\n 0% {\n opacity: 1;\n transform: translate(0, 0) rotate(0deg) scale(1);\n }\n 70% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: translate(var(--confetti-tx), var(--confetti-ty)) rotate(var(--confetti-rotate)) scale(0.5);\n }\n}\n";
369
372
 
370
- export { Badge as B, CONFETTI_BURST_KEYFRAMES as C, CONFETTI_COLORS as f, Icon as q, createConfettiParticles as v, fxHash01 as w, fxLifecycle as x, resolveFxView as y, resolveIcon as z };
373
+ export { resolveFxView as A, Badge as B, CONFETTI_BURST_KEYFRAMES as C, resolveIcon as E, CONFETTI_COLORS as f, Icon as q, createConfettiParticles as v, fxHash01 as w, fxLifecycle as x, isColorToken as y, resolveColorToken as z };
371
374
  export type { DisplayField as D, FxItem as F, IconInput as I, LinkAction as L, Point as P, Rect as R, UiError as U, FxPreset as a, BadgeColor as b, BadgeProps as c, BadgeSize as d, BadgeVariant as e, ColorToken as g, ConfettiParticle as h, DisplayFieldFormat as i, DisplayFieldVariant as j, FxLifecycle as k, FxOverlayItem as l, FxOverlayKind as m, FxProceduralShape as n, FxSpace as o, FxView as p, IconAnimation as r, IconProps as s, IconSize as t, ImageSource as u };
@@ -1,6 +1,6 @@
1
1
  import { OrbitalSchema, FieldValue, EventPayload, BusEventSource, EntityFrameState, EntityFieldWrite, PageMeta, PageAccess, PageIndexing, LocaleAlternate } from '@almadar/core';
2
2
  export { BusEvent, BusEventListener, BusEventSource, BusEventListener as EventListener, UISlot, Unsubscribe } from '@almadar/core';
3
- export { D as DEFAULT_SLOTS, S as SlotChangeCallback, a as SlotContent, b as SlotRenderConfig, U as UISlotManager, u as useUISlotManager } from '../useUISlots-CiobNFGb.js';
3
+ export { D as DEFAULT_SLOTS, S as SlotChangeCallback, a as SlotContent, b as SlotRenderConfig, U as UISlotManager, u as useUISlotManager } from '../useUISlots-BLcGd__D.js';
4
4
  import { useEventBus } from '../core.js';
5
5
  import * as React$1 from 'react';
6
6
  import React__default from 'react';
@@ -899,7 +899,7 @@ interface GitHubRepo {
899
899
  /**
900
900
  * Hook to get GitHub connection status
901
901
  */
902
- declare function useGitHubStatus(): _tanstack_react_query.UseQueryResult<GitHubStatus, Error>;
902
+ declare function useGitHubStatus(): _tanstack_react_query.UseQueryResult<NoInfer<GitHubStatus>, Error>;
903
903
  /**
904
904
  * Hook to connect GitHub (initiate OAuth flow)
905
905
  */
@@ -913,23 +913,23 @@ declare function useDisconnectGitHub(): _tanstack_react_query.UseMutationResult<
913
913
  /**
914
914
  * Hook to list GitHub repositories
915
915
  */
916
- declare function useGitHubRepos(page?: number, perPage?: number): _tanstack_react_query.UseQueryResult<{
916
+ declare function useGitHubRepos(page?: number, perPage?: number): _tanstack_react_query.UseQueryResult<NoInfer<{
917
917
  repos: GitHubRepo[];
918
918
  page: number;
919
919
  perPage: number;
920
- }, Error>;
920
+ }>, Error>;
921
921
  /**
922
922
  * Hook to get repository details
923
923
  */
924
- declare function useGitHubRepo(owner: string, repo: string, enabled?: boolean): _tanstack_react_query.UseQueryResult<{
924
+ declare function useGitHubRepo(owner: string, repo: string, enabled?: boolean): _tanstack_react_query.UseQueryResult<NoInfer<{
925
925
  repo: GitHubRepo;
926
- }, Error>;
926
+ }>, Error>;
927
927
  /**
928
928
  * Hook to list repository branches
929
929
  */
930
- declare function useGitHubBranches(owner: string, repo: string, enabled?: boolean): _tanstack_react_query.UseQueryResult<{
930
+ declare function useGitHubBranches(owner: string, repo: string, enabled?: boolean): _tanstack_react_query.UseQueryResult<NoInfer<{
931
931
  branches: string[];
932
- }, Error>;
932
+ }>, Error>;
933
933
 
934
934
  /**
935
935
  * The active page's document head on client navigation — the same declared
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- export { SharedEntityStoreContext, createSharedEntityStore, runTickFrame, useAgentChat, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useExtensions, useFileEditor, useFileSystem, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, usePreview, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useTickVisibility, useTraitListens, useUIEvents, useValidation } from '../chunk-UU57VNS2.js';
3
- export { claimDelivery, keyChord, mergeCaptureTables, parseQueryBinding, useAuthContext, useCanvasGestures, useDragReorder, useKeyboardRouter, useLongPress, usePageHead, usePullToRefresh, useQuerySingleton, useSwipeGesture } from '../chunk-PRXQGGCO.js';
4
- export { ALMADAR_DND_MIME, useDraggable, useDropZone } from '../chunk-VO2TTLS5.js';
5
- export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-YHMRX6YA.js';
6
- import '../chunk-4YXBKHHM.js';
7
- import '../chunk-P4ZFUQFF.js';
2
+ export { SharedEntityStoreContext, createSharedEntityStore, runTickFrame, useAgentChat, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useExtensions, useFileEditor, useFileSystem, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, usePreview, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useTickVisibility, useTraitListens, useUIEvents, useValidation } from '../chunk-PWXZN5G5.js';
3
+ export { claimDelivery, keyChord, mergeCaptureTables, parseQueryBinding, useAuthContext, useCanvasGestures, useDragReorder, useKeyboardRouter, useLongPress, usePageHead, usePullToRefresh, useQuerySingleton, useSwipeGesture } from '../chunk-S3LS3B7N.js';
4
+ export { ALMADAR_DND_MIME, useDraggable, useDropZone } from '../chunk-GHAF7QUD.js';
5
+ export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-ANTJUQRD.js';
6
+ import '../chunk-D5FJU4XC.js';
7
+ import '../chunk-AZ74UPG6.js';
8
8
  import '../chunk-G7DCAZ22.js';
package/dist/index.d.ts CHANGED
@@ -130,6 +130,8 @@ interface BrowserStoreTransportOptions {
130
130
  secretPorts?: SecretPorts;
131
131
  /** The host's `os` port (`createFetchOsHost(fetch)`); absent, every `os` ask of a leg is denied. */
132
132
  os?: OsHostPort;
133
+ /** The browser's GPU answerer (the kernel module's `GpuHost`), installed into the kernel; absent, every `gpu/` ask answers `unsupported`. */
134
+ gpu?: KernelHostPorts['gpu'];
133
135
  }
134
136
  declare function openBrowserStoreTransport(options: BrowserStoreTransportOptions): Promise<EventTransport>;
135
137
  /**
@@ -152,6 +154,8 @@ interface BrowserHostOptions {
152
154
  tabs?: BrowserTabPort;
153
155
  /** The host's `os` port (`createFetchOsHost(fetch)`): the browser's only os operation is `os/fetch`; absent, every `os` ask is denied. */
154
156
  os?: OsHostPort;
157
+ /** The browser's GPU answerer (the kernel module's `GpuHost`), installed into the kernel: every `gpu/` ask is answered there and its bytes never reach this host; absent, a `gpu/` ask answers `unsupported`. */
158
+ gpu?: KernelHostPorts['gpu'];
155
159
  factory?: IDBFactory;
156
160
  /** The viewer's locale: a first visit starts with the entity's `instances` written for it. */
157
161
  locale?: string;
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { runTickFrame, createTickDriver } from './chunk-AU7O65OX.js';
3
3
  export { createTickDriver, runTickFrame } from './chunk-AU7O65OX.js';
4
- import { wrapCallbackForEvent, validateSlotContent, local_store_transport_exports, pushPerfEntry, perfTimeAsync, perfTime, perfStore, perfStart, perfGauge, perfEnd, openLocalKernel, openBundledBrowserStore, openBrowserStoreTransport, openBrowserStore, openBrowserHost, nativeMemoryPersistence, getOrbitalVerification, eventRouteKey, ensureVerificationApi, createSlotSetter, createResidenceTransport, collectEmbeddedTraits, clearPerf, buildOrbitalsByTrait, browserStoreName, bindTraitStateGetter, bindEventBus, assertIsSlotManager, assertIsMultiSourceSlotManager, aggregateSlotContent, RendererContractViolationError, PERF_NAMESPACE, webHostActions } from './chunk-3VZ36ZKO.js';
5
- export { PERF_NAMESPACE, RendererContractViolationError, aggregateSlotContent, assertIsMultiSourceSlotManager, assertIsSlotManager, bindEventBus, bindTraitStateGetter, browserStoreName, buildOrbitalsByTrait, clearPerf, collectEmbeddedTraits, createResidenceTransport, createSlotSetter, ensureVerificationApi, eventRouteKey, getOrbitalVerification, nativeMemoryPersistence, openBrowserHost, openBrowserStore, openBrowserStoreTransport, openBundledBrowserStore, openLocalKernel, perfEnd, perfGauge, perfStart, perfStore, perfTime, perfTimeAsync, pushPerfEntry, validateSlotContent, wrapCallbackForEvent } from './chunk-3VZ36ZKO.js';
4
+ import { wrapCallbackForEvent, validateSlotContent, local_store_transport_exports, pushPerfEntry, perfTimeAsync, perfTime, perfStore, perfStart, perfGauge, perfEnd, openLocalKernel, openBundledBrowserStore, openBrowserStoreTransport, openBrowserStore, openBrowserHost, nativeMemoryPersistence, getOrbitalVerification, eventRouteKey, ensureVerificationApi, createSlotSetter, createResidenceTransport, collectEmbeddedTraits, clearPerf, buildOrbitalsByTrait, browserStoreName, bindTraitStateGetter, bindEventBus, assertIsSlotManager, assertIsMultiSourceSlotManager, aggregateSlotContent, RendererContractViolationError, PERF_NAMESPACE, webHostActions } from './chunk-ZDRDJKYB.js';
5
+ export { PERF_NAMESPACE, RendererContractViolationError, aggregateSlotContent, assertIsMultiSourceSlotManager, assertIsSlotManager, bindEventBus, bindTraitStateGetter, browserStoreName, buildOrbitalsByTrait, clearPerf, collectEmbeddedTraits, createResidenceTransport, createSlotSetter, ensureVerificationApi, eventRouteKey, getOrbitalVerification, nativeMemoryPersistence, openBrowserHost, openBrowserStore, openBrowserStoreTransport, openBundledBrowserStore, openLocalKernel, perfEnd, perfGauge, perfStart, perfStore, perfTime, perfTimeAsync, pushPerfEntry, validateSlotContent, wrapCallbackForEvent } from './chunk-ZDRDJKYB.js';
6
6
  import { __export, __reExport } from './chunk-G7DCAZ22.js';
7
7
  export * from '@almadar/shell-runtime/kernel/wire';
8
8
  export * from '@almadar/shell-runtime/kernel/decode';
@@ -1,4 +1,4 @@
1
- /* node_modules/.pnpm/katex@0.16.47/node_modules/katex/dist/katex.min.css */
1
+ /* ../../../../../node_modules/.pnpm/katex@0.16.47/node_modules/katex/dist/katex.min.css */
2
2
  @font-face {
3
3
  font-display: block;
4
4
  font-family: KaTeX_AMS;
@@ -1,11 +1,12 @@
1
1
  import { createTickDriver, runTickFrame } from './chunk-AU7O65OX.js';
2
- import { presenceGroup, getTraitPresence } from './chunk-4YXBKHHM.js';
2
+ import { presenceGroup, getTraitPresence } from './chunk-D5FJU4XC.js';
3
3
  import './chunk-G7DCAZ22.js';
4
4
  import { isJsonObject } from '@almadar/core';
5
- import { createLocalFold, traceResponse, paintResponse } from '@almadar/shell-runtime';
5
+ import { createLocalFold, paintResponse, traceResponse } from '@almadar/shell-runtime';
6
6
  import { TraitMountError } from '@almadar/shell-runtime/client/trait-mount-error';
7
7
  import { SessionEndedError } from '@almadar/shell-runtime/client/EventTransport';
8
8
  import { createLogger } from '@almadar/logger';
9
+ import { decodeHeldCompletion } from '@almadar/shell-runtime/kernel/decode';
9
10
 
10
11
  var log = createLogger("almadar:ui:kernel-client");
11
12
  var nextClientSerial = 0;
@@ -27,8 +28,9 @@ function createKernelClient(opts) {
27
28
  const { store, traitIndex, transport } = opts;
28
29
  let loaded;
29
30
  const configs = /* @__PURE__ */ new Map();
30
- const ready = opts.instance.then((k) => {
31
+ const ready = Promise.all([opts.instance, opts.gpu]).then(([k, gpu]) => {
31
32
  loaded = k;
33
+ if (gpu !== void 0) k.installGpu(gpu, (json) => deliverGpuCompletion(k, json));
32
34
  return k;
33
35
  });
34
36
  ready.catch(() => void 0);
@@ -273,13 +275,30 @@ function createKernelClient(opts) {
273
275
  store.notify();
274
276
  return { response, mode: parse(k.dispatchMode(request.runTick.trait)) };
275
277
  }
276
- const wire = parse(k.dispatch(traitName, request.entityId, request.event, payloadJson(request.payload)));
278
+ const wire = parse(request.heldPayload !== void 0 ? k.dispatchHeld(traitName, request.entityId, request.event, request.heldPayload) : k.dispatch(traitName, request.entityId, request.event, payloadJson(request.payload)));
277
279
  try {
278
280
  return await settleDispatch(k, wire, request, hooks, progress);
279
281
  } finally {
280
282
  endFlight(k, wire.flight);
281
283
  }
282
284
  };
285
+ const framePainters = /* @__PURE__ */ new Set();
286
+ const deliverGpuCompletion = (k, json) => {
287
+ const completion = decodeHeldCompletion(json);
288
+ if (completion === null) return;
289
+ const request = {
290
+ event: completion.event,
291
+ targetTrait: completion.traitName,
292
+ heldPayload: completion.heldPayload,
293
+ ...completion.entityId !== void 0 ? { entityId: completion.entityId } : {}
294
+ };
295
+ dispatchOne(request, [], false).then((outcome) => {
296
+ for (const paint of framePainters) paint([outcome]);
297
+ }).catch((error) => {
298
+ k.dropHeldPayload(completion.heldPayload);
299
+ log.error("gpu-completion-failed", { trait: completion.traitName, event: completion.event, error: error.message });
300
+ });
301
+ };
283
302
  const settleDispatch = async (k, wire, request, hooks, progress) => {
284
303
  log.debug("dispatch", { trait: wire.seed.trait, event: request.event, mode: wire.mode, legs: wire.serverLegs.length, success: wire.response.success, states: wire.response.states, effects: (wire.response.clientEffectsByTrait ?? []).map((e) => `${e.traitName}:${e.effect[0]}:${e.effect[1] ?? ""}`), emitted: wire.response.emittedEvents.map((e) => e.event) });
285
304
  trace(k, wire.response);
@@ -305,12 +324,14 @@ function createKernelClient(opts) {
305
324
  const kept = mountedSeeds.get(wire.orbital) ?? [];
306
325
  if (!kept.some((s) => s.trait === wire.seed.trait)) mountedSeeds.set(wire.orbital, [...kept, { trait: wire.seed.trait, event: seeds.find((s) => s.trait === wire.seed.trait)?.event ?? "INIT" }]);
307
326
  }
308
- for (const wire of wires) {
327
+ const announced = mount.announced;
328
+ for (const wire of announced !== null ? [announced, ...wires] : wires) {
309
329
  log.debug("mount", { trait: wire.seed.trait, event: wire.seed.event, mode: wire.mode, legs: wire.serverLegs.length, success: wire.response.success });
310
330
  trace(k, wire.response);
311
331
  mirror(wire.response);
312
332
  }
313
333
  store.notify();
334
+ if (announced !== null) hooks?.onLocal?.(announced.seed.trait, announced.response);
314
335
  for (const wire of wires) hooks?.onLocal?.(wire.seed.trait, wire.response);
315
336
  const outcome = {
316
337
  seeds: wires.map((w) => ({ trait: w.seed.trait, event: w.seed.event, mode: w.mode, local: w.response })),
@@ -321,6 +342,20 @@ function createKernelClient(opts) {
321
342
  emittedEvents: []
322
343
  };
323
344
  if (transport === void 0) return outcome;
345
+ if (announced !== null && announced.serverLegs.length > 0) {
346
+ let posted;
347
+ try {
348
+ posted = await post(k, announced, baseRequest, { rollback: false, awaiting: false });
349
+ } finally {
350
+ endFlight(k, announced.flight);
351
+ }
352
+ outcome.posted = true;
353
+ outcome.success = outcome.success && posted.success;
354
+ if (posted.error !== void 0) outcome.error = posted.error;
355
+ outcome.rejections.push(...posted.rejections);
356
+ outcome.serverEffects.clientEffectsByTrait?.push(...posted.serverEffects.clientEffectsByTrait ?? []);
357
+ outcome.emittedEvents.push(...posted.foldedEmits);
358
+ }
324
359
  const topology = await opts.topology;
325
360
  const groups = (topology.carriesCircuitState ? mount.legs : mount.statefulLegs).map((group) => {
326
361
  const answered = wires.filter((w) => group.seeds.some((s) => s.trait === w.seed.trait && s.event === w.seed.event));
@@ -345,6 +380,22 @@ function createKernelClient(opts) {
345
380
  outcome.serverEffects.clientEffectsByTrait?.push(...posted.serverEffects.clientEffectsByTrait ?? []);
346
381
  outcome.emittedEvents.push(...posted.foldedEmits);
347
382
  }
383
+ for (const hop of mount.hops) {
384
+ const flight = k.openFlight();
385
+ let posted;
386
+ try {
387
+ const planned = { orbital: hop.orbital, leg: hop.leg, keepsState: true, alreadyDelivered: [], foldSeeded: [], wires: [], flight };
388
+ posted = await sendLegs(k, [planned], baseRequest, { rollback: false, mount: false }, outcome.seeds[0].local);
389
+ } finally {
390
+ endFlight(k, flight);
391
+ }
392
+ outcome.posted = true;
393
+ outcome.success = outcome.success && posted.success;
394
+ if (posted.error !== void 0) outcome.error = posted.error;
395
+ outcome.rejections.push(...posted.rejections);
396
+ outcome.serverEffects.clientEffectsByTrait?.push(...posted.serverEffects.clientEffectsByTrait ?? []);
397
+ outcome.emittedEvents.push(...posted.foldedEmits);
398
+ }
348
399
  return outcome;
349
400
  };
350
401
  const deliver = async (emitted, fold) => {
@@ -409,10 +460,11 @@ function createKernelClient(opts) {
409
460
  await scopeTail;
410
461
  const baseRequest = base ?? {};
411
462
  k.mount(JSON.stringify(seeds.map((s) => s.trait)));
412
- const mount = parse(k.dispatchMount(JSON.stringify(seeds), baseRequest.entityId, payloadJson(baseRequest.payload), baseRequest.route));
463
+ const mount = parse(k.dispatchMount(JSON.stringify(seeds), baseRequest.entityId, payloadJson(baseRequest.payload), baseRequest.route, baseRequest.crumb));
413
464
  try {
414
465
  return await settleMount(k, mount, seeds, hooks, baseRequest);
415
466
  } finally {
467
+ if (mount.announced !== null) endFlight(k, mount.announced.flight);
416
468
  for (const wire of mount.seeds) endFlight(k, wire.flight);
417
469
  }
418
470
  },
@@ -441,6 +493,7 @@ function createKernelClient(opts) {
441
493
  framePause: () => loaded?.framePause(),
442
494
  frameResume: () => loaded?.frameResume(),
443
495
  startFrames: (onFrame, schedule = defaultFrameScheduler) => {
496
+ framePainters.add(onFrame);
444
497
  const presence = getTraitPresence();
445
498
  const releases = visibleGroups.map(([, group]) => presence.watch(group));
446
499
  let stopped = false;
@@ -486,6 +539,7 @@ function createKernelClient(opts) {
486
539
  }).catch((error) => log.error("kernel-frame-failed", { error: error.message }));
487
540
  return () => {
488
541
  stopped = true;
542
+ framePainters.delete(onFrame);
489
543
  driver?.stop();
490
544
  releases.forEach((release2) => release2());
491
545
  };
@@ -1,3 +1,4 @@
1
+ import { KernelGpuHost } from '@almadar/shell-runtime/kernel/wire';
1
2
  import { KernelModule as KernelModule$1 } from '@almadar/shell-browser/kv';
2
3
  import './verification-C5pTeMJv.js';
3
4
 
@@ -11,6 +12,12 @@ import './verification-C5pTeMJv.js';
11
12
  /** The `Kernel` class `@almadar/kernel` exports: JSON strings in, JSON strings out. */
12
13
  interface KernelInstance {
13
14
  dispatch(traitName: string, entityId: string | undefined, event: string, payloadJson?: string): string;
15
+ /** Install the GPU answerer: every `gpu/` ask is held in the kernel and answered in ask order, and each outcome's route event reaches `completed` as `HeldGpuCompletion` JSON (`null` when it takes no route) for the host to dispatch with `dispatchHeld`. */
16
+ installGpu(gpu: KernelGpuHost, completed: (completionJson: string) => void): void;
17
+ /** `dispatch` with the payload the kernel holds under `heldPayload` (a gpu completion's), taken once. */
18
+ dispatchHeld(traitName: string, entityId: string | undefined, event: string, heldPayload: number): string;
19
+ /** Drop a held completion payload no dispatch will take. */
20
+ dropHeldPayload(heldPayload: number): boolean;
14
21
  /** A flight for work the kernel did not wire (a dispatch the host ran on its own, a frame's browser leg). */
15
22
  openFlight(): number;
16
23
  /** `applyServerResponse` in flight order (EXEC-CONC-8): a `FoldProgressWire` as JSON, folded now or queued behind an older flight. */
@@ -29,7 +36,7 @@ interface KernelInstance {
29
36
  /** The mount a reconnecting client posts to rebuild its session: the seeds with the state and frame this client holds for each. */
30
37
  reseedLeg(seedsJson: string, entityId?: string): string;
31
38
  foldBase(carriedJson: string | undefined, seededJson: string, entityId?: string): string | undefined;
32
- dispatchMount(seedsJson: string, entityId?: string, payloadJson?: string, route?: string): string;
39
+ dispatchMount(seedsJson: string, entityId?: string, payloadJson?: string, route?: string, crumb?: string): string;
33
40
  /** The frame delta a painter at version `since` of this kernel's frames needs (`FrameDelta` JSON): empty when current, else a snapshot. */
34
41
  framesSince(since: number): string;
35
42
  restore(traitName: string, entityId: string | undefined, snapshotJson: string): string;
@@ -1,14 +1,13 @@
1
1
  import { FieldValue, EntityRow, EventKey, EnterAnimation } from '@almadar/core';
2
2
  export { AssetLoadStatus, BridgeHealth, CheckStatus, EffectTrace, EventLogEntry, OrbitalVerificationAPI, ServerResponseTrace, TraitStateSnapshot, TransitionTrace, VerificationCheck, VerificationSnapshot, VerificationSummary, getNestedValue } from '@almadar/core';
3
3
  export { p as profilerOnRender, u as usePerfBuffer } from '../perf-CKiBKbkw.js';
4
- export { T as TraitSnapshotGetter, b as bindCanvasCapture, a as bindConfigApplier, c as bindEventBus, d as bindLastDrawables, e as bindTraitStateGetter, f as clearVerification, g as getAllChecks, h as getBridgeHealth, i as getSnapshot, j as getSummary, k as getTraitSnapshots, l as getTransitions, m as getTransitionsForTrait, r as recordOrbitalResponse, n as recordServerResponse, o as recordTransition, p as recordingTransport, q as registerCheck, s as registerTraitSnapshot, t as serverEffectTraces, u as subscribeToVerification, v as updateAssetStatus, w as updateBridgeHealth, x as updateCheck, y as verifierAttached, z as waitForTransition } from '../verificationRegistry-CVrcxG1s.js';
5
- export { A as ApplyOperatorInput, a as ApplyOperatorResult, C as ContentSegment, E as EDITOR_MOTIONS, b as EDITOR_OPERATORS, c as EditorMotion, d as EditorOperator, I as INDENT_UNIT, L as LessonSegment, e as applyMotion, f as applyOperator, i as isEditorMotion, g as isEditorOperator, m as motionRange, p as parseContentSegments, h as parseLessonSegments, j as parseMarkdownWithCodeBlocks } from '../parseLessonSegments-GpCeMrb2.js';
4
+ export { T as TraitSnapshotGetter, b as bindCanvasCapture, a as bindConfigApplier, c as bindEventBus, d as bindLastDrawables, e as bindTraitStateGetter, f as clearVerification, g as getAllChecks, h as getBridgeHealth, i as getSnapshot, j as getSummary, k as getTraitSnapshots, l as getTransitions, m as getTransitionsForTrait, r as recordOrbitalResponse, n as recordServerResponse, o as recordTransition, p as recordingTransport, q as registerCheck, s as registerTraitSnapshot, t as serverEffectTraces, u as subscribeToVerification, v as updateAssetStatus, w as updateBridgeHealth, x as updateCheck, y as verifierAttached, z as waitForTransition } from '../verificationRegistry-BLuQU1JV.js';
5
+ export { A as ApplyOperatorInput, a as ApplyOperatorResult, C as ContentSegment, E as EDITOR_MOTIONS, b as EDITOR_OPERATORS, c as EditorMotion, d as EditorOperator, I as INDENT_UNIT, L as LessonSegment, e as applyMotion, f as applyOperator, i as isEditorMotion, g as isEditorOperator, m as motionRange, p as parseContentSegments, h as parseMarkdownWithCodeBlocks } from '../SegmentRenderer-BAQ6Jwf6.js';
6
6
  export { D as DENSITY_ELEMENT_VARS, a as DENSITY_SPACING_VARS, b as DIAGRAM_VARS, E as ELEVATION_VARS, F as FlatVarEntry, G as GEOMETRY_VARS, I as ICONOGRAPHY_VARS, L as LEGACY_PREFIXES, M as MOTION_DURATION_KEYS, c as MOTION_EASING_KEYS, d as MOTION_INTENT_VARS, e as MOTION_SHAPE_VARS, S as SCENE_VARS, f as SURFACE_VARS, g as StringValueKey, h as TYPE_FAMILY_VARS, i as TYPE_HEADING_VARS, j as TYPE_INTENT_VARS, k as TYPE_SIZE_KEYS, T as ThemeMode, l as enterKeyframe, r as resolveThemeForRuntime, t as themeTokensToCssVars } from '../themeTokens-CRd8AEDF.js';
7
7
  export { a as PERF_NAMESPACE, P as PerfEntry, c as clearPerf, p as perfEnd, g as perfGauge, b as perfStart, d as perfTime, i as perfTimeAsync } from '../perf-Dr28-AgT.js';
8
8
  import 'react';
9
9
  import '../verification-C5pTeMJv.js';
10
- import '../paintDispatch-CuJLsr9Y.js';
11
- import '../fx-CmQjnHmT.js';
10
+ import '../fx-Bx5RqplG.js';
12
11
  import 'lucide-react';
13
12
  import '../EventBusProvider-BFFHfN4O.js';
14
13
  import '@almadar/shell-runtime/client/EventTransport';