@aleph-alpha/chat-kit 5.12.0 → 6.0.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 (69) hide show
  1. package/dist/{CkHistory.vue_vue_type_script_setup_true_lang-CImSzLYs.js → CkHistory.vue_vue_type_script_setup_true_lang-D9Ph9eYp.js} +115 -31
  2. package/dist/adapters/responses-api.d.ts +1 -1
  3. package/dist/adapters/responses-api.d.ts.map +1 -1
  4. package/dist/adapters/responses-api.js +9 -7
  5. package/dist/chat-kit.css +12 -12
  6. package/dist/components/base/CkCitation/CkCitation.stories.d.ts +1 -4
  7. package/dist/components/base/CkCitation/CkCitation.stories.d.ts.map +1 -1
  8. package/dist/components/base/CkCitation/CkCitation.vue.d.ts.map +1 -1
  9. package/dist/components/base/CkCitation/types.d.ts +6 -1
  10. package/dist/components/base/CkCitation/types.d.ts.map +1 -1
  11. package/dist/components/base/CkCitationCard/CkCitationCard.stories.d.ts +13 -2
  12. package/dist/components/base/CkCitationCard/CkCitationCard.stories.d.ts.map +1 -1
  13. package/dist/components/base/CkCitationCard/CkCitationCard.vue.d.ts +1 -0
  14. package/dist/components/base/CkCitationCard/CkCitationCard.vue.d.ts.map +1 -1
  15. package/dist/components/base/CkCitationCard/types.d.ts +6 -1
  16. package/dist/components/base/CkCitationCard/types.d.ts.map +1 -1
  17. package/dist/components/base/CkCitationLabel/CkCitationLabel.vue.d.ts.map +1 -1
  18. package/dist/components/base/CkHistoryItem/CkHistoryItem.vue.d.ts.map +1 -1
  19. package/dist/components/base/CkHistoryWrapper/CkHistoryWrapper.vue.d.ts.map +1 -1
  20. package/dist/components/base/CkMarkdownRenderer/CkMarkdownRenderer.stories.d.ts.map +1 -1
  21. package/dist/components/index.js +1 -1
  22. package/dist/composables/fileUpload/useFileUpload.d.ts.map +1 -1
  23. package/dist/composables/index.js +1 -1
  24. package/dist/composables/useChat.d.ts.map +1 -1
  25. package/dist/composables/useConversations.d.ts.map +1 -1
  26. package/dist/composables/useIsTruncated.d.ts +22 -0
  27. package/dist/composables/useIsTruncated.d.ts.map +1 -0
  28. package/dist/handlers/index.js +1 -1
  29. package/dist/handlers/useChatKitLabels.d.ts +35 -1
  30. package/dist/handlers/useChatKitLabels.d.ts.map +1 -1
  31. package/dist/{index-Dn4ctxk8.js → index-C72e57-5.js} +48 -24
  32. package/dist/index.js +3 -3
  33. package/dist/test-utils/createTextPlugin.d.ts +7 -1
  34. package/dist/test-utils/createTextPlugin.d.ts.map +1 -1
  35. package/dist/{useChatKitLabels-CMOr3Kjq.js → useChatKitLabels-368lodS5.js} +1 -1
  36. package/package.json +4 -4
  37. package/src/adapters/responses-api.spec.ts +86 -0
  38. package/src/adapters/responses-api.ts +13 -9
  39. package/src/components/base/CkCitation/CkCitation.spec.ts +3 -3
  40. package/src/components/base/CkCitation/CkCitation.stories.ts +85 -3
  41. package/src/components/base/CkCitation/CkCitation.vue +5 -1
  42. package/src/components/base/CkCitation/types.ts +6 -1
  43. package/src/components/base/CkCitationCard/CkCitationCard.spec.ts +37 -0
  44. package/src/components/base/CkCitationCard/CkCitationCard.stories.ts +30 -3
  45. package/src/components/base/CkCitationCard/CkCitationCard.vue +54 -12
  46. package/src/components/base/CkCitationCard/types.ts +6 -1
  47. package/src/components/base/CkCitationLabel/CkCitationLabel.spec.ts +3 -3
  48. package/src/components/base/CkCitationLabel/CkCitationLabel.vue +7 -6
  49. package/src/components/base/CkConversationLayout/CkConversationLayout.spec.ts +1 -5
  50. package/src/components/base/CkCopyMessageButton/CkCopyMessageButton.spec.ts +1 -1
  51. package/src/components/base/CkFeedbackButton/CkFeedbackButton.vue +3 -3
  52. package/src/components/base/CkFeedbackDialog/CkFeedbackDialog.spec.ts +1 -1
  53. package/src/components/base/CkFeedbackDialog/CkFeedbackDialog.vue +9 -9
  54. package/src/components/base/CkHistoryItem/CkHistoryItem.vue +5 -7
  55. package/src/components/base/CkHistoryWrapper/CkHistoryWrapper.vue +2 -1
  56. package/src/components/base/CkMarkdownRenderer/CkMarkdownRenderer.stories.ts +9 -4
  57. package/src/components/base/CkMarkdownRenderer/CkMarkdownRenderer.vue +1 -1
  58. package/src/components/base/CkModelSelector/CkModelSelector.vue +3 -3
  59. package/src/composables/fileUpload/useFileUpload.ts +45 -30
  60. package/src/composables/fileUpload/useFileUploadWrapper.spec.ts +1 -1
  61. package/src/composables/fileUpload/useFileUploadWrapper.ts +3 -3
  62. package/src/composables/useChat.ts +3 -1
  63. package/src/composables/useConversations.ts +8 -5
  64. package/src/composables/useIsTruncated.ts +82 -0
  65. package/src/handlers/useChatKitLabels.spec.ts +0 -1
  66. package/src/handlers/useChatKitLabels.ts +2 -2
  67. package/src/handlers/useMarkdownParser.ts +1 -1
  68. package/src/test-setup.ts +3 -3
  69. package/src/test-utils/createTextPlugin.ts +11 -3
