@semiont/react-ui 0.5.27 → 0.5.29

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 (192) hide show
  1. package/README.md +3 -3
  2. package/dist/{PdfAnnotationCanvas.client-EVUPTUWZ.js → PdfAnnotationCanvas.client-LSH3PZPY.js} +32 -5
  3. package/dist/{ar-OU3DQGC6.js → ar-AZBRADEB.js} +43 -23
  4. package/dist/{bn-PHWCR6AZ.js → bn-CCEW6AOS.js} +43 -23
  5. package/dist/{chunk-VXASXU4K.js → chunk-3ZBKCWUZ.js} +1 -1
  6. package/dist/{chunk-5VDTWRXJ.js → chunk-G4VHL4UA.js} +31 -31
  7. package/dist/{chunk-PCRRBU7H.js → chunk-SDKFZLEX.js} +43 -23
  8. package/dist/{cs-NEXYZ62I.js → cs-HXPF2CTE.js} +43 -23
  9. package/dist/{da-FAT43YCU.js → da-K5NTK7LH.js} +43 -23
  10. package/dist/{de-KRQ3WBCU.js → de-GMRQEDZI.js} +43 -23
  11. package/dist/{el-Q4IU3EKC.js → el-EUB4CI4G.js} +43 -23
  12. package/dist/{en-2KADE7N4.js → en-R5XA26NF.js} +2 -2
  13. package/dist/{es-2IO3R2MK.js → es-Z32DAZ6W.js} +43 -23
  14. package/dist/{fa-Q5GOQFXX.js → fa-G7HN6B32.js} +43 -23
  15. package/dist/{fi-R6NMRWBE.js → fi-3YBLZO7I.js} +43 -23
  16. package/dist/{fr-QY4D5E6J.js → fr-VUBH7BBS.js} +43 -23
  17. package/dist/{he-X6Y77XHY.js → he-WQQEY26B.js} +43 -23
  18. package/dist/{hi-XL7IOEQM.js → hi-HJZ6W4JB.js} +43 -23
  19. package/dist/{id-QZ4ZZS67.js → id-ZOGZ37MI.js} +43 -23
  20. package/dist/index.css +279 -74
  21. package/dist/index.d.ts +318 -393
  22. package/dist/index.js +2619 -2687
  23. package/dist/{it-ME2Q7OB6.js → it-DT6UW66F.js} +43 -23
  24. package/dist/{ja-HX7QASRI.js → ja-RUKQCOLO.js} +43 -23
  25. package/dist/{ko-EQO5AHAV.js → ko-ZH5ADKZM.js} +43 -23
  26. package/dist/{ms-UILFSF3I.js → ms-Y2AFPZTU.js} +43 -23
  27. package/dist/{nl-NNI45PMK.js → nl-OQEWIXNA.js} +43 -23
  28. package/dist/{no-MAL5F6P6.js → no-KPAYJZWY.js} +43 -23
  29. package/dist/{pl-4RMY6JAJ.js → pl-WSXK2UUD.js} +43 -23
  30. package/dist/{pt-VQH2X3QQ.js → pt-NWRJRUCK.js} +43 -23
  31. package/dist/{ro-XXCQO2OG.js → ro-3CGVMOC6.js} +43 -23
  32. package/dist/{sv-7Z6EJ6U4.js → sv-HGSEBA7S.js} +43 -23
  33. package/dist/test-utils.js +16 -7
  34. package/dist/{th-L3DXXYVQ.js → th-NZ4G352Z.js} +43 -23
  35. package/dist/{tr-P3DFVLFJ.js → tr-LGGS4DLW.js} +43 -23
  36. package/dist/{uk-7C5D3PXS.js → uk-AIX536L4.js} +43 -23
  37. package/dist/{vi-ZLTLEO7P.js → vi-V6CVQZLQ.js} +43 -23
  38. package/dist/{zh-5FHVWDIN.js → zh-AGKPGI3L.js} +43 -23
  39. package/package.json +16 -15
  40. package/src/components/AssistProgress.tsx +36 -2
  41. package/src/components/CodeMirrorRenderer.tsx +8 -8
  42. package/src/components/StatusDisplay.tsx +13 -13
  43. package/src/components/__tests__/AssistProgress.test.tsx +59 -0
  44. package/src/components/__tests__/StatusDisplay.test.tsx +9 -9
  45. package/src/components/modals/ComposeStep.tsx +233 -0
  46. package/src/components/modals/ConfigureGatherStep.tsx +10 -18
  47. package/src/components/modals/ConfigureGenerationStep.tsx +178 -34
  48. package/src/components/modals/ConfigureSearchStep.tsx +19 -0
  49. package/src/components/modals/ContextSummary.tsx +185 -72
  50. package/src/components/modals/CorpusPane.tsx +75 -0
  51. package/src/components/modals/DiscardPrompt.tsx +38 -0
  52. package/src/components/modals/GatherContextStep.tsx +237 -107
  53. package/src/components/modals/ReferenceWizardModal.tsx +252 -59
  54. package/src/components/modals/ResourceGenerateModal.tsx +225 -112
  55. package/src/components/modals/SearchModal.css +337 -101
  56. package/src/components/modals/SearchResultsStep.tsx +61 -68
  57. package/src/components/modals/WizardFooter.tsx +7 -1
  58. package/src/components/modals/__tests__/ComposeStep.test.tsx +152 -0
  59. package/src/components/modals/__tests__/ConfigureGatherStep.test.tsx +14 -26
  60. package/src/components/modals/__tests__/ConfigureGenerationStep.test.tsx +206 -8
  61. package/src/components/modals/__tests__/ConfigureSearchStep.test.tsx +24 -1
  62. package/src/components/modals/__tests__/GatherContextStep.resource.test.tsx +463 -25
  63. package/src/components/modals/__tests__/ReferenceWizardModal.test.tsx +442 -39
  64. package/src/components/modals/__tests__/ResourceGenerateModal.test.tsx +300 -86
  65. package/src/components/modals/__tests__/SearchResultsStep.test.tsx +61 -0
  66. package/src/components/modals/__tests__/WizardFooter.test.tsx +116 -9
  67. package/src/components/pdf-annotation/PdfAnnotationCanvas.tsx +34 -1
  68. package/src/components/pdf-annotation/__tests__/PdfAnnotationCanvas.test.tsx +38 -1
  69. package/src/components/resource/AnnotateView.tsx +3 -3
  70. package/src/components/resource/BrowseView.tsx +8 -8
  71. package/src/components/resource/DownloadFileLink.tsx +1 -1
  72. package/src/components/resource/ResourceViewer.tsx +4 -4
  73. package/src/components/resource/__tests__/AnnotateView.embeddable.test.tsx +1 -1
  74. package/src/components/resource/__tests__/BrowseView.embeddable.test.tsx +1 -1
  75. package/src/components/resource/__tests__/BrowseView.reference-hover.test.tsx +1 -1
  76. package/src/components/resource/__tests__/BrowseView.test.tsx +11 -11
  77. package/src/components/resource/__tests__/download-link.test.tsx +6 -6
  78. package/src/components/resource/annotate-renderers.tsx +3 -3
  79. package/src/components/resource/panels/AssistSection.css +35 -0
  80. package/src/components/resource/panels/ReferenceEntry.tsx +11 -4
  81. package/src/components/resource/panels/ReferencesPanel.tsx +9 -1
  82. package/src/components/resource/panels/ResourceInfoPanel.tsx +89 -20
  83. package/src/components/resource/panels/UnifiedAnnotationsPanel.tsx +7 -2
  84. package/src/components/resource/panels/__tests__/ReferenceEntry.test.tsx +41 -0
  85. package/src/components/resource/panels/__tests__/ReferencesPanel.observable-flow.test.tsx +1 -1
  86. package/src/components/resource/panels/__tests__/ReferencesPanel.test.tsx +84 -3
  87. package/src/components/resource/panels/__tests__/ResourceInfoPanel.test.tsx +149 -7
  88. package/src/features/auth/__tests__/SignInForm.a11y.test.tsx +12 -12
  89. package/src/features/auth/components/SignInForm.tsx +53 -53
  90. package/src/features/auth-welcome/state/__tests__/welcome-state-unit.test.ts +2 -2
  91. package/src/features/resource-compose/__tests__/ResourceComposePage.test.tsx +0 -65
  92. package/src/features/resource-compose/components/ResourceComposePage.tsx +35 -133
  93. package/src/features/resource-compose/state/__tests__/compose-page-state-unit.test.ts +1 -100
  94. package/src/features/resource-compose/state/compose-page-state-unit.ts +5 -57
  95. package/src/features/resource-discovery/__tests__/ResourceDiscoveryPage.test.tsx +1 -1
  96. package/src/features/resource-discovery/components/ResourceDiscoveryPage.tsx +2 -2
  97. package/src/features/resource-discovery/state/discover-state-unit.ts +1 -1
  98. package/src/features/resource-viewer/__tests__/ResourceViewerPage.test.tsx +73 -17
  99. package/src/features/resource-viewer/__tests__/generation-options.test.ts +53 -0
  100. package/src/features/resource-viewer/components/ResourceViewerPage.tsx +148 -83
  101. package/src/features/resource-viewer/generation-options.ts +29 -0
  102. package/src/styles/core/forms.css +35 -8
  103. package/src/styles/features/resource-viewer.css +0 -22
  104. package/src/styles/features/resource.css +0 -4
  105. package/src/styles/index.css +0 -1
  106. package/translations/ar.json +42 -22
  107. package/translations/bn.json +42 -22
  108. package/translations/cs.json +42 -22
  109. package/translations/da.json +42 -22
  110. package/translations/de.json +42 -22
  111. package/translations/el.json +42 -22
  112. package/translations/en.json +42 -22
  113. package/translations/es.json +42 -22
  114. package/translations/fa.json +42 -22
  115. package/translations/fi.json +42 -22
  116. package/translations/fr.json +42 -22
  117. package/translations/he.json +42 -22
  118. package/translations/hi.json +42 -22
  119. package/translations/id.json +42 -22
  120. package/translations/it.json +42 -22
  121. package/translations/ja.json +42 -22
  122. package/translations/ko.json +42 -22
  123. package/translations/ms.json +42 -22
  124. package/translations/nl.json +42 -22
  125. package/translations/no.json +42 -22
  126. package/translations/pl.json +42 -22
  127. package/translations/pt.json +42 -22
  128. package/translations/ro.json +42 -22
  129. package/translations/sv.json +42 -22
  130. package/translations/th.json +42 -22
  131. package/translations/tr.json +42 -22
  132. package/translations/uk.json +42 -22
  133. package/translations/vi.json +42 -22
  134. package/translations/zh.json +42 -22
  135. package/dist/PdfAnnotationCanvas.client-EVUPTUWZ.js.map +0 -1
  136. package/dist/PdfAnnotationCanvas.client-TGDPPGXJ.css.map +0 -1
  137. package/dist/ar-OU3DQGC6.js.map +0 -1
  138. package/dist/bn-PHWCR6AZ.js.map +0 -1
  139. package/dist/chunk-5VDTWRXJ.js.map +0 -1
  140. package/dist/chunk-BTUG3VJJ.js.map +0 -1
  141. package/dist/chunk-O23TLLXW.js.map +0 -1
  142. package/dist/chunk-PCRRBU7H.js.map +0 -1
  143. package/dist/chunk-QT7LYM72.js.map +0 -1
  144. package/dist/chunk-VXASXU4K.js.map +0 -1
  145. package/dist/cs-NEXYZ62I.js.map +0 -1
  146. package/dist/da-FAT43YCU.js.map +0 -1
  147. package/dist/de-KRQ3WBCU.js.map +0 -1
  148. package/dist/el-Q4IU3EKC.js.map +0 -1
  149. package/dist/en-2KADE7N4.js.map +0 -1
  150. package/dist/es-2IO3R2MK.js.map +0 -1
  151. package/dist/fa-Q5GOQFXX.js.map +0 -1
  152. package/dist/fi-R6NMRWBE.js.map +0 -1
  153. package/dist/fr-QY4D5E6J.js.map +0 -1
  154. package/dist/he-X6Y77XHY.js.map +0 -1
  155. package/dist/hi-XL7IOEQM.js.map +0 -1
  156. package/dist/id-QZ4ZZS67.js.map +0 -1
  157. package/dist/index.css.map +0 -1
  158. package/dist/index.js.map +0 -1
  159. package/dist/integrations/css-modules-helper.js.map +0 -1
  160. package/dist/integrations/styled-components-theme.js.map +0 -1
  161. package/dist/it-ME2Q7OB6.js.map +0 -1
  162. package/dist/ja-HX7QASRI.js.map +0 -1
  163. package/dist/ko-EQO5AHAV.js.map +0 -1
  164. package/dist/ms-UILFSF3I.js.map +0 -1
  165. package/dist/nl-NNI45PMK.js.map +0 -1
  166. package/dist/no-MAL5F6P6.js.map +0 -1
  167. package/dist/pl-4RMY6JAJ.js.map +0 -1
  168. package/dist/pt-VQH2X3QQ.js.map +0 -1
  169. package/dist/ro-XXCQO2OG.js.map +0 -1
  170. package/dist/sv-7Z6EJ6U4.js.map +0 -1
  171. package/dist/test-utils.css.map +0 -1
  172. package/dist/test-utils.js.map +0 -1
  173. package/dist/th-L3DXXYVQ.js.map +0 -1
  174. package/dist/tr-P3DFVLFJ.js.map +0 -1
  175. package/dist/uk-7C5D3PXS.js.map +0 -1
  176. package/dist/vi-ZLTLEO7P.js.map +0 -1
  177. package/dist/zh-5FHVWDIN.js.map +0 -1
  178. package/src/components/modals/ResourceSearchModal.tsx +0 -224
  179. package/src/components/modals/__tests__/ResourceSearchModal.test.tsx +0 -163
  180. package/src/features/admin-exchange/__tests__/AdminExchangePage.test.tsx +0 -137
  181. package/src/features/admin-exchange/__tests__/ExportCard.test.tsx +0 -41
  182. package/src/features/admin-exchange/__tests__/ImportCard.test.tsx +0 -148
  183. package/src/features/admin-exchange/__tests__/ImportProgress.test.tsx +0 -117
  184. package/src/features/admin-exchange/components/AdminExchangePage.tsx +0 -117
  185. package/src/features/admin-exchange/components/ExportCard.tsx +0 -35
  186. package/src/features/admin-exchange/components/ImportCard.tsx +0 -183
  187. package/src/features/admin-exchange/components/ImportProgress.tsx +0 -80
  188. package/src/features/admin-exchange/state/__tests__/exchange-state-unit.test.ts +0 -185
  189. package/src/features/admin-exchange/state/exchange-state-unit.ts +0 -133
  190. package/src/features/moderation-linked-data/__tests__/LinkedDataPage.test.tsx +0 -118
  191. package/src/features/moderation-linked-data/components/LinkedDataPage.tsx +0 -118
  192. package/src/styles/features/exchange.css +0 -374
