@semiont/react-ui 0.5.26 → 0.5.28

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 (242) hide show
  1. package/README.md +28 -4
  2. package/dist/{PdfAnnotationCanvas.client-6ZSF6ZTJ.js → PdfAnnotationCanvas.client-C2IGG4SW.js} +33 -6
  3. package/dist/{PdfAnnotationCanvas.client-JCJMXWWJ.css → PdfAnnotationCanvas.client-TGDPPGXJ.css} +6 -1
  4. package/dist/{ar-YTUUGK2O.js → ar-FABPTJVB.js} +88 -26
  5. package/dist/{bn-ASGNGPMD.js → bn-LKP6BDMH.js} +88 -26
  6. package/dist/{chunk-L3WKRWP3.js → chunk-2GOHTTHW.js} +88 -26
  7. package/dist/{chunk-OBQOZCJE.js → chunk-2YHEE63S.js} +31 -31
  8. package/dist/{cs-WMYVAOZY.js → cs-YQYNWHRG.js} +88 -26
  9. package/dist/{da-FSHHN4D6.js → da-QHZOYKRY.js} +88 -26
  10. package/dist/{de-FJFO3TPT.js → de-GKA7RD7J.js} +88 -26
  11. package/dist/{el-XOH4QIAG.js → el-45T257AL.js} +88 -26
  12. package/dist/{en-3FCBW3YD.js → en-RVW5EQ66.js} +4 -2
  13. package/dist/{es-HDX4QI7E.js → es-AVER7RU4.js} +88 -26
  14. package/dist/{fa-DJ6WTFTJ.js → fa-K3VPK3O2.js} +88 -26
  15. package/dist/{fi-4S7H7W7U.js → fi-5NEKF7EB.js} +88 -26
  16. package/dist/{fr-6UJSYHXC.js → fr-FUMNDLBZ.js} +88 -26
  17. package/dist/{he-ZZJOHJX2.js → he-3JGNA3PR.js} +88 -26
  18. package/dist/{hi-HZJTAW7U.js → hi-IJY375DF.js} +88 -26
  19. package/dist/{id-E3I6ILEM.js → id-LWHKJ7ZD.js} +88 -26
  20. package/dist/index.css +380 -524
  21. package/dist/index.d.ts +318 -192
  22. package/dist/index.js +2960 -2421
  23. package/dist/integrations/css-modules-helper.js +1 -3
  24. package/dist/{it-ULAPAD7U.js → it-EBVOV4RW.js} +88 -26
  25. package/dist/{ja-SAHZQ4CZ.js → ja-KWRIX2NF.js} +88 -26
  26. package/dist/{ko-DFU2ADQ4.js → ko-L5CJMFDS.js} +88 -26
  27. package/dist/{ms-NWL76XNT.js → ms-LSNMJDR2.js} +88 -26
  28. package/dist/{nl-ATCM76WN.js → nl-ZB32MB7U.js} +88 -26
  29. package/dist/{no-UIAQ5RJF.js → no-4GTNY7M5.js} +88 -26
  30. package/dist/{pl-NOECQDXD.js → pl-LUHBLTHB.js} +88 -26
  31. package/dist/{pt-SVWIIUPC.js → pt-C4H3UNQ6.js} +88 -26
  32. package/dist/{ro-NR2DRTZG.js → ro-GGITS5V4.js} +88 -26
  33. package/dist/{sv-STVJ37JP.js → sv-T56RTLBP.js} +88 -26
  34. package/dist/test-utils.css +1 -1
  35. package/dist/test-utils.d.ts +1 -1
  36. package/dist/test-utils.js +2 -2
  37. package/dist/{th-UWQR4K54.js → th-22X2IWCB.js} +88 -26
  38. package/dist/{tr-WNXZSD27.js → tr-77TFG62H.js} +88 -26
  39. package/dist/{uk-SJRMB47Y.js → uk-MIIL6NXT.js} +88 -26
  40. package/dist/{vi-TMRQFES2.js → vi-7JYOIGNV.js} +88 -26
  41. package/dist/{zh-QOL3LYEM.js → zh-ID6DRYU4.js} +88 -26
  42. package/package.json +11 -10
  43. package/src/components/AssistProgress.tsx +178 -134
  44. package/src/components/CodeMirrorRenderer.tsx +8 -8
  45. package/src/components/{EntityFoundLog.tsx → ItemFoundLog.tsx} +12 -7
  46. package/src/components/ProtectedErrorBoundary.css +3 -1
  47. package/src/components/StatusDisplay.css +1 -1
  48. package/src/components/Toast.css +3 -1
  49. package/src/components/__tests__/AssistProgress.test.tsx +268 -141
  50. package/src/components/annotation/annotation-entries.css +0 -4
  51. package/src/components/annotation/references.css +0 -4
  52. package/src/components/image-annotation/AnnotationOverlay.tsx +6 -6
  53. package/src/components/image-annotation/SvgDrawingCanvas.tsx +1 -1
  54. package/src/components/image-annotation/__tests__/AnnotationOverlay.click.test.tsx +7 -9
  55. package/src/components/image-annotation/__tests__/SvgDrawingCanvas.click.test.tsx +1 -2
  56. package/src/components/layout/Header.css +0 -4
  57. package/src/components/layout/LeftSidebar.css +0 -4
  58. package/src/components/modals/ComposeStep.tsx +218 -0
  59. package/src/components/modals/ConfigureGatherStep.tsx +10 -18
  60. package/src/components/modals/ConfigureGenerationStep.tsx +131 -54
  61. package/src/components/modals/ConfigureSearchStep.tsx +42 -40
  62. package/src/components/modals/ContextSummary.tsx +185 -72
  63. package/src/components/modals/CorpusPane.tsx +75 -0
  64. package/src/components/modals/DiscardPrompt.tsx +38 -0
  65. package/src/components/modals/GatherContextStep.tsx +237 -107
  66. package/src/components/modals/ReferenceWizardModal.tsx +287 -60
  67. package/src/components/modals/ResourceGenerateModal.tsx +233 -109
  68. package/src/components/modals/SearchModal.css +335 -111
  69. package/src/components/modals/SearchModal.tsx +1 -1
  70. package/src/components/modals/SearchResultsStep.tsx +63 -88
  71. package/src/components/modals/WizardFooter.tsx +69 -0
  72. package/src/components/modals/__tests__/ComposeStep.test.tsx +152 -0
  73. package/src/components/modals/__tests__/ConfigureGatherStep.test.tsx +14 -26
  74. package/src/components/modals/__tests__/ConfigureGenerationStep.test.tsx +290 -0
  75. package/src/components/modals/__tests__/ConfigureSearchStep.test.tsx +95 -0
  76. package/src/components/modals/__tests__/GatherContextStep.resource.test.tsx +463 -25
  77. package/src/components/modals/__tests__/ReferenceWizardModal.test.tsx +635 -0
  78. package/src/components/modals/__tests__/ResourceGenerateModal.test.tsx +277 -85
  79. package/src/components/modals/__tests__/SearchModal.search-wiring.test.tsx +6 -2
  80. package/src/components/modals/__tests__/SearchResultsStep.test.tsx +61 -0
  81. package/src/components/modals/__tests__/WizardFooter.test.tsx +344 -0
  82. package/src/components/modals/modals.css +16 -42
  83. package/src/components/navigation/NavigationTabs.css +0 -20
  84. package/src/components/pdf-annotation/PdfAnnotationCanvas.css +21 -2
  85. package/src/components/pdf-annotation/PdfAnnotationCanvas.tsx +36 -3
  86. package/src/components/pdf-annotation/__tests__/PdfAnnotationCanvas.test.tsx +41 -6
  87. package/src/components/resource/AnnotateView.tsx +19 -8
  88. package/src/components/resource/AnnotationHistory.tsx +2 -0
  89. package/src/components/resource/BrowseView.tsx +20 -9
  90. package/src/components/resource/ResourceViewer.tsx +27 -28
  91. package/src/components/resource/__tests__/AnnotateView.embeddable.test.tsx +1 -1
  92. package/src/components/resource/__tests__/AnnotateView.focus.test.tsx +50 -0
  93. package/src/components/resource/__tests__/AnnotationHistory.test.tsx +2 -0
  94. package/src/components/resource/__tests__/BrowseView.embeddable.test.tsx +1 -1
  95. package/src/components/resource/__tests__/BrowseView.test.tsx +38 -12
  96. package/src/components/resource/__tests__/ResourceViewer.embeddable.test.tsx +47 -3
  97. package/src/components/resource/annotate-renderers.tsx +3 -3
  98. package/src/components/resource/event-formatting.ts +0 -3
  99. package/src/components/resource/panels/AssessmentEntry.tsx +1 -1
  100. package/src/components/resource/panels/AssessmentPanel.css +5 -6
  101. package/src/components/resource/panels/AssistSection.css +95 -263
  102. package/src/components/resource/panels/AssistSection.tsx +4 -4
  103. package/src/components/resource/panels/AssistShell.tsx +12 -4
  104. package/src/components/resource/panels/CollaborationPanel.css +47 -22
  105. package/src/components/resource/panels/CollaborationPanel.tsx +93 -2
  106. package/src/components/resource/panels/CommentEntry.tsx +1 -1
  107. package/src/components/resource/panels/CommentsPanel.css +0 -16
  108. package/src/components/resource/panels/HighlightEntry.tsx +1 -1
  109. package/src/components/resource/panels/HighlightPanel.css +0 -7
  110. package/src/components/resource/panels/JsonLdPanel.css +0 -4
  111. package/src/components/resource/panels/ReferenceEntry.tsx +10 -3
  112. package/src/components/resource/panels/ReferencesPanel.css +0 -12
  113. package/src/components/resource/panels/ReferencesPanel.tsx +16 -20
  114. package/src/components/resource/panels/ResourceInfoPanel.css +0 -32
  115. package/src/components/resource/panels/ResourceInfoPanel.tsx +89 -20
  116. package/src/components/resource/panels/StatisticsPanel.css +0 -20
  117. package/src/components/resource/panels/TagEntry.tsx +1 -1
  118. package/src/components/resource/panels/TaggingPanel.css +0 -4
  119. package/src/components/resource/panels/TaggingPanel.tsx +2 -10
  120. package/src/components/resource/panels/UnifiedAnnotationsPanel.css +0 -4
  121. package/src/components/resource/panels/UnifiedAnnotationsPanel.tsx +7 -2
  122. package/src/components/resource/panels/__tests__/AssessmentEntry.test.tsx +0 -1
  123. package/src/components/resource/panels/__tests__/AssistSection.test.tsx +48 -50
  124. package/src/components/resource/panels/__tests__/AssistShell.test.tsx +11 -6
  125. package/src/components/resource/panels/__tests__/CollaborationPanel.test.tsx +89 -0
  126. package/src/components/resource/panels/__tests__/CommentEntry.test.tsx +1 -2
  127. package/src/components/resource/panels/__tests__/HighlightEntry.test.tsx +0 -1
  128. package/src/components/resource/panels/__tests__/HighlightPanel.annotationProgress.test.tsx +44 -36
  129. package/src/components/resource/panels/__tests__/ReferenceEntry.test.tsx +41 -1
  130. package/src/components/resource/panels/__tests__/ReferencesPanel.headless.test.tsx +1 -1
  131. package/src/components/resource/panels/__tests__/ReferencesPanel.test.tsx +67 -54
  132. package/src/components/resource/panels/__tests__/ResourceInfoPanel.test.tsx +185 -7
  133. package/src/components/resource/panels/__tests__/TagEntry.test.tsx +0 -1
  134. package/src/components/settings/SettingsPanel.css +0 -4
  135. package/src/features/auth/auth.css +2 -26
  136. package/src/features/resource-compose/__tests__/ResourceComposePage.test.tsx +0 -65
  137. package/src/features/resource-compose/components/ResourceComposePage.tsx +17 -130
  138. package/src/features/resource-compose/state/__tests__/compose-page-state-unit.test.ts +1 -76
  139. package/src/features/resource-compose/state/compose-page-state-unit.ts +5 -48
  140. package/src/features/resource-discovery/__tests__/ResourceDiscoveryPage.test.tsx +55 -0
  141. package/src/features/resource-discovery/components/ResourceDiscoveryPage.tsx +29 -0
  142. package/src/features/resource-discovery/state/__tests__/discover-state-unit.test.ts +53 -3
  143. package/src/features/resource-discovery/state/discover-state-unit.ts +29 -8
  144. package/src/features/resource-viewer/__tests__/ResourceViewerPage.test.tsx +71 -15
  145. package/src/features/resource-viewer/components/ResourceViewerPage.tsx +166 -71
  146. package/src/features/resource-viewer/hooks/__tests__/useResourceViewedReport.test.tsx +63 -0
  147. package/src/features/resource-viewer/hooks/useResourceViewedReport.ts +33 -0
  148. package/src/features/resource-viewer/state/__tests__/resource-viewer-page-state-unit.test.ts +2 -2
  149. package/src/features/resource-viewer/state/resource-viewer-page-state-unit.ts +1 -1
  150. package/src/styles/core/buttons.css +3 -1
  151. package/src/styles/core/forms.css +35 -29
  152. package/src/styles/core/indicators.css +0 -4
  153. package/src/styles/core/inputs.css +0 -4
  154. package/src/styles/core/progress.css +2 -34
  155. package/src/styles/core/sliders.css +0 -4
  156. package/src/styles/core/toggles.css +0 -4
  157. package/src/styles/features/resource-discovery.css +13 -0
  158. package/src/styles/features/resource-viewer.css +0 -42
  159. package/src/styles/features/resource.css +0 -4
  160. package/src/styles/motivations/motivation-assessment.css +2 -2
  161. package/src/styles/panels/history-panel.css +0 -40
  162. package/src/styles/panels/user-panel.css +0 -3
  163. package/src/styles/patterns/panel-helpers.css +0 -27
  164. package/src/styles/patterns/panel-sections.css +0 -59
  165. package/src/styles/patterns/panels-base.css +0 -32
  166. package/translations/ar.json +84 -24
  167. package/translations/bn.json +84 -24
  168. package/translations/cs.json +84 -24
  169. package/translations/da.json +84 -24
  170. package/translations/de.json +84 -24
  171. package/translations/el.json +84 -24
  172. package/translations/en.json +84 -24
  173. package/translations/es.json +84 -24
  174. package/translations/fa.json +84 -24
  175. package/translations/fi.json +84 -24
  176. package/translations/fr.json +84 -24
  177. package/translations/he.json +84 -24
  178. package/translations/hi.json +84 -24
  179. package/translations/id.json +84 -24
  180. package/translations/it.json +84 -24
  181. package/translations/ja.json +84 -24
  182. package/translations/ko.json +84 -24
  183. package/translations/ms.json +84 -24
  184. package/translations/nl.json +84 -24
  185. package/translations/no.json +84 -24
  186. package/translations/pl.json +84 -24
  187. package/translations/pt.json +84 -24
  188. package/translations/ro.json +84 -24
  189. package/translations/sv.json +84 -24
  190. package/translations/th.json +84 -24
  191. package/translations/tr.json +84 -24
  192. package/translations/uk.json +84 -24
  193. package/translations/vi.json +84 -24
  194. package/translations/zh.json +84 -24
  195. package/dist/PdfAnnotationCanvas.client-6ZSF6ZTJ.js.map +0 -1
  196. package/dist/PdfAnnotationCanvas.client-JCJMXWWJ.css.map +0 -1
  197. package/dist/ar-YTUUGK2O.js.map +0 -1
  198. package/dist/bn-ASGNGPMD.js.map +0 -1
  199. package/dist/chunk-BTUG3VJJ.js.map +0 -1
  200. package/dist/chunk-L3WKRWP3.js.map +0 -1
  201. package/dist/chunk-O23TLLXW.js.map +0 -1
  202. package/dist/chunk-OBQOZCJE.js.map +0 -1
  203. package/dist/chunk-QT7LYM72.js.map +0 -1
  204. package/dist/chunk-VXASXU4K.js.map +0 -1
  205. package/dist/chunk-XUDKYAVC.js +0 -21
  206. package/dist/chunk-XUDKYAVC.js.map +0 -1
  207. package/dist/cs-WMYVAOZY.js.map +0 -1
  208. package/dist/da-FSHHN4D6.js.map +0 -1
  209. package/dist/de-FJFO3TPT.js.map +0 -1
  210. package/dist/el-XOH4QIAG.js.map +0 -1
  211. package/dist/en-3FCBW3YD.js.map +0 -1
  212. package/dist/es-HDX4QI7E.js.map +0 -1
  213. package/dist/fa-DJ6WTFTJ.js.map +0 -1
  214. package/dist/fi-4S7H7W7U.js.map +0 -1
  215. package/dist/fr-6UJSYHXC.js.map +0 -1
  216. package/dist/he-ZZJOHJX2.js.map +0 -1
  217. package/dist/hi-HZJTAW7U.js.map +0 -1
  218. package/dist/id-E3I6ILEM.js.map +0 -1
  219. package/dist/index.css.map +0 -1
  220. package/dist/index.js.map +0 -1
  221. package/dist/integrations/css-modules-helper.js.map +0 -1
  222. package/dist/integrations/styled-components-theme.js.map +0 -1
  223. package/dist/it-ULAPAD7U.js.map +0 -1
  224. package/dist/ja-SAHZQ4CZ.js.map +0 -1
  225. package/dist/ko-DFU2ADQ4.js.map +0 -1
  226. package/dist/ms-NWL76XNT.js.map +0 -1
  227. package/dist/nl-ATCM76WN.js.map +0 -1
  228. package/dist/no-UIAQ5RJF.js.map +0 -1
  229. package/dist/pl-NOECQDXD.js.map +0 -1
  230. package/dist/pt-SVWIIUPC.js.map +0 -1
  231. package/dist/ro-NR2DRTZG.js.map +0 -1
  232. package/dist/sv-STVJ37JP.js.map +0 -1
  233. package/dist/test-utils.css.map +0 -1
  234. package/dist/test-utils.js.map +0 -1
  235. package/dist/th-UWQR4K54.js.map +0 -1
  236. package/dist/tr-WNXZSD27.js.map +0 -1
  237. package/dist/uk-SJRMB47Y.js.map +0 -1
  238. package/dist/vi-TMRQFES2.js.map +0 -1
  239. package/dist/zh-QOL3LYEM.js.map +0 -1
  240. package/src/components/modals/ResourceSearchModal.tsx +0 -224
  241. package/src/components/modals/__tests__/ResourceSearchModal.test.tsx +0 -159
  242. package/src/integrations/tailwind-plugin.cjs +0 -224
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
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, 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, BackendDownload, ProgressEvent, 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';
10
+ import { SemiontClient, SemiontSession, DiscoveryTransport, DiscoveryState, SemiontBrowser, SessionStorage, SessionFactory, YieldOutcome, OpenResource, ResourceGatherOptions, TagSchema, UploadProgress, BeckonStateUnit, MarkStateUnit, GatherStateUnit, YieldStateUnit, ReferencedByEntry } from '@semiont/sdk';
11
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';
12
12
  import { Observable } from 'rxjs';
