@k8o/arte-odyssey 10.6.4 → 10.8.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 (61) hide show
  1. package/dist/components/ai/_internal/collapsible.d.mts +14 -0
  2. package/dist/components/ai/_internal/collapsible.mjs +49 -0
  3. package/dist/components/ai/_internal/streaming-cursor.d.mts +6 -0
  4. package/dist/components/ai/_internal/streaming-cursor.mjs +8 -0
  5. package/dist/components/ai/conversation/conversation.d.mts +19 -0
  6. package/dist/components/ai/conversation/conversation.mjs +105 -0
  7. package/dist/components/ai/conversation/index.d.mts +2 -0
  8. package/dist/components/ai/conversation/index.mjs +2 -0
  9. package/dist/components/ai/index.d.mts +8 -0
  10. package/dist/components/ai/index.mjs +7 -0
  11. package/dist/components/ai/message/index.d.mts +2 -0
  12. package/dist/components/ai/message/index.mjs +2 -0
  13. package/dist/components/ai/message/message.d.mts +18 -0
  14. package/dist/components/ai/message/message.mjs +33 -0
  15. package/dist/components/ai/prompt-input/index.d.mts +2 -0
  16. package/dist/components/ai/prompt-input/index.mjs +2 -0
  17. package/dist/components/ai/prompt-input/prompt-input.d.mts +27 -0
  18. package/dist/components/ai/prompt-input/prompt-input.mjs +103 -0
  19. package/dist/components/ai/reasoning/index.d.mts +2 -0
  20. package/dist/components/ai/reasoning/index.mjs +2 -0
  21. package/dist/components/ai/reasoning/reasoning.d.mts +13 -0
  22. package/dist/components/ai/reasoning/reasoning.mjs +21 -0
  23. package/dist/components/ai/response/index.d.mts +2 -0
  24. package/dist/components/ai/response/index.mjs +2 -0
  25. package/dist/components/ai/response/response.d.mts +18 -0
  26. package/dist/components/ai/response/response.mjs +20 -0
  27. package/dist/components/ai/suggestion/index.d.mts +2 -0
  28. package/dist/components/ai/suggestion/index.mjs +2 -0
  29. package/dist/components/ai/suggestion/suggestion.d.mts +18 -0
  30. package/dist/components/ai/suggestion/suggestion.mjs +25 -0
  31. package/dist/components/ai/tool-invocation/index.d.mts +2 -0
  32. package/dist/components/ai/tool-invocation/index.mjs +2 -0
  33. package/dist/components/ai/tool-invocation/tool-invocation.d.mts +17 -0
  34. package/dist/components/ai/tool-invocation/tool-invocation.mjs +59 -0
  35. package/dist/components/ai/types.d.mts +5 -0
  36. package/dist/components/ai/types.mjs +1 -0
  37. package/dist/components/data-display/avatar/avatar.d.mts +3 -1
  38. package/dist/components/data-display/avatar/avatar.mjs +7 -3
  39. package/dist/components/form/checkbox-group/index.d.mts +3 -3
  40. package/dist/components/icons/color-scale.d.mts +7 -0
  41. package/dist/components/icons/color-scale.mjs +43 -0
  42. package/dist/components/icons/index.d.mts +3 -2
  43. package/dist/components/icons/index.mjs +3 -2
  44. package/dist/components/icons/lucide-imports.d.mts +2 -1
  45. package/dist/components/icons/lucide-imports.mjs +2 -1
  46. package/dist/components/icons/lucide.d.mts +2 -1
  47. package/dist/components/icons/lucide.mjs +6 -2
  48. package/dist/components/index.d.mts +3 -2
  49. package/dist/components/index.mjs +3 -2
  50. package/dist/index.d.mts +3 -2
  51. package/dist/index.mjs +3 -2
  52. package/dist/integrations/_shared/openui-defs.mjs +1 -1
  53. package/dist/integrations/_shared/schemas.d.mts +17 -17
  54. package/dist/integrations/ai-sdk/index.d.mts +3 -0
  55. package/dist/integrations/ai-sdk/index.mjs +2 -0
  56. package/dist/integrations/ai-sdk/map-parts.d.mts +28 -0
  57. package/dist/integrations/ai-sdk/map-parts.mjs +31 -0
  58. package/dist/integrations/json-render/catalog.d.mts +16 -16
  59. package/dist/integrations/json-render/registry.mjs +1 -1
  60. package/dist/integrations/openui/library.mjs +1 -1
  61. package/package.json +29 -1
