@aleph-alpha/chat-kit 5.8.0 → 5.9.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 (24) hide show
  1. package/dist/{CkHistory.vue_vue_type_script_setup_true_lang-DG96wNug.js → CkHistory.vue_vue_type_script_setup_true_lang-CEqJtMuI.js} +61 -40
  2. package/dist/adapters/responses-api.d.ts.map +1 -1
  3. package/dist/adapters/responses-api.js +46 -33
  4. package/dist/chat-kit.css +1 -1
  5. package/dist/components/base/CkConversationLayout/CkConversationLayout.stories.d.ts +7 -0
  6. package/dist/components/base/CkConversationLayout/CkConversationLayout.stories.d.ts.map +1 -1
  7. package/dist/components/base/CkConversationLayout/CkConversationLayout.vue.d.ts +3 -1
  8. package/dist/components/base/CkConversationLayout/CkConversationLayout.vue.d.ts.map +1 -1
  9. package/dist/components/composed/CkConversation/CkConversation.stories.d.ts +23 -3
  10. package/dist/components/composed/CkConversation/CkConversation.stories.d.ts.map +1 -1
  11. package/dist/components/composed/CkConversation/CkConversation.vue.d.ts +17 -2
  12. package/dist/components/composed/CkConversation/CkConversation.vue.d.ts.map +1 -1
  13. package/dist/components/composed/CkHistory/CkHistory.vue.d.ts +1 -1
  14. package/dist/components/index.js +1 -1
  15. package/dist/index.js +1 -1
  16. package/package.json +1 -1
  17. package/src/adapters/responses-api.spec.ts +6 -3
  18. package/src/adapters/responses-api.ts +62 -35
  19. package/src/components/base/CkConversationLayout/CkConversationLayout.spec.ts +209 -1
  20. package/src/components/base/CkConversationLayout/CkConversationLayout.stories.ts +84 -0
  21. package/src/components/base/CkConversationLayout/CkConversationLayout.vue +59 -21
  22. package/src/components/composed/CkConversation/CkConversation.spec.ts +96 -5
  23. package/src/components/composed/CkConversation/CkConversation.stories.ts +328 -4
  24. package/src/components/composed/CkConversation/CkConversation.vue +38 -8
@@ -12,9 +12,17 @@ import {
12
12
  UiAvatar,
13
13
  UiAvatarFallback,
14
14
  UiAvatarImage,
15
+ UiCodeBlock,
15
16
  UiSpinner,
16
17
  } from '@aleph-alpha/ui-library';
17
- import { Comment, Fragment, Text, computed, type VNode } from 'vue';
18
+ import {
19
+ Comment,
20
+ Fragment,
21
+ Text,
22
+ computed,
23
+ useTemplateRef,
24
+ type VNode,
25
+ } from 'vue';
18
26
 
19
27
  defineOptions({ name: 'CkConversation' });
20
28
 
@@ -53,7 +61,11 @@ const slots = defineSlots<{
53
61
  'agent-message-content': (props: { message: BaseMessage }) => void;
54
62
  /** Provide footer actions for the agent message */
55
63
  'agent-message-footer': (props: { message: BaseMessage }) => void;
56
- /** Replace the default code block rendering inside agent markdown */
64
+ /**
65
+ * Replace the default code block rendering inside agent markdown. When not
66
+ * provided, fenced code blocks render with `UiCodeBlock` (syntax highlighting
67
+ * + copy button).
68
+ */
57
69
  'agent-message-code-block': (props: {
58
70
  code: string;
59
71
  language: string;
@@ -122,10 +134,26 @@ function hasHeaderActivity(message: BaseMessage): boolean {
122
134
  | undefined;
123
135
  return slot ? slot({ message }).some((vnode) => !isVNodeEmpty(vnode)) : false;
124
136
  }
137
+
138
+ const layoutRef = useTemplateRef('layoutRef');
139
+
140
+ /**
141
+ * Scroll so the message at `index` sits at the top of the viewport. `index` is
142
+ * the zero-based position among the rendered rows (any `thread-footer` counts
143
+ * as the trailing row); when omitted it scrolls to the last row.
144
+ *
145
+ * This only performs the scroll — it does not focus the message. Any
146
+ * accompanying focus handling must be done separately by the caller.
147
+ */
148
+ function scrollToMessage(index?: number): void {
149
+ layoutRef.value?.scrollToMessage(index);
150
+ }
151
+
152
+ defineExpose({ scrollToMessage });
125
153
  </script>
126
154
 
127
155
  <template>
128
- <CkConversationLayout :messages="messages">
156
+ <CkConversationLayout ref="layoutRef" :messages="messages">
129
157
  <template #user-message="{ message }">
130
158
  <div :class="{ 'ml-8': hasIcon }">
131
159
  <slot name="user-message" :message="message">
@@ -213,11 +241,13 @@ function hasHeaderActivity(message: BaseMessage): boolean {
213
241
  :content="getMessageText(message)"
214
242
  :classes="agentMarkdownClasses"
215
243
  >
216
- <template
217
- v-if="$slots['agent-message-code-block']"
218
- #code-block="codeBlockProps"
219
- >
220
- <slot name="agent-message-code-block" v-bind="codeBlockProps" />
244
+ <template #code-block="codeBlockProps">
245
+ <slot name="agent-message-code-block" v-bind="codeBlockProps">
246
+ <UiCodeBlock
247
+ :code="codeBlockProps.code"
248
+ :language="codeBlockProps.language || 'text'"
249
+ />
250
+ </slot>
221
251
  </template>
222
252
  </CkMarkdownRenderer>
223
253
  </slot>