@jini-ai/chat 0.1.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 (444) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +109 -0
  3. package/dist/core/agentic/chat-capabilities.d.ts +19 -0
  4. package/dist/core/agentic/chat-capabilities.d.ts.map +1 -0
  5. package/dist/core/agentic/chat-capabilities.js +106 -0
  6. package/dist/core/agentic/chat-capabilities.js.map +1 -0
  7. package/dist/core/agentic/index.d.ts +22 -0
  8. package/dist/core/agentic/index.d.ts.map +1 -0
  9. package/dist/core/agentic/index.js +21 -0
  10. package/dist/core/agentic/index.js.map +1 -0
  11. package/dist/core/events.d.ts +84 -0
  12. package/dist/core/events.d.ts.map +1 -0
  13. package/dist/core/events.js +14 -0
  14. package/dist/core/events.js.map +1 -0
  15. package/dist/core/index.d.ts +40 -0
  16. package/dist/core/index.d.ts.map +1 -0
  17. package/dist/core/index.js +40 -0
  18. package/dist/core/index.js.map +1 -0
  19. package/dist/core/messages.d.ts +53 -0
  20. package/dist/core/messages.d.ts.map +1 -0
  21. package/dist/core/messages.js +16 -0
  22. package/dist/core/messages.js.map +1 -0
  23. package/dist/core/partial-json.d.ts +36 -0
  24. package/dist/core/partial-json.d.ts.map +1 -0
  25. package/dist/core/partial-json.js +119 -0
  26. package/dist/core/partial-json.js.map +1 -0
  27. package/dist/core/persistence/index.d.ts +11 -0
  28. package/dist/core/persistence/index.d.ts.map +1 -0
  29. package/dist/core/persistence/index.js +11 -0
  30. package/dist/core/persistence/index.js.map +1 -0
  31. package/dist/core/persistence/ports.d.ts +124 -0
  32. package/dist/core/persistence/ports.d.ts.map +1 -0
  33. package/dist/core/persistence/ports.js +2 -0
  34. package/dist/core/persistence/ports.js.map +1 -0
  35. package/dist/core/persistence/title.d.ts +35 -0
  36. package/dist/core/persistence/title.d.ts.map +1 -0
  37. package/dist/core/persistence/title.js +137 -0
  38. package/dist/core/persistence/title.js.map +1 -0
  39. package/dist/core/question-form/format.d.ts +27 -0
  40. package/dist/core/question-form/format.d.ts.map +1 -0
  41. package/dist/core/question-form/format.js +45 -0
  42. package/dist/core/question-form/format.js.map +1 -0
  43. package/dist/core/question-form/normalize.d.ts +30 -0
  44. package/dist/core/question-form/normalize.d.ts.map +1 -0
  45. package/dist/core/question-form/normalize.js +192 -0
  46. package/dist/core/question-form/normalize.js.map +1 -0
  47. package/dist/core/question-form/scan.d.ts +50 -0
  48. package/dist/core/question-form/scan.d.ts.map +1 -0
  49. package/dist/core/question-form/scan.js +404 -0
  50. package/dist/core/question-form/scan.js.map +1 -0
  51. package/dist/core/question-form/types.d.ts +83 -0
  52. package/dist/core/question-form/types.d.ts.map +1 -0
  53. package/dist/core/question-form/types.js +11 -0
  54. package/dist/core/question-form/types.js.map +1 -0
  55. package/dist/core/question-form.d.ts +39 -0
  56. package/dist/core/question-form.d.ts.map +1 -0
  57. package/dist/core/question-form.js +4 -0
  58. package/dist/core/question-form.js.map +1 -0
  59. package/dist/core/todos.d.ts +70 -0
  60. package/dist/core/todos.d.ts.map +1 -0
  61. package/dist/core/todos.js +175 -0
  62. package/dist/core/todos.js.map +1 -0
  63. package/dist/core/tool-events.d.ts +18 -0
  64. package/dist/core/tool-events.d.ts.map +1 -0
  65. package/dist/core/tool-events.js +36 -0
  66. package/dist/core/tool-events.js.map +1 -0
  67. package/dist/core/tools.d.ts +51 -0
  68. package/dist/core/tools.d.ts.map +1 -0
  69. package/dist/core/tools.js +41 -0
  70. package/dist/core/tools.js.map +1 -0
  71. package/dist/core/transcript.d.ts +81 -0
  72. package/dist/core/transcript.d.ts.map +1 -0
  73. package/dist/core/transcript.js +133 -0
  74. package/dist/core/transcript.js.map +1 -0
  75. package/dist/core/transport.d.ts +109 -0
  76. package/dist/core/transport.d.ts.map +1 -0
  77. package/dist/core/transport.js +2 -0
  78. package/dist/core/transport.js.map +1 -0
  79. package/dist/core/util/index.d.ts +16 -0
  80. package/dist/core/util/index.d.ts.map +1 -0
  81. package/dist/core/util/index.js +16 -0
  82. package/dist/core/util/index.js.map +1 -0
  83. package/dist/core/util/manifest.d.ts +39 -0
  84. package/dist/core/util/manifest.d.ts.map +1 -0
  85. package/dist/core/util/manifest.js +173 -0
  86. package/dist/core/util/manifest.js.map +1 -0
  87. package/dist/core/util/markdown-context.d.ts +47 -0
  88. package/dist/core/util/markdown-context.d.ts.map +1 -0
  89. package/dist/core/util/markdown-context.js +125 -0
  90. package/dist/core/util/markdown-context.js.map +1 -0
  91. package/dist/core/util/markup-attributes.d.ts +20 -0
  92. package/dist/core/util/markup-attributes.d.ts.map +1 -0
  93. package/dist/core/util/markup-attributes.js +33 -0
  94. package/dist/core/util/markup-attributes.js.map +1 -0
  95. package/dist/core/util/parser.d.ts +42 -0
  96. package/dist/core/util/parser.d.ts.map +1 -0
  97. package/dist/core/util/parser.js +238 -0
  98. package/dist/core/util/parser.js.map +1 -0
  99. package/dist/core/util/pointer.d.ts +28 -0
  100. package/dist/core/util/pointer.d.ts.map +1 -0
  101. package/dist/core/util/pointer.js +75 -0
  102. package/dist/core/util/pointer.js.map +1 -0
  103. package/dist/core/util/recover.d.ts +40 -0
  104. package/dist/core/util/recover.d.ts.map +1 -0
  105. package/dist/core/util/recover.js +117 -0
  106. package/dist/core/util/recover.js.map +1 -0
  107. package/dist/core/util/strip.d.ts +112 -0
  108. package/dist/core/util/strip.d.ts.map +1 -0
  109. package/dist/core/util/strip.js +333 -0
  110. package/dist/core/util/strip.js.map +1 -0
  111. package/dist/core/util/types.d.ts +31 -0
  112. package/dist/core/util/types.d.ts.map +1 -0
  113. package/dist/core/util/types.js +2 -0
  114. package/dist/core/util/types.js.map +1 -0
  115. package/dist/core/util/validate.d.ts +50 -0
  116. package/dist/core/util/validate.d.ts.map +1 -0
  117. package/dist/core/util/validate.js +202 -0
  118. package/dist/core/util/validate.js.map +1 -0
  119. package/dist/react/agent-bridge/frontend-session-bridge.d.ts +45 -0
  120. package/dist/react/agent-bridge/frontend-session-bridge.d.ts.map +1 -0
  121. package/dist/react/agent-bridge/frontend-session-bridge.js +214 -0
  122. package/dist/react/agent-bridge/frontend-session-bridge.js.map +1 -0
  123. package/dist/react/artifact-types.d.ts +61 -0
  124. package/dist/react/artifact-types.d.ts.map +1 -0
  125. package/dist/react/artifact-types.js +33 -0
  126. package/dist/react/artifact-types.js.map +1 -0
  127. package/dist/react/chat-pane.d.ts +21 -0
  128. package/dist/react/chat-pane.d.ts.map +1 -0
  129. package/dist/react/chat-pane.js +20 -0
  130. package/dist/react/chat-pane.js.map +1 -0
  131. package/dist/react/components/A2uiSurfaceCard.d.ts +35 -0
  132. package/dist/react/components/A2uiSurfaceCard.d.ts.map +1 -0
  133. package/dist/react/components/A2uiSurfaceCard.js +272 -0
  134. package/dist/react/components/A2uiSurfaceCard.js.map +1 -0
  135. package/dist/react/components/AttachmentTray.d.ts +6 -0
  136. package/dist/react/components/AttachmentTray.d.ts.map +1 -0
  137. package/dist/react/components/AttachmentTray.js +30 -0
  138. package/dist/react/components/AttachmentTray.js.map +1 -0
  139. package/dist/react/components/ChatFab.d.ts +8 -0
  140. package/dist/react/components/ChatFab.d.ts.map +1 -0
  141. package/dist/react/components/ChatFab.js +24 -0
  142. package/dist/react/components/ChatFab.js.map +1 -0
  143. package/dist/react/components/Composer.d.ts +34 -0
  144. package/dist/react/components/Composer.d.ts.map +1 -0
  145. package/dist/react/components/Composer.js +300 -0
  146. package/dist/react/components/Composer.js.map +1 -0
  147. package/dist/react/components/ComposerDiscovery.d.ts +46 -0
  148. package/dist/react/components/ComposerDiscovery.d.ts.map +1 -0
  149. package/dist/react/components/ComposerDiscovery.js +38 -0
  150. package/dist/react/components/ComposerDiscovery.js.map +1 -0
  151. package/dist/react/components/ConversationList.d.ts +31 -0
  152. package/dist/react/components/ConversationList.d.ts.map +1 -0
  153. package/dist/react/components/ConversationList.js +221 -0
  154. package/dist/react/components/ConversationList.js.map +1 -0
  155. package/dist/react/components/ExtEventErrorBoundary.d.ts +35 -0
  156. package/dist/react/components/ExtEventErrorBoundary.d.ts.map +1 -0
  157. package/dist/react/components/ExtEventErrorBoundary.js +38 -0
  158. package/dist/react/components/ExtEventErrorBoundary.js.map +1 -0
  159. package/dist/react/components/Icon.d.ts +17 -0
  160. package/dist/react/components/Icon.d.ts.map +1 -0
  161. package/dist/react/components/Icon.js +46 -0
  162. package/dist/react/components/Icon.js.map +1 -0
  163. package/dist/react/components/JiniChatProvider.d.ts +45 -0
  164. package/dist/react/components/JiniChatProvider.d.ts.map +1 -0
  165. package/dist/react/components/JiniChatProvider.js +44 -0
  166. package/dist/react/components/JiniChatProvider.js.map +1 -0
  167. package/dist/react/components/Markdown.d.ts +5 -0
  168. package/dist/react/components/Markdown.d.ts.map +1 -0
  169. package/dist/react/components/Markdown.js +390 -0
  170. package/dist/react/components/Markdown.js.map +1 -0
  171. package/dist/react/components/McpUiSurfaceCard.d.ts +51 -0
  172. package/dist/react/components/McpUiSurfaceCard.d.ts.map +1 -0
  173. package/dist/react/components/McpUiSurfaceCard.js +159 -0
  174. package/dist/react/components/McpUiSurfaceCard.js.map +1 -0
  175. package/dist/react/components/MessageList.d.ts +15 -0
  176. package/dist/react/components/MessageList.d.ts.map +1 -0
  177. package/dist/react/components/MessageList.js +81 -0
  178. package/dist/react/components/MessageList.js.map +1 -0
  179. package/dist/react/components/MessageRow.d.ts +60 -0
  180. package/dist/react/components/MessageRow.d.ts.map +1 -0
  181. package/dist/react/components/MessageRow.js +156 -0
  182. package/dist/react/components/MessageRow.js.map +1 -0
  183. package/dist/react/components/NextStepActions.d.ts +34 -0
  184. package/dist/react/components/NextStepActions.d.ts.map +1 -0
  185. package/dist/react/components/NextStepActions.js +9 -0
  186. package/dist/react/components/NextStepActions.js.map +1 -0
  187. package/dist/react/components/QuestionForm.d.ts +26 -0
  188. package/dist/react/components/QuestionForm.d.ts.map +1 -0
  189. package/dist/react/components/QuestionForm.js +238 -0
  190. package/dist/react/components/QuestionForm.js.map +1 -0
  191. package/dist/react/components/QuestionsPanel.d.ts +13 -0
  192. package/dist/react/components/QuestionsPanel.d.ts.map +1 -0
  193. package/dist/react/components/QuestionsPanel.js +33 -0
  194. package/dist/react/components/QuestionsPanel.js.map +1 -0
  195. package/dist/react/components/TodoCard.d.ts +8 -0
  196. package/dist/react/components/TodoCard.d.ts.map +1 -0
  197. package/dist/react/components/TodoCard.js +29 -0
  198. package/dist/react/components/TodoCard.js.map +1 -0
  199. package/dist/react/components/ToolCard.d.ts +22 -0
  200. package/dist/react/components/ToolCard.d.ts.map +1 -0
  201. package/dist/react/components/ToolCard.js +298 -0
  202. package/dist/react/components/ToolCard.js.map +1 -0
  203. package/dist/react/components/composer-discovery.d.ts +107 -0
  204. package/dist/react/components/composer-discovery.d.ts.map +1 -0
  205. package/dist/react/components/composer-discovery.js +176 -0
  206. package/dist/react/components/composer-discovery.js.map +1 -0
  207. package/dist/react/ext-event-renderer-registry.d.ts +51 -0
  208. package/dist/react/ext-event-renderer-registry.d.ts.map +1 -0
  209. package/dist/react/ext-event-renderer-registry.js +20 -0
  210. package/dist/react/ext-event-renderer-registry.js.map +1 -0
  211. package/dist/react/features/chat-pane/agent-tools.d.ts +14 -0
  212. package/dist/react/features/chat-pane/agent-tools.d.ts.map +1 -0
  213. package/dist/react/features/chat-pane/agent-tools.js +22 -0
  214. package/dist/react/features/chat-pane/agent-tools.js.map +1 -0
  215. package/dist/react/features/chat-pane/components/AgentRuntimePicker.d.ts +12 -0
  216. package/dist/react/features/chat-pane/components/AgentRuntimePicker.d.ts.map +1 -0
  217. package/dist/react/features/chat-pane/components/AgentRuntimePicker.js +106 -0
  218. package/dist/react/features/chat-pane/components/AgentRuntimePicker.js.map +1 -0
  219. package/dist/react/features/chat-pane/components/ChatPane.d.ts +10 -0
  220. package/dist/react/features/chat-pane/components/ChatPane.d.ts.map +1 -0
  221. package/dist/react/features/chat-pane/components/ChatPane.js +169 -0
  222. package/dist/react/features/chat-pane/components/ChatPane.js.map +1 -0
  223. package/dist/react/features/chat-pane/create-daemon-attachment-uploader.d.ts +21 -0
  224. package/dist/react/features/chat-pane/create-daemon-attachment-uploader.d.ts.map +1 -0
  225. package/dist/react/features/chat-pane/create-daemon-attachment-uploader.js +213 -0
  226. package/dist/react/features/chat-pane/create-daemon-attachment-uploader.js.map +1 -0
  227. package/dist/react/features/chat-pane/create-mcp-ui-tool-caller.d.ts +70 -0
  228. package/dist/react/features/chat-pane/create-mcp-ui-tool-caller.d.ts.map +1 -0
  229. package/dist/react/features/chat-pane/create-mcp-ui-tool-caller.js +76 -0
  230. package/dist/react/features/chat-pane/create-mcp-ui-tool-caller.js.map +1 -0
  231. package/dist/react/features/chat-pane/hooks/useAgentRuntimePicker.hooks.d.ts +133 -0
  232. package/dist/react/features/chat-pane/hooks/useAgentRuntimePicker.hooks.d.ts.map +1 -0
  233. package/dist/react/features/chat-pane/hooks/useAgentRuntimePicker.hooks.js +258 -0
  234. package/dist/react/features/chat-pane/hooks/useAgentRuntimePicker.hooks.js.map +1 -0
  235. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.d.ts +66 -0
  236. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.d.ts.map +1 -0
  237. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js +224 -0
  238. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js.map +1 -0
  239. package/dist/react/features/chat-pane/hooks/useChatPaneAgentControl.hooks.d.ts +38 -0
  240. package/dist/react/features/chat-pane/hooks/useChatPaneAgentControl.hooks.d.ts.map +1 -0
  241. package/dist/react/features/chat-pane/hooks/useChatPaneAgentControl.hooks.js +252 -0
  242. package/dist/react/features/chat-pane/hooks/useChatPaneAgentControl.hooks.js.map +1 -0
  243. package/dist/react/features/chat-pane/hooks/useChatPaneControlsHeight.hooks.d.ts +16 -0
  244. package/dist/react/features/chat-pane/hooks/useChatPaneControlsHeight.hooks.d.ts.map +1 -0
  245. package/dist/react/features/chat-pane/hooks/useChatPaneControlsHeight.hooks.js +59 -0
  246. package/dist/react/features/chat-pane/hooks/useChatPaneControlsHeight.hooks.js.map +1 -0
  247. package/dist/react/features/chat-pane/hooks/useChatPaneFileDrop.hooks.d.ts +26 -0
  248. package/dist/react/features/chat-pane/hooks/useChatPaneFileDrop.hooks.d.ts.map +1 -0
  249. package/dist/react/features/chat-pane/hooks/useChatPaneFileDrop.hooks.js +74 -0
  250. package/dist/react/features/chat-pane/hooks/useChatPaneFileDrop.hooks.js.map +1 -0
  251. package/dist/react/features/chat-pane/hooks/useChatPaneRuntimeInventory.hooks.d.ts +25 -0
  252. package/dist/react/features/chat-pane/hooks/useChatPaneRuntimeInventory.hooks.d.ts.map +1 -0
  253. package/dist/react/features/chat-pane/hooks/useChatPaneRuntimeInventory.hooks.js +88 -0
  254. package/dist/react/features/chat-pane/hooks/useChatPaneRuntimeInventory.hooks.js.map +1 -0
  255. package/dist/react/features/chat-pane/hooks/useChatPaneWorkingDirectory.hooks.d.ts +38 -0
  256. package/dist/react/features/chat-pane/hooks/useChatPaneWorkingDirectory.hooks.d.ts.map +1 -0
  257. package/dist/react/features/chat-pane/hooks/useChatPaneWorkingDirectory.hooks.js +184 -0
  258. package/dist/react/features/chat-pane/hooks/useChatPaneWorkingDirectory.hooks.js.map +1 -0
  259. package/dist/react/features/chat-pane/index.d.ts +12 -0
  260. package/dist/react/features/chat-pane/index.d.ts.map +1 -0
  261. package/dist/react/features/chat-pane/index.js +11 -0
  262. package/dist/react/features/chat-pane/index.js.map +1 -0
  263. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts +12 -0
  264. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts.map +1 -0
  265. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js +102 -0
  266. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js.map +1 -0
  267. package/dist/react/features/chat-pane/react/components/ChatPane.d.ts +10 -0
  268. package/dist/react/features/chat-pane/react/components/ChatPane.d.ts.map +1 -0
  269. package/dist/react/features/chat-pane/react/components/ChatPane.js +137 -0
  270. package/dist/react/features/chat-pane/react/components/ChatPane.js.map +1 -0
  271. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts +133 -0
  272. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts.map +1 -0
  273. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js +258 -0
  274. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js.map +1 -0
  275. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts +66 -0
  276. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts.map +1 -0
  277. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js +223 -0
  278. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js.map +1 -0
  279. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts +38 -0
  280. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts.map +1 -0
  281. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js +252 -0
  282. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js.map +1 -0
  283. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts +26 -0
  284. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts.map +1 -0
  285. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js +60 -0
  286. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js.map +1 -0
  287. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts +25 -0
  288. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts.map +1 -0
  289. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js +83 -0
  290. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js.map +1 -0
  291. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts +38 -0
  292. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts.map +1 -0
  293. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js +184 -0
  294. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js.map +1 -0
  295. package/dist/react/features/chat-pane/react/styles.d.ts +2 -0
  296. package/dist/react/features/chat-pane/react/styles.d.ts.map +1 -0
  297. package/dist/react/features/chat-pane/react/styles.js +863 -0
  298. package/dist/react/features/chat-pane/react/styles.js.map +1 -0
  299. package/dist/react/features/chat-pane/rules.d.ts +31 -0
  300. package/dist/react/features/chat-pane/rules.d.ts.map +1 -0
  301. package/dist/react/features/chat-pane/rules.js +81 -0
  302. package/dist/react/features/chat-pane/rules.js.map +1 -0
  303. package/dist/react/features/chat-pane/styles.d.ts +2 -0
  304. package/dist/react/features/chat-pane/styles.d.ts.map +1 -0
  305. package/dist/react/features/chat-pane/styles.js +1327 -0
  306. package/dist/react/features/chat-pane/styles.js.map +1 -0
  307. package/dist/react/features/chat-pane/types.d.ts +248 -0
  308. package/dist/react/features/chat-pane/types.d.ts.map +1 -0
  309. package/dist/react/features/chat-pane/types.js +2 -0
  310. package/dist/react/features/chat-pane/types.js.map +1 -0
  311. package/dist/react/features/model-picker/components/CredentialStatusBadge.d.ts +7 -0
  312. package/dist/react/features/model-picker/components/CredentialStatusBadge.d.ts.map +1 -0
  313. package/dist/react/features/model-picker/components/CredentialStatusBadge.js +20 -0
  314. package/dist/react/features/model-picker/components/CredentialStatusBadge.js.map +1 -0
  315. package/dist/react/features/model-picker/components/ModelPicker.d.ts +9 -0
  316. package/dist/react/features/model-picker/components/ModelPicker.d.ts.map +1 -0
  317. package/dist/react/features/model-picker/components/ModelPicker.js +34 -0
  318. package/dist/react/features/model-picker/components/ModelPicker.js.map +1 -0
  319. package/dist/react/features/model-picker/constants.d.ts +6 -0
  320. package/dist/react/features/model-picker/constants.d.ts.map +1 -0
  321. package/dist/react/features/model-picker/constants.js +9 -0
  322. package/dist/react/features/model-picker/constants.js.map +1 -0
  323. package/dist/react/features/model-picker/dependencies.d.ts +11 -0
  324. package/dist/react/features/model-picker/dependencies.d.ts.map +1 -0
  325. package/dist/react/features/model-picker/dependencies.js +10 -0
  326. package/dist/react/features/model-picker/dependencies.js.map +1 -0
  327. package/dist/react/features/model-picker/hooks/useModelPicker.hooks.d.ts +27 -0
  328. package/dist/react/features/model-picker/hooks/useModelPicker.hooks.d.ts.map +1 -0
  329. package/dist/react/features/model-picker/hooks/useModelPicker.hooks.js +62 -0
  330. package/dist/react/features/model-picker/hooks/useModelPicker.hooks.js.map +1 -0
  331. package/dist/react/features/model-picker/index.d.ts +32 -0
  332. package/dist/react/features/model-picker/index.d.ts.map +1 -0
  333. package/dist/react/features/model-picker/index.js +29 -0
  334. package/dist/react/features/model-picker/index.js.map +1 -0
  335. package/dist/react/features/model-picker/ports.d.ts +11 -0
  336. package/dist/react/features/model-picker/ports.d.ts.map +1 -0
  337. package/dist/react/features/model-picker/ports.js +2 -0
  338. package/dist/react/features/model-picker/ports.js.map +1 -0
  339. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts +7 -0
  340. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts.map +1 -0
  341. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js +20 -0
  342. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js.map +1 -0
  343. package/dist/react/features/model-picker/react/components/ModelPicker.d.ts +9 -0
  344. package/dist/react/features/model-picker/react/components/ModelPicker.d.ts.map +1 -0
  345. package/dist/react/features/model-picker/react/components/ModelPicker.js +34 -0
  346. package/dist/react/features/model-picker/react/components/ModelPicker.js.map +1 -0
  347. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts +27 -0
  348. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts.map +1 -0
  349. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js +62 -0
  350. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js.map +1 -0
  351. package/dist/react/features/model-picker/rules.d.ts +26 -0
  352. package/dist/react/features/model-picker/rules.d.ts.map +1 -0
  353. package/dist/react/features/model-picker/rules.js +84 -0
  354. package/dist/react/features/model-picker/rules.js.map +1 -0
  355. package/dist/react/features/model-picker/types.d.ts +38 -0
  356. package/dist/react/features/model-picker/types.d.ts.map +1 -0
  357. package/dist/react/features/model-picker/types.js +2 -0
  358. package/dist/react/features/model-picker/types.js.map +1 -0
  359. package/dist/react/hooks/composer-draft-cache.d.ts +65 -0
  360. package/dist/react/hooks/composer-draft-cache.d.ts.map +1 -0
  361. package/dist/react/hooks/composer-draft-cache.js +89 -0
  362. package/dist/react/hooks/composer-draft-cache.js.map +1 -0
  363. package/dist/react/hooks/context.d.ts +18 -0
  364. package/dist/react/hooks/context.d.ts.map +1 -0
  365. package/dist/react/hooks/context.js +60 -0
  366. package/dist/react/hooks/context.js.map +1 -0
  367. package/dist/react/hooks/testing/fake-transport.d.ts +34 -0
  368. package/dist/react/hooks/testing/fake-transport.d.ts.map +1 -0
  369. package/dist/react/hooks/testing/fake-transport.js +46 -0
  370. package/dist/react/hooks/testing/fake-transport.js.map +1 -0
  371. package/dist/react/hooks/useArtifactStream.d.ts +18 -0
  372. package/dist/react/hooks/useArtifactStream.d.ts.map +1 -0
  373. package/dist/react/hooks/useArtifactStream.js +55 -0
  374. package/dist/react/hooks/useArtifactStream.js.map +1 -0
  375. package/dist/react/hooks/useChatFabDrag.d.ts +25 -0
  376. package/dist/react/hooks/useChatFabDrag.d.ts.map +1 -0
  377. package/dist/react/hooks/useChatFabDrag.js +88 -0
  378. package/dist/react/hooks/useChatFabDrag.js.map +1 -0
  379. package/dist/react/hooks/useComposer.d.ts +48 -0
  380. package/dist/react/hooks/useComposer.d.ts.map +1 -0
  381. package/dist/react/hooks/useComposer.js +121 -0
  382. package/dist/react/hooks/useComposer.js.map +1 -0
  383. package/dist/react/hooks/useConversation.d.ts +34 -0
  384. package/dist/react/hooks/useConversation.d.ts.map +1 -0
  385. package/dist/react/hooks/useConversation.js +163 -0
  386. package/dist/react/hooks/useConversation.js.map +1 -0
  387. package/dist/react/hooks/useCopyToClipboard.d.ts +14 -0
  388. package/dist/react/hooks/useCopyToClipboard.d.ts.map +1 -0
  389. package/dist/react/hooks/useCopyToClipboard.js +98 -0
  390. package/dist/react/hooks/useCopyToClipboard.js.map +1 -0
  391. package/dist/react/hooks/useExtEventGroups.d.ts +7 -0
  392. package/dist/react/hooks/useExtEventGroups.d.ts.map +1 -0
  393. package/dist/react/hooks/useExtEventGroups.js +32 -0
  394. package/dist/react/hooks/useExtEventGroups.js.map +1 -0
  395. package/dist/react/hooks/useLatestOperation.d.ts +31 -0
  396. package/dist/react/hooks/useLatestOperation.d.ts.map +1 -0
  397. package/dist/react/hooks/useLatestOperation.js +74 -0
  398. package/dist/react/hooks/useLatestOperation.js.map +1 -0
  399. package/dist/react/hooks/usePinnedTodos.d.ts +15 -0
  400. package/dist/react/hooks/usePinnedTodos.d.ts.map +1 -0
  401. package/dist/react/hooks/usePinnedTodos.js +43 -0
  402. package/dist/react/hooks/usePinnedTodos.js.map +1 -0
  403. package/dist/react/hooks/useQuestionForms.d.ts +28 -0
  404. package/dist/react/hooks/useQuestionForms.d.ts.map +1 -0
  405. package/dist/react/hooks/useQuestionForms.js +113 -0
  406. package/dist/react/hooks/useQuestionForms.js.map +1 -0
  407. package/dist/react/hooks/useRunStream.d.ts +27 -0
  408. package/dist/react/hooks/useRunStream.d.ts.map +1 -0
  409. package/dist/react/hooks/useRunStream.js +180 -0
  410. package/dist/react/hooks/useRunStream.js.map +1 -0
  411. package/dist/react/hooks/useToolTimeline.d.ts +33 -0
  412. package/dist/react/hooks/useToolTimeline.d.ts.map +1 -0
  413. package/dist/react/hooks/useToolTimeline.js +47 -0
  414. package/dist/react/hooks/useToolTimeline.js.map +1 -0
  415. package/dist/react/index.d.ts +158 -0
  416. package/dist/react/index.d.ts.map +1 -0
  417. package/dist/react/index.js +118 -0
  418. package/dist/react/index.js.map +1 -0
  419. package/dist/react/message-blocks.d.ts +86 -0
  420. package/dist/react/message-blocks.d.ts.map +1 -0
  421. package/dist/react/message-blocks.js +78 -0
  422. package/dist/react/message-blocks.js.map +1 -0
  423. package/dist/react/poc-mcp-ui-official/PocMcpUiCard.d.ts +9 -0
  424. package/dist/react/poc-mcp-ui-official/PocMcpUiCard.d.ts.map +1 -0
  425. package/dist/react/poc-mcp-ui-official/PocMcpUiCard.js +29 -0
  426. package/dist/react/poc-mcp-ui-official/PocMcpUiCard.js.map +1 -0
  427. package/dist/react/poc-mcp-ui-official/create-poc-resource.d.ts +30 -0
  428. package/dist/react/poc-mcp-ui-official/create-poc-resource.d.ts.map +1 -0
  429. package/dist/react/poc-mcp-ui-official/create-poc-resource.js +44 -0
  430. package/dist/react/poc-mcp-ui-official/create-poc-resource.js.map +1 -0
  431. package/dist/react/slots.d.ts +215 -0
  432. package/dist/react/slots.d.ts.map +1 -0
  433. package/dist/react/slots.js +2 -0
  434. package/dist/react/slots.js.map +1 -0
  435. package/dist/react/styles/reference.css +298 -0
  436. package/dist/react/tool-renderer-registry.d.ts +41 -0
  437. package/dist/react/tool-renderer-registry.d.ts.map +1 -0
  438. package/dist/react/tool-renderer-registry.js +22 -0
  439. package/dist/react/tool-renderer-registry.js.map +1 -0
  440. package/dist/react/util/defined-props.d.ts +31 -0
  441. package/dist/react/util/defined-props.d.ts.map +1 -0
  442. package/dist/react/util/defined-props.js +28 -0
  443. package/dist/react/util/defined-props.js.map +1 -0
  444. package/package.json +99 -0