@@ -0,0 +1,31 @@
1
+ import { getToolOrDynamicToolName, isReasoningUIPart, isTextUIPart, isToolOrDynamicToolUIPart } from "ai";
2
+ //#region src/integrations/ai-sdk/map-parts.ts
3
+ /**
4
+ * AI SDK の `UIMessage.parts` を ArteOdyssey の AI チャットコンポーネントに
5
+ * 対応付けやすい素朴な配列へ変換する。React には依存せず、利用側が
6
+ * `mapMessageParts(message).map(...)` で `Response` / `Reasoning` /
7
+ * `ToolInvocation` を自分で描画する。
8
+ */
9
+ const mapMessageParts = (message) => {
10
+ const result = [];
11
+ for (const part of message.parts) if (isTextUIPart(part)) result.push({
12
+ kind: "text",
13
+ text: part.text
14
+ });
15
+ else if (isReasoningUIPart(part)) result.push({
16
+ kind: "reasoning",
17
+ text: part.text
18
+ });
19
+ else if (isToolOrDynamicToolUIPart(part)) result.push({
20
+ kind: "tool",
21
+ name: getToolOrDynamicToolName(part),
22
+ toolCallId: part.toolCallId,
23
+ state: part.state,
24
+ input: part.input,
25
+ output: part.state === "output-available" ? part.output : void 0,
26
+ errorText: part.state === "output-error" ? part.errorText : void 0
27
+ });
28
+ return result;
29
+ };
30
+ //#endregion
31
+ export { mapMessageParts };
@@ -1,5 +1,5 @@
1
- import { Spec, UIElement } from "@json-render/core";
2
1
  import { z } from "zod";
2
+ import { Spec, UIElement } from "@json-render/core";
3
3
 
4
4
  //#region src/integrations/json-render/catalog.d.ts