@@ -10,11 +10,8 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite';
10
10
  declare const meta: Meta<typeof CkCitation>;
11
11
  export default meta;
12
12
  type Story = StoryObj<typeof meta>;
13
- /**
14
- * A single marker in its default (amber) state. Hover the chip (or focus it and
15
- * press Enter) to reveal the source card.
16
- */
17
13
  export declare const Default: Story;
14
+ export declare const States: Story;
18
15
  /**
19
16
  * The selected (teal) state — set `selected` when the citation's source is the
20
17
  * one currently open/highlighted, so the active marker stands out.
@@ -1 +1 @@
1
- {"version":3,"file":"CkCitation.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitation/CkCitation.stories.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAK3D;;;;;;GAMG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CA2BjC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAqB1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAK1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAsBzB,CAAC"}
1
+ {"version":3,"file":"CkCitation.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitation/CkCitation.stories.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAE1C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAK3D;;;;;;GAMG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CA2BjC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AA6BnC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAoBF,eAAO,MAAM,MAAM,EAAE,KAoCpB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAqB1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAK1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAsBzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CkCitation.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitation/CkCitation.vue"],"names":[],"mappings":"AA0JA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA+R/C,QAAA,MAAM,YAAY;;;;;;;;;;6EAIhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"CkCitation.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitation/CkCitation.vue"],"names":[],"mappings":"AA8JA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAiS/C,QAAA,MAAM,YAAY;;;;;;;;;;6EAIhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -27,6 +27,11 @@ export interface CkCitationSource {
27
27
  * non-paginated sources.
28
28
  */
29
29
  locationLabel?: string;
30
+ /**
31
+ * Name of the collection the source belongs to, shown in the card footer
32
+ * before the location. Omit when the source has no collection.
33
+ */
34
+ collectionName?: string;
30
35
  /**
31
36
  * Source URL for the card's external-link action. Activating it emits
32
37
  * `open-source`. Omit to hide the action.
@@ -52,7 +57,7 @@ export interface CkCitationProps extends CkCitationSource {
52
57
  /**
53
58
  * Marks the citation as selected/active (e.g. the source it points to is
54
59
  * currently open or highlighted). Renders the marker in its selected (teal)
55
- * state instead of the default amber.
60
+ * state instead of the default neutral one.
56
61
  * @default false
57
62
  */
58
63
  selected?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitation/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitation/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC"}
@@ -22,10 +22,21 @@ export declare const Default: Story;
22
22
  */
23
23
  export declare const WithoutLink: Story;
24
24
  /**
25
- * No `locationLabel` — the footer is hidden. Use for non-paginated sources
26
- * such as a plain web page or a whole-document citation.
25
+ * No `locationLabel` — the footer keeps just the collection. Use for
26
+ * non-paginated sources such as a plain web page.
27
27
  */
28
28
  export declare const WithoutLocation: Story;
