@assistant-ui/react-ink 0.0.2 → 0.0.4

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 (228) hide show
  1. package/README.md +86 -0
  2. package/dist/context/AssistantContext.d.ts +1 -7
  3. package/dist/context/AssistantContext.d.ts.map +1 -1
  4. package/dist/context/AssistantContext.js +1 -15
  5. package/dist/context/AssistantContext.js.map +1 -1
  6. package/dist/context/index.d.ts +1 -1
  7. package/dist/context/index.d.ts.map +1 -1
  8. package/dist/context/index.js +1 -1
  9. package/dist/context/index.js.map +1 -1
  10. package/dist/index.d.ts +13 -14
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +13 -16
  13. package/dist/index.js.map +1 -1
  14. package/dist/primitives/actionBar/ActionBarCopy.d.ts +1 -1
  15. package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
  16. package/dist/primitives/actionBar/ActionBarCopy.js +1 -1
  17. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  18. package/dist/primitives/actionBar/ActionBarEdit.js +1 -1
  19. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  20. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +1 -1
  21. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
  22. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +1 -1
  23. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
  24. package/dist/primitives/actionBar/ActionBarReload.js +1 -1
  25. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  26. package/dist/primitives/actionBar/index.d.ts +5 -5
  27. package/dist/primitives/actionBar/index.d.ts.map +1 -1
  28. package/dist/primitives/actionBar/index.js +5 -5
  29. package/dist/primitives/actionBar/index.js.map +1 -1
  30. package/dist/primitives/attachment/index.d.ts +4 -4
  31. package/dist/primitives/attachment/index.d.ts.map +1 -1
  32. package/dist/primitives/attachment/index.js +4 -4
  33. package/dist/primitives/attachment/index.js.map +1 -1
  34. package/dist/primitives/branchPicker/index.d.ts +4 -4
  35. package/dist/primitives/branchPicker/index.d.ts.map +1 -1
  36. package/dist/primitives/branchPicker/index.js +4 -4
  37. package/dist/primitives/branchPicker/index.js.map +1 -1
  38. package/dist/primitives/chainOfThought/index.d.ts +3 -3
  39. package/dist/primitives/chainOfThought/index.d.ts.map +1 -1
  40. package/dist/primitives/chainOfThought/index.js +3 -3
  41. package/dist/primitives/chainOfThought/index.js.map +1 -1
  42. package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -1
  43. package/dist/primitives/composer/ComposerAddAttachment.js +3 -5
  44. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
  45. package/dist/primitives/composer/ComposerCancel.js +3 -3
  46. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  47. package/dist/primitives/composer/ComposerSend.js +3 -3
  48. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  49. package/dist/primitives/composer/index.d.ts +7 -10
  50. package/dist/primitives/composer/index.d.ts.map +1 -1
  51. package/dist/primitives/composer/index.js +7 -10
  52. package/dist/primitives/composer/index.js.map +1 -1
  53. package/dist/primitives/message/MessageContent.d.ts.map +1 -1
  54. package/dist/primitives/message/MessageContent.js +9 -3
  55. package/dist/primitives/message/MessageContent.js.map +1 -1
  56. package/dist/primitives/message/index.d.ts +5 -5
  57. package/dist/primitives/message/index.d.ts.map +1 -1
  58. package/dist/primitives/message/index.js +5 -5
  59. package/dist/primitives/message/index.js.map +1 -1
  60. package/dist/primitives/suggestion/index.d.ts +3 -3
  61. package/dist/primitives/suggestion/index.d.ts.map +1 -1
  62. package/dist/primitives/suggestion/index.js +3 -3
  63. package/dist/primitives/suggestion/index.js.map +1 -1
  64. package/dist/primitives/thread/ThreadEmpty.js +1 -1
  65. package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
  66. package/dist/primitives/thread/ThreadMessages.d.ts +23 -7
  67. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  68. package/dist/primitives/thread/ThreadMessages.js +67 -13
  69. package/dist/primitives/thread/ThreadMessages.js.map +1 -1
  70. package/dist/primitives/thread/index.d.ts +7 -7
  71. package/dist/primitives/thread/index.d.ts.map +1 -1
  72. package/dist/primitives/thread/index.js +7 -7
  73. package/dist/primitives/thread/index.js.map +1 -1
  74. package/dist/primitives/threadList/index.d.ts +3 -3
  75. package/dist/primitives/threadList/index.d.ts.map +1 -1
  76. package/dist/primitives/threadList/index.js +3 -3
  77. package/dist/primitives/threadList/index.js.map +1 -1
  78. package/dist/primitives/threadListItem/index.d.ts +6 -6
  79. package/dist/primitives/threadListItem/index.d.ts.map +1 -1
  80. package/dist/primitives/threadListItem/index.js +6 -6
  81. package/dist/primitives/threadListItem/index.js.map +1 -1
  82. package/dist/primitives/toolCall/ToolFallback.d.ts +33 -0
  83. package/dist/primitives/toolCall/ToolFallback.d.ts.map +1 -0
  84. package/dist/primitives/toolCall/ToolFallback.js +103 -0
  85. package/dist/primitives/toolCall/ToolFallback.js.map +1 -0
  86. package/dist/primitives/toolCall/index.d.ts +2 -0
  87. package/dist/primitives/toolCall/index.d.ts.map +1 -0
  88. package/dist/primitives/toolCall/index.js +2 -0
  89. package/dist/primitives/toolCall/index.js.map +1 -0
  90. package/dist/runtimes/useLocalRuntime.d.ts +1 -17
  91. package/dist/runtimes/useLocalRuntime.d.ts.map +1 -1
  92. package/dist/runtimes/useLocalRuntime.js +1 -61
  93. package/dist/runtimes/useLocalRuntime.js.map +1 -1
  94. package/package.json +5 -3
  95. package/src/context/AssistantContext.tsx +4 -31
  96. package/src/context/index.ts +4 -1
  97. package/src/index.ts +13 -39
  98. package/src/primitives/actionBar/ActionBarCopy.tsx +1 -1
  99. package/src/primitives/actionBar/ActionBarEdit.tsx +1 -1
  100. package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +1 -1
  101. package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +1 -1
  102. package/src/primitives/actionBar/ActionBarReload.tsx +1 -1
  103. package/src/primitives/actionBar/index.ts +16 -7
  104. package/src/primitives/attachment/index.ts +14 -5
  105. package/src/primitives/branchPicker/index.ts +8 -8
  106. package/src/primitives/chainOfThought/index.ts +5 -5
  107. package/src/primitives/composer/ComposerAddAttachment.tsx +3 -5
  108. package/src/primitives/composer/ComposerCancel.tsx +3 -3
  109. package/src/primitives/composer/ComposerSend.tsx +3 -3
  110. package/src/primitives/composer/index.ts +19 -19
  111. package/src/primitives/message/MessageContent.test.tsx +83 -0
  112. package/src/primitives/message/MessageContent.tsx +21 -15
  113. package/src/primitives/message/index.ts +13 -7
  114. package/src/primitives/suggestion/index.ts +6 -6
  115. package/src/primitives/thread/ThreadEmpty.tsx +1 -1
  116. package/src/primitives/thread/ThreadMessages.tsx +122 -27
  117. package/src/primitives/thread/index.ts +17 -11
  118. package/src/primitives/threadList/index.ts +12 -3
  119. package/src/primitives/threadListItem/index.ts +11 -11
  120. package/src/primitives/toolCall/ToolFallback.test.tsx +40 -0
  121. package/src/primitives/toolCall/ToolFallback.tsx +227 -0
  122. package/src/primitives/toolCall/index.ts +5 -0
  123. package/src/runtimes/useLocalRuntime.ts +4 -105
  124. package/dist/adapters/LocalStorageThreadListAdapter.d.ts +0 -15
  125. package/dist/adapters/LocalStorageThreadListAdapter.d.ts.map +0 -1
  126. package/dist/adapters/LocalStorageThreadListAdapter.js +0 -154
  127. package/dist/adapters/LocalStorageThreadListAdapter.js.map +0 -1
  128. package/dist/adapters/TitleGenerationAdapter.d.ts +0 -6
  129. package/dist/adapters/TitleGenerationAdapter.d.ts.map +0 -1
  130. package/dist/adapters/TitleGenerationAdapter.js +0 -15
  131. package/dist/adapters/TitleGenerationAdapter.js.map +0 -1
  132. package/dist/adapters/index.d.ts +0 -3
  133. package/dist/adapters/index.d.ts.map +0 -1
  134. package/dist/adapters/index.js +0 -3
  135. package/dist/adapters/index.js.map +0 -1
  136. package/dist/primitive-hooks/index.d.ts +0 -15
  137. package/dist/primitive-hooks/index.d.ts.map +0 -1
  138. package/dist/primitive-hooks/index.js +0 -15
  139. package/dist/primitive-hooks/index.js.map +0 -1
  140. package/dist/primitive-hooks/useActionBarCopy.d.ts +0 -10
  141. package/dist/primitive-hooks/useActionBarCopy.d.ts.map +0 -1
  142. package/dist/primitive-hooks/useActionBarCopy.js +0 -26
  143. package/dist/primitive-hooks/useActionBarCopy.js.map +0 -1
  144. package/dist/primitive-hooks/useActionBarEdit.d.ts +0 -5
  145. package/dist/primitive-hooks/useActionBarEdit.d.ts.map +0 -1
  146. package/dist/primitive-hooks/useActionBarEdit.js +0 -11
  147. package/dist/primitive-hooks/useActionBarEdit.js.map +0 -1
  148. package/dist/primitive-hooks/useActionBarFeedback.d.ts +0 -9
  149. package/dist/primitive-hooks/useActionBarFeedback.d.ts.map +0 -1
  150. package/dist/primitive-hooks/useActionBarFeedback.js +0 -19
  151. package/dist/primitive-hooks/useActionBarFeedback.js.map +0 -1
  152. package/dist/primitive-hooks/useActionBarReload.d.ts +0 -5
  153. package/dist/primitive-hooks/useActionBarReload.d.ts.map +0 -1
  154. package/dist/primitive-hooks/useActionBarReload.js +0 -13
  155. package/dist/primitive-hooks/useActionBarReload.js.map +0 -1
  156. package/dist/primitive-hooks/useComposerAddAttachment.d.ts +0 -5
  157. package/dist/primitive-hooks/useComposerAddAttachment.d.ts.map +0 -1
  158. package/dist/primitive-hooks/useComposerAddAttachment.js +0 -10
  159. package/dist/primitive-hooks/useComposerAddAttachment.js.map +0 -1
  160. package/dist/primitive-hooks/useComposerCancel.d.ts +0 -5
  161. package/dist/primitive-hooks/useComposerCancel.d.ts.map +0 -1
  162. package/dist/primitive-hooks/useComposerCancel.js +0 -11
  163. package/dist/primitive-hooks/useComposerCancel.js.map +0 -1
  164. package/dist/primitive-hooks/useComposerSend.d.ts +0 -5
  165. package/dist/primitive-hooks/useComposerSend.d.ts.map +0 -1
  166. package/dist/primitive-hooks/useComposerSend.js +0 -11
  167. package/dist/primitive-hooks/useComposerSend.js.map +0 -1
  168. package/dist/primitive-hooks/useEditComposerCancel.d.ts +0 -4
  169. package/dist/primitive-hooks/useEditComposerCancel.d.ts.map +0 -1
  170. package/dist/primitive-hooks/useEditComposerCancel.js +0 -10
  171. package/dist/primitive-hooks/useEditComposerCancel.js.map +0 -1
  172. package/dist/primitive-hooks/useEditComposerSend.d.ts +0 -5
  173. package/dist/primitive-hooks/useEditComposerSend.d.ts.map +0 -1
  174. package/dist/primitive-hooks/useEditComposerSend.js +0 -11
  175. package/dist/primitive-hooks/useEditComposerSend.js.map +0 -1
  176. package/dist/primitive-hooks/useMessageBranching.d.ts +0 -7
  177. package/dist/primitive-hooks/useMessageBranching.d.ts.map +0 -1
  178. package/dist/primitive-hooks/useMessageBranching.js +0 -15
  179. package/dist/primitive-hooks/useMessageBranching.js.map +0 -1
  180. package/dist/primitive-hooks/useMessageReload.d.ts +0 -5
  181. package/dist/primitive-hooks/useMessageReload.d.ts.map +0 -1
  182. package/dist/primitive-hooks/useMessageReload.js +0 -11
  183. package/dist/primitive-hooks/useMessageReload.js.map +0 -1
  184. package/dist/primitive-hooks/useThreadIsEmpty.d.ts +0 -2
  185. package/dist/primitive-hooks/useThreadIsEmpty.d.ts.map +0 -1
  186. package/dist/primitive-hooks/useThreadIsEmpty.js +0 -5
  187. package/dist/primitive-hooks/useThreadIsEmpty.js.map +0 -1
  188. package/dist/primitive-hooks/useThreadIsRunning.d.ts +0 -2
  189. package/dist/primitive-hooks/useThreadIsRunning.d.ts.map +0 -1
  190. package/dist/primitive-hooks/useThreadIsRunning.js +0 -5
  191. package/dist/primitive-hooks/useThreadIsRunning.js.map +0 -1
  192. package/dist/primitive-hooks/useThreadMessages.d.ts +0 -3
  193. package/dist/primitive-hooks/useThreadMessages.d.ts.map +0 -1
  194. package/dist/primitive-hooks/useThreadMessages.js +0 -5
  195. package/dist/primitive-hooks/useThreadMessages.js.map +0 -1
  196. package/dist/primitives/composer/EditComposerCancel.d.ts +0 -7
  197. package/dist/primitives/composer/EditComposerCancel.d.ts.map +0 -1
  198. package/dist/primitives/composer/EditComposerCancel.js +0 -8
  199. package/dist/primitives/composer/EditComposerCancel.js.map +0 -1
  200. package/dist/primitives/composer/EditComposerInput.d.ts +0 -10
  201. package/dist/primitives/composer/EditComposerInput.d.ts.map +0 -1
  202. package/dist/primitives/composer/EditComposerInput.js +0 -19
  203. package/dist/primitives/composer/EditComposerInput.js.map +0 -1
  204. package/dist/primitives/composer/EditComposerSend.d.ts +0 -7
  205. package/dist/primitives/composer/EditComposerSend.d.ts.map +0 -1
  206. package/dist/primitives/composer/EditComposerSend.js +0 -8
  207. package/dist/primitives/composer/EditComposerSend.js.map +0 -1
  208. package/src/adapters/LocalStorageThreadListAdapter.tsx +0 -227
  209. package/src/adapters/TitleGenerationAdapter.ts +0 -20
  210. package/src/adapters/index.ts +0 -5
  211. package/src/primitive-hooks/index.ts +0 -20
  212. package/src/primitive-hooks/useActionBarCopy.ts +0 -38
  213. package/src/primitive-hooks/useActionBarEdit.ts +0 -13
  214. package/src/primitive-hooks/useActionBarFeedback.ts +0 -28
  215. package/src/primitive-hooks/useActionBarReload.ts +0 -18
  216. package/src/primitive-hooks/useComposerAddAttachment.ts +0 -16
  217. package/src/primitive-hooks/useComposerCancel.ts +0 -13
  218. package/src/primitive-hooks/useComposerSend.ts +0 -13
  219. package/src/primitive-hooks/useEditComposerCancel.ts +0 -12
  220. package/src/primitive-hooks/useEditComposerSend.ts +0 -13
  221. package/src/primitive-hooks/useMessageBranching.ts +0 -18
  222. package/src/primitive-hooks/useMessageReload.ts +0 -13
  223. package/src/primitive-hooks/useThreadIsEmpty.ts +0 -5
  224. package/src/primitive-hooks/useThreadIsRunning.ts +0 -5
  225. package/src/primitive-hooks/useThreadMessages.ts +0 -6
  226. package/src/primitives/composer/EditComposerCancel.tsx +0 -20
  227. package/src/primitives/composer/EditComposerInput.tsx +0 -40
  228. package/src/primitives/composer/EditComposerSend.tsx +0 -25