13
13
 
@@ -921,7 +921,7 @@ interface Router {
921
921
  * router.push('/know/discover', { reason: 'resource-closed' });
922
922
  *
923
923
  * // React Router
924
- * import { useNavigate } from 'react-router-dom';
924
+ * import { useNavigate } from 'react-router';
925
925
  * const navigate = useNavigate();
926
926
  * const router = useObservableRouter({ push: navigate });
927
927
  * router.push('/know/discover', { reason: 'resource-closed' });
@@ -1072,28 +1072,6 @@ interface UseResourceContentResult {
1072
1072
  */
1073
1073
  declare function useResourceContent(client: SemiontClient | null, rUri: ResourceId, resource: ResourceDescriptor, enabled?: boolean): UseResourceContentResult;
1074
1074
 
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
1075
  interface UseResourceLoaderResult {
1098
1076
  resource: ResourceDescriptor | undefined;
1099
1077
  annotations: AnnotationsCollection;
@@ -1123,6 +1101,32 @@ interface UseMediaTokenResult {
1123
1101
  */
1124
1102
  declare function useMediaToken(client: SemiontClient | null, id: ResourceId): UseMediaTokenResult;
1125
1103
 
1104
+ interface UseCollaboratorsResult {
1105
+ collaborators: CollaboratorEntry[];
1106
+ loading: boolean;
1107
+ error: Error | null;
1108
+ }
1109
+ /**
1110
+ * The KB's collaborator roster — its declared software agents, each with the
1111
+ * job types it serves and, when discovery could answer, its model's context and
1112
+ * output ceilings (INFERENCE-LIMITS-EXPOSURE).
1113
+ *
1114
+ * Takes the client explicitly rather than reaching for `useSemiont()`, matching
1115
+ * `useMediaToken(client)`: a bring-your-own-session host can use it with a bare
1116
+ * session, and the batteries-included page passes `session.client`.
1117
+ *
1118
+ * SUBSCRIBES rather than fetching once. `browse.agents()` is a `CacheObservable`
1119
+ * whose only refresh triggers are `bus:resume-gap` and an explicit `fresh()` —
1120
+ * a backend restart with a changed roster necessarily presents as an SSE gap, so
1121
+ * a one-shot read would pin the UI to a roster that no longer exists. Awaiting
1122
+ * it instead would also force a network round trip on every mount, which is
1123
+ * exactly what the cache exists to avoid.
1124
+ *
1125
+ * `error` is surfaced but empty-on-failure is the display contract: a roster
1126
+ * that cannot be read shows as no roster, never as a broken panel.
1127
+ */
1128
+ declare function useCollaborators(client: SemiontClient | null): UseCollaboratorsResult;
1129
+
1126
1130
  /**
1127
1131
  * Subscribe to session-scoped bus events on an explicit `SemiontSession` — the
1128
1132
  * provider-free counterpart to `useEventSubscriptions`. The embeddable viewer
@@ -1328,9 +1332,9 @@ declare function useEventSubscriptions(subscriptions: {
1328
1332
  }): void;
1329
1333
 
1330
1334
  interface ResourceAnnotationsContextType {
1331
- newAnnotationIds: Set<string>;
1335
+ sparkleAnnotationIds: Set<string>;
1332
1336
  markAnnotation: (rUri: ResourceId, motivation: 'highlighting' | 'linking' | 'assessing' | 'commenting' | 'tagging', selector: Selector | Selector[], body?: any[]) => Promise<string | undefined>;
1333
- clearNewAnnotationId: (id: AnnotationId) => void;
1337
+ clearSparkle: (id: AnnotationId) => void;
1334
1338
  triggerSparkleAnimation: (annotationId: string) => void;
1335
1339
  }
1336
1340
  declare function ResourceAnnotationsProvider({ children }: {
@@ -1475,7 +1479,7 @@ interface Props$c {
1475
1479
  }) => void;
1476
1480
  onChange?: (content: string) => void;
1477
1481
  editable?: boolean;
1478
- newAnnotationIds?: Set<string>;
1482
+ sparkleAnnotationIds?: Set<string>;
1479
1483
  hoveredAnnotationId?: string | null;
1480
1484
  scrollToAnnotationId?: string | null;
1481
1485
  sourceView?: boolean;
@@ -1486,73 +1490,121 @@ interface Props$c {
1486
1490
  generatingReferenceId?: string | null;
1487
1491
  hoverDelayMs: number;
1488
1492
  }
1489
- declare function CodeMirrorRenderer({ content, segments, onChange, editable, newAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, sourceView, showLineNumbers, enableWidgets, session, getTargetResourceName, generatingReferenceId, hoverDelayMs }: Props$c): React$1.JSX.Element;
1493
+ declare function CodeMirrorRenderer({ content, segments, onChange, editable, sparkleAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, sourceView, showLineNumbers, enableWidgets, session, getTargetResourceName, generatingReferenceId, hoverDelayMs }: Props$c): React$1.JSX.Element;
1490
1494
 
1491
- type JobProgress$8 = components['schemas']['JobProgress'];
1495
+ type JobProgress$9 = components['schemas']['JobProgress'];
1496
+ type JobProgressMessage = components['schemas']['JobProgressMessage'];
1492
1497
  /**
1493
- * Every string this component renders. Required by default and with NO
1494
- * English fallbacks (ASSIST-SURFACE-WARTS Lane A): a `tr.x || 'X'` default
1495
- * turns a forgotten key into English text in a Japanese UI, silently and
1496
- * only at runtime. Required keys make the same mistake a type error at the
1497
- * call site. Only genuinely conditional copy is optional.
1498
+ * Every string this component renders. Required by default and with NO English
1499
+ * fallbacks (ASSIST-SURFACE-WARTS Lane A): a `tr.x || 'X'` default turns a
1500
+ * forgotten key into English text in a Japanese UI, silently and only at
1501
+ * runtime. Required keys make the same mistake a type error at the call site.
1502
+ *
1503
+ * The nine wire codes collapse to ONE required function rather than nine keys:
1504
+ * the code→copy switch belongs in one place, and threading nine strings through
1505
+ * five call sites would put five copies of it in the tree. Build it with
1506
+ * `assistProgressCopy(t)`.
1498
1507
  */
1499
1508
  interface AssistProgressTranslations {
1500
- /** Header title (e.g. "Annotating Entity References" / "Generating Resource"). Omit for the headerless inline style. */
1501
- title?: string;
1502
- /** Cancel-button title attribute. */
1509
+ /** Control label while the run is in flight. */
1503
1510
  cancel: string;
1504
- /** Default in-progress status message (used when the job sends no `message`). */
1511
+ /** Control label once the run has ended. */
1512
+ close: string;
1513
+ /** Localized copy for a progress code. */
1514
+ message: (m: JobProgressMessage) => string;
1515
+ /**
1516
+ * Shown when no code has arrived yet — a pure liveness heartbeat, or an event
1517
+ * predating the coded wire. `JobProgress.message` is optional for exactly
1518
+ * these cases.
1519
+ */
1505
1520
  inProgress: string;
1506
- /** Status copy for the terminal 'complete' stage. */
1507
- complete: string;
1508
- /** Fallback status copy for the terminal 'error' stage. */
1509
- failed: string;
1510
- /** Request-parameters block heading. */
1511
- paramsTitle: string;
1512
- /** Current-work detail line — the generic form, used by every flow. */
1513
- processing: (label: string) => string;
1521
+ /**
1522
+ * The subject line: what is being worked on, with its position when known.
1523
+ * Takes the wire's `{ kind, value }` — the localized name for `kind` is the
1524
+ * translation layer's business, not this component's.
1525
+ */
1526
+ subject: (current: NonNullable<JobProgress$9['current']>, done?: number, total?: number) => string;
1527
+ /**
1528
+ * Localized NAME for an echoed request parameter. The wire sends a code
1529
+ * (`instructions`, `tone`, …); the VALUE beside it is the user's own words
1530
+ * and is never translated.
1531
+ */
1532
+ paramLabel: (code: string) => string;
1514
1533
  /** Completed entity-type log line (reference flow only). */
1515
1534
  found?: (count: number) => string;
1516
- /** Current-work detail line, reference-flow wording; falls back to `processing`. */
1517
- current?: (label: string) => string;
1518
- /** Dismiss-button label. */
1519
- close: string;
1520
1535
  }
1536
+ /**
1537
+ * The CSS `data-type` hook: five motivations plus generation. A closed set, so
1538
+ * it is typed as one — a typo used to produce unstyled chrome, silently
1539
+ * (CLEAN-PROGRESS A9).
1540
+ */
1541
+ type AssistDataType = 'highlight' | 'comment' | 'assessment' | 'reference' | 'tag' | 'generation';
1521
1542
  interface AssistProgressProps {
1522
- progress: JobProgress$8;
1523
- /** CSS `data-type` hook ('highlight' | 'comment' | … | 'reference' | 'tag' | 'generation'). */
1524
- dataType: string;
1525
- /** Cancel the underlying job rendered while running when provided. Caller wires `client.job.cancelRequest(...)`. */
1526
- onCancel?: () => void;
1543
+ progress: JobProgress$9;
1544
+ dataType: AssistDataType;
1545
+ /**
1546
+ * What the finished run produced, offered as a link in the ended frame
1547
+ * (GENERATE-FROM-RESOURCE D8). The label is the artifact's own name — user
1548
+ * content, never translated. Rendered only once `ended`: mid-run there is no
1549
+ * outcome to offer, whatever the caller has wired.
1550
+ */
1551
+ outcome?: {
1552
+ label: string;
1553
+ onOpen: () => void;
1554
+ } | undefined;
1527
1555
  /**
1528
- * Dismiss the display rendered whenever provided. WHEN dismissal is
1529
- * offered is the caller's policy (AssistShell withholds the callback while
1530
- * the assist is still running). Caller wires `client.mark.dismissProgress()`.
1556
+ * The owner's terminal sentence, rendered in place of the payload message
1557
+ * once `ended` (GENERATION-ARRIVAL P1). The producer's final frame is a
1558
+ * fire-and-forget emit that can lose the race with `job:complete`, so an
1559
+ * ended frame must not trust the last payload to describe the ending —
1560
+ * the owner, which signalled `ended`, supplies the words too. Inert while
1561
+ * the run is live.
1531
1562
  */
1563
+ endedMessage?: string;
1564
+ /**
1565
+ * The run has ENDED. The owner's fact, not the payload's
1566
+ * (ASSIST-PROGRESS-CONSOLIDATION D7): terminality is signalled on
1567
+ * `job:complete` / `job:fail`, which `AssistShell` already observes via
1568
+ * `isAssisting`. This component deliberately does not read `progress.stage` —
1569
+ * no producer in the repo emits a terminal stage, and the two branches that
1570
+ * believed the schema's description were unreachable for exactly that reason.
1571
+ *
1572
+ * REQUIRED (CLEAN-PROGRESS A1). It was optional, and the one call site that
1573
+ * forgot it shipped a flow that could never reach the ended state at all.
1574
+ * Nothing about a progress payload can tell this component the run is over,
1575
+ * so the owner must say — and a default of `false` is a wrong answer, not a
1576
+ * safe one.
1577
+ */
1578
+ ended: boolean;
1579
+ /** Cancel the underlying job. Caller wires `client.job.cancelRequest(...)`. */
1580
+ onCancel?: () => void;
1581
+ /** Dismiss the display. Caller wires `client.mark.dismissProgress()`. */
1532
1582
  onDismiss?: () => void;
1533
- /** Render the percentage bar (tag flow's visual; percentage itself comes from `progress`). */
1534
- showPercentBar?: boolean;
1535
1583
  translations: AssistProgressTranslations;
1536
1584
  }
1537
1585
  /**
1538
- * The one job-progress renderer (#7) unifies the three previous shapes
1539
- * (AssistSection's inline block, the reference/generation widget, TaggingPanel's
1540
- * inline block). Presentational and provider-free: no session, no context —
1541
- * cancel/dismiss arrive as callbacks, so it renders identically on the page and
1542
- * in embeddable (bring-your-own-session) hosts. Feature blocks are
1543
- * data-presence-driven: each call site keeps its established visuals by passing
1544
- * the data and translations it always had.
1586
+ * The one job-progress renderer, for all five motivations.
1587
+ *
1588
+ * Presentational and provider-free: no session, no context — cancel/dismiss
1589
+ * arrive as callbacks, so it renders identically on the page and in embeddable
1590
+ * (bring-your-own-session) hosts.
1591
+ *
1592
+ * One shape for every flow. What varies is DATA, not flags: a bar appears
1593
+ * because there is a fraction to fill it, a subject line appears because there
1594
+ * is a subject. The previous `title` / `showPercentBar` / `found` / `current`
1595
+ * opt-ins produced four unrelated layouts from one component, which is what
1596
+ * generated the duplicate renders and doubled chrome this replaces.
1545
1597
  */
1546
- declare function AssistProgress({ progress, dataType, onCancel, onDismiss, showPercentBar, translations: tr, }: AssistProgressProps): React$1.JSX.Element;
1598
+ declare function AssistProgress({ progress, dataType, ended, outcome, endedMessage, onCancel, onDismiss, translations: tr, }: AssistProgressProps): React$1.JSX.Element;
1547
1599
 
1548
- type JobProgress$7 = components['schemas']['JobProgress'];
1600
+ type JobProgress$8 = components['schemas']['JobProgress'];
1549
1601
  interface AssistShellProps {
1550
- /** localStorage persist-key suffix and CSS `data-type` ('highlight' | 'comment' | 'assessment' | 'reference' | 'tag'). */
1551
- assistType: string;
1602
+ /** localStorage persist-key suffix and CSS `data-type`. */
1603
+ assistType: AssistDataType;
1552
1604
  /** Collapsible section title (already translated). */
1553
1605
  title: string;
1554
1606
  isAssisting: boolean;
1555
- progress: JobProgress$7 | null | undefined;
1607
+ progress: JobProgress$8 | null | undefined;
1556
1608
  /** The per-motivation form (fields + submit) — shown when no progress is displayed. */
1557
1609
  form: ReactNode;
1558
1610
  /**
@@ -1564,7 +1616,7 @@ interface AssistShellProps {
1564
1616
  * itself, so a caller that omitted this would render untranslated chrome —
1565
1617
  * the failure Lane A exists to make impossible.
1566
1618
  */
1567
- progressProps: Omit<AssistProgressProps, 'progress' | 'dataType'>;
1619
+ progressProps: Omit<AssistProgressProps, 'progress' | 'dataType' | 'ended'>;
1568
1620
  }
1569
1621
  /**
1570
1622
  * The one assist-section chrome (#7): collapsible header with persisted expand
@@ -1901,7 +1953,7 @@ interface AnnotateMediaRendererProps {
1901
1953
  selectedMotivation: SelectionMotivation | null;
1902
1954
  hoveredAnnotationId?: string | null;
1903
1955
  hoverDelayMs?: number;
1904
- newAnnotationIds?: Set<string>;
1956
+ sparkleAnnotationIds?: Set<string>;
1905
1957
  scrollToAnnotationId?: string | null;
1906
1958
  showLineNumbers?: boolean;
1907
1959
  enableWidgets?: boolean;
@@ -1910,7 +1962,7 @@ interface AnnotateMediaRendererProps {
1910
1962
  }
1911
1963
  /** Annotating media dispatch, keyed by the registry render mode. */
1912
1964
  type AnnotateMediaRenderers = Partial<Record<string, ComponentType<AnnotateMediaRendererProps>>>;
1913
- declare function TextAnnotateRenderer({ content, annotations, session, newAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, showLineNumbers, hoverDelayMs, enableWidgets, getTargetResourceName, generatingReferenceId, }: AnnotateMediaRendererProps): React$1.JSX.Element;
1965
+ declare function TextAnnotateRenderer({ content, annotations, session, sparkleAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, showLineNumbers, hoverDelayMs, enableWidgets, getTargetResourceName, generatingReferenceId, }: AnnotateMediaRendererProps): React$1.JSX.Element;
1914
1966
  declare function ImageAnnotateRenderer({ content, resourceUri, annotations, session, drawingMode, selectedMotivation, hoveredAnnotationId, hoverDelayMs, }: AnnotateMediaRendererProps): React$1.JSX.Element | null;
1915
1967
  declare function PdfAnnotateRenderer({ content, resourceUri, annotations, session, drawingMode, selectedMotivation, hoveredAnnotationId, hoverDelayMs, }: AnnotateMediaRendererProps): React$1.JSX.Element | null;
1916
1968
  /**
@@ -1939,7 +1991,7 @@ interface Props$9 {
1939
1991
  /** Session for the shown resource — its client emits mark:* / mark.request; its bus feeds toolbar + beckon events. */
1940
1992
  session: SemiontSession | null;
1941
1993
  /** Recently-created annotation ids to sparkle (host-provided; was ResourceAnnotationsContext). */
1942
- newAnnotationIds?: Set<string>;
1994
+ sparkleAnnotationIds?: Set<string>;
1943
1995
  /** The bar's Mode control reports the chosen mode here (the owner applies it). */
1944
1996
  onModeChange?: (mode: boolean) => void;
1945
1997
  /** Render the built-in bar (default). false → no bar; selection capture and drawing stay live. */
@@ -1952,9 +2004,9 @@ interface Props$9 {
1952
2004
  *
1953
2005
  * @emits mark:requested - User requested to create annotation. Payload: { selector: Selector | Selector[], motivation: SelectionMotivation }
1954
2006
  * @subscribes beckon:hover - Annotation hovered. Payload: { annotationId: string | null }
1955
- * @subscribes beckon:focus - Scroll to and highlight annotation. Payload: { annotationId: string }
2007
+ * @subscribes beckon:focus - Scroll to and highlight annotation, unless `resourceId` names a different resource (D7). Payload: { annotationId: string, resourceId?: string }
1956
2008
  */
1957
- 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;
2009
+ 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;
1958
2010
 
1959
2011
  interface Props$8 {
1960
2012
  /**
@@ -2021,7 +2073,7 @@ interface Props$7 {
2021
2073
  /** Session for the shown resource — emits browse:click / beckon:hover; its bus feeds beckon events. */
2022
2074
  session: SemiontSession | null;
2023
2075
  /** Recently-created annotation ids to sparkle (host-provided; was ResourceAnnotationsContext). */
2024
- newAnnotationIds?: Set<string>;
2076
+ sparkleAnnotationIds?: Set<string>;
2025
2077
  /** Override the read-only media renderers (render mode → renderer); merged over the defaults. */
2026
2078
  renderers?: BrowseMediaRenderers;
2027
2079
  /** A content link (`<a href>` in the rendered content) was clicked. The viewer preventDefaults and
@@ -2062,7 +2114,7 @@ interface ReferenceHover {
2062
2114
  * @subscribes beckon:hover - Highlight annotation on hover. Payload: { annotationId: string | null }
2063
2115
  * @subscribes beckon:focus - Scroll to and highlight annotation. Payload: { annotationId: string }
2064
2116
  */
2065
- 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>;
2117
+ 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>;
2066
2118
 
2067
2119
  interface Props$6 {
2068
2120
  /** The '@id' of the resource whose bytes to offer. */
@@ -2143,7 +2195,7 @@ interface Props$4 {
2143
2195
  /** Inline display variant: auto-height, no inner scroll, no pane chrome (browse path). Default: fill-the-pane. */
2144
2196
  inline?: boolean;
2145
2197
  /** Recently-created annotation ids to sparkle (threaded to the browse/annotate subtree). */
2146
- newAnnotationIds?: Set<string>;
2198
+ sparkleAnnotationIds?: Set<string>;
2147
2199
  generatingReferenceId?: string | null;
2148
2200
  showLineNumbers?: boolean;
2149
2201
  hoverDelayMs?: number;
@@ -2194,9 +2246,12 @@ interface Props$4 {
2194
2246
  * panel opening invokes the host's `onOpenPanel` callback — the host owns
2195
2247
  * the panel and any `panel:open` emission.
2196
2248
  *
2197
- * @subscribes browse:click - User clicked on annotation. Payload: { annotationId: string, motivation, anchorRect? }
2249
+ * @subscribes browse:click - An annotation was clicked locally, or driven over
2250
+ * the wire by another participant. Payload: { annotationId: string, anchorRect? };
2251
+ * the motivation is derived from the annotation the id names, and an id this
2252
+ * viewer has not loaded is a no-op.
2198
2253
  */
2199
- 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;
2254
+ 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;
2200
2255
 
2201
2256
  interface AssessmentEntryProps {
2202
2257
  /** Session for interaction routing (browse.click etc.); the panel threads it. */
@@ -2209,7 +2264,7 @@ interface AssessmentEntryProps {
2209
2264
  declare function AssessmentEntry({ session, assessment, isFocused, isHovered, ref, }: AssessmentEntryProps): React$1.JSX.Element;
2210
2265
 
2211
2266
  type Motivation$5 = components['schemas']['Motivation'];
2212
- type JobProgress$6 = components['schemas']['JobProgress'];
2267
+ type JobProgress$7 = components['schemas']['JobProgress'];
2213
2268
  interface PendingAnnotation$5 {
2214
2269
  selector: Selector | Selector[];
2215
2270
  motivation: Motivation$5;
@@ -2222,7 +2277,7 @@ interface AssessmentPanelProps {
2222
2277
  annotations: Annotation[];
2223
2278
  pendingAnnotation: PendingAnnotation$5 | null;
2224
2279
  isAssisting?: boolean;
2225
- progress?: JobProgress$6 | null;
2280
+ progress?: JobProgress$7 | null;
2226
2281
  locale?: string;
2227
2282
  /** BCP-47 tag of the resource being analyzed — forwarded to the assist call. */
2228
2283
  sourceLanguage?: string;
@@ -2262,8 +2317,18 @@ interface Props$3 {
2262
2317
  eventCount: number;
2263
2318
  lastEventTimestamp?: string;
2264
2319
  knowledgeBaseName?: string;
2320
+ /**
2321
+ * The KB's collaborator roster (`client.browse.agents()`, typically via
2322
+ * `useCollaborators`). Optional so hosts that never wire it — including
2323
+ * external consumers of this package — render exactly as before.
2324
+ *
2325
+ * Each entry's `limits` is absent whenever discovery could not answer *right
2326
+ * now* (INFERENCE-LIMITS-EXPOSURE D3), so a missing ceiling is normal and
2327
+ * shows as no ceiling rather than as an error.
2328
+ */
2329
+ collaborators?: CollaboratorEntry[];
2265
2330
  }
2266
- declare function CollaborationPanel({ state, eventCount, lastEventTimestamp, knowledgeBaseName }: Props$3): React$1.JSX.Element;
2331
+ declare function CollaborationPanel({ state, eventCount, lastEventTimestamp, knowledgeBaseName, collaborators }: Props$3): React$1.JSX.Element;
2267
2332
 
2268
2333
  interface CommentEntryProps {
2269
2334
  /** Session for interaction routing (browse.click etc.); the panel threads it. */
@@ -2277,7 +2342,7 @@ interface CommentEntryProps {
2277
2342
  declare function CommentEntry({ session, comment, isFocused, isHovered, annotateMode, ref, }: CommentEntryProps): React$1.JSX.Element;
2278
2343
 
2279
2344
  type Motivation$4 = components['schemas']['Motivation'];
2280
- type JobProgress$5 = components['schemas']['JobProgress'];
2345
+ type JobProgress$6 = components['schemas']['JobProgress'];
2281
2346
  interface PendingAnnotation$4 {
2282
2347
  selector: Selector | Selector[];
2283
2348
  motivation: Motivation$4;
@@ -2291,7 +2356,7 @@ interface CommentsPanelProps {
2291
2356
  pendingAnnotation: PendingAnnotation$4 | null;
2292
2357
  annotateMode?: boolean;
2293
2358
  isAssisting?: boolean;
2294
- progress?: JobProgress$5 | null;
2359
+ progress?: JobProgress$6 | null;
2295
2360
  locale?: string;
2296
2361
  /** BCP-47 tag of the resource being analyzed — forwarded to the assist call. */
2297
2362
  sourceLanguage?: string;
@@ -2308,7 +2373,7 @@ interface CommentsPanelProps {
2308
2373
  */
2309
2374
  declare function CommentsPanel({ session, resourceId, annotations, pendingAnnotation, annotateMode, isAssisting, progress, locale, sourceLanguage, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: CommentsPanelProps): React$1.JSX.Element;
2310
2375
 
2311
- type JobProgress$4 = components['schemas']['JobProgress'];
2376
+ type JobProgress$5 = components['schemas']['JobProgress'];
2312
2377
  interface AssistSectionProps {
2313
2378
  /** Session carrying the client and event bus; null renders inert. */
2314
2379
  session: SemiontSession | null;
@@ -2318,7 +2383,7 @@ interface AssistSectionProps {
2318
2383
  locale?: string;
2319
2384
  /** BCP-47 tag of the resource being analyzed. Forwarded to the prompt so the LLM analyzes non-English source correctly. */
2320
2385
  sourceLanguage?: string;
2321
- progress?: JobProgress$4 | null | undefined;
2386
+ progress?: JobProgress$5 | null | undefined;
2322
2387
  }
2323
2388
  /**
2324
2389
  * Assist fields for the text motivations (highlight, assessment, comment):
@@ -2342,7 +2407,7 @@ interface HighlightEntryProps {
2342
2407
  declare function HighlightEntry({ session, highlight, isFocused, isHovered, ref, }: HighlightEntryProps): React$1.JSX.Element;
2343
2408
 
2344
2409
  type Motivation$3 = components['schemas']['Motivation'];
2345
- type JobProgress$3 = components['schemas']['JobProgress'];
2410
+ type JobProgress$4 = components['schemas']['JobProgress'];
2346
2411
  interface PendingAnnotation$3 {
2347
2412
  selector: Selector | Selector[];
2348
2413
  motivation: Motivation$3;
@@ -2355,7 +2420,7 @@ interface HighlightPanelProps {
2355
2420
  annotations: Annotation[];
2356
2421
  pendingAnnotation: PendingAnnotation$3 | null;
2357
2422
  isAssisting?: boolean;
2358
- progress?: JobProgress$3 | null;
2423
+ progress?: JobProgress$4 | null;
2359
2424
  annotateMode?: boolean;
2360
2425
  scrollToAnnotationId?: string | null;
2361
2426
  onScrollCompleted?: () => void;
@@ -2406,11 +2471,13 @@ interface ReferenceEntryProps {
2406
2471
  onOpenResource?: (resourceId: string) => void;
2407
2472
  annotateMode?: boolean;
2408
2473
  isGenerating?: boolean;
2474
+ /** The reference just got attention-worthy (created or resolved) — glow the icon (RESOLUTION-SPARKLE D6). */
2475
+ sparkle?: boolean;
2409
2476
  ref?: Ref<HTMLDivElement>;
2410
2477
  }
2411
- declare function ReferenceEntry({ session, reference, isFocused, isHovered, onOpenResource, annotateMode, isGenerating, ref, }: ReferenceEntryProps): React$1.JSX.Element;
2478
+ declare function ReferenceEntry({ session, reference, isFocused, isHovered, onOpenResource, annotateMode, isGenerating, sparkle, ref, }: ReferenceEntryProps): React$1.JSX.Element;
2412
2479
 
2413
- type JobProgress$2 = components['schemas']['JobProgress'];
2480
+ type JobProgress$3 = components['schemas']['JobProgress'];
2414
2481
 
2415
2482
  type Motivation$2 = components['schemas']['Motivation'];
2416
2483
  type ReferencedBy = components['schemas']['GetReferencedByResponse']['referencedBy'][number];
@@ -2427,7 +2494,7 @@ interface Props$1 {
2427
2494
  resourceId: string;
2428
2495
  annotations?: Annotation[];
2429
2496
  isAssisting: boolean;
2430
- progress: JobProgress$2 | null;
2497
+ progress: JobProgress$3 | null;
2431
2498
  annotateMode?: boolean;
2432
2499
  Link: React__default.ComponentType<LinkComponentProps>;
2433
2500
  routes: RouteBuilder;
@@ -2455,6 +2522,8 @@ interface Props$1 {
2455
2522
  scrollToAnnotationId?: string | null;
2456
2523
  onScrollCompleted?: () => void;
2457
2524
  hoveredAnnotationId?: string | null;
2525
+ /** Annotations currently sparkling (recently created or resolved) — entries in the set glow their icon (RESOLUTION-SPARKLE D6). */
2526
+ sparkleAnnotationIds?: Set<string>;
2458
2527
  /** User UI locale — stamped on the unresolved-reference body's `language` field. */
2459
2528
  locale?: string;
2460
2529
  /** BCP-47 tag of the resource being analyzed — fed into the prompt for source-aware analysis. */
@@ -2468,9 +2537,10 @@ interface Props$1 {
2468
2537
  * @emits mark:cancel-pending - Cancel pending reference annotation. Payload: undefined
2469
2538
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
2470
2539
  */
2471
- 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;
2540
+ 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;
2472
2541
 
2473
2542
  type Agent = components['schemas']['Agent'];
2543
+ type JobProgress$2 = components['schemas']['JobProgress'];
2474
2544
  interface Props {
2475
2545
  /** Session carrying the client and event bus; null renders inert. */
2476
2546
  session: SemiontSession | null;
@@ -2492,6 +2562,17 @@ interface Props {
2492
2562
  * to a verb). Omit to hide the Generate action.
2493
2563
  */
2494
2564
  onGenerate?: () => void;
2565
+ /**
2566
+ * Generation lifecycle, page-held (`yield.isGenerating$` / `yield.progress$`
2567
+ * / `yield.outcome$`): this panel is generation's progress surface
2568
+ * (GENERATE-FROM-RESOURCE D7) — the run reports where it was started.
2569
+ */
2570
+ isGenerating?: boolean;
2571
+ generationProgress?: JobProgress$2 | null;
2572
+ /** The finished run's result; the ended frame links it by name (D8). */
2573
+ generationOutcome?: YieldOutcome | null;
2574
+ /** Clear the finished display — wires `yield.dismissProgress()`. */
2575
+ onDismissProgress?: () => void;
2495
2576
  }
2496
2577
  /**
2497
2578
  * Panel for displaying resource metadata and management actions
@@ -2500,7 +2581,7 @@ interface Props {
2500
2581
  * @emits mark:unarchive - Unarchive this resource
2501
2582
  * @emits mark:archive - Archive this resource
2502
2583
  */
2503
- declare function ResourceInfoPanel({ session, resourceId, documentEntityTypes, documentLocale, primaryMediaType, primaryByteSize, storageUri, isArchived, dateCreated, dateModified, wasAttributedTo, wasDerivedFrom, generator, onGenerate, }: Props): React$1.JSX.Element;
2584
+ 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;
2504
2585
 
2505
2586
  interface StatisticsPanelProps {
2506
2587
  highlights: Annotation[];
@@ -2558,7 +2639,7 @@ declare function TaggingPanel({ session, resourceId, annotations, annotateMode,
2558
2639
  type JobProgress = components['schemas']['JobProgress'];
2559
2640
 
2560
2641
  type Motivation = components['schemas']['Motivation'];
2561
- type TabKey = 'statistics' | 'reference' | 'highlight' | 'assessment' | 'comment' | 'tag';
2642
+ type TabKey = 'statistics' | AnnotatorKey;
2562
2643
  interface PendingAnnotation {
2563
2644
  selector: Selector | Selector[];
2564
2645
  motivation: Motivation;
@@ -2598,6 +2679,8 @@ interface UnifiedAnnotationsPanelProps {
2598
2679
  entityTypesError?: Error | null;
2599
2680
  referencedByError?: Error | null;
2600
2681
  onRetryReferencedBy?: () => void;
2682
+ /** Annotations currently sparkling (recently created or resolved) — RESOLUTION-SPARKLE D6. */
2683
+ sparkleAnnotationIds?: Set<string>;
2601
2684
  resourceId: string;
2602
2685
  initialTab?: TabKey;
2603
2686
  initialTabGeneration?: number;
@@ -2836,7 +2919,22 @@ interface GenerationConfig {
2836
2919
  context: GatheredContext;
2837
2920
  }
2838
2921
 
2922
+ interface ComposeParams$1 {
2923
+ name: string;
2924
+ /** Full file:// URI. */
2925
+ storagePath: string;
2926
+ content: string;
2927
+ entityTypes: string[];
2928
+ language: string;
2929
+ }
2930
+
2839
2931
  interface ReferenceWizardModalProps {
2932
+ /**
2933
+ * Roster entry serving `generation`, forwarded to ConfigureGenerationStep so
2934
+ * the max-length control is bounded by the model's real output ceiling.
2935
+ * Optional: absent means today's default bounds (INFERENCE-LIMITS-EXPOSURE D3).
2936
+ */
2937
+ generationAgent?: CollaboratorEntry;
2840
2938
  isOpen: boolean;
2841
2939
  onClose: () => void;
2842
2940
  /** The annotation being resolved */
@@ -2847,6 +2945,12 @@ interface ReferenceWizardModalProps {
2847
2945
  defaultTitle: string;
2848
2946
  /** Entity types from the annotation */
2849
2947
  entityTypes: string[];
2948
+ /**
2949
+ * The source resource's display name — a page fact (the wizard opens FROM
2950
+ * that resource), shown in the gather skeleton's source line before the
2951
+ * gathered context can say it itself.
2952
+ */
2953
+ resourceName?: string;
2850
2954
  /** Current locale for generation defaults */
2851
2955
  locale: string;
2852
2956
  /** Gathered context state */
@@ -2856,21 +2960,36 @@ interface ReferenceWizardModalProps {
2856
2960
  /** Callbacks */
2857
2961
  onGenerateSubmit: (referenceId: string, config: GenerationConfig) => void;
2858
2962
  onLinkResource: (referenceId: string, targetResourceId: string) => void;
2859
- onComposeNavigate: (context: GatheredContext, annotationId: string, resourceId: string, title: string, entityTypes: string[]) => void;
2963
+ /**
2964
+ * Create-and-link (COMPOSE-IN-MODAL): the host runs `yield.resource` then
2965
+ * `bind.body` and settles the promise; rejection keeps the modal open with
2966
+ * the compose footer re-enabled. Replaces the old navigate-to-page flow.
2967
+ */
2968
+ onComposeSubmit: (referenceId: string, params: ComposeParams$1) => Promise<void>;
2969
+ /** Picker vocabulary for compose when the reference fixed no entity types. */
2970
+ entityTypeOptions?: string[];
2971
+ /** Editor hover delay for the compose step's CodeMirror. */
2972
+ hoverDelayMs?: number;
2860
2973
  /** Translation strings */
2861
2974
  translations: {
2862
- gatherTitle: string;
2863
- configureGenerationTitle: string;
2864
- configureSearchTitle: string;
2865
- searchResultsTitle: string;
2975
+ /** The ONE title, all steps — the flow is resolving a reference; the
2976
+ strategy band below says where in it you are. */
2977
+ resolveTitle: string;
2866
2978
  sourceContextLabel: string;
2867
2979
  connectionsLabel: string;
2868
2980
  citedByLabel: string;
2981
+ graphPaneTitle: string;
2982
+ graphEmpty: string;
2983
+ resourceLinkLabel: string;
2984
+ corpusPaneTitle: string;
2985
+ corpusEmpty: string;
2986
+ excludedReceipt: string;
2987
+ machineRead: string;
2869
2988
  userHintLabel: string;
2989
+ userHintEffect: string;
2870
2990
  userHintPlaceholder: string;
2871
2991
  loadingContext: string;
2872
2992
  failedContext: string;
2873
- cancel: string;
2874
2993
  search: string;
2875
2994
  searching: string;
2876
2995
  generate: string;
@@ -2882,6 +3001,7 @@ interface ReferenceWizardModalProps {
2882
3001
  noResults: string;
2883
3002
  resourceTitle: string;
2884
3003
  resourceTitlePlaceholder: string;
3004
+ saveLocation: string;
2885
3005
  additionalInstructions: string;
2886
3006
  additionalInstructionsPlaceholder: string;
2887
3007
  language: string;
@@ -2891,41 +3011,51 @@ interface ReferenceWizardModalProps {
2891
3011
  creativityCreative: string;
2892
3012
  maxLength: string;
2893
3013
  maxLengthHelp: string;
3014
+ maxLengthCeiling: string;
2894
3015
  maxResults: string;
2895
3016
  semanticScoring: string;
2896
3017
  semanticScoringHelp: string;
3018
+ searchFailed: string;
3019
+ entityTypes: string;
3020
+ contentLabel: string;
3021
+ createAndLink: string;
3022
+ creatingAndLinking: string;
3023
+ discardDraftPrompt: string;
3024
+ discardDraft: string;
3025
+ keepEditing: string;
2897
3026
  };
2898
3027
  }
2899
- declare function ReferenceWizardModal({ isOpen, onClose, annotationId, resourceId, defaultTitle, entityTypes, locale, context, contextLoading, contextError, onGenerateSubmit, onLinkResource, onComposeNavigate, translations: t, }: ReferenceWizardModalProps): React$1.JSX.Element;
2900
-
2901
- interface ResourceGatherConfig {
2902
- depth: number;
2903
- maxResources: number;
2904
- includeContent: boolean;
2905
- includeSummary: boolean;
2906
- }
3028
+ declare function ReferenceWizardModal({ isOpen, onClose, annotationId, resourceId, defaultTitle, entityTypes, resourceName, locale, context, contextLoading, contextError, onGenerateSubmit, onLinkResource, onComposeSubmit, entityTypeOptions, hoverDelayMs, translations: t, generationAgent, }: ReferenceWizardModalProps): React$1.JSX.Element;
2907
3029
 
2908
3030
  interface ResourceGenerateModalTranslations {
2909
- gatherTitle: string;
2910
- reviewTitle: string;
2911
- configureTitle: string;
2912
- next: string;
2913
- back: string;
2914
- cancel: string;
3031
+ /** The ONE modal title — names the flow, not a step. */
3032
+ title: string;
2915
3033
  gatherIntro: string;
2916
3034
  includeContent: string;
2917
3035
  includeSummary: string;
2918
3036
  gatherDepth: string;
2919
3037
  gatherMaxResources: string;
2920
3038
  gatherButton: string;
2921
- excludeLabel: string;
3039
+ /** Labels the recall chips: every type included until deselected. */
3040
+ recallLabel: string;
3041
+ /** Affordance on the post-gather receipt row (title/tooltip). */
3042
+ editGather: string;
2922
3043
  loadingContext: string;
2923
3044
  failedContext: string;
2924
3045
  sourceContextLabel: string;
2925
3046
  connectionsLabel: string;
2926
3047
  citedByLabel: string;
3048
+ graphPaneTitle: string;
3049
+ graphEmpty: string;
3050
+ resourceLinkLabel: string;
3051
+ corpusPaneTitle: string;
3052
+ corpusEmpty: string;
3053
+ excludedReceipt: string;
3054
+ machineRead: string;
3055
+ score: string;
2927
3056
  resourceTitle: string;
2928
3057
  resourceTitlePlaceholder: string;
3058
+ saveLocation: string;
2929
3059
  additionalInstructions: string;
2930
3060
  additionalInstructionsPlaceholder: string;
2931
3061
  language: string;
@@ -2935,15 +3065,24 @@ interface ResourceGenerateModalTranslations {
2935
3065
  creativityCreative: string;
2936
3066
  maxLength: string;
2937
3067
  maxLengthHelp: string;
3068
+ maxLengthCeiling: string;
2938
3069
  generate: string;
3070
+ discardDraftPrompt: string;
3071
+ discardDraft: string;
3072
+ keepEditing: string;
2939
3073
  }
2940
3074
  interface ResourceGenerateModalProps {
3075
+ /**
3076
+ * Roster entry serving `generation`, forwarded to ConfigureGenerationStep so
3077
+ * the max-length control is bounded by the model's real output ceiling.
3078
+ * Optional: absent means today's default bounds (INFERENCE-LIMITS-EXPOSURE D3).
3079
+ */
3080
+ generationAgent?: CollaboratorEntry;
2941
3081
  isOpen: boolean;
2942
3082
  onClose: () => void;
2943
3083
  resourceId: string;
2944
3084
  defaultTitle: string;
2945
3085
  locale: string;
2946
- gatherDefaults?: Partial<ResourceGatherConfig>;
2947
3086
  /**
2948
3087
  * Entity types offered in the exclusion picker. Owner-supplied so the
2949
3088
  * modal cannot present a failed load as an empty vocabulary.
@@ -2951,18 +3090,39 @@ interface ResourceGenerateModalProps {
2951
3090
  entityTypeOptions?: string[];
2952
3091
  /**
2953
3092
  * Emit the chosen generation config. The parent runs the job
2954
- * (`client.yield.fromResource(resourceId, …).run(…)`) — mirrors how the
2955
- * annotation wizard delegates `yield.fromAnnotation` to its parent.
3093
+ * (`client.yield.fromContext(config.context, …)`) — mirrors how the
3094
+ * annotation wizard delegates generation to its parent.
2956
3095
  */
2957
3096
  onGenerateSubmit: (resourceId: string, config: GenerationConfig) => void;
3097
+ /**
3098
+ * Resource-gather state, verbatim from the SDK's gather unit slots
3099
+ * (`gather.resourceContext$` / `resourceLoading$` / `resourceError$`) — the
3100
+ * page reads the observables and threads them here, the same shape the
3101
+ * reference wizard has always had (FLOW-LIFECYCLE-CONVERGENCE D3/A6). The
3102
+ * modal renders this state; it never owns it.
3103
+ */
3104
+ gatherContext: GatheredContext | null;
3105
+ gatherLoading: boolean;
3106
+ gatherError: Error | null;
3107
+ /**
3108
+ * Run the gather — the page wires `gather.gatherResource(resourceId, …)`.
3109
+ * No resourceId in the payload: the owner already holds it. `gatherResource`
3110
+ * clears its slots at start, so no reset threading is needed.
3111
+ */
3112
+ onGather: (options: ResourceGatherOptions) => void;
2958
3113
  translations: ResourceGenerateModalTranslations;
2959
3114
  }
2960
3115
  /**
2961
- * Resource-generate flow (GENERATE-FROM-BUTTON): configure gather options →
2962
- * `gather.resource` review the gathered `GatheredContext` configure
2963
- * generation → emit. Reuses the kind-aware `GatherContextStep` for the review.
3116
+ * Resource-generate flow (GENERATE-FROM-BUTTON, folded by GATHER-AT-THE-TOP):
3117
+ * one composite stack in a single scroll pane — the gather controls at the
3118
+ * top, the gathered `GatheredContext` below them once gather fires, and the
3119
+ * generation params beneath the evidence once context arrives. Re-gathering
3120
+ * is scroll-up → tweak → Gather; `gatherResource` clears its slots at start,
3121
+ * so the evidence refreshes in place. [gather zone] → [evidence] → [act
3122
+ * zone]: the same grammar the resolve wizard expresses, whose gather zone
3123
+ * happens to be automatic and whose act zone has a strategy choice.
2964
3124
  */
2965
- declare function ResourceGenerateModal({ isOpen, onClose, resourceId, defaultTitle, locale, gatherDefaults, entityTypeOptions, onGenerateSubmit, translations: t, }: ResourceGenerateModalProps): React$1.JSX.Element;
3125
+ declare function ResourceGenerateModal({ isOpen, onClose, resourceId, defaultTitle, locale, entityTypeOptions, onGenerateSubmit, gatherContext, gatherLoading, gatherError, onGather, translations: t, generationAgent, }: ResourceGenerateModalProps): React$1.JSX.Element;
2966
3126
 
2967
3127
  interface SearchModalProps$1 {
2968
3128
  isOpen: boolean;
@@ -2982,21 +3142,6 @@ interface SearchModalProps$1 {
2982
3142
  }
2983
3143
  declare function SearchModal({ isOpen, onClose, onNavigate, translations }: SearchModalProps$1): React__default.JSX.Element;
2984
3144
 
2985
- interface ResourceSearchModalProps$1 {
2986
- isOpen: boolean;
2987
- onClose: () => void;
2988
- onSelect: (resourceId: string) => void;
2989
- searchTerm?: string;
2990
- translations?: {
2991
- title?: string;
2992
- placeholder?: string;
2993
- searching?: string;
2994
- noResults?: string;
2995
- close?: string;
2996
- };
2997
- }
2998
- declare function ResourceSearchModal({ isOpen, onClose, onSelect, searchTerm, translations }: ResourceSearchModalProps$1): React$1.JSX.Element;
2999
-
3000
3145
  /**
3001
3146
  * Base modal props that all modals share
3002
3147
  */
@@ -3030,22 +3175,6 @@ interface SearchModalProps extends BaseModalProps, NavigableModalProps {
3030
3175
  close?: string;
3031
3176
  };
3032
3177
  }
3033
- /**
3034
- * Resource search modal props
3035
- */
3036
- interface ResourceSearchModalProps extends BaseModalProps {
3037
- /** Callback when a resource is selected */
3038
- onSelect: (resourceId: string) => void;
3039
- /** Initial search term */
3040
- searchTerm?: string;
3041
- /** Optional translation support */
3042
- translations?: {
3043
- title?: string;
3044
- placeholder?: string;
3045
- searching?: string;
3046
- noResults?: string;
3047
- };
3048
- }
3049
3178
 
3050
3179
  /**
3051
3180
  * Skip links for keyboard navigation accessibility
@@ -3496,7 +3625,7 @@ interface ShellStateUnit extends StateUnit {
3496
3625
  activePanel$: Observable<ToolbarPanelType | null>;
3497
3626
  scrollToAnnotationId$: Observable<string | null>;
3498
3627
  panelInitialTab$: Observable<{
3499
- tab: string;
3628
+ tab: AnnotatorKey;
3500
3629
  generation: number;
3501
3630
  } | null>;
3502
3631
  openPanel(panel: string): void;
@@ -4116,26 +4245,15 @@ interface ListState<T> {
4116
4245
  retry(): void;
4117
4246
  }
4118
4247
 
4119
- type ComposeMode = 'new' | 'clone' | 'reference';
4248
+ type ComposeMode = 'new' | 'clone';
4120
4249
  interface ComposeParams {
4121
4250
  mode?: string | undefined;
4122
4251
  token?: string | undefined;
4123
- annotationUri?: string | undefined;
4124
- sourceDocumentId?: string | undefined;
4125
- name?: string | undefined;
4126
- entityTypes?: string | undefined;
4127
- storedContext?: string | undefined;
4128
4252
  }
4129
4253
  interface CloneData {
4130
4254
  sourceResource: ResourceDescriptor;
4131
4255
  sourceContent: string;
4132
4256
  }
4133
- interface ReferenceData {
4134
- annotationUri: string;
4135
- sourceDocumentId: string;
4136
- name: string;
4137
- entityTypes: string[];
4138
- }
4139
4257
  interface SaveResourceParams$1 {
4140
4258
  mode: ComposeMode;
4141
4259
  name: string;
@@ -4147,16 +4265,12 @@ interface SaveResourceParams$1 {
4147
4265
  entityTypes?: string[];
4148
4266
  language: string;
4149
4267
  archiveOriginal?: boolean;
4150
- annotationUri?: string;
4151
- sourceDocumentId?: string;
4152
4268
  }
4153
4269
  interface ComposePageStateUnit extends StateUnit {
4154
4270
  browse: ShellStateUnit;
4155
4271
  mode$: Observable<ComposeMode>;
4156
4272
  loading$: Observable<boolean>;
4157
4273
  cloneData$: Observable<CloneData | null>;
4158
- referenceData$: Observable<ReferenceData | null>;
4159
- gatheredContext$: Observable<GatheredContext | null>;
4160
4274
  entityTypes: ListState<string[]>;
4161
4275
  /**
4162
4276
  * Live upload-progress for the in-flight `save(...)` call. Emits the
@@ -4173,15 +4287,14 @@ declare function createComposePageStateUnit(session: SemiontSession, browse: She
4173
4287
  * ResourceComposePage Component
4174
4288
  *
4175
4289
  * Pure React component for creating and editing resources.
4176
- * Supports three modes: new resource, clone, and reference completion.
4290
+ * Supports two modes: new resource and clone. (Reference completion moved
4291
+ * into the resolve wizard — COMPOSE-IN-MODAL.)
4177
4292
  * All dependencies passed as props - no Next.js hooks!
4178
4293
  */
4179
4294
 
4180
4295
  interface ResourceComposePageProps {
4181
- mode: 'new' | 'clone' | 'reference';
4296
+ mode: 'new' | 'clone';
4182
4297
  cloneData?: CloneData | null;
4183
- referenceData?: ReferenceData | null;
4184
- gatheredContext?: GatheredContext | null;
4185
4298
  availableEntityTypes: string[];
4186
4299
  initialLocale: string;
4187
4300
  theme: 'light' | 'dark';
@@ -4199,10 +4312,7 @@ interface ResourceComposePageProps {
4199
4312
  translations: {
4200
4313
  title: string;
4201
4314
  titleEditClone: string;
4202
- titleCompleteReference: string;
4203
4315
  subtitleClone: string;
4204
- subtitleReference: string;
4205
- linkedNoticePrefix: string;
4206
4316
  resourceName: string;
4207
4317
  resourceNamePlaceholder: string;
4208
4318
  entityTypes: string;
@@ -4224,16 +4334,14 @@ interface ResourceComposePageProps {
4224
4334
  cancel: string;
4225
4335
  saving: string;
4226
4336
  creating: string;
4227
- creatingAndLinking: string;
4228
4337
  saveClonedResource: string;
4229
- createAndLinkResource: string;
4230
4338
  createResource: string;
4231
4339
  };
4232
4340
  ToolbarPanels: React__default.ComponentType<any>;
4233
4341
  Toolbar: React__default.ComponentType<any>;
4234
4342
  }
4235
4343
  interface SaveResourceParams {
4236
- mode: 'new' | 'clone' | 'reference';
4344
+ mode: 'new' | 'clone';
4237
4345
  name: string;
4238
4346
  storageUri: string;
4239
4347
  content?: string;
@@ -4243,10 +4351,8 @@ interface SaveResourceParams {
4243
4351
  entityTypes?: string[];
4244
4352
  language: string;
4245
4353
  archiveOriginal?: boolean;
4246
- annotationUri?: string;
4247
- sourceDocumentId?: string;
4248
4354
  }
4249
- declare function ResourceComposePage({ mode, cloneData, referenceData, gatheredContext, availableEntityTypes, initialLocale, theme, hoverDelayMs, activePanel, onSaveResource, onCancel, uploadProgress, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): React__default.JSX.Element;
4355
+ declare function ResourceComposePage({ mode, cloneData, availableEntityTypes, initialLocale, theme, hoverDelayMs, activePanel, onSaveResource, onCancel, uploadProgress, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): React__default.JSX.Element;
4250
4356
 
4251
4357
  /**
4252
4358
  * Inline upload-progress affordance for the compose page.
@@ -4290,6 +4396,16 @@ interface ResourceDiscoveryPageProps {
4290
4396
  recentError?: Error | null;
4291
4397
  onRetryRecent?: () => void;
4292
4398
  isSearching: boolean;
4399
+ /**
4400
+ * How the current search answer was produced — `'lexical'` (title/metadata
4401
+ * matching) or `'semantic'` (the vector fallback that runs only when lexical
4402
+ * matching returned nothing). Undefined before the first answer, and on the
4403
+ * no-query view where `recent` renders and no label describes it.
4404
+ *
4405
+ * Optional so hosts that never wire it — including external consumers —
4406
+ * render exactly as before (SEMANTIC-FALLBACK P3b).
4407
+ */
4408
+ searchMatchKind?: 'lexical' | 'semantic';
4293
4409
  searchQuery: string;
4294
4410
  onSearchQueryChange: (query: string) => void;
4295
4411
  selectedEntityType: string;
@@ -4304,6 +4420,7 @@ interface ResourceDiscoveryPageProps {
4304
4420
  searchPlaceholder: string;
4305
4421
  searchButton: string;
4306
4422
  searching: string;
4423
+ semanticFallbackNotice: string;
4307
4424
  filterByEntityType: string;
4308
4425
  all: string;
4309
4426
  recentResources: string;
@@ -4320,7 +4437,7 @@ interface ResourceDiscoveryPageProps {
4320
4437
  };
4321
4438
  ToolbarPanels: React__default.ComponentType<any>;
4322
4439
  }
4323
- declare function ResourceDiscoveryPage({ recentDocuments, searchDocuments, entityTypes, isLoadingRecent, recentError, onRetryRecent, isSearching, searchQuery, onSearchQueryChange, selectedEntityType, onSelectedEntityTypeChange, theme, activePanel, onNavigateToResource, onNavigateToCompose, translations: t, ToolbarPanels, }: ResourceDiscoveryPageProps): React__default.JSX.Element;
4440
+ declare function ResourceDiscoveryPage({ recentDocuments, searchDocuments, entityTypes, isLoadingRecent, recentError, onRetryRecent, isSearching, searchMatchKind, searchQuery, onSearchQueryChange, selectedEntityType, onSelectedEntityTypeChange, theme, activePanel, onNavigateToResource, onNavigateToCompose, translations: t, ToolbarPanels, }: ResourceDiscoveryPageProps): React__default.JSX.Element;
4324
4441
 
4325
4442
  /**
4326
4443
  * ResourceCard Component
@@ -4406,7 +4523,8 @@ interface ResourceViewerPageProps {
4406
4523
  * @subscribes yield:clone - Clone the current resource
4407
4524
  * @subscribes beckon:sparkle - Trigger sparkle animation
4408
4525
  * @subscribes mark:added - Annotation was created (sparkle)
4409
- * @subscribes browse:reference-navigate - Navigate to a referenced document
4526
+ * @subscribes mark:body-updated - Reference resolved via a linking-add operation (sparkle, both loci)
4527
+ * @subscribes browse:resource-open - Open a resource in the viewer (local links + the launcher's tour verbs)
4410
4528
  * @subscribes browse:entity-type-clicked - Navigate filtered by entity type
4411
4529
  *
4412
4530
  * Outcome-notification channels (mark:create-error, mark:delete-error,
@@ -4517,9 +4635,17 @@ declare function createWelcomeStateUnit(session: SemiontSession): WelcomeStateUn
4517
4635
 
4518
4636
  interface DiscoverSearchPipeline {
4519
4637
  query$: Observable<string>;
4638
+ /**
4639
+ * The page AND the label that describes it, as one value. `matchKind` is
4640
+ * carried here rather than beside it because SEMANTIC-FALLBACK S10 is
4641
+ * tier-agnostic: two separately-observable pieces of state let a render pair
4642
+ * this query's label with the previous query's list. Undefined only before
4643
+ * the first answer (and while a query is empty), never as a third kind.
4644
+ */
4520
4645
  state$: Observable<{
4521
4646
  results: ResourceDescriptor[];
4522
4647
  isSearching: boolean;
4648
+ matchKind?: 'lexical' | 'semantic';
4523
4649
  }>;
4524
4650
  setQuery(value: string): void;
4525
4651
  }
@@ -4583,5 +4709,5 @@ declare function useShellStateUnit(): ShellStateUnit;
4583
4709
  */
4584
4710
  declare function useObservable<T>(obs$: Observable<T> | null | undefined): T | undefined;
4585
4711
 
4586
- 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, 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 };
4587
- export type { AdminDevOpsPageProps, AdminExchangePageProps, AdminExchangePageTranslations, AdminSecurityPageProps, AdminSecurityStateUnit, AdminUser, AdminUserStats, AdminUsersPageProps, AdminUsersStateUnit, AnnotateMediaRendererProps, AnnotateMediaRenderers, AnnotationConfig, AnnotationCreationHandler, AnnotationGroups, AnnotationHandlers, AnnotationManager, AnnotationProviderProps, AnnotationUIState, AnnotationsCollection, Annotator, AnnotatorKey, 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, UseMediaTokenResult, UseResourceContentResult, UseResourceGatherResult, UseResourceLoaderResult, WelcomePageProps, WelcomeStateUnit, WizardState };
4712
+ 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, 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, useResourceLoader, useResourceLoadingAnnouncements, useRovingTabIndex, useSearchAnnouncements, useSemiont, useSessionEventSubscriptions, useSessionExpiry, useSessionStateUnit, useShellStateUnit, useStateUnit, useTheme, useToast, useToolbarPrefs, useTranslations };
4713
+ 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, ReferenceHover, ReferenceWizardModalProps, 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, TextSegment, TextSelection, Theme, ToastMessage, ToastType, ToolbarPanelType, ToolbarPart, ToolbarPrefs, TransitionToken, TranslationManager, TranslationProviderProps, TypographyToken, UICreateAnnotationParams, UploadProgressBarProps, UseCollaboratorsResult, UseMediaTokenResult, UseResourceContentResult, UseResourceLoaderResult, WelcomePageProps, WelcomeStateUnit, WizardState };