29
+ /**
30
+ * No `collectionName` — the footer keeps just the location, and the separator
31
+ * goes with it. Use for sources that don't come from a collection.
32
+ */
33
+ export declare const WithoutCollection: Story;
34
+ /**
35
+ * A collection name longer than the card is wide. The name truncates and the
36
+ * location stays on the same line — the page a citation points at is the more
37
+ * useful half, so it must not be pushed out or wrapped away.
38
+ */
39
+ export declare const LongCollectionName: Story;
29
40
  /**
30
41
  * Minimal: title + excerpt only (no link, no location). The leanest source a
31
42
  * card can describe.
@@ -1 +1 @@
1
- {"version":3,"file":"CkCitationCard.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitationCard/CkCitationCard.stories.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAK3D;;;;;;;GAOG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAuBrC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAqBnC;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAEhC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,KAK1B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAuB9B,CAAC"}
1
+ {"version":3,"file":"CkCitationCard.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitationCard/CkCitationCard.stories.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAK3D;;;;;;;GAOG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAyBrC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAqBnC;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAMhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAMhC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,KAK1B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAuB9B,CAAC"}
@@ -5,6 +5,7 @@ declare const __VLS_export: import("vue").DefineComponent<CkCitationCardProps, {
5
5
  "onOpen-source"?: ((url: string) => any) | undefined;
6
6
  }>, {
7
7
  locationLabel: string;
8
+ collectionName: string;
8
9
  url: string;
9
10
  openSourceLabel: string;
10
11
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"CkCitationCard.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitationCard/CkCitationCard.vue"],"names":[],"mappings":"AAuFA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AA4KnD,QAAA,MAAM,YAAY;;;;;;;;6EAIhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"CkCitationCard.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitationCard/CkCitationCard.vue"],"names":[],"mappings":"AAuIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AA+PnD,QAAA,MAAM,YAAY;;;;;;;;;6EAIhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -25,9 +25,14 @@ export interface CkCitationCardProps {
25
25
  /**
26
26
  * Location label shown in the footer, e.g. `"Page 3"`. Pass a fully
27
27
  * formatted, localized string — the component does no number formatting.
28
- * Omit for non-paginated sources to hide the footer.
28
+ * Omit for non-paginated sources.
29
29
  */
30
30
  locationLabel?: string;