@@ -0,0 +1,103 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { Box, Text } from "ink";
4
+ import Spinner from "ink-spinner";
5
+ const STATUS_ICONS = {
6
+ complete: "+",
7
+ error: "x",
8
+ "requires-action": "?",
9
+ };
10
+ const STATUS_COLORS = {
11
+ running: "yellow",
12
+ complete: "green",
13
+ error: "red",
14
+ "requires-action": "cyan",
15
+ };
16
+ const prettyPrintArgs = (argsText) => {
17
+ if (!argsText)
18
+ return "";
19
+ try {
20
+ return JSON.stringify(JSON.parse(argsText), null, 2);
21
+ }
22
+ catch {
23
+ return argsText;
24
+ }
25
+ };
26
+ const formatResult = (result) => {
27
+ if (result === undefined || result === null)
28
+ return "";
29
+ if (typeof result === "string")
30
+ return result;
31
+ try {
32
+ return JSON.stringify(result, null, 2);
33
+ }
34
+ catch {
35
+ return String(result);
36
+ }
37
+ };
38
+ const truncate = (text, maxLines) => {
39
+ const lines = text.split("\n");
40
+ if (lines.length <= maxLines)
41
+ return text;
42
+ return (lines.slice(0, maxLines).join("\n") +
43
+ `\n... (${lines.length - maxLines} more lines)`);
44
+ };
45
+ const resolveStatus = (part, status) => {
46
+ if (status?.type === "requires-action")
47
+ return "requires-action";
48
+ if (status?.type === "incomplete")
49
+ return "error";
50
+ if (status?.type === "complete")
51
+ return "complete";
52
+ if (part.isError)
53
+ return "error";
54
+ if (part.result !== undefined)
55
+ return "complete";
56
+ if (part.interrupt)
57
+ return "requires-action";
58
+ return "running";
59
+ };
60
+ const getDisplayResult = (result, status) => {
61
+ if (result !== undefined)
62
+ return result;
63
+ if (status?.type === "incomplete")
64
+ return status.error;
65
+ return undefined;
66
+ };
67
+ const getFallbackErrorText = (status) => {
68
+ if (status?.type === "incomplete" && status.reason === "cancelled") {
69
+ return "Tool call cancelled";
70
+ }
71
+ return "Tool call failed";
72
+ };
73
+ const StatusIcon = ({ status }) => {
74
+ if (status === "running") {
75
+ return (_jsx(Text, { color: STATUS_COLORS.running, children: _jsx(Spinner, { type: "line" }) }));
76
+ }
77
+ return _jsx(Text, { color: STATUS_COLORS[status], children: STATUS_ICONS[status] });
78
+ };
79
+ export const ToolFallback = ({ toolName, args, argsText, result: partResult, isError, interrupt, status, expanded: expandedProp, maxArgLines = 20, maxResultLines = 20, maxResultPreviewLines = 1, renderHeader, renderArgs, renderResult, }) => {
80
+ const displayStatus = resolveStatus({
81
+ interrupt,
82
+ isError,
83
+ result: partResult,
84
+ }, status);
85
+ const expanded = expandedProp ??
86
+ (displayStatus === "running" ||
87
+ displayStatus === "requires-action" ||
88
+ displayStatus === "error");
89
+ const result = getDisplayResult(partResult, status);
90
+ const resultStr = result !== undefined || displayStatus === "error"
91
+ ? formatResult(result)
92
+ : "";
93
+ const argsDisplay = useMemo(() => prettyPrintArgs(argsText), [argsText]);
94
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { gap: 1, children: renderHeader ? (renderHeader({
95
+ toolName,
96
+ status: displayStatus,
97
+ expanded,
98
+ })) : (_jsxs(_Fragment, { children: [_jsx(StatusIcon, { status: displayStatus }), _jsx(Text, { bold: true, children: toolName }), !expanded && resultStr ? (_jsx(Text, { dimColor: true, children: truncate(resultStr, maxResultPreviewLines) })) : null] })) }), expanded && (_jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [argsText ? (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Args:" }), renderArgs ? (renderArgs({ args, argsText })) : (_jsx(Text, { children: truncate(argsDisplay, maxArgLines) }))] })) : null, partResult !== undefined || displayStatus === "error" ? (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: displayStatus === "error" ? "Error:" : "Result:" }), renderResult ? (renderResult({
99
+ result,
100
+ isError: displayStatus === "error",
101
+ })) : displayStatus === "error" ? (_jsx(Text, { color: "red", children: truncate(resultStr || getFallbackErrorText(status), maxResultLines) })) : (_jsx(Text, { children: truncate(resultStr, maxResultLines) }))] })) : null, displayStatus === "running" && _jsx(Text, { dimColor: true, children: "Running..." }), displayStatus === "requires-action" && (_jsx(Text, { color: "cyan", children: "Waiting for approval..." }))] }))] }));
102
+ };
103
+ //# sourceMappingURL=ToolFallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolFallback.js","sourceRoot":"","sources":["../../../src/primitives/toolCall/ToolFallback.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { ToolFallback as Fallback, type ToolFallbackProps as FallbackProps, type ToolCallStatus, } from "./ToolFallback.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/toolCall/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,IAAI,QAAQ,EACxB,KAAK,iBAAiB,IAAI,aAAa,EACvC,KAAK,cAAc,GACpB,0BAAuB"}
@@ -0,0 +1,2 @@
1
+ export { ToolFallback as Fallback, } from "./ToolFallback.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/primitives/toolCall/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,IAAI,QAAQ,GAGzB,0BAAuB"}
@@ -1,18 +1,2 @@
1
- import type { AssistantRuntime, ChatModelAdapter, ThreadMessageLike } from "@assistant-ui/core";
2
- import type { LocalRuntimeOptionsBase } from "@assistant-ui/core/internal";
3
- import type { TitleGenerationAdapter } from "../adapters/TitleGenerationAdapter.js";
4
- type AsyncStorageLike = {
5
- getItem(key: string): Promise<string | null>;
6
- setItem(key: string, value: string): Promise<void>;
7
- removeItem(key: string): Promise<void>;
8
- };
9
- export type LocalRuntimeOptions = Omit<LocalRuntimeOptionsBase, "adapters"> & {
10
- adapters?: Omit<LocalRuntimeOptionsBase["adapters"], "chatModel"> | undefined;
11
- initialMessages?: readonly ThreadMessageLike[] | undefined;
12
- titleGenerator?: TitleGenerationAdapter | undefined;
13
- storage?: AsyncStorageLike | undefined;
14
- storagePrefix?: string | undefined;
15
- };
16
- export declare const useLocalRuntime: (chatModel: ChatModelAdapter, options?: LocalRuntimeOptions) => AssistantRuntime;
17
- export {};
1
+ export { useLocalRuntime, type LocalRuntimeOptions, } from "@assistant-ui/core/react";
18
2
  //# sourceMappingURL=useLocalRuntime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLocalRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/useLocalRuntime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAM3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,8CAA2C;AAKjF,KAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GAAG;IAC5E,QAAQ,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC;IAC9E,eAAe,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3D,cAAc,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAAC;AAmDF,eAAO,MAAM,eAAe,GAC1B,WAAW,gBAAgB,EAC3B,UAAS,mBAAwB,KAChC,gBAmBF,CAAC"}