5
5
  /**
@@ -134,9 +134,9 @@ declare const catalog: import("@json-render/core").Catalog<{
134
134
  text: z.ZodString;
135
135
  tone: z.ZodOptional<z.ZodEnum<{
136
136
  success: "success";
137
+ error: "error";
137
138
  info: "info";
138
139
  warning: "warning";
139
- error: "error";
140
140
  neutral: "neutral";
141
141
  }>>;
142
142
  variant: z.ZodOptional<z.ZodEnum<{
@@ -170,9 +170,9 @@ declare const catalog: import("@json-render/core").Catalog<{
170
170
  props: z.ZodObject<{
171
171
  tone: z.ZodEnum<{
172
172
  success: "success";
173
+ error: "error";
173
174
  info: "info";
174
175
  warning: "warning";
175
- error: "error";
176
176
  }>;
177
177
  message: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
178
178
  }, z.core.$strip>;
@@ -288,8 +288,8 @@ declare const catalog: import("@json-render/core").Catalog<{
288
288
  columns: z.ZodArray<z.ZodObject<{
289
289
  label: z.ZodString;
290
290
  align: z.ZodOptional<z.ZodEnum<{
291
- left: "left";
292
291
  right: "right";
292
+ left: "left";
293
293
  center: "center";
294
294
  }>>;
295
295
  }, z.core.$strip>>;
@@ -352,10 +352,10 @@ declare const catalog: import("@json-render/core").Catalog<{
352
352
  Icon: {
353
353
  props: z.ZodObject<{
354
354
  name: z.ZodEnum<{
355
- form: "form";
356
- list: "list";
357
355
  link: "link";
358
356
  check: "check";
357
+ form: "form";
358
+ list: "list";
359
359
  plus: "plus";
360
360
  minus: "minus";
361
361
  close: "close";
@@ -416,10 +416,10 @@ declare const catalog: import("@json-render/core").Catalog<{
416
416
  ChevronIcon: {
417
417
  props: z.ZodObject<{
418
418
  direction: z.ZodEnum<{
419
- left: "left";
420
- right: "right";
421
419
  up: "up";
422
420
  down: "down";
421
+ right: "right";
422
+ left: "left";
423
423
  }>;
424
424
  size: z.ZodOptional<z.ZodEnum<{
425
425
  sm: "sm";
@@ -433,9 +433,9 @@ declare const catalog: import("@json-render/core").Catalog<{
433
433
  props: z.ZodObject<{
434
434
  status: z.ZodEnum<{
435
435
  success: "success";
436
+ error: "error";
436
437
  info: "info";
437
438
  warning: "warning";
438
- error: "error";
439
439
  }>;
440
440
  size: z.ZodOptional<z.ZodEnum<{
441
441
  sm: "sm";
@@ -448,10 +448,10 @@ declare const catalog: import("@json-render/core").Catalog<{
448
448
  IconButton: {
449
449
  props: z.ZodObject<{
450
450
  icon: z.ZodEnum<{
451
- form: "form";
452
- list: "list";
453
451
  link: "link";
454
452
  check: "check";
453
+ form: "form";
454
+ list: "list";
455
455
  plus: "plus";
456
456
  minus: "minus";
457
457
  close: "close";
@@ -508,9 +508,9 @@ declare const catalog: import("@json-render/core").Catalog<{
508
508
  lg: "lg";
509
509
  }>>;
510
510
  color: z.ZodOptional<z.ZodEnum<{
511
- transparent: "transparent";
512
511
  primary: "primary";
513
512
  secondary: "secondary";
513
+ transparent: "transparent";
514
514
  base: "base";
515
515
  }>>;
516
516
  }, z.core.$strip>;
@@ -628,10 +628,10 @@ declare const catalog: import("@json-render/core").Catalog<{
628
628
  triggerLabel: z.ZodString;
629
629
  title: z.ZodString;
630
630
  type: z.ZodOptional<z.ZodEnum<{
631
- bottom: "bottom";
632
- left: "left";
633
631
  right: "right";
632
+ left: "left";
634
633
  center: "center";
634
+ bottom: "bottom";
635
635
  }>>;
636
636
  }, z.core.$strip>;
637
637
  slots: string[];
@@ -650,8 +650,8 @@ declare const catalog: import("@json-render/core").Catalog<{
650
650
  triggerLabel: z.ZodString;
651
651
  title: z.ZodString;
652
652
  side: z.ZodOptional<z.ZodEnum<{
653
- left: "left";
654
653
  right: "right";
654
+ left: "left";
655
655
  }>>;
656
656
  }, z.core.$strip>;
657
657
  slots: string[];
@@ -685,9 +685,9 @@ declare const catalog: import("@json-render/core").Catalog<{
685
685
  triggerLabel: z.ZodString;
686
686
  tone: z.ZodEnum<{
687
687
  success: "success";
688
+ error: "error";
688
689
  info: "info";
689
690
  warning: "warning";
690
- error: "error";
691
691
  }>;
692
692
  message: z.ZodString;
693
693
  }, z.core.$strip>;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { catalog } from "./catalog.mjs";
3
2
  import { DialogWidget, DrawerWidget, FileFieldWidget, FormControlWidget, ModalWidget, ToastWidget, renderAccordion, renderAlert, renderAnchor, renderAutocomplete, renderAvatar, renderBadge, renderBaselineStatus, renderBreadcrumb, renderButton, renderCard, renderCheckbox, renderCheckboxCard, renderCheckboxGroup, renderChevronIcon, renderCode, renderDropdownMenu, renderForm, renderGrid, renderHeading, renderIcon, renderIconButton, renderListBox, renderNumberField, renderPagination, renderPasswordInput, renderPopover, renderProgress, renderRadio, renderRadioCard, renderScrollLinked, renderSelect, renderSeparator, renderSkeleton, renderSlider, renderSpinner, renderStack, renderStatusIcon, renderSwitch, renderTable, renderTabs, renderTextField, renderTextarea, renderTooltip } from "../_shared/renderers.mjs";
3
+ import { catalog } from "./catalog.mjs";
4
4
  import { useState } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { JSONUIProvider, Renderer, defineRegistry, useBoundProp } from "@json-render/react";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { DialogWidget, DrawerWidget, FileFieldWidget, FormControlWidget, ModalWidget, ToastWidget, renderAccordion, renderAlert, renderAnchor, renderAvatar, renderBadge, renderBaselineStatus, renderBreadcrumb, renderButton, renderCard, renderChevronIcon, renderCode, renderDropdownMenu, renderForm, renderGrid, renderHeading, renderIcon, renderIconButton, renderPopover, renderProgress, renderScrollLinked, renderSeparator, renderSkeleton, renderSpinner, renderStack, renderStatusIcon, renderTable, renderTabs, renderTooltip } from "../_shared/renderers.mjs";
3
2
  import { buildArteOdysseyLibrary } from "../_shared/openui-defs.mjs";
3
+ import { DialogWidget, DrawerWidget, FileFieldWidget, FormControlWidget, ModalWidget, ToastWidget, renderAccordion, renderAlert, renderAnchor, renderAvatar, renderBadge, renderBaselineStatus, renderBreadcrumb, renderButton, renderCard, renderChevronIcon, renderCode, renderDropdownMenu, renderForm, renderGrid, renderHeading, renderIcon, renderIconButton, renderPopover, renderProgress, renderScrollLinked, renderSeparator, renderSkeleton, renderSpinner, renderStack, renderStatusIcon, renderTable, renderTabs, renderTooltip } from "../_shared/renderers.mjs";
4
4
  import { AutocompleteView, CheckboxCardView, CheckboxGroupView, CheckboxView, ListBoxView, NumberFieldView, PaginationView, PasswordInputView, RadioCardView, RadioView, SelectView, SliderView, SwitchView, TextFieldView, TextareaView } from "./form-views.mjs";
5
5
  import { Fragment } from "react";
6
6
  import { jsx } from "react/jsx-runtime";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k8o/arte-odyssey",
3
- "version": "10.6.4",
3
+ "version": "10.8.0",
4
4
  "description": "k8o's React UI library with built-in generative UI adapters (json-render & OpenUI) for LLM-driven, on-brand interfaces",
5
5
  "keywords": [
6
6
  "ai",
@@ -69,6 +69,24 @@
69
69
  "default": "./dist/integrations/openui/prompt.mjs"
70
70
  }
71
71
  },
72
+ "./ai": {
73
+ "import": {
74
+ "types": "./dist/components/ai/index.d.mts",
75
+ "default": "./dist/components/ai/index.mjs"
76
+ }
77
+ },
78
+ "./ai/response": {
79
+ "import": {
80
+ "types": "./dist/components/ai/response/index.d.mts",
81
+ "default": "./dist/components/ai/response/index.mjs"
82
+ }
83
+ },
84
+ "./ai-sdk": {
85
+ "import": {
86
+ "types": "./dist/integrations/ai-sdk/index.d.mts",
87
+ "default": "./dist/integrations/ai-sdk/index.mjs"
88
+ }
89
+ },
72
90
  "./styles.css": "./dist/styles/index.css"
73
91
  },
74
92
  "publishConfig": {
@@ -100,6 +118,7 @@
100
118
  "@vitest/browser-playwright": "4.1.7",
101
119
  "@vitest/coverage-v8": "4.1.7",
102
120
  "@vitest/ui": "4.1.7",
121
+ "ai": "5.0.206",
103
122
  "postcss": "8.5.15",
104
123
  "react": "19.2.6",
105
124
  "react-dom": "19.2.6",
@@ -107,6 +126,7 @@
107
126
  "storybook-addon-determinism": "0.1.1",
108
127
  "storybook-addon-mock-date": "3.0.2",
109
128
  "storybook-addon-vrt": "0.1.0",
129
+ "streamdown": "2.5.0",
110
130
  "tailwind-token-extractor": "0.2.0",
111
131
  "tailwindcss": "4.3.0",
112
132
  "vite": "8.0.16",
@@ -122,8 +142,10 @@
122
142
  "@openuidev/react-lang": ">=0.2.6",
123
143
  "@types/react": ">=19.0.0",
124
144
  "@types/react-dom": ">=19.0.0",
145
+ "ai": ">=5.0.0",
125
146
  "react": ">=19.0.0",
126
147
  "react-dom": ">=19.0.0",
148
+ "streamdown": ">=2.0.0",
127
149
  "tailwindcss": ">=4.0.0",
128
150
  "typescript": ">=6.0.0",
129
151
  "zod": ">=4.4.0"
@@ -141,6 +163,12 @@
141
163
  "@openuidev/react-lang": {
142
164
  "optional": true
143
165
  },
166
+ "ai": {
167
+ "optional": true
168
+ },
169
+ "streamdown": {
170
+ "optional": true
171
+ },
144
172
  "zod": {
145
173
  "optional": true
146
174
  }