@peasant-labs/fairtrade 0.0.48 → 0.0.50

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 (123) hide show
  1. package/dist/lib/abnfDiagram-WEYOIA3C-D4LMNFIJ.js +89 -0
  2. package/dist/lib/{adapter-DnCl_ddK.js → adapter-CVKibszh.js} +136 -126
  3. package/dist/lib/arc-1xTxsoRi.js +80 -0
  4. package/dist/lib/architecture-WOLXFQ4H-c6RsZuzu.js +3 -0
  5. package/dist/lib/architectureDiagram-ZHVYKT53-DTINqD5R.js +4145 -0
  6. package/dist/lib/array-CApNbSU9.js +6 -0
  7. package/dist/lib/blockDiagram-RJAE7QA3-CUYHoR3g.js +1946 -0
  8. package/dist/lib/c4Diagram-XDPPPE54-Cdx6_DsI.js +2990 -0
  9. package/dist/lib/channel-DagAO2vE.js +5 -0
  10. package/dist/lib/chunk-2E7WHVMD-BzhgXW3b.js +490 -0
  11. package/dist/lib/chunk-2Q5K7J3B-DWNwIK5Y.js +15 -0
  12. package/dist/lib/chunk-4EMNKR2T-DhFrQz9k.js +236 -0
  13. package/dist/lib/chunk-55XCU76K-CI0GXDkJ.js +61 -0
  14. package/dist/lib/chunk-5VM5RSS4-BAQ-46g4.js +5 -0
  15. package/dist/lib/chunk-7S6XSTFO-CMt_p-O6.js +1373 -0
  16. package/dist/lib/chunk-AQDTSKZB-DrZccIQa.js +1847 -0
  17. package/dist/lib/chunk-DSNLSHJZ-CpA9d2CJ.js +4044 -0
  18. package/dist/lib/chunk-DUW6YSOI-C-tN4Kiv.js +10 -0
  19. package/dist/lib/chunk-EJLWFMJV-B30MNYvY.js +75 -0
  20. package/dist/lib/chunk-HAGFOTED-DMU2JNZM.js +4487 -0
  21. package/dist/lib/chunk-HNE4Q36P-BIA0n2gA.js +363 -0
  22. package/dist/lib/chunk-J5ZVWO5B-CA_-jk8G.js +12 -0
  23. package/dist/lib/chunk-JWPE2WC7-KRpHbrIX.js +8 -0
  24. package/dist/lib/chunk-LNGE3PJU-CMGaAEAh.js +1513 -0
  25. package/dist/lib/chunk-NGNAAXSQ-D7Dvct7J.js +19774 -0
  26. package/dist/lib/chunk-NQOKRVIF-MK9F46y3.js +4258 -0
  27. package/dist/lib/chunk-OYAV6JZA-B1yICcbU.js +10 -0
  28. package/dist/lib/chunk-UHW7PFBP-CLrOaA0y.js +67 -0
  29. package/dist/lib/chunk-VQ5W62QI-_ZR3gKe4.js +26 -0
  30. package/dist/lib/chunk-WQQL4CDK-DFtyhYZq.js +693 -0
  31. package/dist/lib/chunk-XXDRQBXY-uzyNBbgx.js +9 -0
  32. package/dist/lib/chunk-Y2CYZVJY-BYzrzvCI.js +12 -0
  33. package/dist/lib/chunk-YZO67HFG-D1jKt78p.js +275 -0
  34. package/dist/lib/chunk-ZAUX2LTX-7XO0Yj1z.js +37 -0
  35. package/dist/lib/chunk-ZCHMQSOR-CxoKltfF.js +349 -0
  36. package/dist/lib/classDiagram-v2-4MYWR3UA-BPvwhZqw.js +3397 -0
  37. package/dist/lib/commons.js +729 -729
  38. package/dist/lib/components.css +1 -1
  39. package/dist/lib/cose-bilkent-JH36ORCC-Oj79uOIQ.js +2250 -0
  40. package/dist/lib/cynefin-EF2NZ3EQ-COX3NRum.js +3 -0
  41. package/dist/lib/cynefinDiagram-WF24UDRP-UzTptNAX.js +349 -0
  42. package/dist/lib/cytoscape.esm-0ojxgO9x.js +18161 -0
  43. package/dist/lib/dagre-NK4GIZVX-DWZr-NGm.js +2356 -0
  44. package/dist/lib/defaultLocale-BbgDuMnp.js +201 -0
  45. package/dist/lib/diagram-CBK3MWTC-CsyKuv-w.js +525 -0
  46. package/dist/lib/diagram-I5XIIV2D-DWY2JSPC.js +134 -0
  47. package/dist/lib/diagram-ODIL2UCW-DUptj0JZ.js +301 -0
  48. package/dist/lib/diagram-PFBEJUXE-N5XnIBqM.js +447 -0
  49. package/dist/lib/diagram-RJA3I4VV-B9XgohYo.js +214 -0
  50. package/dist/lib/diagram-TYUNFSNR-XnsJIeAd.js +5084 -0
  51. package/dist/lib/dist-AMlsjiDX.js +59 -0
  52. package/dist/lib/ebnfDiagram-V4P3TTPT-BssHqFox.js +100 -0
  53. package/dist/lib/elk-QONTBCTQ-DwmwqYgP.js +47944 -0
  54. package/dist/lib/erDiagram-KYQIGQAA-BQiXw1Tw.js +1970 -0
  55. package/dist/lib/eventmodeling-K75KTNOO-DDb--yMc.js +3 -0
  56. package/dist/lib/flowDiagram-IUGLLWBU-BEqqF1y2.js +17 -0
  57. package/dist/lib/ganttDiagram-R7GPNTJY-BWtGXxEF.js +3094 -0
  58. package/dist/lib/gitGraph-VSP46ZUC-BSwOaak_.js +3 -0
  59. package/dist/lib/gitGraphDiagram-PDYL7XHY-CHGNuGbk.js +729 -0
  60. package/dist/lib/graphlib-Dndp26xU.js +1267 -0
  61. package/dist/lib/info-OHQRW6UA-Dk06sZRe.js +3 -0
  62. package/dist/lib/infoDiagram-MVDRKAX5-Cdhxnjmi.js +20 -0
  63. package/dist/lib/init-Bwwdo3M6.js +15 -0
  64. package/dist/lib/ishikawaDiagram-HPEHV2GE-Dzhti-GJ.js +719 -0
  65. package/dist/lib/journeyDiagram-BOSHW7O7-C3_vsSjw.js +884 -0
  66. package/dist/lib/kanban-definition-FNSA4HC5-XsfCEsjn.js +976 -0
  67. package/dist/lib/katex-Dw0PnoPU.js +21850 -0
  68. package/dist/lib/line-C9krU3Sv.js +34 -0
  69. package/dist/lib/linear-Cvilv3OA.js +289 -0
  70. package/dist/lib/mermaid-parser.core-I7qQ_fxz.js +638 -0
  71. package/dist/lib/mermaid.core-UNHMAbBP.js +1126 -0
  72. package/dist/lib/mindmap-definition-6OY57UG3-CAua-JvB.js +1011 -0
  73. package/dist/lib/ordinal-C55HfHHp.js +65 -0
  74. package/dist/lib/packet-JDAUHWVQ-DZ-MKx4I.js +3 -0
  75. package/dist/lib/path-DNvJyUE8.js +85 -0
  76. package/dist/lib/pegDiagram-ECIUJNBX-BCxa_IO0.js +94 -0
  77. package/dist/lib/pie-XZMESJXO-DpCa-Nnq.js +3 -0
  78. package/dist/lib/pieDiagram-GNMPY74T-CE_C3dCB.js +205 -0
  79. package/dist/lib/quadrantDiagram-D57K4MC3-CDgzdMoL.js +2001 -0
  80. package/dist/lib/radar-ABXABTNO-BOVK7L9p.js +3 -0
  81. package/dist/lib/railroad-I3PHUGI6-B6spKM0Z.js +3 -0
  82. package/dist/lib/railroad-abnf-LNEFI6M7-DEWqfByZ.js +3 -0
  83. package/dist/lib/railroad-ebnf-DWYD2UWJ-CWRLtxHB.js +3 -0
  84. package/dist/lib/railroad-peg-JR7BVNR7-C-3NHSsk.js +3 -0
  85. package/dist/lib/railroadDiagram-Y72NRBL7-a8YVk8LT.js +76 -0
  86. package/dist/lib/requirementDiagram-EQYSW5RA-B9HolqxU.js +2228 -0
  87. package/dist/lib/rough.esm-a8mysczE.js +1352 -0
  88. package/dist/lib/sankeyDiagram-SY24JHO5-CLFMtMJG.js +970 -0
  89. package/dist/lib/sequenceDiagram-BLEHNHQU-B5wfSV85.js +4253 -0
  90. package/dist/lib/share.js +1 -1
  91. package/dist/lib/sizeCapture-INFHLROL-BWGCc9aa.js +46 -0
  92. package/dist/lib/src-Dcy0zUZH.js +2153 -0
  93. package/dist/lib/stateDiagram-v2-A6IESKWZ-C92vye4N.js +2143 -0
  94. package/dist/lib/swimlanes-B3ENRKFQ-B6-i-tPc.js +4764 -0
  95. package/dist/lib/swimlanesDiagram-AYQRV4AK-CbkBeql-.js +28 -0
  96. package/dist/lib/timeline-definition-JXYKGLGB-D2Ip4r72.js +1073 -0
  97. package/dist/lib/treeView-D4JQ5SDB-CFaKQ_2T.js +3 -0
  98. package/dist/lib/treemap-SAJKECNS-BQ6z7Z3g.js +3 -0
  99. package/dist/lib/types/AppSidebar.d.ts +14 -1
  100. package/dist/lib/types/transcript/Collapsible.d.ts +2 -1
  101. package/dist/lib/types/transcript/Markdown.d.ts +1 -0
  102. package/dist/lib/types/transcript/MermaidBlock.d.ts +3 -0
  103. package/dist/lib/types/transcript/SearchHighlights.d.ts +7 -0
  104. package/dist/lib/types/transcript/ToolBody.d.ts +1 -0
  105. package/dist/lib/types/transcript/TranscriptViewer.d.ts +1 -1
  106. package/dist/lib/types/transcript/UnverifiedPullRequests.d.ts +12 -0
  107. package/dist/lib/types/transcript/index.d.ts +1 -0
  108. package/dist/lib/types/transcript/mermaidSource.d.ts +2 -0
  109. package/dist/lib/types/transcript/mermaidSvg.d.ts +1 -0
  110. package/dist/lib/types/transcript/search-highlights.d.ts +2 -0
  111. package/dist/lib/types/transcript/state-capabilities.d.ts +28 -8
  112. package/dist/lib/types/transcript/tool-state-key.d.ts +2 -0
  113. package/dist/lib/types/transcript/useReaderWidthAnchor.d.ts +20 -0
  114. package/dist/lib/types/transcript/view-model.d.ts +14 -0
  115. package/dist/lib/types/ui/transcript/view-model.d.ts +14 -0
  116. package/dist/lib/{ui-BLiaBlAK.js → ui-BOGaFxV-.js} +5212 -4194
  117. package/dist/lib/ui.js +6 -6
  118. package/dist/lib/usecaseDiagram-WPOLBNNX-BK1Anch1.js +7190 -0
  119. package/dist/lib/vennDiagram-Q3Y3IDCW-B6YTBqTS.js +1880 -0
  120. package/dist/lib/wardley-7MLQ67FV-DChYwu4i.js +3 -0
  121. package/dist/lib/wardleyDiagram-IVAIDKWA-D5I1qLUK.js +645 -0
  122. package/dist/lib/xychartDiagram-4URNHDU4-B6RXyhTO.js +2218 -0
  123. package/package.json +4 -3