1
+ {"version":3,"file":"useLocalRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/useLocalRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,GACzB,MAAM,0BAA0B,CAAC"}
@@ -1,62 +1,2 @@
1
- import { useEffect, useMemo, useRef, useState } from "react";
2
- import { InMemoryThreadListAdapter } from "@assistant-ui/core";
3
- import { AssistantRuntimeImpl, LocalRuntimeCore, } from "@assistant-ui/core/internal";
4
- import { useAuiState } from "@assistant-ui/store";
5
- import { useRemoteThreadListRuntime } from "./useRemoteThreadListRuntime.js";
6
- import { createLocalStorageAdapter } from "../adapters/LocalStorageThreadListAdapter.js";
7
- import { useRuntimeAdapters } from "../context/providers/RuntimeAdapterProvider.js";
8
- const useInnerLocalRuntime = (chatModel, options) => {
9
- const { initialMessages, ...restOptions } = options;
10
- const { modelContext, ...threadListAdapters } = useRuntimeAdapters() ?? {};
11
- const opt = {
12
- ...restOptions,
13
- adapters: {
14
- ...threadListAdapters,
15
- ...restOptions.adapters,
16
- chatModel,
17
- },
18
- };
19
- const [runtime] = useState(() => new LocalRuntimeCore(opt, initialMessages));
20
- const threadIdRef = useRef(undefined);
21
- threadIdRef.current = useAuiState((s) => s.threadListItem.remoteId);
22
- useEffect(() => {
23
- runtime.threads
24
- .getMainThreadRuntimeCore()
25
- .__internal_setGetThreadId(() => threadIdRef.current);
26
- }, [runtime]);
27
- useEffect(() => {
28
- return () => {
29
- runtime.threads.getMainThreadRuntimeCore().detach();
30
- };
31
- }, [runtime]);
32
- useEffect(() => {
33
- runtime.threads.getMainThreadRuntimeCore().__internal_setOptions(opt);
34
- runtime.threads.getMainThreadRuntimeCore().__internal_load();
35
- });
36
- useEffect(() => {
37
- if (!modelContext)
38
- return undefined;
39
- return runtime.registerModelContextProvider(modelContext);
40
- }, [modelContext, runtime]);
41
- return useMemo(() => new AssistantRuntimeImpl(runtime), [runtime]);
42
- };
43
- export const useLocalRuntime = (chatModel, options = {}) => {
44
- const { titleGenerator, storage, storagePrefix, ...innerOptions } = options;
45
- const adapter = useMemo(() => {
46
- if (!storage)
47
- return new InMemoryThreadListAdapter();
48
- return createLocalStorageAdapter({
49
- storage,
50
- prefix: storagePrefix,
51
- titleGenerator,
52
- });
53
- }, [storage, storagePrefix, titleGenerator]);
54
- return useRemoteThreadListRuntime({
55
- runtimeHook: function RuntimeHook() {
56
- return useInnerLocalRuntime(chatModel, innerOptions);
57
- },
58
- adapter,
59
- allowNesting: true,
60
- });
61
- };
1
+ export { useLocalRuntime, } from "@assistant-ui/core/react";
62
2
  //# sourceMappingURL=useLocalRuntime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLocalRuntime.js","sourceRoot":"","sources":["../../src/runtimes/useLocalRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLocalRuntime.js","sourceRoot":"","sources":["../../src/runtimes/useLocalRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAEhB,MAAM,0BAA0B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/react-ink",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "React Ink (terminal UI) bindings for assistant-ui",