package/dist/index.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  import * as _semiont_react_ui from '@semiont/react-ui';
2
2
  import { BrowseMediaRenderers as BrowseMediaRenderers$1, AnnotateMediaRenderers as AnnotateMediaRenderers$1 } from '@semiont/react-ui';
3
- import { Annotation, ResourceId, Selector, components, ResourceDescriptor, ValidationResult, StateUnit, GatheredContext, CollaboratorEntry, EventMap, DiscoveredKB, AnnotationId, AnchorStrategy, AnchorConfidence, StoredEventLike, ConnectionState, BackendDownload, ProgressEvent, AccessToken } from '@semiont/core';
3
+ import { Annotation, ResourceId, Selector, components, ResourceDescriptor, ValidationResult, StateUnit, CollaboratorEntry, EventMap, DiscoveredKB, AnnotationId, AnchorStrategy, AnchorConfidence, StoredEventLike, ConnectionState, GatheredContext, AccessToken } from '@semiont/core';
4
4
  export { Annotation } from '@semiont/core';
5
5
  import * as React$1 from 'react';
6
6
  import React__default, { ComponentType, ReactNode, KeyboardEvent as KeyboardEvent$1, Component, ErrorInfo, MouseEvent, Ref } from 'react';
7
7
  import * as _codemirror_state from '@codemirror/state';
8
8
  import { HighlightStyle } from '@codemirror/language';
9
9
  import { WidgetType } from '@codemirror/view';
10
- import { SemiontClient, SemiontSession, DiscoveryTransport, DiscoveryState, SemiontBrowser, SessionStorage, SessionFactory, OpenResource, TagSchema, UploadProgress, BeckonStateUnit, MarkStateUnit, GatherStateUnit, YieldStateUnit, ReferencedByEntry } from '@semiont/sdk';
11
- export { BeckonStateUnit, GatherStateUnit, GenerateDocumentOptions, HOVER_DELAY_MS, HoverHandlers, MarkStateUnit, MatchStateUnit, PendingAnnotation, SearchPipeline, SearchPipelineOptions, SearchState, TagSchema, YieldStateUnit, createBeckonStateUnit, createGatherStateUnit, createHoverHandlers, createMarkStateUnit, createMatchStateUnit, createSearchPipeline, createYieldStateUnit } from '@semiont/sdk';
10
+ import { SemiontClient, SemiontSession, DiscoveryTransport, DiscoveryState, SemiontBrowser, SessionStorage, SessionFactory, YieldOutcome, OpenResource, GenerationOptions, ResourceGatherOptions, TagSchema, UploadProgress, BeckonStateUnit, MarkStateUnit, GatherStateUnit, YieldStateUnit, ReferencedByEntry } from '@semiont/sdk';
11
+ export { BeckonStateUnit, GatherStateUnit, GenerationOptions, HOVER_DELAY_MS, HoverHandlers, MarkStateUnit, MatchStateUnit, PendingAnnotation, SearchPipeline, SearchPipelineOptions, SearchState, TagSchema, YieldStateUnit, createBeckonStateUnit, createGatherStateUnit, createHoverHandlers, createMarkStateUnit, createMatchStateUnit, createSearchPipeline, createYieldStateUnit } from '@semiont/sdk';
12
12
  import { Observable } from 'rxjs';
13
13
 
14
14
  /**
@@ -558,12 +558,13 @@ type SelectorType = 'fragment' | 'svg' | 'text';
558
558
  * This set is the host-facing CONTRACT for "which shapes can this medium
559
559
  * draw" — gate shape UI on it directly.
560
560
  *
561
- * PDF: only rectangles (FragmentSelector with RFC 3778 viewrect).
562
- * Images: all shapes (SvgSelector supports rect, circle, polygon).
563
- * Everything else including text media and absent/unknown types supports
564
- * NONE: those anchor by character offsets (TextPositionSelector /
565
- * TextQuoteSelector), and no selector can carry a shape. Mirrors
566
- * `getSelectorType`'s 'text' fallback.
561
+ * The registry's anchoring model decides, never the type name: a spatially
562
+ * anchored medium draws what its renderer can carry — rectangles only for
563
+ * PDF (FragmentSelector, RFC 3778 viewrect; circle and polygon would need an
564
+ * SvgSelector, which loses page context), all three for images (SvgSelector).
565
+ * Everything else draws nothing text media anchor by character offsets and
566
+ * no selector there can carry a shape, and storage-tier rows are not
567
+ * annotated at all.
567
568
  *
568
569
  * @param mediaType - MIME type of the resource (e.g., 'application/pdf', 'image/png')
569
570
  * @returns Array of supported shape types for annotation
@@ -578,7 +579,17 @@ declare function getSupportedShapes(mediaType: string | undefined | null): Shape
578
579
  */
579
580
  declare function isShapeSupported(mediaType: string | undefined | null, shape: ShapeType): boolean;
580
581
  /**
581
- * Get the selector type used for a given media type
582
+ * Get the selector type used for a given media type.
583
+ *
584
+ * Keyed off the registry's anchoring model, in step with
585
+ * `getSupportedShapes`: spatial + PDF render → FragmentSelector (RFC 3778),
586
+ * spatial + image render → SvgSelector.
587
+ *
588
+ * Everything else answers 'text' — text media because they genuinely anchor
589
+ * by character offset, storage-tier rows and registry misses because
590
+ * `SelectorType` has no "not annotatable" member. That catch-all is harmless
591
+ * rather than a claim: `getSupportedShapes` offers those types no shapes, and
592
+ * the write path refuses them outright (MEDIA-CAPABILITY-DISPATCH D6).
582
593
  *
583
594
  * @param mediaType - MIME type of the resource
584
595
  * @returns Selector type (fragment, svg, or text)
@@ -612,7 +623,7 @@ declare function saveSelectedShapeForSelectorType(selectorType: SelectorType, sh
612
623
  * `<a download>` — none of which can attach an Authorization header. Auth is
613
624
  * bearer + `?token=` only, no cookie, so a bare URL 401s.
614
625
  * - **It must be absolute.** react-ui embeds into a host app with its own
615
- * origin, so a relative path resolves against the HOST, not the backend.
626
+ * origin, so a relative path resolves against the HOST, not the gateway.
616
627
  *
617
628
  * Returns `undefined` when either input is missing — no client, or a token
618
629
  * that has not landed yet. There is no partially-correct URL worth rendering;
@@ -627,11 +638,23 @@ declare function mediaUrl(client: SemiontClient | null | undefined, id: Resource
627
638
  * (which forces O(ASTnodes × annotations) work on every render), this module:
628
639
  *
629
640
  * 1. Builds a source→rendered offset map once after the markdown DOM paints
630
- * 2. Resolves W3C TextPositionSelector offsets to DOM Ranges via binary search
631
- * 3. Wraps matched ranges with <span> elements carrying data-annotation-* attributes
641
+ * 2. Resolves W3C TextPositionSelector offsets to rendered-text offset spans
642
+ * 3. Rebuilds each annotated text node ONCE, off-DOM, into segments wrapped by
643
+ * <span> elements carrying data-annotation-* attributes
632
644
  *
633
645
  * Markdown renders once (cached by React.memo). Annotation changes only touch
634
646
  * the overlay spans — no markdown re-parse, no AST walk.
647
+ *
648
+ * The application step deliberately never uses live DOM Ranges. A previous
649
+ * implementation resolved every annotation to a Range up front and then wrapped
650
+ * them one `surroundContents` at a time. Each wrap is a DOM mutation, and DOM
651
+ * mutations re-target every OTHER still-live Range: overlapping annotations —
652
+ * the normal result of repeated annotation on the same passage — had their
653
+ * ranges collapsed or inflated by earlier wraps, painting whole paragraphs and
654
+ * fragmenting text nodes so hard that 36 annotations produced 2,554 wraps and
655
+ * a 10-second main-thread freeze (measured 2026-08-28, e2e specs 08/09).
656
+ * Working in offset space against the pristine text-node index makes overlap
657
+ * geometry exact, and costs one `replaceChild` per annotated text node.
635
658
  */
636
659
 