31
+ /**
32
+ * Name of the collection the source belongs to, shown in the footer before
33
+ * the location. Omit when the source has no collection.
34
+ */
35
+ collectionName?: string;
31
36
  /**
32
37
  * When set, the external-link action is shown in the header. Activating it
33
38
  * emits `open-source` with this value; the host opens it (it may be an
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitationCard/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitationCard/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CkCitationLabel.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitationLabel/CkCitationLabel.vue"],"names":[],"mappings":"AA6EA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AA6GpD,QAAA,MAAM,YAAY;;;;6EAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"CkCitationLabel.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkCitationLabel/CkCitationLabel.vue"],"names":[],"mappings":"AA8EA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAiHpD,QAAA,MAAM,YAAY;;;;6EAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CkHistoryItem.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkHistoryItem/CkHistoryItem.vue"],"names":[],"mappings":"AAySA,OAAO,KAAK,EAAsB,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAydzE,QAAA,IAAI,OAAO,IAAU,EAAE,QAAQ,IAAY,CAAE;AAC7C,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GACzC;IAAE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAKzD,QAAA,MAAM,UAAU;;;;;;;;;;;;;;6EAId,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"CkHistoryItem.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkHistoryItem/CkHistoryItem.vue"],"names":[],"mappings":"AAuSA,OAAO,KAAK,EAAsB,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAudzE,QAAA,IAAI,OAAO,IAAU,EAAE,QAAQ,IAAY,CAAE;AAC7C,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GACzC;IAAE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAKzD,QAAA,MAAM,UAAU;;;;;;;;;;;;;;6EAId,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CkHistoryWrapper.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkHistoryWrapper/CkHistoryWrapper.vue"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AA0DrD,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAK/C,QAAA,MAAM,UAAU;;6EAGd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"CkHistoryWrapper.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkHistoryWrapper/CkHistoryWrapper.vue"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AA2DrD,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAK/C,QAAA,MAAM,UAAU;;6EAGd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CkMarkdownRenderer.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkMarkdownRenderer/CkMarkdownRenderer.stories.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE3D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,kBAAkB,CAkBzC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAqHnC;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KAsB5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,KA+BrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAwC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KA0C/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KA4BzB,CAAC;AAsBF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,KAuB7B,CAAC;AAeF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAkB9B,CAAC;AAiEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,KAwB3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,KAc3C,CAAC"}
1
+ {"version":3,"file":"CkMarkdownRenderer.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/base/CkMarkdownRenderer/CkMarkdownRenderer.stories.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE3D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,kBAAkB,CAkBzC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAqHnC;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KAsB5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,KA+BrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAwC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KA0C/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KA4BzB,CAAC;AAsBF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,KAuB7B,CAAC;AAoBF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAkB9B,CAAC;AAiEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,KAwB3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,KAc3C,CAAC"}
@@ -1,4 +1,4 @@
1
- import { _, a, b, c, C, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A } from "../CkHistory.vue_vue_type_script_setup_true_lang-CImSzLYs.js";
1
+ import { _, a, b, c, C, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A } from "../CkHistory.vue_vue_type_script_setup_true_lang-D9Ph9eYp.js";
2
2
  export {
3
3
  _ as CkAgentMessage,
4
4
  a as CkAgentMessageHeader,
@@ -1 +1 @@
1
- {"version":3,"file":"useFileUpload.d.ts","sourceRoot":"","sources":["../../../src/composables/fileUpload/useFileUpload.ts"],"names":[],"mappings":"AACA,OAAO,EAkBL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAKzB,MAAM,SAAS,CAAC;AAEjB,cAAc,SAAS,CAAC;AAybxB,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,CAmzBrB"}
1
+ {"version":3,"file":"useFileUpload.d.ts","sourceRoot":"","sources":["../../../src/composables/fileUpload/useFileUpload.ts"],"names":[],"mappings":"AACA,OAAO,EAkBL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAKzB,MAAM,SAAS,CAAC;AAEjB,cAAc,SAAS,CAAC;AAqcxB,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,CAszBrB"}
@@ -1,4 +1,4 @@
1
- import { c, d, u, a, b, e } from "../index-Dn4ctxk8.js";
1
+ import { c, d, u, a, b, e } from "../index-C72e57-5.js";
2
2
  export {
3
3
  c as createDocumentUploadProvider,
4
4
  d as defaultDocumentUploadConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../src/composables/useChat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,SAAK"}
1
+ {"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../src/composables/useChat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,SAEtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useConversations.d.ts","sourceRoot":"","sources":["../../src/composables/useConversations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE9E,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAGX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAuC,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAcpE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC;2EACuE;IACvE,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC,CAAC;IAC7D;;;;OAIG;IACH,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,qEAAqE;IACrE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,0EAA0E;IAC1E,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACnC,oEAAoE;IACpE,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,kFAAkF;IAClF,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpD,oDAAoD;IACpD,MAAM,CACJ,KAAK,CAAC,EAAE,uBAAuB,EAC/B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC,+DAA+D;IAC/D,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC,qDAAqD;IACrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,qEAAqE;IACrE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IACrD;;;;;;;OAOG;IACH,cAAc,CACZ,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,GACnC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CAC9B;AAID;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,uBAAuB,GAC/B,sBAAsB,CAmNxB"}
1
+ {"version":3,"file":"useConversations.d.ts","sourceRoot":"","sources":["../../src/composables/useConversations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE9E,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAGX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAuC,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAcpE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC;2EACuE;IACvE,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC,CAAC;IAC7D;;;;OAIG;IACH,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,qEAAqE;IACrE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,0EAA0E;IAC1E,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACnC,oEAAoE;IACpE,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,kFAAkF;IAClF,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpD,oDAAoD;IACpD,MAAM,CACJ,KAAK,CAAC,EAAE,uBAAuB,EAC/B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC,+DAA+D;IAC/D,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC,qDAAqD;IACrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,qEAAqE;IACrE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IACrD;;;;;;;OAOG;IACH,cAAc,CACZ,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,GACnC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CAC9B;AAID;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,uBAAuB,GAC/B,sBAAsB,CAsNxB"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Local copy of ui-library's internal probe of the same name. chat-kit's
3
+ * supported ui-library range (^5.3.0) does not export it, and it is too small
4
+ * to justify widening that package's public API. Drop this file once the range
5
+ * moves up to a version that exports it.
6
+ */
7
+ import { type Ref, type ShallowRef } from 'vue';
8
+ /** An element ref as produced by `useTemplateRef`. */
9
+ type ElementRef = Readonly<ShallowRef<HTMLElement | null>>;
10
+ /**
11
+ * Whether an element's text is currently clipped by `text-overflow: ellipsis`.
12
+ *
13
+ * Re-measures when the element resizes and whenever `watchSource` changes, so
14
+ * it stays correct as the container narrows or the text is swapped out. Use it
15
+ * to show a tooltip only for names that are actually cut off.
16
+ * @param elementRef - The element whose text may be clipped
17
+ * @param watchSource - Value to re-measure on, e.g. the rendered text
18
+ * @returns Reactive truncation state
19
+ */
20
+ export declare function useIsTruncated(elementRef: ElementRef, watchSource?: () => unknown): Ref<boolean>;
21
+ export {};
22
+ //# sourceMappingURL=useIsTruncated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsTruncated.d.ts","sourceRoot":"","sources":["../../src/composables/useIsTruncated.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA8B,KAAK,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AAE5E,sDAAsD;AACtD,KAAK,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC;AA6B3D;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,EACtB,WAAW,CAAC,EAAE,MAAM,OAAO,GAC1B,GAAG,CAAC,OAAO,CAAC,CA6Bd"}
@@ -1,5 +1,5 @@
1
1
  import { u } from "../useMessageHandler-Tellov3w.js";