5
5
  "keywords": [
6
6
  "assistant",
@@ -34,10 +34,11 @@
34
34
  ],
35
35
  "sideEffects": false,
36
36
  "dependencies": {
37
- "@assistant-ui/core": "^0.1.3",
37
+ "@assistant-ui/core": "^0.1.5",
38
38
  "@assistant-ui/store": "^0.2.2",
39
39
  "@assistant-ui/tap": "^0.5.2",
40
- "assistant-stream": "^0.3.4",
40
+ "assistant-stream": "^0.3.5",
41
+ "ink-spinner": "^5.0.0",
41
42
  "zustand": "^5.0.11"
42
43
  },
43
44
  "peerDependencies": {
@@ -53,6 +54,7 @@
53
54
  "devDependencies": {
54
55
  "@types/react": "^19.2.14",
55
56
  "ink": "^5.2.0",
57
+ "ink-testing-library": "^4.0.0",
56
58
  "react": "18.3.1",
57
59
  "vitest": "^4.0.18",
58
60
  "@assistant-ui/x-buildutils": "0.0.2"
@@ -1,31 +1,4 @@
1
- import { type ReactNode, memo } from "react";
2
- import { useAui } from "@assistant-ui/store";
3
- import type { AssistantRuntime } from "@assistant-ui/core";
4
- import { AssistantProviderBase } from "@assistant-ui/core/react";
5
-
6
- export const useAssistantRuntime = (): AssistantRuntime => {
7
- const aui = useAui();
8
- const runtime = aui.threads().__internal_getAssistantRuntime?.();
9
- if (!runtime) {
10
- throw new Error(
11
- "useAssistantRuntime must be used within an AssistantProvider",
12
- );
13
- }
14
- return runtime;
15
- };
16
-
17
- export const AssistantProvider = memo(
18
- ({
19
- runtime,
20
- children,
21
- }: {
22
- runtime: AssistantRuntime;
23
- children: ReactNode;
24
- }) => {
25
- return (
26
- <AssistantProviderBase runtime={runtime}>
27
- {children}
28
- </AssistantProviderBase>
29
- );
30
- },
31
- );
1
+ export {
2
+ AssistantRuntimeProvider,
3
+ useAssistantRuntime,
4
+ } from "@assistant-ui/core/react";
@@ -1 +1,4 @@
1
- export { AssistantProvider, useAssistantRuntime } from "./AssistantContext";
1
+ export {
2
+ AssistantRuntimeProvider,
3
+ useAssistantRuntime,
4
+ } from "./AssistantContext";
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- import "@assistant-ui/core/react"; // store-augmentation side-effect (tools, dataRenderers scopes)
1
+ /// <reference types="@assistant-ui/core/react" />
2
2
 
3
3
  // Re-export core types
4
4
  export type {
@@ -92,27 +92,7 @@ export {
92
92
  } from "@assistant-ui/store";
93
93
 
94
94
  // Context providers and hooks
95
- export { AssistantProvider, useAssistantRuntime } from "./context";
96
-
97
- // Primitive hooks
98
- export {
99
- useThreadMessages,
100
- useThreadIsRunning,
101
- useThreadIsEmpty,
102
- useComposerSend,
103
- useComposerCancel,
104
- useMessageReload,
105
- useMessageBranching,
106
- useActionBarCopy,
107
- type UseActionBarCopyOptions,
108
- useActionBarEdit,
109
- useActionBarReload,
110
- useActionBarFeedbackPositive,
111
- useActionBarFeedbackNegative,
112
- useEditComposerSend,
113
- useEditComposerCancel,
114
- useComposerAddAttachment,
115
- } from "./primitive-hooks";
95
+ export { AssistantRuntimeProvider, useAssistantRuntime } from "./context";
116
96
 
117
97
  // Runtime
118
98
  export {
@@ -122,16 +102,17 @@ export {
122
102
  } from "./runtimes";
123
103
 
124
104
  // Primitives
125
- export * from "./primitives/thread";
126
- export * from "./primitives/composer";
127
- export * from "./primitives/message";
128
- export * from "./primitives/threadList";
129
- export * from "./primitives/actionBar";
130
- export * from "./primitives/branchPicker";
131
- export * from "./primitives/attachment";
132
- export * from "./primitives/threadListItem";
133
- export * from "./primitives/chainOfThought";
134
- export * from "./primitives/suggestion";
105
+ export * as ThreadPrimitive from "./primitives/thread";
106
+ export * as ComposerPrimitive from "./primitives/composer";
107
+ export * as MessagePrimitive from "./primitives/message";
108
+ export * as ThreadListPrimitive from "./primitives/threadList";
109
+ export * as ActionBarPrimitive from "./primitives/actionBar";
110
+ export * as BranchPickerPrimitive from "./primitives/branchPicker";
111
+ export * as AttachmentPrimitive from "./primitives/attachment";
112
+ export * as ThreadListItemPrimitive from "./primitives/threadListItem";
113
+ export * as ChainOfThoughtPrimitive from "./primitives/chainOfThought";
114
+ export * as SuggestionPrimitive from "./primitives/suggestion";
115
+ export * as ToolCallPrimitive from "./primitives/toolCall";
135
116
 
136
117
  // Re-export shared providers from core/react
137
118
  export {
@@ -148,10 +129,3 @@ export {
148
129
  export * from "./model-context";
149
130
  export * from "./client";
150
131
  export * from "./types";
151
-
152
- // Adapters
153
- export {
154
- type TitleGenerationAdapter,
155
- createSimpleTitleAdapter,
156
- createLocalStorageAdapter,
157
- } from "./adapters";
@@ -2,7 +2,7 @@ import type { ReactNode } from "react";
2
2
  import {
3
3
  useActionBarCopy,
4
4
  type UseActionBarCopyOptions,
5
- } from "../../primitive-hooks/useActionBarCopy";
5
+ } from "@assistant-ui/core/react";
6
6
  import { Pressable, type PressableProps } from "../internal/Pressable";
7
7
 
8
8
  export type ActionBarCopyProps = Omit<PressableProps, "onPress" | "children"> &
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import { useActionBarEdit } from "../../primitive-hooks/useActionBarEdit";
2
+ import { useActionBarEdit } from "@assistant-ui/core/react";
3
3
  import { Pressable, type PressableProps } from "../internal/Pressable";
4
4
 
5
5
  export type ActionBarEditProps = Omit<PressableProps, "onPress"> & {
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import { useActionBarFeedbackNegative } from "../../primitive-hooks/useActionBarFeedback";
2
+ import { useActionBarFeedbackNegative } from "@assistant-ui/core/react";
3
3
  import { Pressable, type PressableProps } from "../internal/Pressable";
4
4
 
5
5
  export type ActionBarFeedbackNegativeProps = Omit<
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import { useActionBarFeedbackPositive } from "../../primitive-hooks/useActionBarFeedback";
2
+ import { useActionBarFeedbackPositive } from "@assistant-ui/core/react";
3
3
  import { Pressable, type PressableProps } from "../internal/Pressable";
4
4
 
5
5
  export type ActionBarFeedbackPositiveProps = Omit<
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import { useActionBarReload } from "../../primitive-hooks/useActionBarReload";
2
+ import { useActionBarReload } from "@assistant-ui/core/react";
3
3
  import { Pressable, type PressableProps } from "../internal/Pressable";
4
4
 
5
5
  export type ActionBarReloadProps = Omit<PressableProps, "onPress"> & {
@@ -1,11 +1,20 @@
1
- export { ActionBarCopy, type ActionBarCopyProps } from "./ActionBarCopy";
2
- export { ActionBarEdit, type ActionBarEditProps } from "./ActionBarEdit";
3
- export { ActionBarReload, type ActionBarReloadProps } from "./ActionBarReload";
4
1
  export {
5
- ActionBarFeedbackPositive,
6
- type ActionBarFeedbackPositiveProps,
2
+ ActionBarCopy as Copy,
3
+ type ActionBarCopyProps as CopyProps,
4
+ } from "./ActionBarCopy";
5
+ export {
6
+ ActionBarEdit as Edit,
7
+ type ActionBarEditProps as EditProps,
8
+ } from "./ActionBarEdit";
9
+ export {
10
+ ActionBarReload as Reload,
11
+ type ActionBarReloadProps as ReloadProps,
12
+ } from "./ActionBarReload";
13
+ export {
14
+ ActionBarFeedbackPositive as FeedbackPositive,
15
+ type ActionBarFeedbackPositiveProps as FeedbackPositiveProps,
7
16
  } from "./ActionBarFeedbackPositive";
8
17
  export {
9
- ActionBarFeedbackNegative,
10
- type ActionBarFeedbackNegativeProps,
18
+ ActionBarFeedbackNegative as FeedbackNegative,
19
+ type ActionBarFeedbackNegativeProps as FeedbackNegativeProps,
11
20
  } from "./ActionBarFeedbackNegative";
@@ -1,7 +1,16 @@
1
- export { AttachmentRoot, type AttachmentRootProps } from "./AttachmentRoot";
2
- export { AttachmentName, type AttachmentNameProps } from "./AttachmentName";
3
- export { AttachmentThumb, type AttachmentThumbProps } from "./AttachmentThumb";
4
1
  export {
5
- AttachmentRemove,
6
- type AttachmentRemoveProps,
2
+ AttachmentRoot as Root,
3
+ type AttachmentRootProps as RootProps,
4
+ } from "./AttachmentRoot";
5
+ export {
6
+ AttachmentName as Name,
7
+ type AttachmentNameProps as NameProps,
8
+ } from "./AttachmentName";
9
+ export {
10
+ AttachmentThumb as Thumb,
11
+ type AttachmentThumbProps as ThumbProps,
12
+ } from "./AttachmentThumb";
13
+ export {
14
+ AttachmentRemove as Remove,
15
+ type AttachmentRemoveProps as RemoveProps,
7
16
  } from "./AttachmentRemove";
@@ -1,16 +1,16 @@
1
1
  export {
2
- BranchPickerPrevious,
3
- type BranchPickerPreviousProps,
2
+ BranchPickerPrevious as Previous,
3
+ type BranchPickerPreviousProps as PreviousProps,
4
4
  } from "./BranchPickerPrevious";
5
5
  export {
6
- BranchPickerNext,
7
- type BranchPickerNextProps,
6
+ BranchPickerNext as Next,
7
+ type BranchPickerNextProps as NextProps,
8
8
  } from "./BranchPickerNext";
9
9
  export {
10
- BranchPickerNumber,
11
- type BranchPickerNumberProps,
10
+ BranchPickerNumber as Number,
11
+ type BranchPickerNumberProps as NumberProps,
12
12
  } from "./BranchPickerNumber";
13
13
  export {
14
- BranchPickerCount,
15
- type BranchPickerCountProps,
14
+ BranchPickerCount as Count,
15
+ type BranchPickerCountProps as CountProps,
16
16
  } from "./BranchPickerCount";
@@ -1,9 +1,9 @@
1
1
  export {
2
- ChainOfThoughtRoot,
3
- type ChainOfThoughtRootProps,
2
+ ChainOfThoughtRoot as Root,
3
+ type ChainOfThoughtRootProps as RootProps,
4
4
  } from "./ChainOfThoughtRoot";
5
5
  export {
6
- ChainOfThoughtAccordionTrigger,
7
- type ChainOfThoughtAccordionTriggerProps,
6
+ ChainOfThoughtAccordionTrigger as AccordionTrigger,
7
+ type ChainOfThoughtAccordionTriggerProps as AccordionTriggerProps,
8
8
  } from "./ChainOfThoughtAccordionTrigger";
9
- export { ChainOfThoughtPrimitiveParts } from "@assistant-ui/core/react";
9
+ export { ChainOfThoughtPrimitiveParts as Parts } from "@assistant-ui/core/react";
@@ -1,6 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import { useAuiState } from "@assistant-ui/store";
3
- import { useComposerAddAttachment } from "../../primitive-hooks/useComposerAddAttachment";
2
+ import { useComposerAddAttachment } from "@assistant-ui/core/react";
4
3
  import { Pressable, type PressableProps } from "../internal/Pressable";
5
4
 
6
5
  export type ComposerAddAttachmentProps = Omit<PressableProps, "onPress"> & {
@@ -12,11 +11,10 @@ export const ComposerAddAttachment = ({
12
11
  disabled: disabledProp,
13
12
  ...pressableProps
14
13
  }: ComposerAddAttachmentProps) => {
15
- const isDisabled = useAuiState((s) => !s.composer.isEditing);
16
- const { addAttachment: _addAttachment } = useComposerAddAttachment();
14
+ const { disabled } = useComposerAddAttachment();
17
15
 
18
16
  return (
19
- <Pressable disabled={disabledProp ?? isDisabled} {...pressableProps}>
17
+ <Pressable disabled={disabledProp ?? disabled} {...pressableProps}>
20
18
  {children}
21
19
  </Pressable>
22
20
  );
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import { useComposerCancel } from "../../primitive-hooks/useComposerCancel";
2
+ import { useComposerCancel } from "@assistant-ui/core/react";
3
3
  import { Pressable, type PressableProps } from "../internal/Pressable";
4
4
 
5
5
  export type ComposerCancelProps = Omit<PressableProps, "onPress"> & {
@@ -11,12 +11,12 @@ export const ComposerCancel = ({
11
11
  disabled,
12
12
  ...pressableProps
13
13
  }: ComposerCancelProps) => {
14
- const { cancel, canCancel } = useComposerCancel();
14
+ const { cancel, disabled: hookDisabled } = useComposerCancel();
15
15
 
16
16
  return (
17
17
  <Pressable
18
18
  onPress={cancel}
19
- disabled={disabled ?? !canCancel}
19
+ disabled={disabled ?? hookDisabled}
20
20
  {...pressableProps}
21
21
  >
22
22
  {children}
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import { useComposerSend } from "../../primitive-hooks/useComposerSend";
2
+ import { useComposerSend } from "@assistant-ui/core/react";
3
3
  import { Pressable, type PressableProps } from "../internal/Pressable";
4
4
 
5
5
  export type ComposerSendProps = Omit<PressableProps, "onPress"> & {
@@ -11,12 +11,12 @@ export const ComposerSend = ({
11
11
  disabled,
12
12
  ...pressableProps
13
13
  }: ComposerSendProps) => {
14
- const { send, canSend } = useComposerSend();
14
+ const { send, disabled: hookDisabled } = useComposerSend();
15
15
 
16
16
  return (
17
17
  <Pressable
18
18
  onPress={send}
19
- disabled={disabled ?? !canSend}
19
+ disabled={disabled ?? hookDisabled}
20
20
  {...pressableProps}
21
21
  >
22
22
  {children}
@@ -1,25 +1,25 @@
1
- export { ComposerRoot, type ComposerRootProps } from "./ComposerRoot";
2
1
  export {
3
- ComposerAttachments,
4
- ComposerAttachmentByIndex,
2
+ ComposerRoot as Root,
3
+ type ComposerRootProps as RootProps,
4
+ } from "./ComposerRoot";
5
+ export {
6
+ ComposerAttachments as Attachments,
7
+ ComposerAttachmentByIndex as AttachmentByIndex,
5
8
  } from "./ComposerAttachments";
6
- export { ComposerInput, type ComposerInputProps } from "./ComposerInput";
7
- export { ComposerSend, type ComposerSendProps } from "./ComposerSend";
8
- export { ComposerCancel, type ComposerCancelProps } from "./ComposerCancel";
9
9
  export {
10
- ComposerAddAttachment,
11
- type ComposerAddAttachmentProps,
12
- } from "./ComposerAddAttachment";
13
- export { ComposerIf } from "./ComposerIf";
10
+ ComposerInput as Input,
11
+ type ComposerInputProps as InputProps,
12
+ } from "./ComposerInput";
14
13
  export {
15
- EditComposerInput,
16
- type EditComposerInputProps,
17
- } from "./EditComposerInput";
14
+ ComposerSend as Send,
15
+ type ComposerSendProps as SendProps,
16
+ } from "./ComposerSend";
18
17
  export {
19
- EditComposerSend,
20
- type EditComposerSendProps,
21
- } from "./EditComposerSend";
18
+ ComposerCancel as Cancel,
19
+ type ComposerCancelProps as CancelProps,
20
+ } from "./ComposerCancel";
22
21
  export {
23
- EditComposerCancel,
24
- type EditComposerCancelProps,
25
- } from "./EditComposerCancel";
22
+ ComposerAddAttachment as AddAttachment,
23
+ type ComposerAddAttachmentProps as AddAttachmentProps,
24
+ } from "./ComposerAddAttachment";
25
+ export { ComposerIf as If } from "./ComposerIf";