637
660
  interface OverlayAnnotation {
@@ -647,6 +670,12 @@ interface TextNodeEntry {
647
670
  start: number;
648
671
  end: number;
649
672
  }
673
+ /** An annotation resolved to rendered-text offsets: `[start, end)`. */
674
+ interface ResolvedAnnotationSpan {
675
+ annotation: OverlayAnnotation;
676
+ start: number;
677
+ end: number;
678
+ }
650
679
  /**
651
680
  * Build a map from markdown source offsets to rendered text offsets.
652
681
  * Character-by-character alignment: walks source and rendered text in parallel,
@@ -656,32 +685,37 @@ interface TextNodeEntry {
656
685
  */
657
686
  declare function buildSourceToRenderedMap(markdownSource: string, container: HTMLElement): Map<number, number>;
658
687
  /**
659
- * Build a sorted array of text nodes with cumulative rendered offsets
660
- * for efficient offset→node lookups via binary search.
688
+ * Build a sorted array of text nodes with cumulative rendered offsets.
661
689
  *
662
690
  * Complexity: O(textNodes) — runs once per overlay application.
663
691
  */
664
692
  declare function buildTextNodeIndex(container: HTMLElement): TextNodeEntry[];
665
693
  /**
666
- * Resolve annotations to DOM Ranges using the cached offset map.
694
+ * Resolve annotations to rendered-text offset spans using the cached offset
695
+ * map. Annotations whose offsets don't map (content changed under them) are
696
+ * skipped, as are empty ones.
667
697
  *
668
- * Complexity: O(annotations × log(textNodes)).
698
+ * Complexity: O(annotations).
669
699
  */
670
- declare function resolveAnnotationRanges(annotations: OverlayAnnotation[], offsetMap: Map<number, number>, textNodeIndex: TextNodeEntry[]): Map<string, {
671
- range: Range;
672
- annotation: OverlayAnnotation;
673
- }>;
700
+ declare function resolveAnnotationSpans(annotations: OverlayAnnotation[], offsetMap: Map<number, number>): ResolvedAnnotationSpan[];
674
701
  /**
675
- * Wrap annotation Ranges with styled <span> elements.
676
- * Handles cross-element ranges by splitting into per-text-node segments.
702
+ * Wrap annotated stretches of text with styled <span> elements.
703
+ *
704
+ * Each text node the spans touch is rebuilt off-DOM as a run of segments —
705
+ * one per distinct overlap region — and swapped in with a single
706
+ * `replaceChild`. A segment covered by several annotations gets nested spans,
707
+ * one per annotation; the later annotation in the input order ends up
708
+ * innermost, so `closest('[data-annotation-id]')` resolves to it (interactive
709
+ * types — references, comments, tags — are listed after plain highlights).
710
+ * An annotation cut by segment or node boundaries yields sibling spans
711
+ * sharing its data-annotation-id, as the Range-based predecessor also did.
712
+ *
713
+ * Complexity: O(textNodes × spans) comparisons, O(annotated nodes) mutations.
677
714
  */
678
- declare function applyHighlights(ranges: Map<string, {
679
- range: Range;
680
- annotation: OverlayAnnotation;
681
- }>): void;
715
+ declare function applyHighlights(spans: ResolvedAnnotationSpan[], textNodeIndex: TextNodeEntry[]): void;
682
716
  /**
683
717
  * Remove all annotation highlight spans, restoring the original DOM.
684
- * Unwraps spans and merges adjacent text nodes.
718
+ * Unwraps every span, then merges adjacent text nodes in one pass.
685
719
  */
686
720
  declare function clearHighlights(container: HTMLElement): void;
687
721
  /**
@@ -729,7 +763,7 @@ declare function supportsDetection(mediaType: string | undefined): boolean;
729
763
  * The worker can't be resolved inside this tsup-built library (Vite's `?url`
730
764
  * lives in the app), so the host hands us the worker URL via `setPdfWorkerSrc`
731
765
  * once at startup; it is applied to `GlobalWorkerOptions` when pdf.js loads.
732
- * See `apps/frontend/src/main.tsx`.
766
+ * See `apps/browser/src/main.tsx`.
733
767
  */
734
768
 
735
769
  /**
@@ -1072,28 +1106,6 @@ interface UseResourceContentResult {
1072
1106
  */
1073
1107
  declare function useResourceContent(client: SemiontClient | null, rUri: ResourceId, resource: ResourceDescriptor, enabled?: boolean): UseResourceContentResult;
1074
1108
 
1075
- interface ResourceGatherOptions {
1076
- depth?: number;
1077
- maxResources?: number;
1078
- includeContent?: boolean;
1079
- includeSummary?: boolean;
1080
- /** Entity types to exclude from the gather's semantic recall (e.g. ['Question']). */
1081
- excludeEntityTypes?: string[];
1082
- }
1083
- interface UseResourceGatherResult {
1084
- context: GatheredContext | null;
1085
- loading: boolean;
1086
- error: Error | null;
1087
- /** Run a resource gather (`gather.resource`) and store the result. */
1088
- gather: (resourceId: string, options?: ResourceGatherOptions) => Promise<void>;
1089
- reset: () => void;
1090
- }
1091
- /**
1092
- * Drives a whole-resource gather (`client.gather.resource`, a Promise — no progress
1093
- * stream) into React state. The home for the GENERATE-FROM-BUTTON resource-gather flow.
1094
- */
1095
- declare function useResourceGather(): UseResourceGatherResult;
1096
-
1097
1109
  interface UseResourceLoaderResult {
1098
1110
  resource: ResourceDescriptor | undefined;
1099
1111
  annotations: AnnotationsCollection;
@@ -1139,7 +1151,7 @@ interface UseCollaboratorsResult {
1139
1151
  *
1140
1152
  * SUBSCRIBES rather than fetching once. `browse.agents()` is a `CacheObservable`
1141
1153
  * whose only refresh triggers are `bus:resume-gap` and an explicit `fresh()` —
1142
- * a backend restart with a changed roster necessarily presents as an SSE gap, so
1154
+ * a gateway restart with a changed roster necessarily presents as an SSE gap, so
1143
1155
  * a one-shot read would pin the UI to a roster that no longer exists. Awaiting
1144
1156
  * it instead would also force a network round trip on every mount, which is
1145
1157
  * exactly what the cache exists to avoid.
@@ -1354,9 +1366,9 @@ declare function useEventSubscriptions(subscriptions: {
1354
1366
  }): void;
1355
1367
 
1356
1368
  interface ResourceAnnotationsContextType {
1357
- newAnnotationIds: Set<string>;
1369
+ sparkleAnnotationIds: Set<string>;
1358
1370
  markAnnotation: (rUri: ResourceId, motivation: 'highlighting' | 'linking' | 'assessing' | 'commenting' | 'tagging', selector: Selector | Selector[], body?: any[]) => Promise<string | undefined>;
1359
- clearNewAnnotationId: (id: AnnotationId) => void;
1371
+ clearSparkle: (id: AnnotationId) => void;
1360
1372
  triggerSparkleAnimation: (annotationId: string) => void;
1361
1373
  }
1362
1374
  declare function ResourceAnnotationsProvider({ children }: {
@@ -1501,7 +1513,7 @@ interface Props$c {
1501
1513
  }) => void;
1502
1514
  onChange?: (content: string) => void;
1503
1515
  editable?: boolean;
1504
- newAnnotationIds?: Set<string>;
1516
+ sparkleAnnotationIds?: Set<string>;
1505
1517
  hoveredAnnotationId?: string | null;
1506
1518
  scrollToAnnotationId?: string | null;
1507
1519
  sourceView?: boolean;
@@ -1512,9 +1524,9 @@ interface Props$c {
1512
1524
  generatingReferenceId?: string | null;
1513
1525
  hoverDelayMs: number;
1514
1526
  }
1515
- declare function CodeMirrorRenderer({ content, segments, onChange, editable, newAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, sourceView, showLineNumbers, enableWidgets, session, getTargetResourceName, generatingReferenceId, hoverDelayMs }: Props$c): React$1.JSX.Element;
1527
+ declare function CodeMirrorRenderer({ content, segments, onChange, editable, sparkleAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, sourceView, showLineNumbers, enableWidgets, session, getTargetResourceName, generatingReferenceId, hoverDelayMs }: Props$c): React$1.JSX.Element;
1516
1528
 
1517
- type JobProgress$8 = components['schemas']['JobProgress'];
1529
+ type JobProgress$9 = components['schemas']['JobProgress'];
1518
1530
  type JobProgressMessage = components['schemas']['JobProgressMessage'];
1519
1531
  /**
1520
1532
  * Every string this component renders. Required by default and with NO English
@@ -1545,7 +1557,7 @@ interface AssistProgressTranslations {
1545
1557
  * Takes the wire's `{ kind, value }` — the localized name for `kind` is the
1546
1558
  * translation layer's business, not this component's.
1547
1559
  */
1548
- subject: (current: NonNullable<JobProgress$8['current']>, done?: number, total?: number) => string;
1560
+ subject: (current: NonNullable<JobProgress$9['current']>, done?: number, total?: number) => string;
1549
1561
  /**
1550
1562
  * Localized NAME for an echoed request parameter. The wire sends a code
1551
1563
  * (`instructions`, `tone`, …); the VALUE beside it is the user's own words
@@ -1562,8 +1574,27 @@ interface AssistProgressTranslations {
1562
1574
  */
1563
1575
  type AssistDataType = 'highlight' | 'comment' | 'assessment' | 'reference' | 'tag' | 'generation';
1564
1576
  interface AssistProgressProps {
1565
- progress: JobProgress$8;
1577
+ progress: JobProgress$9;
1566
1578
  dataType: AssistDataType;
1579
+ /**
1580
+ * What the finished run produced, offered as a link in the ended frame
1581
+ * (GENERATE-FROM-RESOURCE D8). The label is the artifact's own name — user
1582
+ * content, never translated. Rendered only once `ended`: mid-run there is no
1583
+ * outcome to offer, whatever the caller has wired.
1584
+ */
1585
+ outcome?: {
1586
+ label: string;
1587
+ onOpen: () => void;
1588
+ } | undefined;
1589
+ /**
1590
+ * The owner's terminal sentence, rendered in place of the payload message
1591
+ * once `ended` (GENERATION-ARRIVAL P1). The producer's final frame is a
1592
+ * fire-and-forget emit that can lose the race with `job:complete`, so an
1593
+ * ended frame must not trust the last payload to describe the ending —
1594
+ * the owner, which signalled `ended`, supplies the words too. Inert while
1595
+ * the run is live.
1596
+ */
1597
+ endedMessage?: string;
1567
1598
  /**
1568
1599
  * The run has ENDED. The owner's fact, not the payload's
1569
1600
  * (ASSIST-PROGRESS-CONSOLIDATION D7): terminality is signalled on
@@ -1598,16 +1629,16 @@ interface AssistProgressProps {
1598
1629
  * opt-ins produced four unrelated layouts from one component, which is what
1599
1630
  * generated the duplicate renders and doubled chrome this replaces.
1600
1631
  */
1601
- declare function AssistProgress({ progress, dataType, ended, onCancel, onDismiss, translations: tr, }: AssistProgressProps): React$1.JSX.Element;
1632
+ declare function AssistProgress({ progress, dataType, ended, outcome, endedMessage, onCancel, onDismiss, translations: tr, }: AssistProgressProps): React$1.JSX.Element;
1602
1633
 
1603
- type JobProgress$7 = components['schemas']['JobProgress'];
1634
+ type JobProgress$8 = components['schemas']['JobProgress'];
1604
1635
  interface AssistShellProps {
1605
1636
  /** localStorage persist-key suffix and CSS `data-type`. */
1606
1637
  assistType: AssistDataType;
1607
1638
  /** Collapsible section title (already translated). */
1608
1639
  title: string;
1609
1640
  isAssisting: boolean;
1610
- progress: JobProgress$7 | null | undefined;
1641
+ progress: JobProgress$8 | null | undefined;
1611
1642
  /** The per-motivation form (fields + submit) — shown when no progress is displayed. */
1612
1643
  form: ReactNode;
1613
1644
  /**
@@ -1956,7 +1987,7 @@ interface AnnotateMediaRendererProps {
1956
1987
  selectedMotivation: SelectionMotivation | null;
1957
1988
  hoveredAnnotationId?: string | null;
1958
1989
  hoverDelayMs?: number;
1959
- newAnnotationIds?: Set<string>;
1990
+ sparkleAnnotationIds?: Set<string>;
1960
1991
  scrollToAnnotationId?: string | null;
1961
1992
  showLineNumbers?: boolean;
1962
1993
  enableWidgets?: boolean;
@@ -1965,7 +1996,7 @@ interface AnnotateMediaRendererProps {
1965
1996
  }
1966
1997
  /** Annotating media dispatch, keyed by the registry render mode. */
1967
1998
  type AnnotateMediaRenderers = Partial<Record<string, ComponentType<AnnotateMediaRendererProps>>>;
1968
- declare function TextAnnotateRenderer({ content, annotations, session, newAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, showLineNumbers, hoverDelayMs, enableWidgets, getTargetResourceName, generatingReferenceId, }: AnnotateMediaRendererProps): React$1.JSX.Element;
1999
+ declare function TextAnnotateRenderer({ content, annotations, session, sparkleAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, showLineNumbers, hoverDelayMs, enableWidgets, getTargetResourceName, generatingReferenceId, }: AnnotateMediaRendererProps): React$1.JSX.Element;
1969
2000
  declare function ImageAnnotateRenderer({ content, resourceUri, annotations, session, drawingMode, selectedMotivation, hoveredAnnotationId, hoverDelayMs, }: AnnotateMediaRendererProps): React$1.JSX.Element | null;
1970
2001
  declare function PdfAnnotateRenderer({ content, resourceUri, annotations, session, drawingMode, selectedMotivation, hoveredAnnotationId, hoverDelayMs, }: AnnotateMediaRendererProps): React$1.JSX.Element | null;
1971
2002
  /**
@@ -1994,7 +2025,7 @@ interface Props$9 {
1994
2025
  /** Session for the shown resource — its client emits mark:* / mark.request; its bus feeds toolbar + beckon events. */
1995
2026
  session: SemiontSession | null;
1996
2027
  /** Recently-created annotation ids to sparkle (host-provided; was ResourceAnnotationsContext). */
1997
- newAnnotationIds?: Set<string>;
2028
+ sparkleAnnotationIds?: Set<string>;
1998
2029
  /** The bar's Mode control reports the chosen mode here (the owner applies it). */
1999
2030
  onModeChange?: (mode: boolean) => void;
2000
2031
  /** Render the built-in bar (default). false → no bar; selection capture and drawing stay live. */
@@ -2009,7 +2040,7 @@ interface Props$9 {
2009
2040
  * @subscribes beckon:hover - Annotation hovered. Payload: { annotationId: string | null }
2010
2041
  * @subscribes beckon:focus - Scroll to and highlight annotation, unless `resourceId` names a different resource (D7). Payload: { annotationId: string, resourceId?: string }
2011
2042
  */
2012
- declare function AnnotateView({ content, mimeType, resourceUri, annotations, uiState, onUIStateChange, enableWidgets, getTargetResourceName, generatingReferenceId, showLineNumbers, hoverDelayMs, annotateMode, session, newAnnotationIds, onModeChange, showToolbar, renderers, }: Props$9): React$1.JSX.Element;
2043
+ declare function AnnotateView({ content, mimeType, resourceUri, annotations, uiState, onUIStateChange, enableWidgets, getTargetResourceName, generatingReferenceId, showLineNumbers, hoverDelayMs, annotateMode, session, sparkleAnnotationIds, onModeChange, showToolbar, renderers, }: Props$9): React$1.JSX.Element;
2013
2044
 
2014
2045
  interface Props$8 {
2015
2046
  /**
@@ -2076,7 +2107,7 @@ interface Props$7 {
2076
2107
  /** Session for the shown resource — emits browse:click / beckon:hover; its bus feeds beckon events. */
2077
2108
  session: SemiontSession | null;
2078
2109
  /** Recently-created annotation ids to sparkle (host-provided; was ResourceAnnotationsContext). */
2079
- newAnnotationIds?: Set<string>;
2110
+ sparkleAnnotationIds?: Set<string>;
2080
2111
  /** Override the read-only media renderers (render mode → renderer); merged over the defaults. */
2081
2112
  renderers?: BrowseMediaRenderers;
2082
2113
  /** A content link (`<a href>` in the rendered content) was clicked. The viewer preventDefaults and
@@ -2117,12 +2148,12 @@ interface ReferenceHover {
2117
2148
  * @subscribes beckon:hover - Highlight annotation on hover. Payload: { annotationId: string | null }
2118
2149
  * @subscribes beckon:focus - Scroll to and highlight annotation. Payload: { annotationId: string }
2119
2150
  */
2120
- declare const BrowseView: React$1.MemoExoticComponent<({ content, mimeType, resourceUri, annotations, selectedClick, onModeChange, onClickActionChange, showToolbar, annotateMode, hoverDelayMs, session, newAnnotationIds, renderers, onLinkClick, onReferenceHover, inline, }: Props$7) => React$1.JSX.Element>;
2151
+ declare const BrowseView: React$1.MemoExoticComponent<({ content, mimeType, resourceUri, annotations, selectedClick, onModeChange, onClickActionChange, showToolbar, annotateMode, hoverDelayMs, session, sparkleAnnotationIds, renderers, onLinkClick, onReferenceHover, inline, }: Props$7) => React$1.JSX.Element>;
2121
2152
 
2122
2153
  interface Props$6 {
2123
2154
  /** The '@id' of the resource whose bytes to offer. */
2124
2155
  resourceUri: string;
2125
- /** Session for that resource — its client mints the media token and supplies the backend origin. */
2156
+ /** Session for that resource — its client mints the media token and supplies the gateway origin. */
2126
2157
  session: SemiontSession | null;
2127
2158
  }
2128
2159
  /**
@@ -2198,7 +2229,7 @@ interface Props$4 {
2198
2229
  /** Inline display variant: auto-height, no inner scroll, no pane chrome (browse path). Default: fill-the-pane. */
2199
2230
  inline?: boolean;
2200
2231
  /** Recently-created annotation ids to sparkle (threaded to the browse/annotate subtree). */
2201
- newAnnotationIds?: Set<string>;
2232
+ sparkleAnnotationIds?: Set<string>;
2202
2233
  generatingReferenceId?: string | null;
2203
2234
  showLineNumbers?: boolean;
2204
2235
  hoverDelayMs?: number;
@@ -2254,7 +2285,7 @@ interface Props$4 {
2254
2285
  * the motivation is derived from the annotation the id names, and an id this
2255
2286
  * viewer has not loaded is a no-op.
2256
2287
  */
2257
- declare function ResourceViewer({ resource, annotations, session, onOpenResource, onOpenPanel, onLinkClick, onReferenceHover, inline, newAnnotationIds, generatingReferenceId, showLineNumbers, hoverDelayMs, hoveredAnnotationId: hoveredAnnotationIdProp, annotateMode: annotateModeProp, onAnnotateModeChange, clickAction: clickActionProp, onClickActionChange, selectionMotivation: selectionMotivationProp, onSelectionMotivationChange, shape: shapeProp, onShapeChange, showToolbar, browseRenderers, annotateRenderers, }: Props$4): React__default.JSX.Element;
2288
+ declare function ResourceViewer({ resource, annotations, session, onOpenResource, onOpenPanel, onLinkClick, onReferenceHover, inline, sparkleAnnotationIds, generatingReferenceId, showLineNumbers, hoverDelayMs, hoveredAnnotationId: hoveredAnnotationIdProp, annotateMode: annotateModeProp, onAnnotateModeChange, clickAction: clickActionProp, onClickActionChange, selectionMotivation: selectionMotivationProp, onSelectionMotivationChange, shape: shapeProp, onShapeChange, showToolbar, browseRenderers, annotateRenderers, }: Props$4): React__default.JSX.Element;
2258
2289
 
2259
2290
  interface AssessmentEntryProps {
2260
2291
  /** Session for interaction routing (browse.click etc.); the panel threads it. */
@@ -2267,7 +2298,7 @@ interface AssessmentEntryProps {
2267
2298
  declare function AssessmentEntry({ session, assessment, isFocused, isHovered, ref, }: AssessmentEntryProps): React$1.JSX.Element;
2268
2299
 
2269
2300
  type Motivation$5 = components['schemas']['Motivation'];
2270
- type JobProgress$6 = components['schemas']['JobProgress'];
2301
+ type JobProgress$7 = components['schemas']['JobProgress'];
2271
2302
  interface PendingAnnotation$5 {
2272
2303
  selector: Selector | Selector[];
2273
2304
  motivation: Motivation$5;
@@ -2280,7 +2311,7 @@ interface AssessmentPanelProps {
2280
2311
  annotations: Annotation[];
2281
2312
  pendingAnnotation: PendingAnnotation$5 | null;
2282
2313
  isAssisting?: boolean;
2283
- progress?: JobProgress$6 | null;
2314
+ progress?: JobProgress$7 | null;
2284
2315
  locale?: string;
2285
2316
  /** BCP-47 tag of the resource being analyzed — forwarded to the assist call. */
2286
2317
  sourceLanguage?: string;
@@ -2345,7 +2376,7 @@ interface CommentEntryProps {
2345
2376
  declare function CommentEntry({ session, comment, isFocused, isHovered, annotateMode, ref, }: CommentEntryProps): React$1.JSX.Element;
2346
2377
 
2347
2378
  type Motivation$4 = components['schemas']['Motivation'];
2348
- type JobProgress$5 = components['schemas']['JobProgress'];
2379
+ type JobProgress$6 = components['schemas']['JobProgress'];
2349
2380
  interface PendingAnnotation$4 {
2350
2381
  selector: Selector | Selector[];
2351
2382
  motivation: Motivation$4;
@@ -2359,7 +2390,7 @@ interface CommentsPanelProps {
2359
2390
  pendingAnnotation: PendingAnnotation$4 | null;
2360
2391
  annotateMode?: boolean;
2361
2392
  isAssisting?: boolean;
2362
- progress?: JobProgress$5 | null;
2393
+ progress?: JobProgress$6 | null;
2363
2394
  locale?: string;
2364
2395
  /** BCP-47 tag of the resource being analyzed — forwarded to the assist call. */
2365
2396
  sourceLanguage?: string;
@@ -2376,7 +2407,7 @@ interface CommentsPanelProps {
2376
2407
  */
2377
2408
  declare function CommentsPanel({ session, resourceId, annotations, pendingAnnotation, annotateMode, isAssisting, progress, locale, sourceLanguage, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: CommentsPanelProps): React$1.JSX.Element;
2378
2409
 
2379
- type JobProgress$4 = components['schemas']['JobProgress'];
2410
+ type JobProgress$5 = components['schemas']['JobProgress'];
2380
2411
  interface AssistSectionProps {
2381
2412
  /** Session carrying the client and event bus; null renders inert. */
2382
2413
  session: SemiontSession | null;
@@ -2386,7 +2417,7 @@ interface AssistSectionProps {
2386
2417
  locale?: string;
2387
2418
  /** BCP-47 tag of the resource being analyzed. Forwarded to the prompt so the LLM analyzes non-English source correctly. */
2388
2419
  sourceLanguage?: string;
2389
- progress?: JobProgress$4 | null | undefined;
2420
+ progress?: JobProgress$5 | null | undefined;
2390
2421
  }
2391
2422
  /**
2392
2423
  * Assist fields for the text motivations (highlight, assessment, comment):
@@ -2410,7 +2441,7 @@ interface HighlightEntryProps {
2410
2441
  declare function HighlightEntry({ session, highlight, isFocused, isHovered, ref, }: HighlightEntryProps): React$1.JSX.Element;
2411
2442
 
2412
2443
  type Motivation$3 = components['schemas']['Motivation'];
2413
- type JobProgress$3 = components['schemas']['JobProgress'];
2444
+ type JobProgress$4 = components['schemas']['JobProgress'];
2414
2445
  interface PendingAnnotation$3 {
2415
2446
  selector: Selector | Selector[];
2416
2447
  motivation: Motivation$3;
@@ -2423,7 +2454,7 @@ interface HighlightPanelProps {
2423
2454
  annotations: Annotation[];
2424
2455
  pendingAnnotation: PendingAnnotation$3 | null;
2425
2456
  isAssisting?: boolean;
2426
- progress?: JobProgress$3 | null;
2457
+ progress?: JobProgress$4 | null;
2427
2458
  annotateMode?: boolean;
2428
2459
  scrollToAnnotationId?: string | null;
2429
2460
  onScrollCompleted?: () => void;
@@ -2474,11 +2505,13 @@ interface ReferenceEntryProps {
2474
2505
  onOpenResource?: (resourceId: string) => void;
2475
2506
  annotateMode?: boolean;
2476
2507
  isGenerating?: boolean;
2508
+ /** The reference just got attention-worthy (created or resolved) — glow the icon (RESOLUTION-SPARKLE D6). */
2509
+ sparkle?: boolean;
2477
2510
  ref?: Ref<HTMLDivElement>;
2478
2511
  }
2479
- declare function ReferenceEntry({ session, reference, isFocused, isHovered, onOpenResource, annotateMode, isGenerating, ref, }: ReferenceEntryProps): React$1.JSX.Element;
2512
+ declare function ReferenceEntry({ session, reference, isFocused, isHovered, onOpenResource, annotateMode, isGenerating, sparkle, ref, }: ReferenceEntryProps): React$1.JSX.Element;
2480
2513
 
2481
- type JobProgress$2 = components['schemas']['JobProgress'];
2514
+ type JobProgress$3 = components['schemas']['JobProgress'];
2482
2515
 
2483
2516
  type Motivation$2 = components['schemas']['Motivation'];
2484
2517
  type ReferencedBy = components['schemas']['GetReferencedByResponse']['referencedBy'][number];
@@ -2495,7 +2528,7 @@ interface Props$1 {
2495
2528
  resourceId: string;
2496
2529
  annotations?: Annotation[];
2497
2530
  isAssisting: boolean;
2498
- progress: JobProgress$2 | null;
2531
+ progress: JobProgress$3 | null;
2499
2532
  annotateMode?: boolean;
2500
2533
  Link: React__default.ComponentType<LinkComponentProps>;
2501
2534
  routes: RouteBuilder;
@@ -2523,6 +2556,8 @@ interface Props$1 {
2523
2556
  scrollToAnnotationId?: string | null;
2524
2557
  onScrollCompleted?: () => void;
2525
2558
  hoveredAnnotationId?: string | null;
2559
+ /** Annotations currently sparkling (recently created or resolved) — entries in the set glow their icon (RESOLUTION-SPARKLE D6). */
2560
+ sparkleAnnotationIds?: Set<string>;
2526
2561
  /** User UI locale — stamped on the unresolved-reference body's `language` field. */
2527
2562
  locale?: string;
2528
2563
  /** BCP-47 tag of the resource being analyzed — fed into the prompt for source-aware analysis. */
@@ -2536,9 +2571,10 @@ interface Props$1 {
2536
2571
  * @emits mark:cancel-pending - Cancel pending reference annotation. Payload: undefined
2537
2572
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
2538
2573
  */
2539
- declare function ReferencesPanel({ session, onOpenResource, resourceId, annotations, isAssisting, progress, annotateMode, Link, routes, allEntityTypes, entityTypesError, generatingReferenceId, referencedBy, referencedByLoading, referencedByError, onRetryReferencedBy, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: Props$1): React__default.JSX.Element;
2574
+ declare function ReferencesPanel({ session, onOpenResource, resourceId, annotations, isAssisting, progress, annotateMode, Link, routes, allEntityTypes, entityTypesError, generatingReferenceId, referencedBy, referencedByLoading, referencedByError, onRetryReferencedBy, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, sparkleAnnotationIds, locale, sourceLanguage, }: Props$1): React__default.JSX.Element;
2540
2575
 
2541
2576
  type Agent = components['schemas']['Agent'];
2577
+ type JobProgress$2 = components['schemas']['JobProgress'];
2542
2578
  interface Props {
2543
2579
  /** Session carrying the client and event bus; null renders inert. */
2544
2580
  session: SemiontSession | null;
@@ -2560,6 +2596,17 @@ interface Props {
2560
2596
  * to a verb). Omit to hide the Generate action.
2561
2597
  */
2562
2598
  onGenerate?: () => void;
2599
+ /**
2600
+ * Generation lifecycle, page-held (`yield.isGenerating$` / `yield.progress$`
2601
+ * / `yield.outcome$`): this panel is generation's progress surface
2602
+ * (GENERATE-FROM-RESOURCE D7) — the run reports where it was started.
2603
+ */
2604
+ isGenerating?: boolean;
2605
+ generationProgress?: JobProgress$2 | null;
2606
+ /** The finished run's result; the ended frame links it by name (D8). */
2607
+ generationOutcome?: YieldOutcome | null;
2608
+ /** Clear the finished display — wires `yield.dismissProgress()`. */
2609
+ onDismissProgress?: () => void;
2563
2610
  }
2564
2611
  /**
2565
2612
  * Panel for displaying resource metadata and management actions
@@ -2568,7 +2615,7 @@ interface Props {
2568
2615
  * @emits mark:unarchive - Unarchive this resource
2569
2616
  * @emits mark:archive - Archive this resource
2570
2617
  */
2571
- declare function ResourceInfoPanel({ session, resourceId, documentEntityTypes, documentLocale, primaryMediaType, primaryByteSize, storageUri, isArchived, dateCreated, dateModified, wasAttributedTo, wasDerivedFrom, generator, onGenerate, }: Props): React$1.JSX.Element;
2618
+ declare function ResourceInfoPanel({ session, resourceId, documentEntityTypes, documentLocale, primaryMediaType, primaryByteSize, storageUri, isArchived, dateCreated, dateModified, wasAttributedTo, wasDerivedFrom, generator, onGenerate, isGenerating, generationProgress, generationOutcome, onDismissProgress, }: Props): React$1.JSX.Element;
2572
2619
 
2573
2620
  interface StatisticsPanelProps {
2574
2621
  highlights: Annotation[];
@@ -2626,7 +2673,7 @@ declare function TaggingPanel({ session, resourceId, annotations, annotateMode,
2626
2673
  type JobProgress = components['schemas']['JobProgress'];
2627
2674
 
2628
2675
  type Motivation = components['schemas']['Motivation'];
2629
- type TabKey = 'statistics' | 'reference' | 'highlight' | 'assessment' | 'comment' | 'tag';
2676
+ type TabKey = 'statistics' | AnnotatorKey;
2630
2677
  interface PendingAnnotation {
2631
2678
  selector: Selector | Selector[];
2632
2679
  motivation: Motivation;
@@ -2666,6 +2713,8 @@ interface UnifiedAnnotationsPanelProps {
2666
2713
  entityTypesError?: Error | null;
2667
2714
  referencedByError?: Error | null;
2668
2715
  onRetryReferencedBy?: () => void;
2716
+ /** Annotations currently sparkling (recently created or resolved) — RESOLUTION-SPARKLE D6. */
2717
+ sparkleAnnotationIds?: Set<string>;
2669
2718
  resourceId: string;
2670
2719
  initialTab?: TabKey;
2671
2720
  initialTabGeneration?: number;
@@ -2894,14 +2943,46 @@ interface SimpleNavigationProps {
2894
2943
  dropdownContent?: ((onClose: () => void) => ReactNode) | undefined;
2895
2944
  }
2896
2945
 
2897
- interface GenerationConfig {
2898
- title: string;
2946
+ /**
2947
+ * What this form fills in. Named here, but TYPED by the SDK (P2b).
2948
+ *
2949
+ * `storageUri` is on this list rather than a local `storagePath: string`
2950
+ * because the two were the same thing under different names — a divergence
2951
+ * that survived precisely because nothing tied them together (D8).
2952
+ */
2953
+ type FormFilled = 'title' | 'storageUri' | 'language' | 'temperature' | 'maxTokens' | 'outputMediaType';
2954
+ /**
2955
+ * The submitted payload: the SDK's own generation options, DERIVED rather
2956
+ * than restated (P2b), plus the grounding context.
2957
+ *
2958
+ * This was a hand-written interface listing the same fields with independent
2959
+ * types — the shape `## Duplicated Shape` forbids — and it drifted exactly as
2960
+ * predicted: `storagePath: string` held a `storageUri`, so every consumer
2961
+ * re-mapped it by hand and silently dropped whatever the mapping forgot.
2962
+ * Deriving means a rename or retype in `GenerationOptions` is a compile
2963
+ * error here instead of a quiet gap at the wire.
2964
+ *
2965
+ * NARROWED on purpose: the SDK also carries `task`, `structure`, `cite` and
2966
+ * `stallDeadlineMs`, which this form does not collect, and a payload type
2967
+ * that advertised them would promise more than the UI delivers. Surfacing one
2968
+ * later is a one-word edit to `FormFilled` plus its control — the door is
2969
+ * unlocked, not open.
2970
+ *
2971
+ * `Required` because the form always fills these, even where the SDK lets
2972
+ * them be absent; `prompt` stays optional, because a blank instruction field
2973
+ * is omitted rather than sent empty.
2974
+ */
2975
+ type GenerationConfig = Required<Pick<GenerationOptions, FormFilled>> & Pick<GenerationOptions, 'prompt'> & {
2976
+ context: GatheredContext;
2977
+ };
2978
+
2979
+ interface ComposeParams$1 {
2980
+ name: string;
2981
+ /** Full file:// URI. */
2899
2982
  storagePath: string;
2900
- prompt?: string;
2983
+ content: string;
2984
+ entityTypes: string[];
2901
2985
  language: string;
2902
- temperature: number;
2903
- maxTokens: number;
2904
- context: GatheredContext;
2905
2986
  }
2906
2987
 
2907
2988
  interface ReferenceWizardModalProps {
@@ -2919,8 +3000,16 @@ interface ReferenceWizardModalProps {
2919
3000
  resourceId: string | null;
2920
3001
  /** Default title (selected text) */
2921
3002
  defaultTitle: string;
3003
+ /** Folder of the source resource, so new files land beside it (D11). */
3004
+ defaultFolder?: string;
2922
3005
  /** Entity types from the annotation */
2923
3006
  entityTypes: string[];
3007
+ /**
3008
+ * The source resource's display name — a page fact (the wizard opens FROM
3009
+ * that resource), shown in the gather skeleton's source line before the
3010
+ * gathered context can say it itself.
3011
+ */
3012
+ resourceName?: string;
2924
3013
  /** Current locale for generation defaults */
2925
3014
  locale: string;
2926
3015
  /** Gathered context state */
@@ -2930,21 +3019,36 @@ interface ReferenceWizardModalProps {
2930
3019
  /** Callbacks */
2931
3020
  onGenerateSubmit: (referenceId: string, config: GenerationConfig) => void;
2932
3021
  onLinkResource: (referenceId: string, targetResourceId: string) => void;
2933
- onComposeNavigate: (context: GatheredContext, annotationId: string, resourceId: string, title: string, entityTypes: string[]) => void;
3022
+ /**
3023
+ * Create-and-link (COMPOSE-IN-MODAL): the host runs `yield.resource` then
3024
+ * `bind.body` and settles the promise; rejection keeps the modal open with
3025
+ * the compose footer re-enabled. Replaces the old navigate-to-page flow.
3026
+ */
3027
+ onComposeSubmit: (referenceId: string, params: ComposeParams$1) => Promise<void>;
3028
+ /** Picker vocabulary for compose when the reference fixed no entity types. */
3029
+ entityTypeOptions?: string[];
3030
+ /** Editor hover delay for the compose step's CodeMirror. */
3031
+ hoverDelayMs?: number;
2934
3032
  /** Translation strings */
2935
3033
  translations: {
2936
- gatherTitle: string;
2937
- configureGenerationTitle: string;
2938
- configureSearchTitle: string;
2939
- searchResultsTitle: string;
3034
+ /** The ONE title, all steps — the flow is resolving a reference; the
3035
+ strategy band below says where in it you are. */
3036
+ resolveTitle: string;
2940
3037
  sourceContextLabel: string;
2941
3038
  connectionsLabel: string;
2942
3039
  citedByLabel: string;
3040
+ graphPaneTitle: string;
3041
+ graphEmpty: string;
3042
+ resourceLinkLabel: string;
3043
+ corpusPaneTitle: string;
3044
+ corpusEmpty: string;
3045
+ excludedReceipt: string;
3046
+ machineRead: string;
2943
3047
  userHintLabel: string;
3048
+ userHintEffect: string;
2944
3049
  userHintPlaceholder: string;
2945
3050
  loadingContext: string;
2946
3051
  failedContext: string;
2947
- cancel: string;
2948
3052
  search: string;
2949
3053
  searching: string;
2950
3054
  generate: string;
@@ -2956,6 +3060,7 @@ interface ReferenceWizardModalProps {
2956
3060
  noResults: string;
2957
3061
  resourceTitle: string;
2958
3062
  resourceTitlePlaceholder: string;
3063
+ saveLocation: string;
2959
3064
  additionalInstructions: string;
2960
3065
  additionalInstructionsPlaceholder: string;
2961
3066
  language: string;
@@ -2966,41 +3071,52 @@ interface ReferenceWizardModalProps {
2966
3071
  maxLength: string;
2967
3072
  maxLengthHelp: string;
2968
3073
  maxLengthCeiling: string;
3074
+ outputFormat: string;
3075
+ formatExtensionMismatch: string;
2969
3076
  maxResults: string;
2970
3077
  semanticScoring: string;
2971
3078
  semanticScoringHelp: string;
3079
+ searchFailed: string;
3080
+ entityTypes: string;
3081
+ contentLabel: string;
3082
+ createAndLink: string;
3083
+ creatingAndLinking: string;
3084
+ discardDraftPrompt: string;
3085
+ discardDraft: string;
3086
+ keepEditing: string;
2972
3087
  };
2973
3088
  }
2974
- declare function ReferenceWizardModal({ isOpen, onClose, annotationId, resourceId, defaultTitle, entityTypes, locale, context, contextLoading, contextError, onGenerateSubmit, onLinkResource, onComposeNavigate, translations: t, generationAgent, }: ReferenceWizardModalProps): React$1.JSX.Element;
2975
-
2976
- interface ResourceGatherConfig {
2977
- depth: number;
2978
- maxResources: number;
2979
- includeContent: boolean;
2980
- includeSummary: boolean;
2981
- }
3089
+ declare function ReferenceWizardModal({ isOpen, onClose, annotationId, resourceId, defaultTitle, defaultFolder, entityTypes, resourceName, locale, context, contextLoading, contextError, onGenerateSubmit, onLinkResource, onComposeSubmit, entityTypeOptions, hoverDelayMs, translations: t, generationAgent, }: ReferenceWizardModalProps): React$1.JSX.Element;
2982
3090
 
2983
3091
  interface ResourceGenerateModalTranslations {
2984
- gatherTitle: string;
2985
- reviewTitle: string;
2986
- configureTitle: string;
2987
- next: string;
2988
- back: string;
2989
- cancel: string;
3092
+ /** The ONE modal title — names the flow, not a step. */
3093
+ title: string;
2990
3094
  gatherIntro: string;
2991
3095
  includeContent: string;
2992
3096
  includeSummary: string;
2993
3097
  gatherDepth: string;
2994
3098
  gatherMaxResources: string;
2995
3099
  gatherButton: string;
2996
- excludeLabel: string;
3100
+ /** Labels the recall chips: every type included until deselected. */
3101
+ recallLabel: string;
3102
+ /** Affordance on the post-gather receipt row (title/tooltip). */
3103
+ editGather: string;
2997
3104
  loadingContext: string;
2998
3105
  failedContext: string;
2999
3106
  sourceContextLabel: string;
3000
3107
  connectionsLabel: string;
3001
3108
  citedByLabel: string;
3109
+ graphPaneTitle: string;
3110
+ graphEmpty: string;
3111
+ resourceLinkLabel: string;
3112
+ corpusPaneTitle: string;
3113
+ corpusEmpty: string;
3114
+ excludedReceipt: string;
3115
+ machineRead: string;
3116
+ score: string;
3002
3117
  resourceTitle: string;
3003
3118
  resourceTitlePlaceholder: string;
3119
+ saveLocation: string;
3004
3120
  additionalInstructions: string;
3005
3121
  additionalInstructionsPlaceholder: string;
3006
3122
  language: string;
@@ -3011,7 +3127,12 @@ interface ResourceGenerateModalTranslations {
3011
3127
  maxLength: string;
3012
3128
  maxLengthHelp: string;
3013
3129
  maxLengthCeiling: string;
3130
+ outputFormat: string;
3131
+ formatExtensionMismatch: string;
3014
3132
  generate: string;
3133
+ discardDraftPrompt: string;
3134
+ discardDraft: string;
3135
+ keepEditing: string;
3015
3136
  }
3016
3137
  interface ResourceGenerateModalProps {
3017
3138
  /**
@@ -3024,8 +3145,9 @@ interface ResourceGenerateModalProps {
3024
3145
  onClose: () => void;
3025
3146
  resourceId: string;
3026
3147
  defaultTitle: string;
3148
+ /** Folder of the source resource, so the artifact lands beside it (D11). */
3149
+ defaultFolder?: string;
3027
3150
  locale: string;
3028
- gatherDefaults?: Partial<ResourceGatherConfig>;
3029
3151
  /**
3030
3152
  * Entity types offered in the exclusion picker. Owner-supplied so the
3031
3153
  * modal cannot present a failed load as an empty vocabulary.
@@ -3037,14 +3159,35 @@ interface ResourceGenerateModalProps {
3037
3159
  * annotation wizard delegates generation to its parent.
3038
3160
  */
3039
3161
  onGenerateSubmit: (resourceId: string, config: GenerationConfig) => void;
3162
+ /**
3163
+ * Resource-gather state, verbatim from the SDK's gather unit slots
3164
+ * (`gather.resourceContext$` / `resourceLoading$` / `resourceError$`) — the
3165
+ * page reads the observables and threads them here, the same shape the
3166
+ * reference wizard has always had (FLOW-LIFECYCLE-CONVERGENCE D3/A6). The
3167
+ * modal renders this state; it never owns it.
3168
+ */
3169
+ gatherContext: GatheredContext | null;
3170
+ gatherLoading: boolean;
3171
+ gatherError: Error | null;
3172
+ /**
3173
+ * Run the gather — the page wires `gather.gatherResource(resourceId, …)`.
3174
+ * No resourceId in the payload: the owner already holds it. `gatherResource`
3175
+ * clears its slots at start, so no reset threading is needed.
3176
+ */
3177
+ onGather: (options: ResourceGatherOptions) => void;
3040
3178
  translations: ResourceGenerateModalTranslations;
3041
3179
  }
3042
3180
  /**
3043
- * Resource-generate flow (GENERATE-FROM-BUTTON): configure gather options →
3044
- * `gather.resource` review the gathered `GatheredContext` configure
3045
- * generation → emit. Reuses the kind-aware `GatherContextStep` for the review.
3181
+ * Resource-generate flow (GENERATE-FROM-BUTTON, folded by GATHER-AT-THE-TOP):
3182
+ * one composite stack in a single scroll pane — the gather controls at the
3183
+ * top, the gathered `GatheredContext` below them once gather fires, and the
3184
+ * generation params beneath the evidence once context arrives. Re-gathering
3185
+ * is scroll-up → tweak → Gather; `gatherResource` clears its slots at start,
3186
+ * so the evidence refreshes in place. [gather zone] → [evidence] → [act
3187
+ * zone]: the same grammar the resolve wizard expresses, whose gather zone
3188
+ * happens to be automatic and whose act zone has a strategy choice.
3046
3189
  */
3047
- declare function ResourceGenerateModal({ isOpen, onClose, resourceId, defaultTitle, locale, gatherDefaults, entityTypeOptions, onGenerateSubmit, translations: t, generationAgent, }: ResourceGenerateModalProps): React$1.JSX.Element;
3190
+ declare function ResourceGenerateModal({ isOpen, onClose, resourceId, defaultTitle, defaultFolder, locale, entityTypeOptions, onGenerateSubmit, gatherContext, gatherLoading, gatherError, onGather, translations: t, generationAgent, }: ResourceGenerateModalProps): React$1.JSX.Element;
3048
3191
 
3049
3192
  interface SearchModalProps$1 {
3050
3193
  isOpen: boolean;
@@ -3064,21 +3207,6 @@ interface SearchModalProps$1 {
3064
3207
  }
3065
3208
  declare function SearchModal({ isOpen, onClose, onNavigate, translations }: SearchModalProps$1): React__default.JSX.Element;
3066
3209
 
3067
- interface ResourceSearchModalProps$1 {
3068
- isOpen: boolean;
3069
- onClose: () => void;
3070
- onSelect: (resourceId: string) => void;
3071
- searchTerm?: string;
3072
- translations?: {
3073
- title?: string;
3074
- placeholder?: string;
3075
- searching?: string;
3076
- noResults?: string;
3077
- close?: string;
3078
- };
3079
- }
3080
- declare function ResourceSearchModal({ isOpen, onClose, onSelect, searchTerm, translations }: ResourceSearchModalProps$1): React$1.JSX.Element;
3081
-
3082
3210
  /**
3083
3211
  * Base modal props that all modals share
3084
3212
  */
@@ -3112,22 +3240,6 @@ interface SearchModalProps extends BaseModalProps, NavigableModalProps {
3112
3240
  close?: string;
3113
3241
  };
3114
3242
  }
3115
- /**
3116
- * Resource search modal props
3117
- */
3118
- interface ResourceSearchModalProps extends BaseModalProps {
3119
- /** Callback when a resource is selected */
3120
- onSelect: (resourceId: string) => void;
3121
- /** Initial search term */
3122
- searchTerm?: string;
3123
- /** Optional translation support */
3124
- translations?: {
3125
- title?: string;
3126
- placeholder?: string;
3127
- searching?: string;
3128
- noResults?: string;
3129
- };
3130
- }
3131
3243
 
3132
3244
  /**
3133
3245
  * Skip links for keyboard navigation accessibility
@@ -3139,9 +3251,9 @@ declare function SkipLinks(): React$1.JSX.Element;
3139
3251
  interface StatusDisplayProps {
3140
3252
  isFullyAuthenticated?: boolean;
3141
3253
  isAuthenticated?: boolean;
3142
- hasValidBackendToken?: boolean;
3254
+ hasValidGatewayToken?: boolean;
3143
3255
  }
3144
- declare function StatusDisplay({ isFullyAuthenticated, isAuthenticated, hasValidBackendToken }: StatusDisplayProps): React$1.JSX.Element;
3256
+ declare function StatusDisplay({ isFullyAuthenticated, isAuthenticated, hasValidGatewayToken }: StatusDisplayProps): React$1.JSX.Element;
3145
3257
 
3146
3258
  declare function SessionTimer(): React$1.JSX.Element | null;
3147
3259
 
@@ -3543,168 +3655,6 @@ interface AdminDevOpsPageProps {
3543
3655
  }
3544
3656
  declare function AdminDevOpsPage({ suggestedFeatures, theme, activePanel, translations: t, StatusDisplay, ToolbarPanels, Toolbar, }: AdminDevOpsPageProps): React__default.JSX.Element;
3545
3657
 
3546
- /**
3547
- * ExportCard — Backup trigger
3548
- *
3549
- * Pure React component. All state and handlers passed as props.
3550
- */
3551
- interface ExportCardTranslations {
3552
- title: string;
3553
- description: string;
3554
- exportButton: string;
3555
- exporting: string;
3556
- }
3557
- interface ExportCardProps {
3558
- onExport: () => void;
3559
- isExporting: boolean;
3560
- translations: ExportCardTranslations;
3561
- }
3562
- declare function ExportCard({ onExport, isExporting, translations: t }: ExportCardProps): React$1.JSX.Element;
3563
-
3564
- /**
3565
- * ShellStateUnit — app-shell state: which toolbar panel is open, tab-bar
3566
- * coordination helpers, scroll-to-annotation signals. Lives on
3567
- * `SemiontBrowser`'s app-scoped bus (not the per-session client bus)
3568
- * because panel toggles and shell chrome must work regardless of
3569
- * whether a KB session is active.
3570
- *
3571
- * Channels: `panel:toggle`, `panel:open`, `panel:close`.
3572
- */
3573
-
3574
- type ToolbarPanelType = 'history' | 'info' | 'annotations' | 'settings' | 'collaboration' | 'user' | 'jsonld' | 'knowledge-base';
3575
- declare const COMMON_PANELS: readonly ToolbarPanelType[];
3576
- declare const RESOURCE_PANELS: readonly ToolbarPanelType[];
3577
- interface ShellStateUnit extends StateUnit {
3578
- activePanel$: Observable<ToolbarPanelType | null>;
3579
- scrollToAnnotationId$: Observable<string | null>;
3580
- panelInitialTab$: Observable<{
3581
- tab: string;
3582
- generation: number;
3583
- } | null>;
3584
- openPanel(panel: string): void;
3585
- closePanel(): void;
3586
- togglePanel(panel: string): void;
3587
- onScrollCompleted(): void;
3588
- }
3589
- interface ShellStateUnitOptions {
3590
- initialPanel?: ToolbarPanelType | null;
3591
- onPanelChange?: (panel: ToolbarPanelType | null) => void;
3592
- }
3593
- declare function createShellStateUnit(browser: SemiontBrowser, options?: ShellStateUnitOptions): ShellStateUnit;
3594
-
3595
- interface ImportPreview {
3596
- format: string;
3597
- version: number;
3598
- sourceUrl: string;
3599
- stats: Record<string, number>;
3600
- }
3601
- interface ExchangeStateUnit extends StateUnit {
3602
- browse: ShellStateUnit;
3603
- selectedFile$: Observable<File | null>;
3604
- preview$: Observable<ImportPreview | null>;
3605
- importPhase$: Observable<string | null>;
3606
- importMessage$: Observable<string | undefined>;
3607
- importResult$: Observable<Record<string, unknown> | undefined>;
3608
- isExporting$: Observable<boolean>;
3609
- isImporting$: Observable<boolean>;
3610
- selectFile(file: File): void;
3611
- cancelImport(): void;
3612
- doExport(): Promise<{
3613
- blob: Blob;
3614
- filename: string;
3615
- }>;
3616
- doImport(): Promise<void>;
3617
- }
3618
- declare function createExchangeStateUnit(browse: ShellStateUnit, exportFn: (params?: {
3619
- includeArchived?: boolean;
3620
- }) => Promise<BackendDownload>, importFn: (file: File) => Observable<ProgressEvent>): ExchangeStateUnit;
3621
-
3622
- /**
3623
- * ImportCard — File drop zone, preview, and import trigger
3624
- *
3625
- * Pure React component. All state and handlers passed as props.
3626
- */
3627
-
3628
- interface ImportCardTranslations {
3629
- title: string;
3630
- description: string;
3631
- dropzoneLabel: string;
3632
- dropzoneActive: string;
3633
- detectedFormat: string;
3634
- statsPreview: string;
3635
- importButton: string;
3636
- importing: string;
3637
- importConfirmTitle: string;
3638
- importConfirmMessage: string;
3639
- confirmImport: string;
3640
- cancelImport: string;
3641
- }
3642
- interface ImportCardProps {
3643
- onFileSelected: (file: File) => void;
3644
- onImport: () => void;
3645
- onCancel: () => void;
3646
- selectedFile: File | null;
3647
- preview: ImportPreview | null;
3648
- isImporting: boolean;
3649
- translations: ImportCardTranslations;
3650
- }
3651
- declare function ImportCard({ onFileSelected, onImport, onCancel, selectedFile, preview, isImporting, translations: t, }: ImportCardProps): React__default.JSX.Element;
3652
-
3653
- /**
3654
- * ImportProgress — Shows SSE-driven progress during restore
3655
- *
3656
- * Pure React component. All state passed as props.
3657
- */
3658
- interface ImportProgressTranslations {
3659
- phaseStarted: string;
3660
- phaseComplete: string;
3661
- phaseError: string;
3662
- statsEventsReplayed: string;
3663
- statsResourcesCreated: string;
3664
- statsAnnotationsCreated: string;
3665
- statsEntityTypesAdded: string;
3666
- }
3667
- interface ImportProgressProps {
3668
- phase: string;
3669
- message?: string;
3670
- result?: Record<string, unknown>;
3671
- translations: ImportProgressTranslations;
3672
- }
3673
- declare function ImportProgress({ phase, message, result, translations: t }: ImportProgressProps): React$1.JSX.Element;
3674
-
3675
- /**
3676
- * AdminExchangePage — Backup/Restore admin page
3677
- *
3678
- * Pure React component. All state and handlers passed as props.
3679
- */
3680
-
3681
- interface AdminExchangePageTranslations {
3682
- title: string;
3683
- subtitle: string;
3684
- export: ExportCardTranslations;
3685
- import: ImportCardTranslations;
3686
- progress: ImportProgressTranslations;
3687
- }
3688
- interface AdminExchangePageProps {
3689
- onExport: () => void;
3690
- isExporting: boolean;
3691
- onFileSelected: (file: File) => void;
3692
- onImport: () => void;
3693
- onCancelImport: () => void;
3694
- selectedFile: File | null;
3695
- preview: ImportCardProps['preview'];
3696
- isImporting: boolean;
3697
- importPhase: string | null;
3698
- importMessage?: string | undefined;
3699
- importResult?: Record<string, unknown> | undefined;
3700
- theme: 'light' | 'dark' | 'system';
3701
- activePanel: string | null;
3702
- translations: AdminExchangePageTranslations;
3703
- ToolbarPanels: React__default.ComponentType<any>;
3704
- Toolbar: React__default.ComponentType<any>;
3705
- }
3706
- declare function AdminExchangePage({ onExport, isExporting, onFileSelected, onImport, onCancelImport, selectedFile, preview, isImporting, importPhase, importMessage, importResult, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: AdminExchangePageProps): React__default.JSX.Element;
3707
-
3708
3658
  /**
3709
3659
  * AdminSecurityPage Component
3710
3660
  *
@@ -3746,40 +3696,6 @@ interface AdminSecurityPageProps {
3746
3696
  }
3747
3697
  declare function AdminSecurityPage({ providers, allowedDomains, isLoading, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: AdminSecurityPageProps): React__default.JSX.Element;
3748
3698
 
3749
- /**
3750
- * LinkedDataPage — JSON-LD Export/Import moderation page
3751
- *
3752
- * Pure React component. All state and handlers passed as props.
3753
- * Reuses ExportCard, ImportCard, and ImportProgress from admin-exchange.
3754
- */
3755
-
3756
- interface LinkedDataPageTranslations {
3757
- title: string;
3758
- subtitle: string;
3759
- export: ExportCardTranslations;
3760
- import: ImportCardTranslations;
3761
- progress: ImportProgressTranslations;
3762
- }
3763
- interface LinkedDataPageProps {
3764
- onExport: () => void;
3765
- isExporting: boolean;
3766
- onFileSelected: (file: File) => void;
3767
- onImport: () => void;
3768
- onCancelImport: () => void;
3769
- selectedFile: File | null;
3770
- preview: ImportCardProps['preview'];
3771
- isImporting: boolean;
3772
- importPhase: string | null;
3773
- importMessage?: string | undefined;
3774
- importResult?: Record<string, unknown> | undefined;
3775
- theme: 'light' | 'dark' | 'system';
3776
- activePanel: string | null;
3777
- translations: LinkedDataPageTranslations;
3778
- ToolbarPanels: React__default.ComponentType<any>;
3779
- Toolbar: React__default.ComponentType<any>;
3780
- }
3781
- declare function LinkedDataPage({ onExport, isExporting, onFileSelected, onImport, onCancelImport, selectedFile, preview, isImporting, importPhase, importMessage, importResult, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: LinkedDataPageProps): React__default.JSX.Element;
3782
-
3783
3699
  /**
3784
3700
  * AdminUsersPage Component
3785
3701
  *
@@ -3873,26 +3789,26 @@ declare function AdminUsersPage({ users, userStats, isLoadingUsers, isLoadingSta
3873
3789
  * Supports both Google OAuth and email/password credentials.
3874
3790
  * No Next.js dependencies - all data via props.
3875
3791
  *
3876
- * When backendUrl is provided it is shown as a locked read-only field.
3877
- * When backendUrl is omitted the user must enter a backend URL to connect to.
3792
+ * When gatewayUrl is provided it is shown as a locked read-only field.
3793
+ * When gatewayUrl is omitted the user must enter a gateway URL to connect to.
3878
3794
  */
3879
3795
 
3880
3796
  interface SignInFormProps {
3881
3797
  /**
3882
3798
  * Callback when user clicks Google sign-in.
3883
- * Receives the backend URL (either the locked one or what the user typed).
3799
+ * Receives the gateway URL (either the locked one or what the user typed).
3884
3800
  */
3885
- onGoogleSignIn: (backendUrl: string) => Promise<void>;
3801
+ onGoogleSignIn: (gatewayUrl: string) => Promise<void>;
3886
3802
  /**
3887
3803
  * Callback when user submits email/password credentials.
3888
- * Receives the backend URL along with email and password.
3804
+ * Receives the gateway URL along with email and password.
3889
3805
  */
3890
- onCredentialsSignIn?: ((backendUrl: string, email: string, password: string) => Promise<void>) | undefined;
3806
+ onCredentialsSignIn?: ((gatewayUrl: string, email: string, password: string) => Promise<void>) | undefined;
3891
3807
  /**
3892
- * Pre-filled backend URL. When provided the field is read-only (re-auth to known workspace).
3808
+ * Pre-filled gateway URL. When provided the field is read-only (re-auth to known workspace).
3893
3809
  * When omitted the user enters the URL themselves (new connection).
3894
3810
  */
3895
- backendUrl?: string;
3811
+ gatewayUrl?: string;
3896
3812
  /**
3897
3813
  * Error message to display (if any)
3898
3814
  */
@@ -3917,8 +3833,8 @@ interface SignInFormProps {
3917
3833
  welcomeBack: string;
3918
3834
  signInPrompt: string;
3919
3835
  continueWithGoogle: string;
3920
- backendUrlLabel: string;
3921
- backendUrlPlaceholder: string;
3836
+ gatewayUrlLabel: string;
3837
+ gatewayUrlPlaceholder: string;
3922
3838
  emailLabel: string;
3923
3839
  emailPlaceholder: string;
3924
3840
  passwordLabel: string;
@@ -3930,9 +3846,9 @@ interface SignInFormProps {
3930
3846
  backToHome: string;
3931
3847
  learnMore: string;
3932
3848
  signUpInstead: string;
3933
- errorBackendUrlRequired: string;
3934
- errorBackendUrlInvalid: string;
3935
- errorBackendUrlUnreachable: string;
3849
+ errorGatewayUrlRequired: string;
3850
+ errorGatewayUrlInvalid: string;
3851
+ errorGatewayUrlUnreachable: string;
3936
3852
  errorEmailRequired: string;
3937
3853
  errorPasswordRequired: string;
3938
3854
  tagline: string;
@@ -3941,10 +3857,10 @@ interface SignInFormProps {
3941
3857
  /**
3942
3858
  * SignInForm - Main sign-in / connect component.
3943
3859
  *
3944
- * When backendUrl is provided (re-auth to known workspace) the URL field is locked.
3945
- * When backendUrl is omitted (new connection) the user enters the URL themselves.
3860
+ * When gatewayUrl is provided (re-auth to known workspace) the URL field is locked.
3861
+ * When gatewayUrl is omitted (new connection) the user enters the URL themselves.
3946
3862
  */
3947
- declare function SignInForm({ onGoogleSignIn, onCredentialsSignIn, backendUrl, error, showCredentialsAuth, isLoading, translations: t, }: SignInFormProps): React__default.JSX.Element;
3863
+ declare function SignInForm({ onGoogleSignIn, onCredentialsSignIn, gatewayUrl, error, showCredentialsAuth, isLoading, translations: t, }: SignInFormProps): React__default.JSX.Element;
3948
3864
 
3949
3865
  /**
3950
3866
  * SignUpForm - Pure React component for Google OAuth sign-up
@@ -4161,6 +4077,37 @@ interface TagSchemasPageProps {
4161
4077
  }
4162
4078
  declare function TagSchemasPage({ schemas, isLoading, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: TagSchemasPageProps): React__default.JSX.Element;
4163
4079
 
4080
+ /**
4081
+ * ShellStateUnit — app-shell state: which toolbar panel is open, tab-bar
4082
+ * coordination helpers, scroll-to-annotation signals. Lives on
4083
+ * `SemiontBrowser`'s app-scoped bus (not the per-session client bus)
4084
+ * because panel toggles and shell chrome must work regardless of
4085
+ * whether a KB session is active.
4086
+ *
4087
+ * Channels: `panel:toggle`, `panel:open`, `panel:close`.
4088
+ */
4089
+
4090
+ type ToolbarPanelType = 'history' | 'info' | 'annotations' | 'settings' | 'collaboration' | 'user' | 'jsonld' | 'knowledge-base';
4091
+ declare const COMMON_PANELS: readonly ToolbarPanelType[];
4092
+ declare const RESOURCE_PANELS: readonly ToolbarPanelType[];
4093
+ interface ShellStateUnit extends StateUnit {
4094
+ activePanel$: Observable<ToolbarPanelType | null>;
4095
+ scrollToAnnotationId$: Observable<string | null>;
4096
+ panelInitialTab$: Observable<{
4097
+ tab: AnnotatorKey;
4098
+ generation: number;
4099
+ } | null>;
4100
+ openPanel(panel: string): void;
4101
+ closePanel(): void;
4102
+ togglePanel(panel: string): void;
4103
+ onScrollCompleted(): void;
4104
+ }
4105
+ interface ShellStateUnitOptions {
4106
+ initialPanel?: ToolbarPanelType | null;
4107
+ onPanelChange?: (panel: ToolbarPanelType | null) => void;
4108
+ }
4109
+ declare function createShellStateUnit(browser: SemiontBrowser, options?: ShellStateUnitOptions): ShellStateUnit;
4110
+
4164
4111
  /**
4165
4112
  * A cache-backed list in its real states.
4166
4113
  *
@@ -4198,26 +4145,15 @@ interface ListState<T> {
4198
4145
  retry(): void;
4199
4146
  }
4200
4147
 
4201
- type ComposeMode = 'new' | 'clone' | 'reference';
4148
+ type ComposeMode = 'new' | 'clone';
4202
4149
  interface ComposeParams {
4203
4150
  mode?: string | undefined;
4204
4151
  token?: string | undefined;
4205
- annotationUri?: string | undefined;
4206
- sourceDocumentId?: string | undefined;
4207
- name?: string | undefined;
4208
- entityTypes?: string | undefined;
4209
- storedContext?: string | undefined;
4210
4152
  }
4211
4153
  interface CloneData {
4212
4154
  sourceResource: ResourceDescriptor;
4213
4155
  sourceContent: string;
4214
4156
  }
4215
- interface ReferenceData {
4216
- annotationUri: string;
4217
- sourceDocumentId: string;
4218
- name: string;
4219
- entityTypes: string[];
4220
- }
4221
4157
  interface SaveResourceParams$1 {
4222
4158
  mode: ComposeMode;
4223
4159
  name: string;
@@ -4229,16 +4165,12 @@ interface SaveResourceParams$1 {
4229
4165
  entityTypes?: string[];
4230
4166
  language: string;
4231
4167
  archiveOriginal?: boolean;
4232
- annotationUri?: string;
4233
- sourceDocumentId?: string;
4234
4168
  }
4235
4169
  interface ComposePageStateUnit extends StateUnit {
4236
4170
  browse: ShellStateUnit;
4237
4171
  mode$: Observable<ComposeMode>;
4238
4172
  loading$: Observable<boolean>;
4239
4173
  cloneData$: Observable<CloneData | null>;
4240
- referenceData$: Observable<ReferenceData | null>;
4241
- gatheredContext$: Observable<GatheredContext | null>;
4242
4174
  entityTypes: ListState<string[]>;
4243
4175
  /**
4244
4176
  * Live upload-progress for the in-flight `save(...)` call. Emits the
@@ -4255,15 +4187,14 @@ declare function createComposePageStateUnit(session: SemiontSession, browse: She
4255
4187
  * ResourceComposePage Component
4256
4188
  *
4257
4189
  * Pure React component for creating and editing resources.
4258
- * Supports three modes: new resource, clone, and reference completion.
4190
+ * Supports two modes: new resource and clone. (Reference completion moved
4191
+ * into the resolve wizard — COMPOSE-IN-MODAL.)
4259
4192
  * All dependencies passed as props - no Next.js hooks!
4260
4193
  */
4261
4194
 
4262
4195
  interface ResourceComposePageProps {
4263
- mode: 'new' | 'clone' | 'reference';
4196
+ mode: 'new' | 'clone';
4264
4197
  cloneData?: CloneData | null;
4265
- referenceData?: ReferenceData | null;
4266
- gatheredContext?: GatheredContext | null;
4267
4198
  availableEntityTypes: string[];
4268
4199
  initialLocale: string;
4269
4200
  theme: 'light' | 'dark';
@@ -4281,10 +4212,7 @@ interface ResourceComposePageProps {
4281
4212
  translations: {
4282
4213
  title: string;
4283
4214
  titleEditClone: string;
4284
- titleCompleteReference: string;
4285
4215
  subtitleClone: string;
4286
- subtitleReference: string;
4287
- linkedNoticePrefix: string;
4288
4216
  resourceName: string;
4289
4217
  resourceNamePlaceholder: string;
4290
4218
  entityTypes: string;
@@ -4306,16 +4234,14 @@ interface ResourceComposePageProps {
4306
4234
  cancel: string;
4307
4235
  saving: string;
4308
4236
  creating: string;
4309
- creatingAndLinking: string;
4310
4237
  saveClonedResource: string;
4311
- createAndLinkResource: string;
4312
4238
  createResource: string;
4313
4239
  };
4314
4240
  ToolbarPanels: React__default.ComponentType<any>;
4315
4241
  Toolbar: React__default.ComponentType<any>;
4316
4242
  }
4317
4243
  interface SaveResourceParams {
4318
- mode: 'new' | 'clone' | 'reference';
4244
+ mode: 'new' | 'clone';
4319
4245
  name: string;
4320
4246
  storageUri: string;
4321
4247
  content?: string;
@@ -4325,10 +4251,8 @@ interface SaveResourceParams {
4325
4251
  entityTypes?: string[];
4326
4252
  language: string;
4327
4253
  archiveOriginal?: boolean;
4328
- annotationUri?: string;
4329
- sourceDocumentId?: string;
4330
4254
  }
4331
- declare function ResourceComposePage({ mode, cloneData, referenceData, gatheredContext, availableEntityTypes, initialLocale, theme, hoverDelayMs, activePanel, onSaveResource, onCancel, uploadProgress, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): React__default.JSX.Element;
4255
+ declare function ResourceComposePage({ mode, cloneData, availableEntityTypes, initialLocale, theme, hoverDelayMs, activePanel, onSaveResource, onCancel, uploadProgress, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): React__default.JSX.Element;
4332
4256
 
4333
4257
  /**
4334
4258
  * Inline upload-progress affordance for the compose page.
@@ -4499,6 +4423,7 @@ interface ResourceViewerPageProps {
4499
4423
  * @subscribes yield:clone - Clone the current resource
4500
4424
  * @subscribes beckon:sparkle - Trigger sparkle animation
4501
4425
  * @subscribes mark:added - Annotation was created (sparkle)
4426
+ * @subscribes mark:body-updated - Reference resolved via a linking-add operation (sparkle, both loci)
4502
4427
  * @subscribes browse:resource-open - Open a resource in the viewer (local links + the launcher's tour verbs)
4503
4428
  * @subscribes browse:entity-type-clicked - Navigate filtered by entity type
4504
4429
  *
@@ -4684,5 +4609,5 @@ declare function useShellStateUnit(): ShellStateUnit;
4684
4609
  */
4685
4610
  declare function useObservable<T>(obs$: Observable<T> | null | undefined): T | undefined;
4686
4611
 
4687
- export { ANNOTATORS, AVAILABLE_LOCALES, AdminDevOpsPage, AdminExchangePage, AdminSecurityPage, AdminUsersPage, AnnotateToolbar, AnnotateView, AnnotationHistory, AnnotationOverlay, AnnotationProvider, AssessmentEntry, AssessmentPanel, AssistProgress, AssistSection, AssistShell, AsyncErrorBoundary, AuthErrorDisplay, BrowseView, Button, ButtonGroup, COMMON_PANELS, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, CommentEntry, CommentsPanel, ComposeLoadingState, DownloadFileLink, EntityTagsPage, EntityTypeBadges, ErrorBoundary, ExportCard, Footer, HighlightEntry, HighlightPanel, HistoryEvent, ImageAnnotateRenderer, ImageBrowseRenderer, ImageURLSchema, ImageViewer, ImportCard, ImportProgress, JsonLdPanel, JsonLdView, KeyboardShortcutsHelpModal, LeftSidebar, LineNumbersProvider, LinkedDataPage, LiveRegionProvider, NavigationMenu, OAuthUserSchema, ObservableLink, PageLayout, PanelHeader, PdfAnnotateRenderer, PdfBrowseRenderer, PermissionDeniedModal, PopupContainer, PopupHeader, ProtectedErrorBoundary, RESOURCE_PANELS, RecentDocumentsPage, ReferenceEntry, ReferenceResolutionWidget, ReferenceWizardModal, ReferencesPanel, ResizeHandle, ResourceAnnotationsProvider, ResourceCard, ResourceComposePage, ResourceDiscoveryPage, ResourceErrorState, ResourceGenerateModal, ResourceInfoPanel, ResourceLoadingState, ResourceSearchModal, ResourceTagsInline, ResourceViewer, ResourceViewerPage, SearchModal, SelectedTextDisplay, SemiontBranding, SemiontFavicon, SemiontProvider, SessionExpiredModal, SessionExpiryBanner, SessionTimer, SettingsPanel, SignInForm, SignUpForm, SimpleNavigation, SkipLinks, SortableResourceTab, StatisticsPanel, StatusDisplay, SvgDrawingCanvas, TagEntry, TagSchemasPage, TaggingPanel, TextAnnotateRenderer, TextBrowseRenderer, ThemeProvider, ToastContainer, ToastProvider, Toolbar, TranslationProvider, UnifiedAnnotationsPanel, UnifiedHeader, UploadProgressBar, UserMenuSkeleton, WebBrowserStorage, WelcomePage, annotatorKeyForMotivation, applyHighlights, buildSourceToRenderedMap, buildTextNodeIndex, buttonStyles, clearHighlights, createAdminSecurityStateUnit, createAdminUsersStateUnit, createComposePageStateUnit, createDiscoverStateUnit, createEntityTagsStateUnit, createExchangeStateUnit, createResourceLoaderStateUnit, createResourceViewerPageStateUnit, createSessionStateUnit, createShellStateUnit, createWelcomeStateUnit, cssVariables, defaultAnnotateRenderers, defaultBrowseRenderers, faviconPaths, formatTime, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, hideWidgetPreview, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, mediaUrl, resolveAnnotationRanges, sanitizeImageURL, saveSelectedShapeForSelectorType, setPdfWorkerSrc, showWidgetPreview, supportsDetection, toOverlayAnnotations, tokens, useAnnotationManager, useCollaborators, useDebounce, useDebouncedCallback, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEventSubscription, useEventSubscriptions, useFormAnnouncements, useHoverDelay, useHoverEmitter, useIsTyping, useKBDiscovery, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useMediaToken, useObservable, useObservableExternalNavigation, useObservableRouter, usePanelWidth, usePendingCreation, usePreloadTranslations, useResourceAnnotations, useResourceContent, useResourceGather, useResourceLoader, useResourceLoadingAnnouncements, useRovingTabIndex, useSearchAnnouncements, useSemiont, useSessionEventSubscriptions, useSessionExpiry, useSessionStateUnit, useShellStateUnit, useStateUnit, useTheme, useToast, useToolbarPrefs, useTranslations };
4688
- export type { AdminDevOpsPageProps, AdminExchangePageProps, AdminExchangePageTranslations, AdminSecurityPageProps, AdminSecurityStateUnit, AdminUser, AdminUserStats, AdminUsersPageProps, AdminUsersStateUnit, AnnotateMediaRendererProps, AnnotateMediaRenderers, AnnotationConfig, AnnotationCreationHandler, AnnotationGroups, AnnotationHandlers, AnnotationManager, AnnotationProviderProps, AnnotationUIState, AnnotationsCollection, Annotator, AnnotatorKey, AssistDataType, AssistProgressProps, AssistProgressTranslations, AssistShellProps, AuthErrorDisplayProps, AvailableLocale, BorderRadiusToken, BrowseMediaRenderers, ButtonGroupProps, ButtonProps, ClickAction, CloneData, CollapsibleResourceNavigationProps, ColorToken, ComposeLoadingStateProps, ComposeMode, ComposePageStateUnit, ComposeParams, CreateAnnotationParams, CreateConfig, DeleteAnnotationParams, DetectionConfig, DevOpsFeature, DiscoverStateUnit, DrawingMode, EntityTagsPageProps, EntityTagsStateUnit, ExchangeStateUnit, ExportCardProps, ExportCardTranslations, HoverEmitterProps, ImportCardProps, ImportCardTranslations, ImportPreview, ImportProgressProps, ImportProgressTranslations, KBDiscoveryOptions, KBDiscoveryResult, KeyboardShortcut, LinkComponentProps, LinkedDataPageProps, LinkedDataPageTranslations, MediaRendererProps, Motivation$7 as Motivation, NavigationItem, NavigationMenuHelper, NavigationProps, OAuthProvider, OAuthUser, ObservableLinkProps, OverlayAnnotation, PendingCreation, RecentDocumentsPageProps, ReferenceData, ReferenceHover, ReferenceWizardModalProps, ResolvedTheme, ResourceCardProps, ResourceComposePageProps, ResourceDiscoveryPageProps, ResourceErrorStateProps, ResourceGatherOptions, ResourceGenerateModalProps, ResourceGenerateModalTranslations, ResourceLoaderStateUnit, ResourceSearchModalProps, ResourceViewerPageProps, ResourceViewerPageStateUnit, RouteBuilder, SaveResourceParams$1 as SaveResourceParams, SearchModalProps, SelectionMotivation, SelectorType, SemiontProviderProps, SemiontResource$1 as SemiontResource, SessionStateUnit, ShadowToken, ShapeType, ShellStateUnit, ShellStateUnitOptions, SignInFormProps, SignUpFormProps, SimpleNavigationItem, SimpleNavigationProps, SortableResourceTabProps, SpacingToken, TagSchemasPageProps, TextSegment, TextSelection, Theme, ToastMessage, ToastType, ToolbarPanelType, ToolbarPart, ToolbarPrefs, TransitionToken, TranslationManager, TranslationProviderProps, TypographyToken, UICreateAnnotationParams, UploadProgressBarProps, UseCollaboratorsResult, UseMediaTokenResult, UseResourceContentResult, UseResourceGatherResult, UseResourceLoaderResult, WelcomePageProps, WelcomeStateUnit, WizardState };
4612
+ export { ANNOTATORS, AVAILABLE_LOCALES, AdminDevOpsPage, AdminSecurityPage, AdminUsersPage, AnnotateToolbar, AnnotateView, AnnotationHistory, AnnotationOverlay, AnnotationProvider, AssessmentEntry, AssessmentPanel, AssistProgress, AssistSection, AssistShell, AsyncErrorBoundary, AuthErrorDisplay, BrowseView, Button, ButtonGroup, COMMON_PANELS, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, CommentEntry, CommentsPanel, ComposeLoadingState, DownloadFileLink, EntityTagsPage, EntityTypeBadges, ErrorBoundary, Footer, HighlightEntry, HighlightPanel, HistoryEvent, ImageAnnotateRenderer, ImageBrowseRenderer, ImageURLSchema, ImageViewer, JsonLdPanel, JsonLdView, KeyboardShortcutsHelpModal, LeftSidebar, LineNumbersProvider, LiveRegionProvider, NavigationMenu, OAuthUserSchema, ObservableLink, PageLayout, PanelHeader, PdfAnnotateRenderer, PdfBrowseRenderer, PermissionDeniedModal, PopupContainer, PopupHeader, ProtectedErrorBoundary, RESOURCE_PANELS, RecentDocumentsPage, ReferenceEntry, ReferenceResolutionWidget, ReferenceWizardModal, ReferencesPanel, ResizeHandle, ResourceAnnotationsProvider, ResourceCard, ResourceComposePage, ResourceDiscoveryPage, ResourceErrorState, ResourceGenerateModal, ResourceInfoPanel, ResourceLoadingState, ResourceTagsInline, ResourceViewer, ResourceViewerPage, SearchModal, SelectedTextDisplay, SemiontBranding, SemiontFavicon, SemiontProvider, SessionExpiredModal, SessionExpiryBanner, SessionTimer, SettingsPanel, SignInForm, SignUpForm, SimpleNavigation, SkipLinks, SortableResourceTab, StatisticsPanel, StatusDisplay, SvgDrawingCanvas, TagEntry, TagSchemasPage, TaggingPanel, TextAnnotateRenderer, TextBrowseRenderer, ThemeProvider, ToastContainer, ToastProvider, Toolbar, TranslationProvider, UnifiedAnnotationsPanel, UnifiedHeader, UploadProgressBar, UserMenuSkeleton, WebBrowserStorage, WelcomePage, annotatorKeyForMotivation, applyHighlights, buildSourceToRenderedMap, buildTextNodeIndex, buttonStyles, clearHighlights, createAdminSecurityStateUnit, createAdminUsersStateUnit, createComposePageStateUnit, createDiscoverStateUnit, createEntityTagsStateUnit, createResourceLoaderStateUnit, createResourceViewerPageStateUnit, createSessionStateUnit, createShellStateUnit, createWelcomeStateUnit, cssVariables, defaultAnnotateRenderers, defaultBrowseRenderers, faviconPaths, formatTime, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, hideWidgetPreview, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, mediaUrl, resolveAnnotationSpans, sanitizeImageURL, saveSelectedShapeForSelectorType, setPdfWorkerSrc, showWidgetPreview, supportsDetection, toOverlayAnnotations, tokens, useAnnotationManager, useCollaborators, useDebounce, useDebouncedCallback, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEventSubscription, useEventSubscriptions, useFormAnnouncements, useHoverDelay, useHoverEmitter, useIsTyping, useKBDiscovery, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useMediaToken, useObservable, useObservableExternalNavigation, useObservableRouter, usePanelWidth, usePendingCreation, usePreloadTranslations, useResourceAnnotations, useResourceContent, useResourceLoader, useResourceLoadingAnnouncements, useRovingTabIndex, useSearchAnnouncements, useSemiont, useSessionEventSubscriptions, useSessionExpiry, useSessionStateUnit, useShellStateUnit, useStateUnit, useTheme, useToast, useToolbarPrefs, useTranslations };
4613
+ export type { AdminDevOpsPageProps, AdminSecurityPageProps, AdminSecurityStateUnit, AdminUser, AdminUserStats, AdminUsersPageProps, AdminUsersStateUnit, AnnotateMediaRendererProps, AnnotateMediaRenderers, AnnotationConfig, AnnotationCreationHandler, AnnotationGroups, AnnotationHandlers, AnnotationManager, AnnotationProviderProps, AnnotationUIState, AnnotationsCollection, Annotator, AnnotatorKey, AssistDataType, AssistProgressProps, AssistProgressTranslations, AssistShellProps, AuthErrorDisplayProps, AvailableLocale, BorderRadiusToken, BrowseMediaRenderers, ButtonGroupProps, ButtonProps, ClickAction, CloneData, CollapsibleResourceNavigationProps, ColorToken, ComposeLoadingStateProps, ComposeMode, ComposePageStateUnit, ComposeParams, CreateAnnotationParams, CreateConfig, DeleteAnnotationParams, DetectionConfig, DevOpsFeature, DiscoverStateUnit, DrawingMode, EntityTagsPageProps, EntityTagsStateUnit, HoverEmitterProps, KBDiscoveryOptions, KBDiscoveryResult, KeyboardShortcut, LinkComponentProps, MediaRendererProps, Motivation$7 as Motivation, NavigationItem, NavigationMenuHelper, NavigationProps, OAuthProvider, OAuthUser, ObservableLinkProps, OverlayAnnotation, PendingCreation, RecentDocumentsPageProps, ReferenceHover, ReferenceWizardModalProps, ResolvedAnnotationSpan, ResolvedTheme, ResourceCardProps, ResourceComposePageProps, ResourceDiscoveryPageProps, ResourceErrorStateProps, ResourceGenerateModalProps, ResourceGenerateModalTranslations, ResourceLoaderStateUnit, ResourceViewerPageProps, ResourceViewerPageStateUnit, RouteBuilder, SaveResourceParams$1 as SaveResourceParams, SearchModalProps, SelectionMotivation, SelectorType, SemiontProviderProps, SemiontResource$1 as SemiontResource, SessionStateUnit, ShadowToken, ShapeType, ShellStateUnit, ShellStateUnitOptions, SignInFormProps, SignUpFormProps, SimpleNavigationItem, SimpleNavigationProps, SortableResourceTabProps, SpacingToken, TagSchemasPageProps, TextNodeEntry, TextSegment, TextSelection, Theme, ToastMessage, ToastType, ToolbarPanelType, ToolbarPart, ToolbarPrefs, TransitionToken, TranslationManager, TranslationProviderProps, TypographyToken, UICreateAnnotationParams, UploadProgressBarProps, UseCollaboratorsResult, UseMediaTokenResult, UseResourceContentResult, UseResourceLoaderResult, WelcomePageProps, WelcomeStateUnit, WizardState };