@@ -0,0 +1,3 @@
1
+ import "./chunk-NGNAAXSQ-D7Dvct7J.js";
2
+ import { c as e } from "./mermaid-parser.core-I7qQ_fxz.js";
3
+ export { e as createTreeViewServices };
@@ -0,0 +1,3 @@
1
+ import "./chunk-NGNAAXSQ-D7Dvct7J.js";
2
+ import { o as e } from "./mermaid-parser.core-I7qQ_fxz.js";
3
+ export { e as createTreemapServices };
@@ -12,7 +12,7 @@ export default function AppSidebar({ app, apps, groups, currentId, homeHref, bra
12
12
  * (min-width 0, so wide content stays contained). One column below 768px, the top bar above the page.
13
13
  * @param {AppSidebarLayoutProps} props
14
14
  */
15
- export function AppSidebarLayout({ sidebar, children, className }: AppSidebarLayoutProps): import("react").JSX.Element;
15
+ export function AppSidebarLayout({ sidebar, children, className, viewport, topBar, notice, mainAs: Main, mainId }: AppSidebarLayoutProps): import("react").JSX.Element;
16
16
  /**
17
17
  * The frame for one app page inside AppSidebarLayout: the full width of the main column with the
18
18
  * same padding on the left and the right, so a page is never a capped column with an uneven gap
@@ -105,6 +105,11 @@ export function AppPage({ children, as: Tag, className, ...rest }: AppPageProps)
105
105
  * @property {import('react').ReactNode} sidebar an <AppSidebar>.
106
106
  * @property {import('react').ReactNode} children the page body.
107
107
  * @property {string} [className]
108
+ * @property {boolean} [viewport] bound the frame to the viewport rather than document flow.
109
+ * @property {import('react').ReactNode} [topBar]
110
+ * @property {import('react').ReactNode} [notice]
111
+ * @property {'div' | 'main'} [mainAs]
112
+ * @property {string} [mainId]
108
113
  */
109
114
  /**
110
115
  * @typedef {Object} AppPageProps
@@ -326,6 +331,14 @@ export type AppSidebarLayoutProps = {
326
331
  */
327
332
  children: import("react").ReactNode;
328
333
  className?: string;
334
+ /**
335
+ * bound the frame to the viewport rather than document flow.
336
+ */
337
+ viewport?: boolean;
338
+ topBar?: import("react").ReactNode;
339
+ notice?: import("react").ReactNode;
340
+ mainAs?: "div" | "main";
341
+ mainId?: string;
329
342
  };
330
343
  export type AppPageProps = {
331
344
  /**
@@ -1,10 +1,11 @@
1
- export default function Collapsible({ open, children, className, id, keepMounted, animateSize, as: Tag, "aria-label": ariaLabel }: {
1
+ export default function Collapsible({ open, children, className, id, keepMounted, animateSize, startOnFrame, as: Tag, "aria-label": ariaLabel }: {
2
2
  open: any;
3
3
  children: any;
4
4
  className?: string;
5
5
  id: any;
6
6
  keepMounted?: boolean;
7
7
  animateSize?: boolean;
8
+ startOnFrame?: boolean;
8
9
  as?: string;
9
10
  "aria-label": any;
10
11
  }): import("react").JSX.Element;
@@ -13,3 +13,4 @@ export default function Markdown({ text, source }: {
13
13
  text?: string;
14
14
  source?: string;
15
15
  }): import("react").JSX.Element;
16
+ export const MemoMarkdown: import("react").MemoExoticComponent<typeof Markdown>;
@@ -0,0 +1,3 @@
1
+ export default function MermaidBlock({ source }: {
2
+ source: any;
3
+ }): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ export default function SearchHighlights({ scrollRef, query, enabled, revision, selected }: {
2
+ scrollRef: any;
3
+ query: any;
4
+ enabled: any;
5
+ revision: any;
6
+ selected: any;
7
+ }): any;
@@ -5,4 +5,5 @@
5
5
  export default function ToolBody({ tool }: {
6
6
  tool?: ToolCallVM;
7
7
  }): import("react").JSX.Element;
8
+ export const MemoToolBody: import("react").MemoExoticComponent<typeof ToolBody>;
8
9
  export type ToolCallVM = import("./view-model.js").ToolCallVM;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @param {TranscriptViewerProps} props
3
3
  */
4
- export default function TranscriptViewer({ viewModel, capabilities, callbacks, theme: themeProp, onThemeChange, graphSlot, activeTab: activeTabProp, onTabChange, viewMode: viewModeProp, onViewModeChange, sidebarLayout: sidebarLayoutProp, onSidebarLayoutChange, zen: zenProp, onZenChange, readerWidth: readerWidthProp, onReaderWidthChange, leftRailOpen: leftRailOpenProp, onLeftRailOpenChange, rightRailOpen: rightRailOpenProp, onRightRailOpenChange, openTools: openToolsProp, onOpenToolsChange, earlierHistoryOpen: earlierHistoryOpenProp, onEarlierHistoryOpenChange, initialPosition: initialPositionProp, activeTurn: activeTurnProp, onActiveTurnChange, search: searchProp, onSearchChange, filters: filtersProp, onFiltersChange, savedLabels: savedLabelsProp, onSavedLabelsChange, shareOpen: shareOpenProp, onShareOpenChange, moreOpen: moreOpenProp, onMoreOpenChange, breadcrumb, LinkComponent, renderTurnPanel, renderTurnActions, anchorHref, headerActions, streamPrelude, showTail, showOutcome, showSearchTrigger, footer, presentation, subtitle, pullRequests, headingLevel, }: TranscriptViewerProps): import("react").JSX.Element;
4
+ export default function TranscriptViewer({ viewModel, capabilities, callbacks, theme: themeProp, onThemeChange, graphSlot, activeTab: activeTabProp, onTabChange, viewMode: viewModeProp, onViewModeChange, sidebarLayout: sidebarLayoutProp, onSidebarLayoutChange, zen: zenProp, onZenChange, readerWidth: readerWidthProp, onReaderWidthChange, leftRailOpen: leftRailOpenProp, onLeftRailOpenChange, rightRailOpen: rightRailOpenProp, onRightRailOpenChange, openTools: openToolsProp, onOpenToolsChange, earlierHistoryOpen: earlierHistoryOpenProp, onEarlierHistoryOpenChange, initialPosition: initialPositionProp, activeTurn: activeTurnProp, onActiveTurnChange, search: searchProp, onSearchChange, filters: filtersProp, onFiltersChange, savedLabels: savedLabelsProp, onSavedLabelsChange, shareOpen: shareOpenProp, onShareOpenChange, moreOpen: moreOpenProp, onMoreOpenChange, breadcrumb, breadcrumbContext, beforeHeader, LinkComponent, renderTurnPanel, renderTurnActions, anchorHref, headerActions, utilityActions, streamPrelude, showTail, showOutcome, showSearchTrigger, footer, presentation, subtitle, pullRequests, headingLevel, }: TranscriptViewerProps): import("react").JSX.Element;
5
5
  export const READER_FULL: "full";
6
6
  export type TranscriptViewerProps = import("./state-capabilities.js").TranscriptViewerProps;
7
7
  export type TranscriptFilters = import("./state-capabilities.js").TranscriptFilters;
@@ -0,0 +1,12 @@
1
+ /** @typedef {import('@peasant-labs/schema').UnverifiedPullRequest} UnverifiedPullRequest */
2
+ /** @typedef {import('@peasant-labs/schema').UnverifiedPullRequestSource} UnverifiedPullRequestSource */
3
+ /**
4
+ * Recorded command evidence, not an attached or independently verified pull request.
5
+ * @param {{pullRequests: readonly UnverifiedPullRequest[], onSourceSelect: (source: UnverifiedPullRequestSource) => void}} props
6
+ */
7
+ export default function UnverifiedPullRequests({ pullRequests, onSourceSelect }: {
8
+ pullRequests: readonly UnverifiedPullRequest[];
9
+ onSourceSelect: (source: UnverifiedPullRequestSource) => void;
10
+ }): import("react").JSX.Element;
11
+ export type UnverifiedPullRequest = import("@peasant-labs/schema").UnverifiedPullRequest;
12
+ export type UnverifiedPullRequestSource = import("@peasant-labs/schema").UnverifiedPullRequestSource;
@@ -6,6 +6,7 @@ export { default as TranscriptThinking } from "./Thinking.jsx";
6
6
  export { default as TranscriptMarkdown } from "./Markdown.jsx";
7
7
  export { default as TranscriptToolCall } from "./ToolCall.jsx";
8
8
  export { default as TranscriptWorkGroup } from "./WorkGroup.jsx";
9
+ export { default as UnverifiedPullRequests } from "./UnverifiedPullRequests.jsx";
9
10
  export { default as TranscriptSystemRow } from "./SystemRow.jsx";
10
11
  export { default as TranscriptToolBody } from "./ToolBody.jsx";
11
12
  export { default as TranscriptTaskBody } from "./TaskBody.jsx";
@@ -0,0 +1,2 @@
1
+ export function safeMermaidSource(source: any): boolean;
2
+ export function safeMermaidModel(diagram: any): boolean;
@@ -0,0 +1 @@
1
+ export function mermaidSvg(svg: any, prefix: any): any;
@@ -0,0 +1,2 @@
1
+ export function searchExpression(query: any): RegExp;
2
+ export function renderedSearchRanges(root: any, query: any): any[];
@@ -12,8 +12,8 @@ export type ViewMode = "list" | "graph";
12
12
  */
13
13
  export type Theme = "dark" | "light";
14
14
  /**
15
- * How the composite presents: `classic` (the default bordered-turn reading surface) or
16
- * `ledger` (the opt-in reading-first surface: role-led turns with one grouped work panel,
15
+ * How the composite presents: `classic` (the bordered-turn reading surface) or
16
+ * `ledger` (the default reading-first surface: role-led turns with one grouped work panel,
17
17
  * system turns as single rows, and the ledger chrome).
18
18
  */
19
19
  export type Presentation = "classic" | "ledger";
@@ -150,6 +150,12 @@ export type TranscriptInitialPosition = {
150
150
  kind: "turn";
151
151
  turnIndex: number;
152
152
  requestKey?: string;
153
+ } | {
154
+ kind: "tool-call";
155
+ turnIndex: number;
156
+ toolCallIndex: number;
157
+ toolCallId?: string;
158
+ requestKey?: string;
153
159
  };
154
160
  /**
155
161
  * Every TranscriptViewer prop. `viewModel` + `capabilities` are the only required
@@ -159,7 +165,7 @@ export type TranscriptInitialPosition = {
159
165
  * pair whose `onChange?` half sits beside it (React's controlled-component
160
166
  * convention): pass neither ⇒ internal default; pass both ⇒ fully controlled.
161
167
  */
162
- export type TranscriptViewerProps = {
168
+ export type TranscriptViewerBaseProps = {
163
169
  /**
164
170
  * the cooked VM (the adapter's output)
165
171
  */
@@ -250,14 +256,14 @@ export type TranscriptViewerProps = {
250
256
  */
251
257
  moreOpen?: boolean;
252
258
  onMoreOpenChange?: (open: boolean) => void;
253
- /**
254
- * host-routable trail; omit for the demo's static crumb
255
- */
256
- breadcrumb?: BreadcrumbItem[];
257
259
  /**
258
260
  * router link for crumb items (e.g. next/link); defaults to 'a'
259
261
  */
260
262
  LinkComponent?: import("react").ElementType;
263
+ /**
264
+ * in-flow content before the session header
265
+ */
266
+ beforeHeader?: import("react").ReactNode;
261
267
  /**
262
268
  * host per-turn extension rendered under each turn card
263
269
  */
@@ -274,6 +280,10 @@ export type TranscriptViewerProps = {
274
280
  * host session-level actions rendered at the head of the hero action row (attest etc.); the composite's own actions stay the shared tail
275
281
  */
276
282
  headerActions?: unknown;
283
+ /**
284
+ * host secondary actions, in the header on desktop and the bottom bar on phones
285
+ */
286
+ utilityActions?: import("react").ReactNode;
277
287
  /**
278
288
  * host controls or context rendered at the start of the list-mode transcript scroller; omitted in graph mode
279
289
  */
@@ -302,7 +312,7 @@ export type TranscriptViewerProps = {
302
312
  */
303
313
  headingLevel?: 1 | 2;
304
314
  /**
305
- * chrome presentation; defaults to 'classic'. `ledger` adds a subtitle slot, swaps the pinned header's provider/model + scrubber for the title + visible-turns minimap (the turns currently in view), and renders user-turn task cards in the left rail; it also rebuilds every turn as a role-led line (square role well, the role word, the turn number, the time, and the copy anchor) with prose first and one grouped work panel over the turn's tool calls, collapses a system turn to a single compact row. In that head the built-in collapse control, label affordance, model name, error chip, token badge, and saved-label chip are intentionally hidden for now, while a host's own `renderTurnActions` and `renderTurnPanel` keep rendering on every role. Omitting it renders the classic surface unchanged, and an unrecognized runtime value fails closed to classic
315
+ * chrome presentation; defaults to 'ledger'. `classic` retains the report-style surface. An unrecognized runtime value fails closed to classic.
306
316
  */
307
317
  presentation?: Presentation;
308
318
  /**
@@ -314,6 +324,16 @@ export type TranscriptViewerProps = {
314
324
  */
315
325
  pullRequests?: unknown;
316
326
  };
327
+ /**
328
+ * The full legacy trail and the ancestor-only context are alternative contracts.
329
+ */
330
+ export type TranscriptViewerProps = TranscriptViewerBaseProps & ({
331
+ breadcrumb?: BreadcrumbItem[];
332
+ breadcrumbContext?: never;
333
+ } | {
334
+ breadcrumb?: never;
335
+ breadcrumbContext?: BreadcrumbItem[];
336
+ });
317
337
  /**
318
338
  * One breadcrumb segment. The last item renders as the current page (no link).
319
339
  */
@@ -0,0 +1,2 @@
1
+ /** Local disclosure identity; the recorded ID itself is never changed. */
2
+ export function toolStateKey(turnIndex: any, tool: any): any;
@@ -0,0 +1,20 @@
1
+ export default function useReaderWidthAnchor({ readerPx, scrollRef, activeTurnRef, turnRefs, actionRefs, actionLayout, visibleTurns, ledger, sessionId, tab, viewMode, onSettle }: {
2
+ readerPx: any;
3
+ scrollRef: any;
4
+ activeTurnRef: any;
5
+ turnRefs: any;
6
+ actionRefs: any;
7
+ actionLayout: any;
8
+ visibleTurns: any;
9
+ ledger: any;
10
+ sessionId: any;
11
+ tab: any;
12
+ viewMode: any;
13
+ onSettle: any;
14
+ }): {
15
+ begin: () => void;
16
+ ensure: () => void;
17
+ finish: () => void;
18
+ clear: () => void;
19
+ skipScroll: (stream: any) => boolean;
20
+ };
@@ -43,6 +43,8 @@
43
43
  *
44
44
  * @typedef {object} SessionVM
45
45
  * @property {string} id
46
+ * @property {number} [sourceIndex] original index in the source turn's tool calls
47
+ * @property {boolean} [sourceIdUnique] whether a nonempty ID is unambiguous in its partition
46
48
  * @property {import('./wire-types.js').Harness} harness
47
49
  * @property {string} startTime
48
50
  * @property {string} endTime
@@ -144,6 +146,14 @@ export type CommitVM = {
144
146
  */
145
147
  export type SessionVM = {
146
148
  id: string;
149
+ /**
150
+ * original index in the source turn's tool calls
151
+ */
152
+ sourceIndex?: number;
153
+ /**
154
+ * whether a nonempty ID is unambiguous in its partition
155
+ */
156
+ sourceIdUnique?: boolean;
147
157
  harness: import("./wire-types.js").Harness;
148
158
  startTime: string;
149
159
  endTime: string;
@@ -297,6 +307,10 @@ export type ThinkingVM = {
297
307
  */
298
308
  export type TurnVM = {
299
309
  index: number;
310
+ /**
311
+ * whether this index is unambiguous in its partition
312
+ */
313
+ sourceIndexUnique?: boolean;
300
314
  /**
301
315
  * partition-scoped stable rendering key
302
316
  */
@@ -43,6 +43,8 @@
43
43
  *
44
44
  * @typedef {object} SessionVM
45
45
  * @property {string} id
46
+ * @property {number} [sourceIndex] original index in the source turn's tool calls
47
+ * @property {boolean} [sourceIdUnique] whether a nonempty ID is unambiguous in its partition
46
48
  * @property {import('./wire-types.js').Harness} harness
47
49
  * @property {string} startTime
48
50
  * @property {string} endTime
@@ -144,6 +146,14 @@ export type CommitVM = {
144
146
  */
145
147
  export type SessionVM = {
146
148
  id: string;
149
+ /**
150
+ * original index in the source turn's tool calls
151
+ */
152
+ sourceIndex?: number;
153
+ /**
154
+ * whether a nonempty ID is unambiguous in its partition
155
+ */
156
+ sourceIdUnique?: boolean;
147
157
  harness: import("./wire-types.js").Harness;
148
158
  startTime: string;
149
159
  endTime: string;
@@ -297,6 +307,10 @@ export type ThinkingVM = {
297
307
  */
298
308
  export type TurnVM = {
299
309
  index: number;
310
+ /**
311
+ * whether this index is unambiguous in its partition
312
+ */
313
+ sourceIndexUnique?: boolean;
300
314
  /**
301
315
  * partition-scoped stable rendering key
302
316
  */