@aparte/core 0.19.3 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/dist/client/aparte-client.d.ts +66 -95
  2. package/dist/client/aparte-client.d.ts.map +1 -1
  3. package/dist/client/stream-adapter.d.ts +7 -13
  4. package/dist/client/stream-adapter.d.ts.map +1 -1
  5. package/dist/client/wire-history.d.ts +4 -5
  6. package/dist/client/wire-history.d.ts.map +1 -1
  7. package/dist/components/bubble/aparte-chat-bubble.d.ts +88 -57
  8. package/dist/components/bubble/aparte-chat-bubble.d.ts.map +1 -1
  9. package/dist/components/chat/aparte-chat.d.ts +15 -13
  10. package/dist/components/chat/aparte-chat.d.ts.map +1 -1
  11. package/dist/components/chat/glide-gate.d.ts +13 -0
  12. package/dist/components/chat/glide-gate.d.ts.map +1 -0
  13. package/dist/components/composer/aparte-composer-action.d.ts +2 -2
  14. package/dist/components/composer/aparte-composer-add-attachment.d.ts +1 -1
  15. package/dist/components/composer/aparte-composer-input.d.ts +1 -5
  16. package/dist/components/composer/aparte-composer-input.d.ts.map +1 -1
  17. package/dist/components/composer/aparte-composer-send.d.ts +8 -10
  18. package/dist/components/composer/aparte-composer-send.d.ts.map +1 -1
  19. package/dist/components/composer/aparte-composer.d.ts +48 -80
  20. package/dist/components/composer/aparte-composer.d.ts.map +1 -1
  21. package/dist/components/context/aparte-context.d.ts +9 -4
  22. package/dist/components/context/aparte-context.d.ts.map +1 -1
  23. package/dist/components/conversation-list/aparte-conversation-list.d.ts +23 -13
  24. package/dist/components/conversation-list/aparte-conversation-list.d.ts.map +1 -1
  25. package/dist/components/elicitation/aparte-elicitation.d.ts +15 -22
  26. package/dist/components/elicitation/aparte-elicitation.d.ts.map +1 -1
  27. package/dist/components/scroll-rail/aparte-scroll-rail.d.ts +10 -11
  28. package/dist/components/scroll-rail/aparte-scroll-rail.d.ts.map +1 -1
  29. package/dist/components/sidebar/aparte-sidebar.d.ts +16 -3
  30. package/dist/components/sidebar/aparte-sidebar.d.ts.map +1 -1
  31. package/dist/components/split/aparte-split.d.ts +12 -3
  32. package/dist/components/split/aparte-split.d.ts.map +1 -1
  33. package/dist/components/status/aparte-chat-status.d.ts.map +1 -1
  34. package/dist/components/suggestions/aparte-suggestions.d.ts +6 -9
  35. package/dist/components/suggestions/aparte-suggestions.d.ts.map +1 -1
  36. package/dist/components/viewport/aparte-chat-viewport.d.ts +70 -70
  37. package/dist/components/viewport/aparte-chat-viewport.d.ts.map +1 -1
  38. package/dist/config/aparte-config.d.ts +87 -66
  39. package/dist/config/aparte-config.d.ts.map +1 -1
  40. package/dist/config/icon-provider.d.ts +19 -2
  41. package/dist/config/icon-provider.d.ts.map +1 -1
  42. package/dist/config/index.d.ts +1 -1
  43. package/dist/config/index.d.ts.map +1 -1
  44. package/dist/config/locale.d.ts +57 -89
  45. package/dist/config/locale.d.ts.map +1 -1
  46. package/dist/config/sanitize.d.ts.map +1 -1
  47. package/dist/conversations/conversation-controller.d.ts +18 -3
  48. package/dist/conversations/conversation-controller.d.ts.map +1 -1
  49. package/dist/conversations/conversation-manager.d.ts +3 -3
  50. package/dist/conversations/conversation-manager.d.ts.map +1 -1
  51. package/dist/custom-elements.json +13054 -12334
  52. package/dist/{dialog-triggers-ChnPFG9M.js → dialog-triggers-3Rk7PuZa.js} +444 -287
  53. package/dist/dialog-triggers-3Rk7PuZa.js.map +1 -0
  54. package/dist/elicitation/approval-panel.d.ts.map +1 -1
  55. package/dist/elicitation/index.d.ts +6 -1
  56. package/dist/elicitation/index.d.ts.map +1 -1
  57. package/dist/elicitation/panel.d.ts +11 -21
  58. package/dist/elicitation/panel.d.ts.map +1 -1
  59. package/dist/elicitation/types.d.ts +19 -27
  60. package/dist/elicitation/types.d.ts.map +1 -1
  61. package/dist/generated/element-attributes.d.ts +11 -5
  62. package/dist/generated/element-attributes.d.ts.map +1 -1
  63. package/dist/host/aparte-chat-host.d.ts +17 -32
  64. package/dist/host/aparte-chat-host.d.ts.map +1 -1
  65. package/dist/icons/extended.d.ts +1 -2
  66. package/dist/icons/extended.d.ts.map +1 -1
  67. package/dist/icons.d.ts +6 -8
  68. package/dist/icons.d.ts.map +1 -1
  69. package/dist/icons.js.map +1 -1
  70. package/dist/index.css +1 -1
  71. package/dist/index.d.ts +12 -9
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +682 -327
  74. package/dist/index.js.map +1 -1
  75. package/dist/index.node.d.ts +6 -3
  76. package/dist/index.node.d.ts.map +1 -1
  77. package/dist/index.node.js +2 -2
  78. package/dist/index.node.js.map +1 -1
  79. package/dist/interop/dialog-triggers.d.ts +2 -2
  80. package/dist/interop/element-props.d.ts +16 -27
  81. package/dist/interop/element-props.d.ts.map +1 -1
  82. package/dist/primitives/icon/aparte-icon.d.ts.map +1 -1
  83. package/dist/primitives/select/aparte-option.d.ts +3 -2
  84. package/dist/primitives/select/aparte-option.d.ts.map +1 -1
  85. package/dist/primitives/select/aparte-select.d.ts +24 -21
  86. package/dist/primitives/select/aparte-select.d.ts.map +1 -1
  87. package/dist/renderers/markdown-stream.d.ts.map +1 -1
  88. package/dist/renderers/segment-renderers.d.ts +11 -17
  89. package/dist/renderers/segment-renderers.d.ts.map +1 -1
  90. package/dist/renderers/segments/code.d.ts.map +1 -1
  91. package/dist/renderers/segments/error.d.ts.map +1 -1
  92. package/dist/renderers/segments/text.d.ts.map +1 -1
  93. package/dist/renderers/segments/tool-call.d.ts.map +1 -1
  94. package/dist/runtime/message-repository.d.ts +8 -15
  95. package/dist/runtime/message-repository.d.ts.map +1 -1
  96. package/dist/transport/backend-handler.d.ts +4 -6
  97. package/dist/transport/backend-handler.d.ts.map +1 -1
  98. package/dist/transport/backend-transport.d.ts +14 -0
  99. package/dist/transport/backend-transport.d.ts.map +1 -1
  100. package/dist/transport/types.d.ts +7 -10
  101. package/dist/transport/types.d.ts.map +1 -1
  102. package/dist/types/chat.d.ts +10 -18
  103. package/dist/types/chat.d.ts.map +1 -1
  104. package/dist/types/element-attributes.d.ts +6 -12
  105. package/dist/types/element-attributes.d.ts.map +1 -1
  106. package/dist/types/element-map.d.ts +6 -19
  107. package/dist/types/element-map.d.ts.map +1 -1
  108. package/dist/types/event-map.d.ts +11 -17
  109. package/dist/types/event-map.d.ts.map +1 -1
  110. package/dist/types/events.d.ts +5 -14
  111. package/dist/types/events.d.ts.map +1 -1
  112. package/dist/types/index.d.ts +2 -2
  113. package/dist/types/index.d.ts.map +1 -1
  114. package/dist/types/model-provider.d.ts +7 -9
  115. package/dist/types/model-provider.d.ts.map +1 -1
  116. package/dist/types/segments.d.ts +21 -13
  117. package/dist/types/segments.d.ts.map +1 -1
  118. package/dist/types/tools.d.ts +20 -22
  119. package/dist/types/tools.d.ts.map +1 -1
  120. package/dist/utils/copy-text.d.ts +1 -2
  121. package/dist/utils/copy-text.d.ts.map +1 -1
  122. package/dist/utils/css-escape.d.ts +1 -1
  123. package/dist/utils/escape.d.ts +4 -19
  124. package/dist/utils/escape.d.ts.map +1 -1
  125. package/dist/utils/files-to-attachments.d.ts +2 -2
  126. package/dist/utils/fold-text.d.ts +13 -0
  127. package/dist/utils/fold-text.d.ts.map +1 -0
  128. package/dist/utils/is-awaiting-reply.d.ts +2 -5
  129. package/dist/utils/is-awaiting-reply.d.ts.map +1 -1
  130. package/dist/utils/presence.d.ts +5 -5
  131. package/dist/utils/segments.d.ts +54 -78
  132. package/dist/utils/segments.d.ts.map +1 -1
  133. package/dist/utils/tool-input.d.ts +1 -1
  134. package/dist/utils/tool-input.d.ts.map +1 -1
  135. package/dist/utils/transcript.d.ts +2 -2
  136. package/dist/utils/uuid.d.ts +0 -11
  137. package/dist/utils/uuid.d.ts.map +1 -1
  138. package/package.json +29 -3
  139. package/dist/dialog-triggers-ChnPFG9M.js.map +0 -1