@@ -0,0 +1,184 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { useLatestOperation } from '../../../../hooks/useLatestOperation.js';
3
+ /**
4
+ * Owns controlled/uncontrolled directory state and orchestrates the native
5
+ * filesystem effects used by the packaged working-directory picker.
6
+ *
7
+ * Every async path runs through one {@link useLatestOperation} instance, so a validation still in
8
+ * flight cannot clobber the result of the pick that replaced it, and a resolved promise arriving
9
+ * after unmount writes nothing. `token.ensureCurrent()` is that check — it stands where a
10
+ * `if (!mounted || stale) return;` guard used to sit after each await.
11
+ *
12
+ * @param options - Public value, change callback, and optional host I/O access.
13
+ * @returns Current picker state plus actions consumed by {@link ChatPane}.
14
+ * @throws Never. Native capability failures are exposed as
15
+ * `workingDirectoryError` for package-owned validation UI.
16
+ *
17
+ * @complexity Time: O(r) when refreshing `r` recent paths; O(1) otherwise.
18
+ * @complexity Space: O(r) for the package-owned recent-directory snapshot.
19
+ * @overallScore 100/100
20
+ */
21
+ export function useChatPaneWorkingDirectory(options) {
22
+ const controlled = options.workingDirectory !== undefined;
23
+ const [uncontrolledWorkingDirectory, setUncontrolledWorkingDirectory] = useState(options.initialWorkingDirectory ?? null);
24
+ const [recentDirectories, setRecentDirectories] = useState([]);
25
+ const [workingDirectoryInvalid, setWorkingDirectoryInvalid] = useState(false);
26
+ const [workingDirectoryPending, setWorkingDirectoryPending] = useState(false);
27
+ const [workingDirectoryError, setWorkingDirectoryError] = useState(null);
28
+ const operation = useLatestOperation();
29
+ const observedDirectoryRef = useRef(undefined);
30
+ const workingDirectory = controlled
31
+ ? options.workingDirectory ?? null
32
+ : uncontrolledWorkingDirectory;
33
+ const reportWorkingDirectory = useCallback((directory) => {
34
+ observedDirectoryRef.current = directory;
35
+ if (!controlled)
36
+ setUncontrolledWorkingDirectory(directory);
37
+ options.onChangeWorkingDirectory?.(directory);
38
+ }, [controlled, options.onChangeWorkingDirectory]);
39
+ /** Shared by every action: a failed native call invalidates and stops pending. */
40
+ const reportFailure = useCallback((error) => {
41
+ setWorkingDirectoryError(error);
42
+ setWorkingDirectoryPending(false);
43
+ }, []);
44
+ useEffect(() => {
45
+ if (observedDirectoryRef.current === workingDirectory)
46
+ return;
47
+ observedDirectoryRef.current = workingDirectory;
48
+ operation.supersede();
49
+ const access = options.workingDirectoryAccess;
50
+ setWorkingDirectoryError(null);
51
+ if (workingDirectory === null || !access) {
52
+ setWorkingDirectoryInvalid(false);
53
+ setWorkingDirectoryPending(false);
54
+ return;
55
+ }
56
+ let validationSettled = false;
57
+ setWorkingDirectoryPending(true);
58
+ void operation.run(async (token) => {
59
+ const normalized = access.normalizeWorkingDirectory
60
+ ? await access.normalizeWorkingDirectory(workingDirectory)
61
+ : workingDirectory;
62
+ token.ensureCurrent();
63
+ if (normalized === null) {
64
+ validationSettled = true;
65
+ setWorkingDirectoryInvalid(true);
66
+ setWorkingDirectoryPending(false);
67
+ return;
68
+ }
69
+ const exists = await access.directoryExists(normalized);
70
+ token.ensureCurrent();
71
+ if (normalized !== workingDirectory)
72
+ reportWorkingDirectory(normalized);
73
+ validationSettled = true;
74
+ setWorkingDirectoryInvalid(!exists);
75
+ setWorkingDirectoryPending(false);
76
+ }, (error) => {
77
+ validationSettled = true;
78
+ setWorkingDirectoryInvalid(true);
79
+ reportFailure(error);
80
+ });
81
+ return () => {
82
+ operation.supersede();
83
+ // React Strict Mode replays this effect while preserving refs. Release
84
+ // only the marker for the directory owned by this setup so its replay
85
+ // starts fresh. Settled validations keep their marker so an unstable
86
+ // host adapter object cannot trigger a validation/render loop.
87
+ if (!validationSettled
88
+ && observedDirectoryRef.current === workingDirectory) {
89
+ observedDirectoryRef.current = undefined;
90
+ }
91
+ };
92
+ }, [
93
+ operation,
94
+ options.workingDirectoryAccess,
95
+ reportFailure,
96
+ reportWorkingDirectory,
97
+ workingDirectory,
98
+ ]);
99
+ const openWorkingDirectoryPicker = useCallback(async () => {
100
+ const access = options.workingDirectoryAccess;
101
+ if (!access)
102
+ return;
103
+ setWorkingDirectoryError(null);
104
+ setWorkingDirectoryPending(true);
105
+ await operation.run(async (token) => {
106
+ const [recent, exists] = await Promise.all([
107
+ access.recentDirectories(),
108
+ workingDirectory === null
109
+ ? Promise.resolve(true)
110
+ : access.directoryExists(workingDirectory),
111
+ ]);
112
+ token.ensureCurrent();
113
+ setRecentDirectories([...recent]);
114
+ setWorkingDirectoryInvalid(!exists);
115
+ setWorkingDirectoryPending(false);
116
+ }, reportFailure);
117
+ }, [operation, options.workingDirectoryAccess, reportFailure, workingDirectory]);
118
+ const pickWorkingDirectory = useCallback(async () => {
119
+ const access = options.workingDirectoryAccess;
120
+ if (!access)
121
+ return;
122
+ setWorkingDirectoryError(null);
123
+ setWorkingDirectoryPending(true);
124
+ await operation.run(async (token) => {
125
+ const selected = await access.pickWorkingDirectory(workingDirectory ?? undefined);
126
+ token.ensureCurrent();
127
+ if (selected === null) {
128
+ setWorkingDirectoryPending(false);
129
+ return;
130
+ }
131
+ const [exists, recent] = await Promise.all([
132
+ access.directoryExists(selected),
133
+ access.recentDirectories(),
134
+ ]);
135
+ token.ensureCurrent();
136
+ reportWorkingDirectory(selected);
137
+ setWorkingDirectoryInvalid(!exists);
138
+ setRecentDirectories([...recent]);
139
+ setWorkingDirectoryPending(false);
140
+ }, reportFailure);
141
+ }, [
142
+ operation,
143
+ options.workingDirectoryAccess,
144
+ reportFailure,
145
+ reportWorkingDirectory,
146
+ workingDirectory,
147
+ ]);
148
+ const selectRecentDirectory = useCallback(async (directory) => {
149
+ operation.supersede();
150
+ setWorkingDirectoryError(null);
151
+ const access = options.workingDirectoryAccess;
152
+ if (!access) {
153
+ reportWorkingDirectory(directory);
154
+ return;
155
+ }
156
+ setWorkingDirectoryPending(true);
157
+ await operation.run(async (token) => {
158
+ const exists = await access.directoryExists(directory);
159
+ token.ensureCurrent();
160
+ reportWorkingDirectory(directory);
161
+ setWorkingDirectoryInvalid(!exists);
162
+ setWorkingDirectoryPending(false);
163
+ }, reportFailure);
164
+ }, [operation, options.workingDirectoryAccess, reportFailure, reportWorkingDirectory]);
165
+ const clearWorkingDirectory = useCallback(() => {
166
+ operation.supersede();
167
+ reportWorkingDirectory(null);
168
+ setWorkingDirectoryInvalid(false);
169
+ setWorkingDirectoryPending(false);
170
+ setWorkingDirectoryError(null);
171
+ }, [operation, reportWorkingDirectory]);
172
+ return {
173
+ workingDirectory,
174
+ recentDirectories,
175
+ workingDirectoryInvalid,
176
+ workingDirectoryPending,
177
+ workingDirectoryError,
178
+ openWorkingDirectoryPicker,
179
+ pickWorkingDirectory,
180
+ selectRecentDirectory,
181
+ clearWorkingDirectory,
182
+ };
183
+ }
184
+ //# sourceMappingURL=useChatPaneWorkingDirectory.hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatPaneWorkingDirectory.hooks.js","sourceRoot":"","sources":["../../../../../../src/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const CHAT_PANE_STYLES = "\n.jini-chat-pane {\n --jini-chat-bg: #faf9f7;\n --jini-chat-panel: #fdfcfa;\n --jini-chat-text: #1a1916;\n --jini-chat-text-strong: #0d0c0a;\n --jini-chat-muted: #74716b;\n --jini-chat-faint: #b3b0a8;\n --jini-chat-border: #e1e5eb;\n --jini-chat-border-strong: #c9d0da;\n --jini-chat-border-soft: #edf0f4;\n --jini-chat-subtle: #f4f5f7;\n --jini-chat-accent: #c96442;\n --jini-chat-accent-soft: #fbeee5;\n --bg-panel: var(--jini-chat-panel);\n --bg-subtle: var(--jini-chat-subtle);\n --border: var(--jini-chat-border);\n --border-strong: var(--jini-chat-border-strong);\n --text: var(--jini-chat-text);\n --text-strong: var(--jini-chat-text-strong);\n --text-muted: var(--jini-chat-muted);\n --danger: #e5484d;\n --radius: 8px;\n --radius-lg: 12px;\n position: relative;\n display: grid;\n grid-template-rows: auto minmax(0, 1fr) auto;\n min-width: 0;\n min-height: 0;\n height: 100%;\n overflow: hidden;\n color: var(--jini-chat-text);\n background: var(--jini-chat-bg);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Microsoft YaHei UI\", \"Noto Sans\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 13.5px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.jini-chat-pane button,\n.jini-runtime-popover button,\n.jini-runtime-popover select {\n font: inherit;\n}\n.jini-chat-pane__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 74px;\n padding: 18px 22px 14px;\n border-bottom: 1px solid var(--jini-chat-border-soft);\n}\n.jini-chat-pane__heading { min-width: 0; }\n.jini-chat-pane__eyebrow {\n display: block;\n margin-bottom: 4px;\n color: var(--jini-chat-muted);\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n font-size: 10px;\n letter-spacing: .1em;\n text-transform: uppercase;\n}\n.jini-chat-pane__title {\n overflow: hidden;\n margin: 0;\n font-size: 21px;\n font-weight: 650;\n letter-spacing: -.025em;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.jini-chat-pane__new-thread {\n padding: 8px 12px;\n color: var(--jini-chat-muted);\n background: var(--jini-chat-panel);\n border: 1px solid var(--jini-chat-border);\n border-radius: 8px;\n cursor: pointer;\n}\n.jini-chat-pane__body {\n position: relative;\n min-height: 0;\n overflow: hidden;\n}\n.jini-chat-pane .jini-message-list {\n height: 100%;\n overflow-y: auto;\n /*\n * .jini-chat-pane__controls is an absolutely-positioned overlay (not a flex/grid sibling that\n * pushes this list up), so its real height has to be reserved here instead. Measured against a\n * live render: the composer + footer + working-directory row alone is already 179.75px, above\n * the 170px this used to reserve -- the last message's tail rendered clipped under the overlay as\n * a direct result. 240px adds real margin above that measurement rather than matching it exactly,\n * because the composer also grows conditionally (a suggestions row, an attachment tray) that\n * this measurement did not have present.\n */\n padding: 20px 22px 240px;\n scrollbar-width: thin;\n}\n.jini-chat-pane .jini-message {\n margin-bottom: 20px;\n color: var(--jini-chat-text);\n font-size: 14px;\n line-height: 1.62;\n}\n/*\n * Bubble on the content, not the row: MessageRow.tsx renders attachments as siblings of\n * .jini-message-content inside .jini-message-user, each with their own chip styling -- bubbling\n * the whole row would nest one background box inside another. This replaces a dead rule this file\n * shipped with (.jini-message-row[data-role=\"user\"] / .jini-message-row.user): MessageRow.tsx\n * has never rendered a jini-message-row class or a data-role attribute, and a user message's\n * root class is jini-message-user, not bare \"user\" -- the selector never matched anything real.\n */\n.jini-chat-pane .jini-message-user .jini-message-content {\n margin-left: auto;\n padding: 10px 13px;\n width: fit-content;\n max-width: 88%;\n background: var(--jini-chat-subtle);\n border-radius: 12px 12px 3px 12px;\n}\n.jini-chat-pane .jini-message-user .jini-message-attachments {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n justify-content: flex-end;\n margin-bottom: 4px;\n}\n.jini-chat-pane .jini-message-user .jini-message-attachment-chip {\n font-size: 11px;\n color: var(--jini-chat-muted);\n background: var(--jini-chat-subtle);\n border: 1px solid var(--jini-chat-border);\n border-radius: 999px;\n padding: 3px 10px;\n}\n.jini-chat-pane .jini-message-agent {\n font-size: 11px;\n font-weight: 700;\n letter-spacing: .02em;\n text-transform: uppercase;\n color: var(--jini-chat-faint);\n margin-bottom: 4px;\n}\n.jini-chat-pane .jini-message-error { color: var(--danger); font-size: 13px; }\n.jini-chat-pane .jini-message-pending { color: var(--jini-chat-muted); font-size: 13px; font-style: italic; }\n.jini-chat-pane__controls {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 4;\n padding: 0 16px 14px;\n background: linear-gradient(to bottom, transparent, var(--jini-chat-bg) 22px);\n}\n.jini-chat-pane__suggestions {\n display: flex;\n gap: 8px;\n margin: 0 2px 8px;\n overflow-x: auto;\n}\n.jini-chat-pane__suggestion {\n flex: 0 0 auto;\n max-width: 290px;\n overflow: hidden;\n padding: 7px 11px;\n color: var(--jini-chat-muted);\n background: color-mix(in srgb, var(--jini-chat-panel) 92%, transparent);\n border: 1px solid var(--jini-chat-border);\n border-radius: 999px;\n font-size: 11px;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n}\n.jini-chat-pane__error {\n margin: 0 2px 8px;\n padding: 8px 10px;\n color: #8c2f20;\n background: #fff1ed;\n border: 1px solid #f2c8bb;\n border-radius: 8px;\n font-size: 12px;\n}\n.jini-chat-pane__status {\n margin: 0 2px 8px;\n padding: 8px 10px;\n color: var(--jini-chat-muted);\n background: var(--jini-chat-subtle);\n border: 1px solid var(--jini-chat-border);\n border-radius: 8px;\n font-size: 12px;\n}\n.jini-chat-pane__drop-target {\n position: relative;\n margin: -8px -8px -8px;\n padding: 6px;\n border: 2px dashed transparent;\n border-radius: 16px;\n transition:\n background-color .14s ease,\n border-color .14s ease,\n box-shadow .14s ease;\n}\n.jini-chat-pane__drop-target.is-dragging-files {\n background: color-mix(in srgb, var(--jini-chat-accent-soft) 72%, transparent);\n border-color: var(--jini-chat-accent);\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--jini-chat-accent) 15%, transparent);\n}\n.jini-chat-pane__drop-target.is-dragging-files .jini-composer {\n background: color-mix(in srgb, var(--jini-chat-accent-soft) 58%, var(--jini-chat-panel));\n border-color: color-mix(in srgb, var(--jini-chat-accent) 68%, var(--jini-chat-border));\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--jini-chat-accent) 10%, transparent);\n}\n.jini-chat-pane__drop-announcement {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n clip-path: inset(50%);\n}\n.jini-chat-pane .jini-composer {\n position: relative;\n overflow: visible;\n padding: 0;\n background: var(--jini-chat-subtle);\n border: 1px solid var(--jini-chat-border);\n border-radius: 12px;\n box-shadow: none;\n transition: border-color .16s ease, box-shadow .16s ease;\n}\n.jini-chat-pane .jini-composer:focus-within {\n background: var(--jini-chat-panel);\n border-color: color-mix(in srgb, var(--jini-chat-accent) 22%, var(--jini-chat-border-strong));\n box-shadow: 0 1px 2px rgba(26, 25, 22, .06), 0 0 0 1px rgba(201, 100, 66, .06);\n}\n.jini-chat-pane .jini-composer-leading {\n padding: 8px 12px 0;\n}\n.jini-chat-pane .jini-attachment-tray {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n max-height: 88px;\n overflow-y: auto;\n padding: 8px 10px 0;\n scrollbar-width: thin;\n}\n.jini-chat-pane .jini-attachment-tray:empty { display: none; }\n.jini-chat-pane .jini-attachment-chip {\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n min-width: 0;\n max-width: min(100%, 290px);\n height: 36px;\n padding: 3px 4px 3px 5px;\n color: var(--jini-chat-text);\n background: color-mix(in srgb, var(--jini-chat-panel) 88%, var(--jini-chat-subtle));\n border: 1px solid var(--jini-chat-border);\n border-radius: 9px;\n box-shadow: 0 1px 1px rgba(13, 12, 10, .025);\n}\n.jini-chat-pane .jini-attachment-chip-body {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 7px;\n}\n.jini-chat-pane .jini-attachment-chip-icon {\n display: grid;\n flex: 0 0 auto;\n place-items: center;\n width: 26px;\n height: 26px;\n color: var(--jini-chat-muted);\n background: var(--jini-chat-subtle);\n border-radius: 7px;\n}\n.jini-chat-pane .jini-attachment-chip-icon.is-image {\n color: var(--jini-chat-accent);\n background: var(--jini-chat-accent-soft);\n}\n.jini-chat-pane .jini-attachment-chip-copy {\n display: flex;\n min-width: 0;\n flex-direction: column;\n line-height: 1.15;\n}\n.jini-chat-pane .jini-attachment-chip-name {\n overflow: hidden;\n font-size: 11.5px;\n font-weight: 550;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.jini-chat-pane .jini-attachment-chip-size {\n color: var(--jini-chat-muted);\n font-size: 9.5px;\n}\n.jini-chat-pane .jini-attachment-remove {\n display: grid;\n flex: 0 0 auto;\n place-items: center;\n width: 25px;\n height: 25px;\n margin-left: 4px;\n padding: 0;\n color: var(--jini-chat-muted);\n background: transparent;\n border: 0;\n border-radius: 7px;\n cursor: pointer;\n}\n.jini-chat-pane .jini-attachment-remove:hover,\n.jini-chat-pane .jini-attachment-remove:focus-visible {\n color: var(--jini-chat-text-strong);\n background: var(--jini-chat-subtle);\n outline: none;\n}\n.jini-chat-pane .jini-composer-input {\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-height: 92px;\n resize: none;\n padding: 12px 14px 8px;\n color: var(--jini-chat-text);\n background: transparent;\n border: 0;\n outline: 0;\n font-size: 13.5px;\n line-height: 1.6;\n}\n.jini-chat-pane .jini-composer-input::placeholder { color: var(--jini-chat-faint); }\n.jini-chat-pane .jini-composer-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 42px;\n gap: 6px;\n padding: 6px 8px 8px;\n border-top: 1px solid var(--jini-chat-border-soft);\n}\n.jini-chat-pane .jini-composer-attachment-picker { display: inline-flex; }\n.jini-chat-pane .jini-composer-file-input {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n clip-path: inset(50%);\n}\n.jini-chat-pane .jini-composer-attach {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n color: var(--jini-chat-muted);\n background: transparent;\n border: 1px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n}\n.jini-chat-pane .jini-composer-attach:hover:not(:disabled) {\n color: var(--jini-chat-text);\n background: var(--jini-chat-panel);\n border-color: var(--jini-chat-border);\n}\n.jini-chat-pane .jini-composer-attach:disabled { opacity: .45; cursor: default; }\n.jini-composer-spinner,\n.jini-runtime-spinner { animation: jini-chat-spin .8s linear infinite; }\n@keyframes jini-chat-spin { to { transform: rotate(360deg); } }\n.jini-chat-pane .jini-composer-footer-accessories {\n display: flex;\n margin-left: auto;\n min-width: 0;\n}\n.jini-chat-pane .jini-composer-send {\n display: grid;\n place-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n color: white;\n background: var(--jini-chat-text-strong);\n border: 0;\n border-radius: 8px;\n cursor: pointer;\n}\n.jini-chat-pane .jini-composer-send:disabled {\n color: #aaa59e;\n background: #ece8e2;\n cursor: default;\n}\n.jini-chat-pane__cancel {\n position: absolute;\n right: 48px;\n bottom: 22px;\n padding: 5px 9px;\n color: var(--jini-chat-muted);\n background: var(--jini-chat-panel);\n border: 1px solid var(--jini-chat-border);\n border-radius: 7px;\n cursor: pointer;\n}\n.jini-chat-pane__workdir {\n display: flex;\n align-items: center;\n gap: 7px;\n min-width: 0;\n padding: 5px 4px 0;\n color: var(--jini-chat-muted);\n font-size: 13px;\n}\n.jini-chat-pane__workdir code {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.jini-chat-pane .jini-working-dir-picker {\n position: relative;\n display: inline-flex;\n align-items: flex-start;\n}\n.jini-chat-pane .jini-working-dir-trigger-row {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n}\n.jini-chat-pane .jini-working-dir-trigger {\n appearance: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 6px;\n color: var(--jini-chat-muted);\n background: transparent;\n border: 0;\n border-radius: 8px;\n font: inherit;\n font-size: 13px;\n cursor: pointer;\n}\n.jini-chat-pane .jini-working-dir-trigger:hover,\n.jini-chat-pane .jini-working-dir-trigger:focus-visible {\n color: var(--jini-chat-text-strong);\n background: var(--jini-chat-subtle);\n outline: none;\n}\n.jini-chat-pane .jini-working-dir-trigger.invalid { color: var(--danger); }\n.jini-chat-pane .jini-working-dir-trigger-icon { flex: 0 0 auto; opacity: .75; }\n.jini-chat-pane .jini-working-dir-trigger.invalid .jini-working-dir-trigger-icon {\n color: var(--danger);\n opacity: 1;\n}\n.jini-chat-pane .jini-working-dir-trigger-label {\n max-width: 240px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.jini-chat-pane .jini-working-dir-trigger-chevron { flex: 0 0 auto; opacity: .55; }\n.jini-chat-pane .jini-working-dir-panel,\n.jini-chat-pane .jini-working-dir-flyout {\n position: absolute;\n z-index: 90;\n display: flex;\n flex-direction: column;\n min-width: 210px;\n padding: 5px;\n background: var(--jini-chat-panel);\n border: 1px solid var(--jini-chat-border-strong);\n border-radius: 12px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 10px 28px -10px rgba(0, 0, 0, .18);\n}\n.jini-chat-pane .jini-working-dir-panel {\n top: calc(100% + 6px);\n left: 0;\n}\n.jini-chat-pane .jini-working-dir-panel.up {\n top: auto;\n bottom: calc(100% + 6px);\n}\n.jini-chat-pane .jini-working-dir-item {\n appearance: none;\n display: flex;\n align-items: center;\n gap: 9px;\n width: 100%;\n min-height: 32px;\n padding: 0 9px;\n color: var(--jini-chat-text-strong);\n background: transparent;\n border: 0;\n border-radius: 8px;\n font: inherit;\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n}\n.jini-chat-pane .jini-working-dir-item:hover,\n.jini-chat-pane .jini-working-dir-item:focus-visible,\n.jini-chat-pane .jini-working-dir-recent-item:hover,\n.jini-chat-pane .jini-working-dir-recent-item:focus-visible {\n background: var(--jini-chat-subtle);\n outline: none;\n}\n.jini-chat-pane .jini-working-dir-item-icon { flex: 0 0 auto; opacity: .8; }\n.jini-chat-pane .jini-working-dir-item > span {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.jini-chat-pane .jini-working-dir-item-chevron { margin-left: auto; opacity: .55; }\n.jini-chat-pane .jini-working-dir-submenu-row { position: relative; }\n.jini-chat-pane .jini-working-dir-flyout {\n top: -5px;\n left: 100%;\n z-index: 91;\n min-width: 220px;\n max-width: 320px;\n margin-left: 4px;\n}\n.jini-chat-pane .jini-working-dir-flyout.up { top: auto; bottom: -5px; }\n.jini-chat-pane .jini-working-dir-flyout::before {\n position: absolute;\n top: 0;\n left: -8px;\n width: 8px;\n height: 100%;\n content: \"\";\n}\n.jini-chat-pane .jini-working-dir-recent-item {\n appearance: none;\n display: grid;\n grid-template-rows: auto auto;\n grid-template-columns: auto 1fr;\n align-items: center;\n width: 100%;\n min-height: 36px;\n padding: 4px 9px;\n color: var(--jini-chat-text-strong);\n background: transparent;\n border: 0;\n border-radius: 8px;\n font: inherit;\n text-align: left;\n cursor: pointer;\n column-gap: 9px;\n}\n.jini-chat-pane .jini-working-dir-recent-item .jini-working-dir-item-icon {\n grid-row: 1 / span 2;\n}\n.jini-chat-pane .jini-working-dir-recent-name,\n.jini-chat-pane .jini-working-dir-recent-path {\n grid-column: 2;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.jini-chat-pane .jini-working-dir-recent-name { font-size: 13px; }\n.jini-chat-pane .jini-working-dir-recent-path {\n color: var(--jini-chat-muted);\n font-size: 11px;\n opacity: .7;\n}\n.jini-chat-pane .jini-working-dir-empty {\n padding: 8px 10px;\n color: var(--jini-chat-muted);\n font-size: 12px;\n white-space: nowrap;\n opacity: .7;\n}\n.jini-runtime-picker { position: relative; }\n.jini-runtime-trigger {\n display: inline-grid;\n grid-template-columns: 24px 14px;\n align-items: center;\n gap: 7px;\n height: 32px;\n min-width: 0;\n padding: 3px 7px 3px 5px;\n color: var(--jini-chat-text);\n background: transparent;\n border: 0;\n border-radius: 8px;\n cursor: pointer;\n}\n.jini-runtime-trigger:hover { background: var(--jini-chat-subtle); }\n.jini-runtime-trigger__copy { display: none; }\n.jini-runtime-trigger__copy strong {\n overflow: hidden;\n max-width: 122px;\n font-size: 11px;\n font-weight: 650;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.jini-runtime-trigger__copy small {\n overflow: hidden;\n max-width: 122px;\n color: var(--jini-chat-muted);\n font-size: 9px;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.jini-runtime-trigger__chevron { color: var(--jini-chat-muted); font-size: 12px; }\n.jini-runtime-agent-icon.agent-icon { flex: 0 0 auto; object-fit: contain; }\n.jini-runtime-agent-icon.agent-icon-mono {\n display: inline-block;\n background-color: currentColor;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-position: center;\n mask-position: center;\n -webkit-mask-size: contain;\n mask-size: contain;\n}\n.jini-runtime-agent-icon.agent-icon-fallback {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: #74716b;\n background: #f4f5f7;\n border: 1px solid #e1e5eb;\n border-radius: 6px;\n font-weight: 700;\n}\n.jini-runtime-popover {\n --jini-chat-panel: #fdfcfa;\n --jini-chat-text: #1a1916;\n --jini-chat-text-strong: #0d0c0a;\n --jini-chat-muted: #74716b;\n --jini-chat-faint: #b3b0a8;\n --jini-chat-border: #e1e5eb;\n --jini-chat-border-soft: #edf0f4;\n --jini-chat-subtle: #f4f5f7;\n box-sizing: border-box;\n padding: 8px;\n color: var(--jini-chat-text);\n background: var(--jini-chat-panel);\n border: 1px solid var(--jini-chat-border);\n border-radius: 12px;\n box-shadow: 0 18px 46px rgba(13, 12, 10, .15), 0 2px 8px rgba(13, 12, 10, .06);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Microsoft YaHei UI\", \"Noto Sans\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 13.5px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n}\n.jini-runtime-popover__head {\n display: flex;\n flex-direction: column;\n gap: 3px;\n padding: 10px 12px 12px;\n border-bottom: 1px solid var(--jini-chat-border-soft);\n}\n.jini-runtime-popover__head strong { color: var(--jini-chat-text-strong); font-size: 14px; font-weight: 650; }\n.jini-runtime-popover__head span { color: var(--jini-chat-muted); font-size: 12px; }\n.jini-runtime-mode,\n.jini-runtime-agent,\n.jini-runtime-rescan {\n display: flex;\n align-items: center;\n gap: 11px;\n box-sizing: border-box;\n width: 100%;\n min-height: 40px;\n padding: 8px 11px;\n color: var(--jini-chat-text);\n background: transparent;\n border: 0;\n border-radius: 8px;\n text-align: left;\n cursor: pointer;\n}\n.jini-runtime-mode:hover,\n.jini-runtime-agent:hover:not(:disabled),\n.jini-runtime-rescan:hover:not(:disabled) { background: var(--jini-chat-subtle); }\n.jini-runtime-mode.is-active { font-weight: 650; }\n.jini-runtime-mode:disabled,\n.jini-runtime-agent:disabled,\n.jini-runtime-rescan:disabled { color: var(--jini-chat-faint); cursor: default; }\n.jini-runtime-mode__meta,\n.jini-runtime-agent__status {\n margin-left: auto;\n color: var(--jini-chat-muted);\n font-size: 12px;\n white-space: nowrap;\n}\n.jini-runtime-check { flex: 0 0 auto; color: var(--jini-chat-text); }\n.jini-runtime-section-label {\n padding: 12px 11px 5px;\n color: var(--jini-chat-faint);\n font-size: 11px;\n font-weight: 650;\n letter-spacing: .08em;\n text-transform: uppercase;\n}\n.jini-runtime-agent.is-active { background: transparent; }\n.jini-runtime-agent__copy {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n}\n.jini-runtime-agent__copy strong { font-size: 13.5px; font-weight: 500; }\n.jini-runtime-agent__copy small {\n overflow: hidden;\n color: #8b857e;\n font-size: 10px;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.jini-runtime-empty { padding: 10px 11px; color: var(--jini-chat-muted); font-size: 12px; }\n.jini-runtime-models {\n display: flex;\n flex-direction: column;\n gap: 9px;\n margin-top: 5px;\n padding: 10px 11px 8px;\n border-top: 1px dashed var(--jini-chat-border);\n}\n.jini-runtime-select {\n display: flex;\n flex-direction: column;\n gap: 5px;\n color: var(--jini-chat-muted);\n font-size: 13px;\n}\n.jini-runtime-select select {\n box-sizing: border-box;\n width: 100%;\n min-height: 40px;\n padding: 7px 10px;\n color: var(--jini-chat-text);\n background: var(--jini-chat-panel);\n border: 1px solid var(--jini-chat-border);\n border-radius: 8px;\n}\n/*\n * The BYOK model, rendered as a value rather than a control \u2014 see RuntimeByokDetails for why it\n * is not a disabled select. It occupies the same box the sibling selects do so the row still\n * reads as part of the same list, but carries no border: a bordered box with no affordance is\n * exactly the \"looks editable, isn't\" shape the plain text exists to avoid.\n */\n/*\n * The BYOK model list, which CustomSelect portals to document.body. runtimePopoverPosition puts\n * the runtime popover at z-index 1000; the shared .jini-select-menu default is 60, which is right\n * everywhere else and puts this menu behind the very popover that opened it. One above the\n * popover, not far above: it must clear its own surface and nothing else.\n */\n.jini-select-menu.jini-runtime-model-menu {\n z-index: 1001;\n}\n.jini-runtime-byok-model strong {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n min-height: 40px;\n padding: 7px 10px;\n color: var(--jini-chat-text);\n font-weight: 600;\n word-break: break-all;\n}\n/*\n * Tool-call cards (ToolCard.tsx) and the per-turn usage summary (MessageRow.tsx) ship no CSS of\n * their own \u2014 see this file's own header note on why the package supplies a default theme at all.\n * Collapsed by default (.op-card-head is the only always-visible part), so a run with a dozen tool\n * calls reads as a dozen one-line rows, not a page of raw JSON.\n */\n.jini-chat-pane .jini-message-tools {\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n}\n.jini-chat-pane .op-card {\n border: 1px solid var(--jini-chat-border);\n border-radius: var(--radius);\n background: var(--jini-chat-subtle);\n overflow: hidden;\n font-size: 13px;\n}\n.jini-chat-pane .op-card-head {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 10px;\n background: none;\n border: 0;\n font: inherit;\n text-align: left;\n cursor: pointer;\n color: inherit;\n}\n.jini-chat-pane .op-status { display: inline-flex; flex-shrink: 0; }\n.jini-chat-pane .op-status-ok { color: #4e875f; }\n.jini-chat-pane .op-status-error { color: var(--danger); }\n.jini-chat-pane .op-status-running { color: var(--jini-chat-accent); }\n.jini-chat-pane .op-title { font-weight: 600; flex-shrink: 0; }\n.jini-chat-pane .shimmer-text { opacity: .6; }\n.jini-chat-pane .op-meta {\n color: var(--jini-chat-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n min-width: 0;\n}\n.jini-chat-pane .op-expand-chev { flex-shrink: 0; color: var(--jini-chat-faint); }\n/* Collapsed by default: 0 max-height clips the inner content, no display:none \u2014 keeps the height\n transition instead of an instant jump cut. */\n.jini-chat-pane .accordion-collapsible { max-height: 0; overflow: hidden; transition: max-height .15s ease; }\n.jini-chat-pane .accordion-collapsible.open { max-height: 480px; overflow-y: auto; }\n.jini-chat-pane .accordion-collapsible-inner { padding: 0 10px 10px; }\n.jini-chat-pane .op-card-detail { display: flex; flex-direction: column; gap: 6px; }\n.jini-chat-pane .op-path,\n.jini-chat-pane .op-command,\n.jini-chat-pane .op-output {\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n font-size: 12px;\n background: var(--jini-chat-panel);\n border: 1px solid var(--jini-chat-border);\n border-radius: 6px;\n padding: 6px 8px;\n margin: 0;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.jini-chat-pane .op-open {\n border: 1px solid var(--jini-chat-border-strong);\n border-radius: 6px;\n background: var(--jini-chat-panel);\n padding: 2px 8px;\n font-size: 11px;\n cursor: pointer;\n}\n/* The \"Done \u00B7 6m 29s \u00B7 2612 out \u00B7 $0.4028\" line \u2014 real numbers from the run's own kind:'usage' event. */\n.jini-chat-pane .jini-message-usage {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 11px;\n color: var(--jini-chat-muted);\n margin-top: 2px;\n}\n.jini-chat-pane .jini-message-usage-dot { font-size: 8px; color: #4e875f; }\n@media (max-width: 560px) {\n .jini-chat-pane__header { padding-inline: 16px; }\n .jini-chat-pane .jini-message-list { padding-inline: 16px; }\n .jini-chat-pane__controls { padding-inline: 10px; }\n}\n";
2
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/react/features/chat-pane/react/styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,i9yBA61B5B,CAAC"}