2
- import { C, d, n, p, r, a, u as u2, b } from "../useChatKitLabels-CMOr3Kjq.js";
2
+ import { C, d, n, p, r, a, u as u2, b } from "../useChatKitLabels-368lodS5.js";
3
3
  export {
4
4
  C as CHAT_KIT_LABELS,
5
5
  d as defaultChatKitLabels,
@@ -111,7 +111,41 @@ export type ChatKitLabels = {
111
111
  historyShowAll?: string;
112
112
  };
113
113
  /** English defaults used when no labels are provided by the consumer. */
114
- export declare const defaultChatKitLabels: ChatKitLabels;
114
+ export declare const defaultChatKitLabels: {
115
+ agentAvatarAlt: string;
116
+ agentLoadingAvatarAlt: string;
117
+ inputPlaceholder: string;
118
+ copyMessageAction: string;
119
+ copyMessageActionCopied: string;
120
+ regenerateMessageAction: string;
121
+ feedbackThumbsUp: string;
122
+ feedbackThumbsDown: string;
123
+ feedbackGroup: string;
124
+ feedbackDialogTitlePositive: string;
125
+ feedbackDialogTitleNegative: string;
126
+ feedbackDialogResponseHeading: string;
127
+ feedbackDialogDescription: string;
128
+ feedbackDialogOtherLabel: string;
129
+ feedbackDialogOtherTooltip: string;
130
+ feedbackDialogFreeTextPlaceholder: string;
131
+ feedbackDialogCancelLabel: string;
132
+ feedbackDialogSubmitLabel: string;
133
+ userMessageShowMore: string;
134
+ userMessageShowLess: string;
135
+ userMessageActions: string;
136
+ userMessageEditAction: string;
137
+ modelSelectorAriaLabel: string;
138
+ modelSelectorListAriaLabel: string;
139
+ modelSelectorPlaceholder: string;
140
+ markdownTableLabel: string;
141
+ citationOpenSource: string;
142
+ citationSourceLabel: string;
143
+ historyItemUntitled: string;
144
+ historyItemActionAriaLabel: string;
145
+ historyItemEditAction: string;
146
+ historyItemDeleteAction: string;
147
+ historyShowAll: string;
148
+ };
115
149
  /** Vue injection key for ChatKit labels. */
116
150
  export declare const CHAT_KIT_LABELS: InjectionKey<ComputedRef<ChatKitLabels>>;
117
151
  type PartialLabels = Partial<ChatKitLabels>;
@@ -1 +1 @@
1
- {"version":3,"file":"useChatKitLabels.d.ts","sourceRoot":"","sources":["../../src/handlers/useChatKitLabels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useChatKitLabels.d.ts","sourceRoot":"","sources":["../../src/handlers/useChatKitLabels.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ function toError(value) {
9
9
  return value instanceof Error ? value : new Error(String(value));
10
10
  }
11
11
  function useChat() {
12
+ throw new Error("useChat is not implemented yet.");
12
13
  }
13
14
  const DEFAULT_PAGE_SIZE = 20;
14
15
  function useConversations(options) {
@@ -95,9 +96,14 @@ function useConversations(options) {
95
96
  try {
96
97
  const raw = await http.post(path, body);
97
98
  const created = mapConversation(raw);
98
- conversations.value = placeholder ? conversations.value.map(
99
- (c) => c.id === placeholder.id ? created : c
100
- ) : [created, ...conversations.value];
99
+ if (placeholder) {
100
+ const placeholderId = placeholder.id;
101
+ conversations.value = conversations.value.map(
102
+ (c) => c.id === placeholderId ? created : c
103
+ );
104
+ } else {
105
+ conversations.value = [created, ...conversations.value];
106
+ }
101
107
  return created;
102
108
  } catch (e) {
103
109
  if (placeholder) conversations.value = previous;
@@ -356,8 +362,9 @@ class Semaphore {
356
362
  });
357
363
  }
358
364
  release() {
359
- if (this.queue.length > 0) {
360
- this.queue.shift()();
365
+ const next = this.queue.shift();
366
+ if (next) {
367
+ next();
361
368
  } else {
362
369
  this.permits++;
363
370
  }
@@ -391,6 +398,11 @@ function generateCanvasThumbnail(file, maxW = 128, maxH = 128) {
391
398
  canvas.width = w;
392
399
  canvas.height = h;
393
400
  const ctx = canvas.getContext("2d");
401
+ if (!ctx) {
402
+ URL.revokeObjectURL(url);
403
+ reject(new Error("Canvas 2D context is not available"));
404
+ return;
405
+ }
394
406
  ctx.drawImage(img, 0, 0, w, h);
395
407
  const dataUrl = canvas.toDataURL("image/png");
396
408
  URL.revokeObjectURL(url);
@@ -457,9 +469,13 @@ async function runCustomValidators(file, constraints, validators) {
457
469
  }
458
470
  return null;
459
471
  }
472
+ function extractHttpStatus(err) {
473
+ const e = err;
474
+ return e?.httpStatus ?? e?.status ?? e?.response?.status;
475
+ }
460
476
  function isRetryable(err, policy) {
461
477
  if (!policy.retryableStatusCodes?.length) return true;
462
- const status = err?.httpStatus ?? err?.status ?? err?.response?.status;
478
+ const status = extractHttpStatus(err);
463
479
  return status != null && policy.retryableStatusCodes.includes(status);
464
480
  }
465
481
  async function withRetry(fn, policy, signal) {
@@ -691,7 +707,9 @@ function useFileUpload(options) {
691
707
  for (let i = 0; i < uploadReady.length; i++) {
692
708
  const { stateKey } = uploadReady[i];
693
709
  const entry = files.value.get(stateKey);
694
- const durationMs = new Date(completedAt).getTime() - new Date(entry.uploadStartedAt).getTime();
710
+ if (!entry) continue;
711
+ const startedAt = entry.uploadStartedAt ?? completedAt;
712
+ const durationMs = new Date(completedAt).getTime() - new Date(startedAt).getTime();
695
713
  const remoteResult = results[i];
696
714
  const remoteFileId = remoteResult?.id ?? null;
697
715
  const documentId = remoteResult?.documentId ?? null;
@@ -749,11 +767,12 @@ function useFileUpload(options) {
749
767
  const uploadErr = {
750
768
  code: "UPLOAD_FAILED",
751
769
  message: err.message ?? "Upload failed.",
752
- httpStatus: err?.httpStatus ?? err?.status,
770
+ httpStatus: extractHttpStatus(err),
753
771
  occurredAt: completedAt
754
772
  };
755
773
  for (const { stateKey } of uploadReady) {
756
774
  const entry = files.value.get(stateKey);
775
+ if (!entry) continue;
757
776
  const durationMs = entry.uploadStartedAt ? new Date(completedAt).getTime() - new Date(entry.uploadStartedAt).getTime() : null;
758
777
  updateEntry(stateKey, {
759
778
  status: "failed",
@@ -808,16 +827,17 @@ function useFileUpload(options) {
808
827
  const mergedSignal = params.signal ? AbortSignal.any([controller.signal, params.signal]) : controller.signal;
809
828
  const uploadStarted = now();
810
829
  for (const { stateKey } of uploadReady) {
830
+ const attemptCount = (files.value.get(stateKey)?.attemptCount ?? 0) + 1;
811
831
  updateEntry(stateKey, {
812
832
  status: "uploading",
813
833
  uploadStartedAt: uploadStarted,
814
- attemptCount: (files.value.get(stateKey)?.attemptCount ?? 0) + 1,
834
+ attemptCount,
815
835
  lastAttemptAt: uploadStarted
816
836
  });
817
837
  emit({
818
838
  type: "file:uploading",
819
839
  fileId: stateKey,
820
- attemptCount: files.value.get(stateKey).attemptCount
840
+ attemptCount
821
841
  });
822
842
  }
823
843
  const totalBytes = uploadReady.reduce(
@@ -888,17 +908,20 @@ function useFileUpload(options) {
888
908
  function buildUploadResult(groupId, batch) {
889
909
  return {
890
910
  id: groupId,
891
- results: batch.map(({ stateKey }) => {
911
+ results: batch.flatMap(({ stateKey }) => {
892
912
  const entry = files.value.get(stateKey);
893
- return {
894
- fileId: stateKey,
895
- success: entry.status === "success",
896
- status: entry.status,
897
- remoteFileId: entry.remoteFileId ?? void 0,
898
- error: entry.error ?? void 0,
899
- uploadDate: entry.uploadCompletedAt ?? entry.queuedAt,
900
- metadata: entry.metadata
901
- };
913
+ if (!entry) return [];
914
+ return [
915
+ {
916
+ fileId: stateKey,
917
+ success: entry.status === "success",
918
+ status: entry.status,
919
+ remoteFileId: entry.remoteFileId ?? void 0,
920
+ error: entry.error ?? void 0,
921
+ uploadDate: entry.uploadCompletedAt ?? entry.queuedAt,
922
+ metadata: entry.metadata
923
+ }
924
+ ];
902
925
  })
903
926
  };
904
927
  }
@@ -938,7 +961,7 @@ function useFileUpload(options) {
938
961
  try {
939
962
  await client.delete(endpoints.file(storeId, entry.remoteFileId));
940
963
  } catch (err) {
941
- const status = err?.httpStatus ?? err?.status ?? err?.response?.status;
964
+ const status = extractHttpStatus(err);
942
965
  if (status === 404) ;
943
966
  else {
944
967
  const removeErr = {
@@ -1013,8 +1036,7 @@ function useFileUpload(options) {
1013
1036
  files.value.delete(entry.id);
1014
1037
  if (db) {
1015
1038
  deletePersistedEntry(db, persistStoreName, entry.id).catch(
1016
- () => {
1017
- }
1039
+ () => void 0
1018
1040
  );
1019
1041
  }
1020
1042
  }
@@ -1498,7 +1520,9 @@ function createDocumentUploadProvider(config) {
1498
1520
  });
1499
1521
  }
1500
1522
  }
1501
- const successFileIds = result.results.filter((r) => r.success && r.remoteFileId).map((r) => r.remoteFileId);
1523
+ const successFileIds = result.results.flatMap(
1524
+ (r) => r.success && r.remoteFileId ? [r.remoteFileId] : []
1525
+ );
1502
1526
  if (successFileIds.length > 0) {
1503
1527
  await upload.runWorkflow(successFileIds);
1504
1528
  purgeCompletedFiles();
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { u } from "./useMessageHandler-Tellov3w.js";
2
- import { C, d, p, u as u2, b } from "./useChatKitLabels-CMOr3Kjq.js";
3
- import { S, c, d as d2, f, u as u3, a, b as b2, e } from "./index-Dn4ctxk8.js";
4
- import { _, a as a2, b as b3, c as c2, C as C2, d as d3, e as e2, f as f2, g, h, i, j, k, l, m, n, o, p as p2, q, r, s, t, u as u4, v, w, x, y, z, A, B } from "./CkHistory.vue_vue_type_script_setup_true_lang-CImSzLYs.js";
2
+ import { C, d, p, u as u2, b } from "./useChatKitLabels-368lodS5.js";
3
+ import { S, c, d as d2, f, u as u3, a, b as b2, e } from "./index-C72e57-5.js";
4
+ import { _, a as a2, b as b3, c as c2, C as C2, d as d3, e as e2, f as f2, g, h, i, j, k, l, m, n, o, p as p2, q, r, s, t, u as u4, v, w, x, y, z, A, B } from "./CkHistory.vue_vue_type_script_setup_true_lang-D9Ph9eYp.js";
5
5
  export {
6
6
  C as CHAT_KIT_LABELS,
7
7
  _ as CkAgentMessage,
@@ -1,2 +1,8 @@
1
- export declare function createTextPlugin(transform: (text: string) => string): () => (tree: any) => void;
1
+ type TextPluginNode = {
2
+ type: string;
3
+ value?: string;
4
+ children?: TextPluginNode[];
5
+ };
6
+ export declare function createTextPlugin(transform: (text: string) => string): () => (tree: TextPluginNode) => void;
7
+ export {};
2
8
  //# sourceMappingURL=createTextPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createTextPlugin.d.ts","sourceRoot":"","sources":["../../src/test-utils/createTextPlugin.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,UACpD,MAAM,GAAG,UAOxB"}
1
+ {"version":3,"file":"createTextPlugin.d.ts","sourceRoot":"","sources":["../../src/test-utils/createTextPlugin.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,UACpD,MAAM,cAAc,UASnC"}
@@ -28631,7 +28631,7 @@ function useMarkdownParser(source, plugins) {
28631
28631
  let cachedPlugins;
28632
28632
  let cachedProcessor;
28633
28633
  function getProcessor(list2) {
28634
- if (list2 === cachedPlugins) return cachedProcessor;
28634
+ if (list2 === cachedPlugins && cachedProcessor) return cachedProcessor;
28635
28635
  cachedPlugins = list2;
28636
28636
  cachedProcessor = buildProcessor(list2);
28637
28637
  return cachedProcessor;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aleph-alpha/chat-kit",
3
- "version": "5.12.0",
3
+ "version": "6.0.0",
4
4
  "description": "Chat kit package for building chat interfaces with Vue",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -51,7 +51,7 @@
51
51
  "author": "Pharia AI",
52
52
  "license": "MIT",
53
53
  "engines": {
54
- "node": ">=20.19.0"
54
+ "node": ">=22.13.0"
55
55
  },
56
56
  "publishConfig": {
57
57
  "access": "public"
@@ -67,7 +67,6 @@
67
67
  "vue": "^3.5.27"
68
68
  },
69
69
  "dependencies": {
70
- "@aleph-alpha/ui-library": "^5.3.0",
71
70
  "dompurify": "^3.3.2",
72
71
  "katex": "^0.17.0",
73
72
  "mdast-util-find-and-replace": "^3.0.2",
@@ -77,7 +76,8 @@
77
76
  "remark-math": "^6.0.0",
78
77
  "remark-parse": "^11.0.0",
79
78
  "remark-rehype": "^11.1.2",
80
- "unified": "^11.0.5"
79
+ "unified": "^11.0.5",
80
+ "@aleph-alpha/ui-library": "6.0.0"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@storybook/addon-a11y": "10.2.17",
@@ -299,6 +299,92 @@ describe('responsesToTree', () => {
299
299
  expect(assistant.content[2].type).toBe('text');
300
300
  });
301
301
 
302
+ it('converts hosted native calls into tool parts without rewriting their type', () => {
303
+ const tree = responsesToTree([
304
+ makeResponse({
305
+ id: 'r1',
306
+ request_input: [userInput('What does the contract say?')],
307
+ output: [
308
+ toolOutput({
309
+ id: 'ws-1',
310
+ type: 'web_search_call',
311
+ display: {
312
+ text: 'Searched the internet for "EU AI Act"',
313
+ icon: 'globe',
314
+ phase: 'done',
315
+ },
316
+ }),
317
+ toolOutput({
318
+ id: 'fs-1',
319
+ type: 'file_search_call',
320
+ display: {
321
+ text: 'Searched documents for "contract terms"',
322
+ icon: 'file-search',
323
+ phase: 'done',
324
+ },
325
+ }),
326
+ toolOutput({
327
+ id: 'sh-1',
328
+ type: 'shell_call',
329
+ name: 'pirate-speak',
330
+ display: {
331
+ text: 'Read skill `pirate-speak`',
332
+ icon: 'sparkles',
333
+ phase: 'done',
334
+ },
335
+ }),
336
+ toolOutput({
337
+ id: 'fu-1',
338
+ type: 'fetch_url',
339
+ display: {
340
+ text: 'Searched google.com',
341
+ icon: 'globe',
342
+ phase: 'done',
343
+ },
344
+ }),
345
+ assistantOutput('msg-a1', 'The contract requires compliance.'),
346
+ ],
347
+ }),
348
+ ]);
349
+
350
+ const assistant = tree.nodes['msg-a1']!;
351
+ expect(assistant.content).toEqual([
352
+ expect.objectContaining({
353
+ type: 'tool',
354
+ id: 'ws-1',
355
+ name: 'web_search_call',
356
+ text: 'Searched the internet for "EU AI Act"',
357
+ icon: 'globe',
358
+ }),
359
+ expect.objectContaining({
360
+ type: 'tool',
361
+ id: 'fs-1',
362
+ name: 'file_search_call',
363
+ text: 'Searched documents for "contract terms"',
364
+ icon: 'file-search',
365
+ }),
366
+ expect.objectContaining({
367
+ type: 'tool',
368
+ id: 'sh-1',
369
+ name: 'pirate-speak',
370
+ text: 'Read skill `pirate-speak`',
371
+ icon: 'sparkles',
372
+ }),
373
+ expect.objectContaining({
374
+ type: 'tool',
375
+ id: 'fu-1',
376
+ name: 'fetch_url',
377
+ text: 'Searched google.com',
378
+ icon: 'globe',
379
+ }),
380
+ expect.objectContaining({
381
+ type: 'text',
382
+ id: 'msg-a1',
383
+ text: 'The contract requires compliance.',
384
+ }),
385
+ ]);
386
+ });
387
+
302
388
  it('forwards `display.text` and `display.icon` from a tool output onto the resulting tool content', () => {
303
389
  const tree = responsesToTree([
304
390
  makeResponse({