@@ -177,7 +177,7 @@ export declare class AparteSplit extends HTMLElement {
177
177
  * alone would measure a one-track grid and commit `position="100"`.
178
178
  */
179
179
  get stacked(): boolean;
180
- /** One pane on demand, whatever the width (#54). Reflected. */
180
+ /** One pane on demand, whatever the width. Reflected. */
181
181
  get single(): boolean;
182
182
  set single(value: boolean);
183
183
  /** Fold the primary pane to its minimum, remembering the size it had. */
@@ -227,8 +227,8 @@ export declare class AparteSplit extends HTMLElement {
227
227
  *
228
228
  * While STACKED there is nothing to read: one pane is `display: none` and the other
229
229
  * spans the single track, so the ratio is 0 or 100 whatever the seam was set to.
230
- * Measuring it there is how tapping "Preview" on a phone used to write `position="0"`
231
- * into the attribute, the event and the host's storage.
230
+ * Measuring it there would write `position="0"` into the attribute, the event and the
231
+ * host's storage when "Preview" is tapped on a phone.
232
232
  */
233
233
  private _achievedPercent;
234
234
  /**
@@ -352,6 +352,15 @@ export declare class AparteSplit extends HTMLElement {
352
352
  * first on the page. Same shape as `[data-aparte-sidebar-toggle]`.
353
353
  */
354
354
  private _onDocumentClick;
355
+ /**
356
+ * The two-button switch says which pane it shows: `aria-pressed` on every
357
+ * `[data-aparte-split-pane="start"|"end"]` that reaches this split, true on the one
358
+ * naming the pane in view, while the split is stacked; side by side both panes are in
359
+ * view and neither button is pressed, so none carries it. A toggle (an id, or empty) is
360
+ * an action and gets none. Read when the split connects, whenever `pane` changes and
361
+ * when it stacks or unstacks, so a control added later is stamped at the next switch.
362
+ */
363
+ private _syncPaneControls;
355
364
  private _onConfigChange;
356
365
  /**
357
366
  * The seam's accessible name. A host that wrote its own `aria-label` — or an
@@ -1 +1 @@
1
- {"version":3,"file":"aparte-split.d.ts","sourceRoot":"","sources":["../../../src/components/split/aparte-split.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aparte-split.d.ts","sourceRoot":"","sources":["../../../src/components/split/aparte-split.ts"],"names":[],"mappings":"AAKA,uFAAuF;AACvF,MAAM,WAAW,uBAAuB;IACpC,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,SAAS,EAAE,OAAO,CAAC;IACnB,oFAAoF;IACpF,OAAO,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,qEAAqE;IACrE,WAAW,EAAE,YAAY,GAAG,UAAU,CAAC;IACvC,sEAAsE;IACtE,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;CAC1C;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AACH,qBAAa,WAAY,SAAQ,WAAW;IACxC,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,SAAS,CAA+B;IAChD,8EAA8E;IAC9E,OAAO,CAAC,aAAa,CAAuB;IAC5C,qFAAqF;IACrF,OAAO,CAAC,WAAW,CAAK;IAExB,yFAAyF;IACzF,OAAO,CAAC,MAAM,CAAC,UAAU,CAAK;IAE9B,qEAAqE;IACrE,OAAO,CAAC,SAAS,CAAoB;IACrC,sEAAsE;IACtE,OAAO,CAAC,gBAAgB,CAAoB;IAC5C;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAAS;IACjC,mFAAmF;IACnF,OAAO,CAAC,oBAAoB,CAAuB;IAEnD,qFAAqF;IACrF,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,SAAS,CAAgC;IAEjD,sFAAsF;IACtF,OAAO,CAAC,OAAO,CAA4C;IAE3D;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,iFAAiF;IACjF,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,qEAAqE;IACrE,OAAO,CAAC,OAAO,CAAS;IAIxB,qFAAqF;IACrF,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAMzB;IAED,iFAAiF;IACjF,IAAI,WAAW,IAAI,YAAY,GAAG,UAAU,CAE3C;IAED,IAAI,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,UAAU,EAE/C;IAED,mCAAmC;IACnC,IAAI,OAAO,IAAI,OAAO,GAAG,KAAK,CAE7B;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,EAEjC;IAED,iDAAiD;IACjD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAE3B;IAED,sDAAsD;IACtD,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,CAE1B;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,EAE9B;IAED,2DAA2D;IAC3D,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;IAED;;;;;;;;;OASG;IACH,IAAI,OAAO,IAAI,OAAO,CAOrB;IAED,yDAAyD;IACzD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAExB;IAID,yEAAyE;IACzE,QAAQ,IAAI,IAAI;IAIhB,8DAA8D;IAC9D,MAAM,IAAI,IAAI;IAId,cAAc,IAAI,IAAI;IAItB,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI;IAItC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAQb,iBAAiB,IAAI,IAAI;IA0DzB,oBAAoB,IAAI,IAAI;IA0B5B,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IA+D5C;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IAmBrB,2DAA2D;IAC3D,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,YAAY;IAKpB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,QAAQ;IAKhB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,cAAc;IAsBtB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,QAAQ;IAIhB;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO;IAyBf,iFAAiF;IACjF,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,cAAc,CAoBpB;IAEF;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc,CAkCpB;IAEF,OAAO,CAAC,YAAY,CAElB;IAEF,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,eAAe;IAevB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IASjB;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,cAAc,CAGpB;IAIF,OAAO,CAAC,UAAU,CA+BhB;IAEF;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAKd;IAEF;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAIjB;IAIF;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,cAAc,CAAmE;IAEzF;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,aAAa;IAqBrB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB,CAmBtB;IAEF;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,eAAe,CAA+B;IAEtD;;;;OAIG;IACH,OAAO,CAAC,QAAQ;CASnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"aparte-chat-status.d.ts","sourceRoot":"","sources":["../../../src/components/status/aparte-chat-status.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED;;;;;;OAMG;IACH,OAAO,KAAK,IAAI,GAEf;IAED,4FAA4F;IAC5F,OAAO,CAAC,KAAK;;IAQb,iBAAiB,IAAI,IAAI;IAWzB,oBAAoB,IAAI,IAAI;IAI5B,OAAO,CAAC,eAAe,CASrB;IAEF,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAa9F;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB,OAAO,CAAC,OAAO;IAgDf;;;;;;;;;OASG;IACH,OAAO,CAAC,UAAU;IAUlB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,WAAW;CAQpB"}
1
+ {"version":3,"file":"aparte-chat-status.d.ts","sourceRoot":"","sources":["../../../src/components/status/aparte-chat-status.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED;;;;;;OAMG;IACH,OAAO,KAAK,IAAI,GAEf;IAED,4FAA4F;IAC5F,OAAO,CAAC,KAAK;;IAQb,iBAAiB,IAAI,IAAI;IAWzB,oBAAoB,IAAI,IAAI;IAI5B,OAAO,CAAC,eAAe,CASrB;IAEF,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAa9F;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB,OAAO,CAAC,OAAO;IAgDf;;;;;;;;;OASG;IACH,OAAO,CAAC,UAAU;IAUlB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,WAAW;CAmBpB"}
@@ -16,19 +16,17 @@ export interface AparteSuggestionEventDetail {
16
16
  /**
17
17
  * Prompt starters — a row of suggested prompts a reader clicks instead of typing.
18
18
  *
19
- * Every chat product opens on three or four of these, and the example app used to
20
- * hand-roll them: four `<button class="chip">`, a click handler, a CSS recipe of its
21
- * own. This element is that pattern done once, wearing the button recipe.
19
+ * Every chat product opens on three or four of these. This element is that pattern
20
+ * done once, wearing the button recipe.
22
21
  *
23
22
  * A click goes THROUGH the composer — `setValue()` then `submit()` — never a synthetic
24
23
  * `aparte-send`. The composer's `submit()` is where every gate lives (disabled, already
25
- * streaming, `requireModelSelection`), and a chip that bypassed them once sent a
24
+ * streaming, `requireModelSelection`), and a chip that bypassed them could send a
26
25
  * request with an empty model id while the composer was visibly greyed out. So the
27
26
  * element needs a composer: the nearest `<aparte-composer>` ancestor, else the one
28
27
  * serving the chat named by `target`, else the first one in the document.
29
28
  *
30
- * Tier (a) of ratified decision #8: core honours the click alone, so it is live by
31
- * default. `aparte-suggestion` fires first and is cancelable — `preventDefault()`
29
+ * Core honours the click alone, so it is live by default. `aparte-suggestion` fires first and is cancelable — `preventDefault()`
32
30
  * leaves the composer untouched, for an app that wants the prompt for itself.
33
31
  *
34
32
  * It declares no custom property of its own: the gap comes from the global
@@ -94,9 +92,8 @@ export declare class AparteSuggestions extends HTMLElement {
94
92
  *
95
93
  * Both, because both arrive: React 19 and Svelte assign the PROPERTY whenever the
96
94
  * element has one of that name, so `<aparte-suggestions suggestions='[…]'>` — the
97
- * documented spelling, typed valid by both wrappers — reached this setter as a
98
- * string, `Array.isArray` said no, and the row rendered nothing while the attribute
99
- * (and so `attributeChangedCallback`) was never written.
95
+ * documented spelling, typed valid by both wrappers — reaches this setter as a
96
+ * string while the attribute (and so `attributeChangedCallback`) is never written.
100
97
  */
101
98
  set suggestions(value: AparteSuggestion[] | string);
102
99
  connectedCallback(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"aparte-suggestions.d.ts","sourceRoot":"","sources":["../../../src/components/suggestions/aparte-suggestions.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAC9C,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,SAAS,CAA+B;IAEhD,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,kEAAkE;IAClE,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAQ;IACzB,6EAA6E;IAC7E,OAAO,CAAC,OAAO,CAAS;IAYxB,OAAO,CAAC,OAAO,CAMb;IAEF,OAAO,CAAC,eAAe,CAKrB;IAEF,OAAO,CAAC,eAAe,CAGrB;IAEF,yFAAyF;IACzF,IAAI,WAAW,IAAI,gBAAgB,EAAE,CAEpC;IAED;;;;;;;;OAQG;IACH,IAAI,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,MAAM,EAKjD;IAED,iBAAiB,IAAI,IAAI;IAOzB,oBAAoB,IAAI,IAAI;IAS5B,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB5C,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,OAAO,CAAuB;IAEtC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,cAAc;IAOtB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAO1B,6FAA6F;IAC7F,OAAO,CAAC,gBAAgB;IAkBxB,+FAA+F;IAC/F,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,OAAO;IAyBf,OAAO,CAAC,SAAS;CAwBpB"}
1
+ {"version":3,"file":"aparte-suggestions.d.ts","sourceRoot":"","sources":["../../../src/components/suggestions/aparte-suggestions.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAC9C,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,SAAS,CAA+B;IAEhD,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,kEAAkE;IAClE,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAQ;IACzB,6EAA6E;IAC7E,OAAO,CAAC,OAAO,CAAS;IAWxB,OAAO,CAAC,OAAO,CAMb;IAEF,OAAO,CAAC,eAAe,CAKrB;IAEF,OAAO,CAAC,eAAe,CAGrB;IAEF,yFAAyF;IACzF,IAAI,WAAW,IAAI,gBAAgB,EAAE,CAEpC;IAED;;;;;;;OAOG;IACH,IAAI,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,MAAM,EAKjD;IAED,iBAAiB,IAAI,IAAI;IAOzB,oBAAoB,IAAI,IAAI;IAS5B,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB5C,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,OAAO,CAAuB;IAEtC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,cAAc;IAOtB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAO1B,6FAA6F;IAC7F,OAAO,CAAC,gBAAgB;IAkBxB,+FAA+F;IAC/F,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,OAAO;IAyBf,OAAO,CAAC,SAAS;CAwBpB"}
@@ -80,6 +80,8 @@ import type { ExportedMessageRepository } from '../../runtime/message-repository
80
80
  * the chat host: how far from the host's inline edge its rows start (padding plus the
81
81
  * scrollbar gutter, at the current container step). The composer pads by it, so the two
82
82
  * boxes share one edge at every width. Read-only from the outside.
83
+ * @cssprop [--aparte-top-inset=0px] - How much of the transcript's top is covered by a header floating over it.
84
+ * Set it on the chat, by hand: the first message starts below it, and a jump to a message lands below it.
83
85
  * @cssprop [--aparte-bottom-inset=0px] - How much of the transcript's bottom is covered
84
86
  * by content floating over it. Written by the viewport itself under
85
87
  * `[overlay-composer]` (never set it there — it would be overwritten); a host that
@@ -151,17 +153,14 @@ export declare class AparteChatViewport extends HTMLElement {
151
153
  * Not `readonly`: a test shortens it to run past the window's end in a few frames. */
152
154
  private _settleWindowMs;
153
155
  /**
154
- * Until when a smooth scroll of ours is in flight (#57). A user send glides to the
155
- * bottom with `scrollTo({ behavior: 'smooth' })`; the assistant placeholder and the
156
- * first tokens used to land INSIDE that glide through the streaming path — an instant
157
- * `scrollTop = scrollHeight` plus the settle chain — and an instant write cancels a
158
- * running smooth scroll in every engine. Measured before the fix: five instant writes
159
- * in the send's own frame (the spacer recalculation scrolls synchronously, the
160
- * mutation observer queues another), so there never was a glide to cut — the view
161
- * teleported. While this deadline is ahead, every bottom-pin RE-TARGETS the glide
162
- * (a second smooth `scrollTo` is continuous) instead of writing `scrollTop`; the
163
- * browser's `scrollend` closes it early where supported. Streaming is instant again
164
- * after that, as it must be to keep up with token bursts.
156
+ * Until when a smooth scroll of ours is in flight. A user send glides to the
157
+ * bottom with `scrollTo({ behavior: 'smooth' })`, and the assistant placeholder and
158
+ * first tokens land inside that glide. An instant `scrollTop = scrollHeight` write
159
+ * cancels a running smooth scroll in every engine, so while this deadline is ahead
160
+ * every bottom-pin RE-TARGETS the glide (a second smooth `scrollTo` is continuous)
161
+ * instead of writing `scrollTop`; the browser's `scrollend` closes it early where
162
+ * supported. Streaming is instant after that, as it must be to keep up with token
163
+ * bursts.
165
164
  */
166
165
  private _glideUntil;
167
166
  /** The glide's budget when `scrollend` is not there to close it: Chromium's smooth scroll over a viewport takes ~300–500 ms. */
@@ -185,11 +184,22 @@ export declare class AparteChatViewport extends HTMLElement {
185
184
  private _maxRenderedBubbles;
186
185
  private _resizeObserver;
187
186
  private _mutationObserver;
187
+ /**
188
+ * Watches the size of the bubbles the bottom spacer measures — the last question and
189
+ * everything after it. A bubble that has never been on screen measures its
190
+ * `content-visibility` fallback (320px) until it is shown, and taking its real height
191
+ * is neither a mutation nor a resize of the scroll container: without this, a spacer
192
+ * sized from two fallbacks stayed wrong once they came into view.
193
+ */
194
+ private _tailObserver;
195
+ private _tail;
196
+ /** Each tail bubble's border-box height, as measured when it started being watched and as last reported. */
197
+ private _tailHeights;
188
198
  /**
189
199
  * Opening or closing a `<details>` — a tool row, a reasoning block, an artifact card, a host's
190
200
  * own — changes the transcript's height through an ATTRIBUTE, which neither observer sees: the
191
201
  * mutation observer watches children, and the resize observer leaves the wrapper out on
192
- * purpose. `toggle` does not bubble, so it is caught on the way down (#105).
202
+ * purpose. `toggle` does not bubble, so it is caught on the way down.
193
203
  */
194
204
  private _onDisclosureToggle;
195
205
  /** The `[overlay-composer]` shell this viewport floats in, if any. Read at observer setup, like `framework-managed`. */
@@ -224,8 +234,8 @@ export declare class AparteChatViewport extends HTMLElement {
224
234
  constructor();
225
235
  connectedCallback(): void;
226
236
  /**
227
- * A locale switch changes the reading direction, and `dir` was applied once at
228
- * render — so a chat already on screen never flipped to RTL until a reload.
237
+ * A locale switch changes the reading direction, and `dir` follows it, so a chat
238
+ * already on screen flips to RTL without a reload.
229
239
  * Only OUR config: an instance-scoped change elsewhere must not touch us.
230
240
  */
231
241
  private _onConfigChange;
@@ -235,15 +245,14 @@ export declare class AparteChatViewport extends HTMLElement {
235
245
  * A scrollable region that no element can hold focus in cannot be scrolled from
236
246
  * the keyboard in WebKit: Chromium and Firefox hand an unfocusable overflow box a
237
247
  * caret or a "scroller" tab stop of their own, Safari does not. So a plain-text
238
- * transcript — no links, no code blocks, nothing focusable inside — was unreadable
239
- * past the first screen for a Safari keyboard user, with no error and nothing on
240
- * screen to say so.
248
+ * transcript — no links, no code blocks, nothing focusable inside — would be
249
+ * unreadable past the first screen for a Safari keyboard user, with no error and
250
+ * nothing on screen to say so.
241
251
  *
242
- * `tabindex="0"` on the surface itself, in BOTH DOM modes. The framework mode
243
- * appeared to work already, and only by accident: the scroll button is inside the
244
- * host and stays tabbable while it is visually hidden, so Tab happened to land
245
- * somewhere that scrolled. A tab stop that exists because a hidden button happens
246
- * to sit there is not an affordance, it is a coincidence.
252
+ * `tabindex="0"` on the surface itself, in BOTH DOM modes. In framework mode the
253
+ * scroll button is inside the host and stays tabbable while it is visually hidden,
254
+ * but a tab stop that exists because a hidden button happens to sit there is a
255
+ * coincidence, not an affordance.
247
256
  *
248
257
  * The name ships WITH the tab stop rather than after it: a focusable `role="log"`
249
258
  * with no accessible name is announced as an unnamed region, which is a worse
@@ -287,10 +296,10 @@ export declare class AparteChatViewport extends HTMLElement {
287
296
  * The id of the message currently streaming, if any — searched across the whole
288
297
  * TREE, and answering with an OFF-HEAD one first when there are two.
289
298
  *
290
- * It used to scan `getMessages()`, the active path. A retry or an edit on an
299
+ * Not a scan of `getMessages()`, the active path: a retry or an edit on an
291
300
  * earlier bubble calls `addSiblingOf`, which switches the branch to the new pending
292
- * reply: the turn still being written leaves the path, the scan found nothing, and
293
- * the rest of that turn was appended to the message that had just replaced it.
301
+ * reply, so the turn still being written leaves the path and a path scan would find
302
+ * nothing, appending the rest of that turn to the message that just replaced it.
294
303
  *
295
304
  * A new pending reply is itself marked streaming, so "the first one found" would
296
305
  * answer the head and let the write through — the very case this exists to refuse.
@@ -304,10 +313,10 @@ export declare class AparteChatViewport extends HTMLElement {
304
313
  /**
305
314
  * While a reply streams, the transcript is read-only except for Stop.
306
315
  *
307
- * The streaming message's own footer was already hidden; every OTHER message kept
308
- * its branch picker and its retry/edit buttons live. Swapping a branch mid-stream
309
- * re-rendered the active path under the reply being written, and a retry cut that
310
- * reply off to start another — both seen on the landing page. The state that
316
+ * The streaming message's own footer is hidden, and the branch picker and the
317
+ * retry/edit buttons of every OTHER message are disabled: swapping a branch mid-stream would
318
+ * re-render the active path under the reply being written, and a retry would cut
319
+ * that reply off to start another. The state that
311
320
  * decides it is the whole transcript's, so it lives on the viewport (`data-busy`)
312
321
  * and is pushed to the bubbles it holds; a bubble mounted later, under a
313
322
  * framework's DOM, reads the attribute itself when it connects.
@@ -327,8 +336,7 @@ export declare class AparteChatViewport extends HTMLElement {
327
336
  * (head) message" convention (also what a wrapper host installs);
328
337
  * - `addSegment(messageId, segment)` — explicit standalone form.
329
338
  * The first argument's type disambiguates (string = messageId, object =
330
- * segment), so a raw viewport driven by `AparteClient` no longer drops text
331
- * (the args used to bind one position short, creating a phantom message).
339
+ * segment), so a raw viewport can be driven by `AparteClient`.
332
340
  */
333
341
  addSegment(segment: AparteSegment): void;
334
342
  addSegment(messageId: string, segment: AparteSegment): void;
@@ -515,7 +523,9 @@ export declare class AparteChatViewport extends HTMLElement {
515
523
  */
516
524
  resetSpacer(): void;
517
525
  /**
518
- * Enable or disable auto-scroll
526
+ * Enable or disable auto-scroll. Turned off, it stays off through the scroll that comes
527
+ * next — a jump of the page's own, smooth or not — and comes back once the reader is at
528
+ * the bottom again.
519
529
  */
520
530
  setAutoScroll(enabled: boolean): void;
521
531
  /**
@@ -620,10 +630,9 @@ export declare class AparteChatViewport extends HTMLElement {
620
630
  * the transcript's padding plus the scrollbar gutter the scroller reserves on both
621
631
  * edges, at whatever step its container query has taken — as
622
632
  * `--aparte-transcript-inset`. The composer pads by it (composer.css), so its box
623
- * lands on the row's box at every width. The two used to be independent stacks: the
624
- * composer cannot know the gutter and a container query cannot reach it, so they sat
625
- * 10px apart at 768 and the gutter's half apart at 1280, and the reading-column demo
626
- * showed three left edges 12px apart. Written only when the value changes, for the
633
+ * lands on the row's box at every width. The composer cannot know the gutter
634
+ * and a container query cannot reach it, so this is the one place both boxes read
635
+ * it from. Written only when the value changes, for the
627
636
  * same reason `_updateOverlayInset` is. On the HOST, not on this element: the
628
637
  * composer is a sibling, and a custom property only travels down.
629
638
  */
@@ -639,45 +648,34 @@ export declare class AparteChatViewport extends HTMLElement {
639
648
  * The browser says a scroll came to rest — the glide is over ONLY if it rested at the
640
649
  * bottom. WebKit fires `scrollend` when a smooth scroll is REPLACED by another (our own
641
650
  * re-target), 45–60 ms into the glide and hundreds of pixels short; taken at its word,
642
- * that closed the window and the next pin was the cut this guard exists to prevent
643
- * (react-webkit and vanilla-webkit, 2 of 2). Short of the bottom, the budget keeps
644
- * bounding the window.
651
+ * that would close the window and the next pin would be the cut this guard exists
652
+ * to prevent. Short of the bottom, the budget keeps bounding the window.
645
653
  */
646
654
  private _handleScrollEnd;
647
655
  /**
648
656
  * Confirm over the next few frames that we actually reached the bottom.
649
657
  *
650
- * One assignment is not enough, and the reason is measured rather than guessed.
651
- * A timeline of a streamed turn on Safari (framework mode) recorded the content
652
- * settling in TWO layout passes — 1118 → 1121 → 1152 px. `scrollTop =
653
- * scrollHeight` ran against the middle one, clamped to that layout's max (603),
654
- * and nothing ran afterwards: the last 31px never closed. Auto-follow stayed
655
- * armed the whole time, so the component was not disarmed — it was SATISFIED.
656
- * `_isAtBottom()` answers "yes" for any gap under `_scrollThreshold` (50), which
657
- * is the right rule for keeping auto-follow armed and the wrong one as a
658
- * definition of "anchored".
659
- *
660
- * Ruled out on the way here, so nobody pays for it twice: not a WebKit
661
- * padding-accounting difference (a probe writing `scrollTop = 1e7` reached
662
- * exactly `scrollHeight - clientHeight`), not a missing `characterData`
663
- * mutation, and not a child resize a ResizeObserver could see.
658
+ * One assignment is not enough. Content can settle in several layout passes
659
+ * (1118 → 1121 → 1152 px on Safari in framework mode), and `scrollTop =
660
+ * scrollHeight` run against a middle pass clamps to that layout's max and leaves
661
+ * the rest unclosed. Auto-follow stays armed the whole time, so the component is
662
+ * not disarmed — it is SATISFIED: `_isAtBottom()` answers "yes" for any gap under
663
+ * `_scrollThreshold` (50), which is the right rule for keeping auto-follow armed
664
+ * and the wrong one as a definition of "anchored".
664
665
  *
665
666
  * A BOUNDED retry, not one corrective frame: a single frame lands on the same
666
- * stale layout and was measured leaving a wider gap than doing nothing. Bounded
667
- * so it always terminates; re-reads `_isAutoScrollEnabled` every frame so a
668
- * reader who scrolls away mid-settle is left alone.
667
+ * stale layout and can leave a wider gap than doing nothing. Bounded so it always
668
+ * terminates; re-reads `_isAutoScrollEnabled` every frame so a reader who scrolls
669
+ * away mid-settle is left alone.
669
670
  *
670
- * Bounded by TIME, and it does not stop at the first closed gap — both of those
671
- * were the second half of the same bug. It used to be four frames (~64ms on an
672
- * idle 60Hz machine) and to return permanently the frame the gap first closed.
673
- * A branch swap at the bottom of a long transcript on react-webkit falsified
674
- * both at once: the rebuild's scrollable max churned 891 -> 1091 -> 891, the gap
675
- * WAS closed for a frame against the tall layout, the chain returned, the height
676
- * fell back with WebKit holding `scrollTop` at 720 — and the transcript stood
677
- * 171px short with auto-follow still armed. A frame count is a proxy for time
678
- * that fails exactly on the slow engine, so the budget is real milliseconds now,
679
- * and a closed gap only ends the chain when the window is over. One chain, not
680
- * one per call: during a stream every token used to start its own.
671
+ * Bounded by TIME, and it does not stop at the first closed gap. A branch swap at
672
+ * the bottom of a long transcript churns the scrollable max (891 -> 1091 -> 891):
673
+ * the gap is closed for a frame against the tall layout, the height falls back with
674
+ * WebKit holding `scrollTop`, and the transcript would stand short with auto-follow
675
+ * still armed. A frame count is a proxy for time that fails exactly on the slow
676
+ * engine, so the budget is real milliseconds, and a closed gap only ends the chain
677
+ * when the window is over. One chain, not one per call: during a stream every token
678
+ * would otherwise start its own.
681
679
  */
682
680
  private _settleAtBottom;
683
681
  private _smoothScrollToBottom;
@@ -688,10 +686,10 @@ export declare class AparteChatViewport extends HTMLElement {
688
686
  *
689
687
  * The two answer different questions: the flag is intent ("should new content
690
688
  * pull the view down"), the button is a fact ("is there anything below the
691
- * fold"). Mirroring the flag made the button lie whenever the two diverged —
689
+ * fold"). Mirroring the flag would make the button lie whenever the two diverge —
692
690
  * `navigateBranch` deliberately disarms auto-follow, so swapping a branch while
693
- * already at the bottom of a scrollable transcript left the button offering to
694
- * scroll nowhere (reported from a React consumer). Re-derived on scroll, on the
691
+ * already at the bottom of a scrollable transcript would leave the button offering
692
+ * to scroll nowhere. Re-derived on scroll, on the
695
693
  * post-mutation frame and after a path swap, so it converges to the truth
696
694
  * whatever a framework's render timing does in between.
697
695
  */
@@ -706,6 +704,8 @@ export declare class AparteChatViewport extends HTMLElement {
706
704
  * reaching 0 when the combined height fills the viewport.
707
705
  */
708
706
  private _recalculateSpacer;
707
+ /** Point `_tailObserver` at the last question and the bubbles after it, and only those. */
708
+ private _observeTail;
709
709
  /**
710
710
  * Schedule a spacer recalculation on the next animation frame.
711
711
  * Batches multiple rapid calls (e.g. during token streaming) into one.
@@ -1 +1 @@
1
- {"version":3,"file":"aparte-chat-viewport.d.ts","sourceRoot":"","sources":["../../../src/components/viewport/aparte-chat-viewport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aparte-chat-viewport.d.ts","sourceRoot":"","sources":["../../../src/components/viewport/aparte-chat-viewport.ts"],"names":[],"mappings":"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"}