@jini-ai/chat 0.3.7 → 0.3.9

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 (266) hide show
  1. package/dist/react/features/chat-pane/agent-tools.d.ts +1 -1
  2. package/dist/react/features/chat-pane/agent-tools.js +3 -3
  3. package/dist/react/features/chat-pane/components/AgentRuntimePicker.js +1 -1
  4. package/dist/react/features/chat-pane/components/ChatPane.d.ts +1 -1
  5. package/dist/react/features/chat-pane/components/ChatPane.js +3 -1
  6. package/dist/react/features/chat-pane/create-mcp-ui-tool-caller.js +15 -1
  7. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.d.ts +4 -2
  8. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js +1 -0
  9. package/dist/react/features/chat-pane/types.d.ts +21 -2
  10. package/dist/react/hooks/composer-draft-cache.d.ts +104 -41
  11. package/dist/react/hooks/composer-draft-cache.js +369 -51
  12. package/dist/react/hooks/useComposer.d.ts +17 -0
  13. package/dist/react/hooks/useComposer.js +93 -12
  14. package/package.json +5 -4
  15. package/dist/core/agentic/chat-capabilities.d.ts.map +0 -1
  16. package/dist/core/agentic/chat-capabilities.js.map +0 -1
  17. package/dist/core/agentic/index.d.ts.map +0 -1
  18. package/dist/core/agentic/index.js.map +0 -1
  19. package/dist/core/events.d.ts.map +0 -1
  20. package/dist/core/events.js.map +0 -1
  21. package/dist/core/index.d.ts.map +0 -1
  22. package/dist/core/index.js.map +0 -1
  23. package/dist/core/messages.d.ts.map +0 -1
  24. package/dist/core/messages.js.map +0 -1
  25. package/dist/core/partial-json.d.ts.map +0 -1
  26. package/dist/core/partial-json.js.map +0 -1
  27. package/dist/core/persistence/index.d.ts.map +0 -1
  28. package/dist/core/persistence/index.js.map +0 -1
  29. package/dist/core/persistence/ports.d.ts.map +0 -1
  30. package/dist/core/persistence/ports.js.map +0 -1
  31. package/dist/core/persistence/title.d.ts.map +0 -1
  32. package/dist/core/persistence/title.js.map +0 -1
  33. package/dist/core/question-form/format.d.ts.map +0 -1
  34. package/dist/core/question-form/format.js.map +0 -1
  35. package/dist/core/question-form/normalize.d.ts.map +0 -1
  36. package/dist/core/question-form/normalize.js.map +0 -1
  37. package/dist/core/question-form/scan.d.ts.map +0 -1
  38. package/dist/core/question-form/scan.js.map +0 -1
  39. package/dist/core/question-form/types.d.ts.map +0 -1
  40. package/dist/core/question-form/types.js.map +0 -1
  41. package/dist/core/question-form.d.ts.map +0 -1
  42. package/dist/core/question-form.js.map +0 -1
  43. package/dist/core/todos.d.ts.map +0 -1
  44. package/dist/core/todos.js.map +0 -1
  45. package/dist/core/tool-events.d.ts.map +0 -1
  46. package/dist/core/tool-events.js.map +0 -1
  47. package/dist/core/tools.d.ts.map +0 -1
  48. package/dist/core/tools.js.map +0 -1
  49. package/dist/core/transcript.d.ts.map +0 -1
  50. package/dist/core/transcript.js.map +0 -1
  51. package/dist/core/transport.d.ts.map +0 -1
  52. package/dist/core/transport.js.map +0 -1
  53. package/dist/core/util/index.d.ts.map +0 -1
  54. package/dist/core/util/index.js.map +0 -1
  55. package/dist/core/util/manifest.d.ts.map +0 -1
  56. package/dist/core/util/manifest.js.map +0 -1
  57. package/dist/core/util/markdown-context.d.ts.map +0 -1
  58. package/dist/core/util/markdown-context.js.map +0 -1
  59. package/dist/core/util/markup-attributes.d.ts.map +0 -1
  60. package/dist/core/util/markup-attributes.js.map +0 -1
  61. package/dist/core/util/parser.d.ts.map +0 -1
  62. package/dist/core/util/parser.js.map +0 -1
  63. package/dist/core/util/pointer.d.ts.map +0 -1
  64. package/dist/core/util/pointer.js.map +0 -1
  65. package/dist/core/util/recover.d.ts.map +0 -1
  66. package/dist/core/util/recover.js.map +0 -1
  67. package/dist/core/util/strip.d.ts.map +0 -1
  68. package/dist/core/util/strip.js.map +0 -1
  69. package/dist/core/util/types.d.ts.map +0 -1
  70. package/dist/core/util/types.js.map +0 -1
  71. package/dist/core/util/validate.d.ts.map +0 -1
  72. package/dist/core/util/validate.js.map +0 -1
  73. package/dist/react/agent-bridge/frontend-session-bridge.d.ts.map +0 -1
  74. package/dist/react/agent-bridge/frontend-session-bridge.js.map +0 -1
  75. package/dist/react/artifact-types.d.ts.map +0 -1
  76. package/dist/react/artifact-types.js.map +0 -1
  77. package/dist/react/chat-pane.d.ts.map +0 -1
  78. package/dist/react/chat-pane.js.map +0 -1
  79. package/dist/react/components/A2uiSurfaceCard.d.ts.map +0 -1
  80. package/dist/react/components/A2uiSurfaceCard.js.map +0 -1
  81. package/dist/react/components/AttachmentPreviewModal.d.ts.map +0 -1
  82. package/dist/react/components/AttachmentPreviewModal.hooks.d.ts.map +0 -1
  83. package/dist/react/components/AttachmentPreviewModal.hooks.js.map +0 -1
  84. package/dist/react/components/AttachmentPreviewModal.js.map +0 -1
  85. package/dist/react/components/AttachmentTray.d.ts.map +0 -1
  86. package/dist/react/components/AttachmentTray.js.map +0 -1
  87. package/dist/react/components/ChatFab.d.ts.map +0 -1
  88. package/dist/react/components/ChatFab.js.map +0 -1
  89. package/dist/react/components/Composer.d.ts.map +0 -1
  90. package/dist/react/components/Composer.js.map +0 -1
  91. package/dist/react/components/ComposerDiscovery.d.ts.map +0 -1
  92. package/dist/react/components/ComposerDiscovery.js.map +0 -1
  93. package/dist/react/components/ConversationList.d.ts.map +0 -1
  94. package/dist/react/components/ConversationList.js.map +0 -1
  95. package/dist/react/components/ExtEventErrorBoundary.d.ts.map +0 -1
  96. package/dist/react/components/ExtEventErrorBoundary.js.map +0 -1
  97. package/dist/react/components/Icon.d.ts.map +0 -1
  98. package/dist/react/components/Icon.js.map +0 -1
  99. package/dist/react/components/JiniChatProvider.d.ts.map +0 -1
  100. package/dist/react/components/JiniChatProvider.js.map +0 -1
  101. package/dist/react/components/Markdown.d.ts.map +0 -1
  102. package/dist/react/components/Markdown.js.map +0 -1
  103. package/dist/react/components/McpUiSurfaceCard.d.ts.map +0 -1
  104. package/dist/react/components/McpUiSurfaceCard.js.map +0 -1
  105. package/dist/react/components/MessageList.d.ts.map +0 -1
  106. package/dist/react/components/MessageList.js.map +0 -1
  107. package/dist/react/components/MessageRow.d.ts.map +0 -1
  108. package/dist/react/components/MessageRow.js.map +0 -1
  109. package/dist/react/components/NextStepActions.d.ts.map +0 -1
  110. package/dist/react/components/NextStepActions.js.map +0 -1
  111. package/dist/react/components/QuestionForm.d.ts.map +0 -1
  112. package/dist/react/components/QuestionForm.js.map +0 -1
  113. package/dist/react/components/QuestionsPanel.d.ts.map +0 -1
  114. package/dist/react/components/QuestionsPanel.js.map +0 -1
  115. package/dist/react/components/TodoCard.d.ts.map +0 -1
  116. package/dist/react/components/TodoCard.js.map +0 -1
  117. package/dist/react/components/ToolCard.d.ts.map +0 -1
  118. package/dist/react/components/ToolCard.js.map +0 -1
  119. package/dist/react/components/composer-discovery.d.ts.map +0 -1
  120. package/dist/react/components/composer-discovery.js.map +0 -1
  121. package/dist/react/ext-event-renderer-registry.d.ts.map +0 -1
  122. package/dist/react/ext-event-renderer-registry.js.map +0 -1
  123. package/dist/react/features/chat-pane/agent-tools.d.ts.map +0 -1
  124. package/dist/react/features/chat-pane/agent-tools.js.map +0 -1
  125. package/dist/react/features/chat-pane/components/AgentRuntimePicker.d.ts.map +0 -1
  126. package/dist/react/features/chat-pane/components/AgentRuntimePicker.js.map +0 -1
  127. package/dist/react/features/chat-pane/components/ChatPane.d.ts.map +0 -1
  128. package/dist/react/features/chat-pane/components/ChatPane.js.map +0 -1
  129. package/dist/react/features/chat-pane/create-daemon-attachment-uploader.d.ts.map +0 -1
  130. package/dist/react/features/chat-pane/create-daemon-attachment-uploader.js.map +0 -1
  131. package/dist/react/features/chat-pane/create-mcp-ui-tool-caller.d.ts.map +0 -1
  132. package/dist/react/features/chat-pane/create-mcp-ui-tool-caller.js.map +0 -1
  133. package/dist/react/features/chat-pane/hooks/useAgentRuntimePicker.hooks.d.ts.map +0 -1
  134. package/dist/react/features/chat-pane/hooks/useAgentRuntimePicker.hooks.js.map +0 -1
  135. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.d.ts.map +0 -1
  136. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js.map +0 -1
  137. package/dist/react/features/chat-pane/hooks/useChatPaneAgentControl.hooks.d.ts.map +0 -1
  138. package/dist/react/features/chat-pane/hooks/useChatPaneAgentControl.hooks.js.map +0 -1
  139. package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.d.ts.map +0 -1
  140. package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.js.map +0 -1
  141. package/dist/react/features/chat-pane/hooks/useChatPaneControlsHeight.hooks.d.ts.map +0 -1
  142. package/dist/react/features/chat-pane/hooks/useChatPaneControlsHeight.hooks.js.map +0 -1
  143. package/dist/react/features/chat-pane/hooks/useChatPaneFileDrop.hooks.d.ts.map +0 -1
  144. package/dist/react/features/chat-pane/hooks/useChatPaneFileDrop.hooks.js.map +0 -1
  145. package/dist/react/features/chat-pane/hooks/useChatPaneRuntimeInventory.hooks.d.ts.map +0 -1
  146. package/dist/react/features/chat-pane/hooks/useChatPaneRuntimeInventory.hooks.js.map +0 -1
  147. package/dist/react/features/chat-pane/hooks/useChatPaneWorkingDirectory.hooks.d.ts.map +0 -1
  148. package/dist/react/features/chat-pane/hooks/useChatPaneWorkingDirectory.hooks.js.map +0 -1
  149. package/dist/react/features/chat-pane/index.d.ts.map +0 -1
  150. package/dist/react/features/chat-pane/index.js.map +0 -1
  151. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts +0 -12
  152. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts.map +0 -1
  153. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js +0 -102
  154. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js.map +0 -1
  155. package/dist/react/features/chat-pane/react/components/ChatPane.d.ts +0 -10
  156. package/dist/react/features/chat-pane/react/components/ChatPane.d.ts.map +0 -1
  157. package/dist/react/features/chat-pane/react/components/ChatPane.js +0 -137
  158. package/dist/react/features/chat-pane/react/components/ChatPane.js.map +0 -1
  159. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts +0 -133
  160. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts.map +0 -1
  161. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js +0 -258
  162. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js.map +0 -1
  163. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts +0 -66
  164. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts.map +0 -1
  165. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js +0 -223
  166. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js.map +0 -1
  167. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts +0 -38
  168. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts.map +0 -1
  169. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js +0 -252
  170. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js.map +0 -1
  171. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts +0 -26
  172. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts.map +0 -1
  173. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js +0 -60
  174. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js.map +0 -1
  175. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts +0 -25
  176. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts.map +0 -1
  177. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js +0 -83
  178. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js.map +0 -1
  179. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts +0 -38
  180. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts.map +0 -1
  181. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js +0 -184
  182. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js.map +0 -1
  183. package/dist/react/features/chat-pane/react/styles.d.ts +0 -2
  184. package/dist/react/features/chat-pane/react/styles.d.ts.map +0 -1
  185. package/dist/react/features/chat-pane/react/styles.js +0 -863
  186. package/dist/react/features/chat-pane/react/styles.js.map +0 -1
  187. package/dist/react/features/chat-pane/rules.d.ts.map +0 -1
  188. package/dist/react/features/chat-pane/rules.js.map +0 -1
  189. package/dist/react/features/chat-pane/styles.d.ts.map +0 -1
  190. package/dist/react/features/chat-pane/styles.js.map +0 -1
  191. package/dist/react/features/chat-pane/types.d.ts.map +0 -1
  192. package/dist/react/features/chat-pane/types.js.map +0 -1
  193. package/dist/react/features/model-picker/components/CredentialStatusBadge.d.ts.map +0 -1
  194. package/dist/react/features/model-picker/components/CredentialStatusBadge.js.map +0 -1
  195. package/dist/react/features/model-picker/components/ModelPicker.d.ts.map +0 -1
  196. package/dist/react/features/model-picker/components/ModelPicker.js.map +0 -1
  197. package/dist/react/features/model-picker/constants.d.ts.map +0 -1
  198. package/dist/react/features/model-picker/constants.js.map +0 -1
  199. package/dist/react/features/model-picker/dependencies.d.ts.map +0 -1
  200. package/dist/react/features/model-picker/dependencies.js.map +0 -1
  201. package/dist/react/features/model-picker/hooks/useModelPicker.hooks.d.ts.map +0 -1
  202. package/dist/react/features/model-picker/hooks/useModelPicker.hooks.js.map +0 -1
  203. package/dist/react/features/model-picker/index.d.ts.map +0 -1
  204. package/dist/react/features/model-picker/index.js.map +0 -1
  205. package/dist/react/features/model-picker/ports.d.ts.map +0 -1
  206. package/dist/react/features/model-picker/ports.js.map +0 -1
  207. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts +0 -7
  208. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts.map +0 -1
  209. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js +0 -20
  210. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js.map +0 -1
  211. package/dist/react/features/model-picker/react/components/ModelPicker.d.ts +0 -9
  212. package/dist/react/features/model-picker/react/components/ModelPicker.d.ts.map +0 -1
  213. package/dist/react/features/model-picker/react/components/ModelPicker.js +0 -34
  214. package/dist/react/features/model-picker/react/components/ModelPicker.js.map +0 -1
  215. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts +0 -27
  216. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts.map +0 -1
  217. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js +0 -62
  218. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js.map +0 -1
  219. package/dist/react/features/model-picker/rules.d.ts.map +0 -1
  220. package/dist/react/features/model-picker/rules.js.map +0 -1
  221. package/dist/react/features/model-picker/types.d.ts.map +0 -1
  222. package/dist/react/features/model-picker/types.js.map +0 -1
  223. package/dist/react/hooks/attachment-preview-cache.d.ts.map +0 -1
  224. package/dist/react/hooks/attachment-preview-cache.js.map +0 -1
  225. package/dist/react/hooks/composer-draft-cache.d.ts.map +0 -1
  226. package/dist/react/hooks/composer-draft-cache.js.map +0 -1
  227. package/dist/react/hooks/context.d.ts.map +0 -1
  228. package/dist/react/hooks/context.js.map +0 -1
  229. package/dist/react/hooks/testing/fake-transport.d.ts.map +0 -1
  230. package/dist/react/hooks/testing/fake-transport.js.map +0 -1
  231. package/dist/react/hooks/useArtifactStream.d.ts.map +0 -1
  232. package/dist/react/hooks/useArtifactStream.js.map +0 -1
  233. package/dist/react/hooks/useChatFabDrag.d.ts.map +0 -1
  234. package/dist/react/hooks/useChatFabDrag.js.map +0 -1
  235. package/dist/react/hooks/useComposer.d.ts.map +0 -1
  236. package/dist/react/hooks/useComposer.js.map +0 -1
  237. package/dist/react/hooks/useConversation.d.ts.map +0 -1
  238. package/dist/react/hooks/useConversation.js.map +0 -1
  239. package/dist/react/hooks/useCopyToClipboard.d.ts.map +0 -1
  240. package/dist/react/hooks/useCopyToClipboard.js.map +0 -1
  241. package/dist/react/hooks/useExtEventGroups.d.ts.map +0 -1
  242. package/dist/react/hooks/useExtEventGroups.js.map +0 -1
  243. package/dist/react/hooks/useLatestOperation.d.ts.map +0 -1
  244. package/dist/react/hooks/useLatestOperation.js.map +0 -1
  245. package/dist/react/hooks/usePinnedTodos.d.ts.map +0 -1
  246. package/dist/react/hooks/usePinnedTodos.js.map +0 -1
  247. package/dist/react/hooks/useQuestionForms.d.ts.map +0 -1
  248. package/dist/react/hooks/useQuestionForms.js.map +0 -1
  249. package/dist/react/hooks/useRunStream.d.ts.map +0 -1
  250. package/dist/react/hooks/useRunStream.js.map +0 -1
  251. package/dist/react/hooks/useToolTimeline.d.ts.map +0 -1
  252. package/dist/react/hooks/useToolTimeline.js.map +0 -1
  253. package/dist/react/index.d.ts.map +0 -1
  254. package/dist/react/index.js.map +0 -1
  255. package/dist/react/message-blocks.d.ts.map +0 -1
  256. package/dist/react/message-blocks.js.map +0 -1
  257. package/dist/react/poc-mcp-ui-official/PocMcpUiCard.d.ts.map +0 -1
  258. package/dist/react/poc-mcp-ui-official/PocMcpUiCard.js.map +0 -1
  259. package/dist/react/poc-mcp-ui-official/create-poc-resource.d.ts.map +0 -1
  260. package/dist/react/poc-mcp-ui-official/create-poc-resource.js.map +0 -1
  261. package/dist/react/slots.d.ts.map +0 -1
  262. package/dist/react/slots.js.map +0 -1
  263. package/dist/react/tool-renderer-registry.d.ts.map +0 -1
  264. package/dist/react/tool-renderer-registry.js.map +0 -1
  265. package/dist/react/util/defined-props.d.ts.map +0 -1
  266. package/dist/react/util/defined-props.js.map +0 -1
@@ -1,863 +0,0 @@
1
- export const CHAT_PANE_STYLES = `
2
- .jini-chat-pane {
3
- --jini-chat-bg: #faf9f7;
4
- --jini-chat-panel: #fdfcfa;
5
- --jini-chat-text: #1a1916;
6
- --jini-chat-text-strong: #0d0c0a;
7
- --jini-chat-muted: #74716b;
8
- --jini-chat-faint: #b3b0a8;
9
- --jini-chat-border: #e1e5eb;
10
- --jini-chat-border-strong: #c9d0da;
11
- --jini-chat-border-soft: #edf0f4;
12
- --jini-chat-subtle: #f4f5f7;
13
- --jini-chat-accent: #c96442;
14
- --jini-chat-accent-soft: #fbeee5;
15
- --bg-panel: var(--jini-chat-panel);
16
- --bg-subtle: var(--jini-chat-subtle);
17
- --border: var(--jini-chat-border);
18
- --border-strong: var(--jini-chat-border-strong);
19
- --text: var(--jini-chat-text);
20
- --text-strong: var(--jini-chat-text-strong);
21
- --text-muted: var(--jini-chat-muted);
22
- --danger: #e5484d;
23
- --radius: 8px;
24
- --radius-lg: 12px;
25
- position: relative;
26
- display: grid;
27
- grid-template-rows: auto minmax(0, 1fr) auto;
28
- min-width: 0;
29
- min-height: 0;
30
- height: 100%;
31
- overflow: hidden;
32
- color: var(--jini-chat-text);
33
- background: var(--jini-chat-bg);
34
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei UI", "Noto Sans", Roboto, "Helvetica Neue", Arial, sans-serif;
35
- font-size: 13.5px;
36
- line-height: 1.5;
37
- -webkit-font-smoothing: antialiased;
38
- -moz-osx-font-smoothing: grayscale;
39
- }
40
- .jini-chat-pane button,
41
- .jini-runtime-popover button,
42
- .jini-runtime-popover select {
43
- font: inherit;
44
- }
45
- .jini-chat-pane__header {
46
- display: flex;
47
- align-items: center;
48
- justify-content: space-between;
49
- min-height: 74px;
50
- padding: 18px 22px 14px;
51
- border-bottom: 1px solid var(--jini-chat-border-soft);
52
- }
53
- .jini-chat-pane__heading { min-width: 0; }
54
- .jini-chat-pane__eyebrow {
55
- display: block;
56
- margin-bottom: 4px;
57
- color: var(--jini-chat-muted);
58
- font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
59
- font-size: 10px;
60
- letter-spacing: .1em;
61
- text-transform: uppercase;
62
- }
63
- .jini-chat-pane__title {
64
- overflow: hidden;
65
- margin: 0;
66
- font-size: 21px;
67
- font-weight: 650;
68
- letter-spacing: -.025em;
69
- text-overflow: ellipsis;
70
- white-space: nowrap;
71
- }
72
- .jini-chat-pane__new-thread {
73
- padding: 8px 12px;
74
- color: var(--jini-chat-muted);
75
- background: var(--jini-chat-panel);
76
- border: 1px solid var(--jini-chat-border);
77
- border-radius: 8px;
78
- cursor: pointer;
79
- }
80
- .jini-chat-pane__body {
81
- position: relative;
82
- min-height: 0;
83
- overflow: hidden;
84
- }
85
- .jini-chat-pane .jini-message-list {
86
- height: 100%;
87
- overflow-y: auto;
88
- /*
89
- * .jini-chat-pane__controls is an absolutely-positioned overlay (not a flex/grid sibling that
90
- * pushes this list up), so its real height has to be reserved here instead. Measured against a
91
- * live render: the composer + footer + working-directory row alone is already 179.75px, above
92
- * the 170px this used to reserve -- the last message's tail rendered clipped under the overlay as
93
- * a direct result. 240px adds real margin above that measurement rather than matching it exactly,
94
- * because the composer also grows conditionally (a suggestions row, an attachment tray) that
95
- * this measurement did not have present.
96
- */
97
- padding: 20px 22px 240px;
98
- scrollbar-width: thin;
99
- }
100
- .jini-chat-pane .jini-message {
101
- margin-bottom: 20px;
102
- color: var(--jini-chat-text);
103
- font-size: 14px;
104
- line-height: 1.62;
105
- }
106
- /*
107
- * Bubble on the content, not the row: MessageRow.tsx renders attachments as siblings of
108
- * .jini-message-content inside .jini-message-user, each with their own chip styling -- bubbling
109
- * the whole row would nest one background box inside another. This replaces a dead rule this file
110
- * shipped with (.jini-message-row[data-role="user"] / .jini-message-row.user): MessageRow.tsx
111
- * has never rendered a jini-message-row class or a data-role attribute, and a user message's
112
- * root class is jini-message-user, not bare "user" -- the selector never matched anything real.
113
- */
114
- .jini-chat-pane .jini-message-user .jini-message-content {
115
- margin-left: auto;
116
- padding: 10px 13px;
117
- width: fit-content;
118
- max-width: 88%;
119
- background: var(--jini-chat-subtle);
120
- border-radius: 12px 12px 3px 12px;
121
- }
122
- .jini-chat-pane .jini-message-user .jini-message-attachments {
123
- display: flex;
124
- flex-wrap: wrap;
125
- gap: 6px;
126
- justify-content: flex-end;
127
- margin-bottom: 4px;
128
- }
129
- .jini-chat-pane .jini-message-user .jini-message-attachment-chip {
130
- font-size: 11px;
131
- color: var(--jini-chat-muted);
132
- background: var(--jini-chat-subtle);
133
- border: 1px solid var(--jini-chat-border);
134
- border-radius: 999px;
135
- padding: 3px 10px;
136
- }
137
- .jini-chat-pane .jini-message-agent {
138
- font-size: 11px;
139
- font-weight: 700;
140
- letter-spacing: .02em;
141
- text-transform: uppercase;
142
- color: var(--jini-chat-faint);
143
- margin-bottom: 4px;
144
- }
145
- .jini-chat-pane .jini-message-error { color: var(--danger); font-size: 13px; }
146
- .jini-chat-pane .jini-message-pending { color: var(--jini-chat-muted); font-size: 13px; font-style: italic; }
147
- .jini-chat-pane__controls {
148
- position: absolute;
149
- right: 0;
150
- bottom: 0;
151
- left: 0;
152
- z-index: 4;
153
- padding: 0 16px 14px;
154
- background: linear-gradient(to bottom, transparent, var(--jini-chat-bg) 22px);
155
- }
156
- .jini-chat-pane__suggestions {
157
- display: flex;
158
- gap: 8px;
159
- margin: 0 2px 8px;
160
- overflow-x: auto;
161
- }
162
- .jini-chat-pane__suggestion {
163
- flex: 0 0 auto;
164
- max-width: 290px;
165
- overflow: hidden;
166
- padding: 7px 11px;
167
- color: var(--jini-chat-muted);
168
- background: color-mix(in srgb, var(--jini-chat-panel) 92%, transparent);
169
- border: 1px solid var(--jini-chat-border);
170
- border-radius: 999px;
171
- font-size: 11px;
172
- text-overflow: ellipsis;
173
- white-space: nowrap;
174
- cursor: pointer;
175
- }
176
- .jini-chat-pane__error {
177
- margin: 0 2px 8px;
178
- padding: 8px 10px;
179
- color: #8c2f20;
180
- background: #fff1ed;
181
- border: 1px solid #f2c8bb;
182
- border-radius: 8px;
183
- font-size: 12px;
184
- }
185
- .jini-chat-pane__status {
186
- margin: 0 2px 8px;
187
- padding: 8px 10px;
188
- color: var(--jini-chat-muted);
189
- background: var(--jini-chat-subtle);
190
- border: 1px solid var(--jini-chat-border);
191
- border-radius: 8px;
192
- font-size: 12px;
193
- }
194
- .jini-chat-pane__drop-target {
195
- position: relative;
196
- margin: -8px -8px -8px;
197
- padding: 6px;
198
- border: 2px dashed transparent;
199
- border-radius: 16px;
200
- transition:
201
- background-color .14s ease,
202
- border-color .14s ease,
203
- box-shadow .14s ease;
204
- }
205
- .jini-chat-pane__drop-target.is-dragging-files {
206
- background: color-mix(in srgb, var(--jini-chat-accent-soft) 72%, transparent);
207
- border-color: var(--jini-chat-accent);
208
- box-shadow: 0 0 0 1px color-mix(in srgb, var(--jini-chat-accent) 15%, transparent);
209
- }
210
- .jini-chat-pane__drop-target.is-dragging-files .jini-composer {
211
- background: color-mix(in srgb, var(--jini-chat-accent-soft) 58%, var(--jini-chat-panel));
212
- border-color: color-mix(in srgb, var(--jini-chat-accent) 68%, var(--jini-chat-border));
213
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--jini-chat-accent) 10%, transparent);
214
- }
215
- .jini-chat-pane__drop-announcement {
216
- position: absolute;
217
- width: 1px;
218
- height: 1px;
219
- overflow: hidden;
220
- clip: rect(0, 0, 0, 0);
221
- white-space: nowrap;
222
- clip-path: inset(50%);
223
- }
224
- .jini-chat-pane .jini-composer {
225
- position: relative;
226
- overflow: visible;
227
- padding: 0;
228
- background: var(--jini-chat-subtle);
229
- border: 1px solid var(--jini-chat-border);
230
- border-radius: 12px;
231
- box-shadow: none;
232
- transition: border-color .16s ease, box-shadow .16s ease;
233
- }
234
- .jini-chat-pane .jini-composer:focus-within {
235
- background: var(--jini-chat-panel);
236
- border-color: color-mix(in srgb, var(--jini-chat-accent) 22%, var(--jini-chat-border-strong));
237
- box-shadow: 0 1px 2px rgba(26, 25, 22, .06), 0 0 0 1px rgba(201, 100, 66, .06);
238
- }
239
- .jini-chat-pane .jini-composer-leading {
240
- padding: 8px 12px 0;
241
- }
242
- .jini-chat-pane .jini-attachment-tray {
243
- display: flex;
244
- flex-wrap: wrap;
245
- gap: 6px;
246
- max-height: 88px;
247
- overflow-y: auto;
248
- padding: 8px 10px 0;
249
- scrollbar-width: thin;
250
- }
251
- .jini-chat-pane .jini-attachment-tray:empty { display: none; }
252
- .jini-chat-pane .jini-attachment-chip {
253
- display: inline-flex;
254
- align-items: center;
255
- box-sizing: border-box;
256
- min-width: 0;
257
- max-width: min(100%, 290px);
258
- height: 36px;
259
- padding: 3px 4px 3px 5px;
260
- color: var(--jini-chat-text);
261
- background: color-mix(in srgb, var(--jini-chat-panel) 88%, var(--jini-chat-subtle));
262
- border: 1px solid var(--jini-chat-border);
263
- border-radius: 9px;
264
- box-shadow: 0 1px 1px rgba(13, 12, 10, .025);
265
- }
266
- .jini-chat-pane .jini-attachment-chip-body {
267
- display: flex;
268
- align-items: center;
269
- min-width: 0;
270
- gap: 7px;
271
- }
272
- .jini-chat-pane .jini-attachment-chip-icon {
273
- display: grid;
274
- flex: 0 0 auto;
275
- place-items: center;
276
- width: 26px;
277
- height: 26px;
278
- color: var(--jini-chat-muted);
279
- background: var(--jini-chat-subtle);
280
- border-radius: 7px;
281
- }
282
- .jini-chat-pane .jini-attachment-chip-icon.is-image {
283
- color: var(--jini-chat-accent);
284
- background: var(--jini-chat-accent-soft);
285
- }
286
- .jini-chat-pane .jini-attachment-chip-copy {
287
- display: flex;
288
- min-width: 0;
289
- flex-direction: column;
290
- line-height: 1.15;
291
- }
292
- .jini-chat-pane .jini-attachment-chip-name {
293
- overflow: hidden;
294
- font-size: 11.5px;
295
- font-weight: 550;
296
- text-overflow: ellipsis;
297
- white-space: nowrap;
298
- }
299
- .jini-chat-pane .jini-attachment-chip-size {
300
- color: var(--jini-chat-muted);
301
- font-size: 9.5px;
302
- }
303
- .jini-chat-pane .jini-attachment-remove {
304
- display: grid;
305
- flex: 0 0 auto;
306
- place-items: center;
307
- width: 25px;
308
- height: 25px;
309
- margin-left: 4px;
310
- padding: 0;
311
- color: var(--jini-chat-muted);
312
- background: transparent;
313
- border: 0;
314
- border-radius: 7px;
315
- cursor: pointer;
316
- }
317
- .jini-chat-pane .jini-attachment-remove:hover,
318
- .jini-chat-pane .jini-attachment-remove:focus-visible {
319
- color: var(--jini-chat-text-strong);
320
- background: var(--jini-chat-subtle);
321
- outline: none;
322
- }
323
- .jini-chat-pane .jini-composer-input {
324
- display: block;
325
- box-sizing: border-box;
326
- width: 100%;
327
- min-height: 92px;
328
- resize: none;
329
- padding: 12px 14px 8px;
330
- color: var(--jini-chat-text);
331
- background: transparent;
332
- border: 0;
333
- outline: 0;
334
- font-size: 13.5px;
335
- line-height: 1.6;
336
- }
337
- .jini-chat-pane .jini-composer-input::placeholder { color: var(--jini-chat-faint); }
338
- .jini-chat-pane .jini-composer-footer {
339
- display: flex;
340
- align-items: center;
341
- justify-content: space-between;
342
- min-height: 42px;
343
- gap: 6px;
344
- padding: 6px 8px 8px;
345
- border-top: 1px solid var(--jini-chat-border-soft);
346
- }
347
- .jini-chat-pane .jini-composer-attachment-picker { display: inline-flex; }
348
- .jini-chat-pane .jini-composer-file-input {
349
- position: absolute;
350
- width: 1px;
351
- height: 1px;
352
- overflow: hidden;
353
- clip: rect(0, 0, 0, 0);
354
- white-space: nowrap;
355
- clip-path: inset(50%);
356
- }
357
- .jini-chat-pane .jini-composer-attach {
358
- display: inline-flex;
359
- align-items: center;
360
- justify-content: center;
361
- width: 32px;
362
- height: 32px;
363
- padding: 0;
364
- color: var(--jini-chat-muted);
365
- background: transparent;
366
- border: 1px solid transparent;
367
- border-radius: 8px;
368
- cursor: pointer;
369
- }
370
- .jini-chat-pane .jini-composer-attach:hover:not(:disabled) {
371
- color: var(--jini-chat-text);
372
- background: var(--jini-chat-panel);
373
- border-color: var(--jini-chat-border);
374
- }
375
- .jini-chat-pane .jini-composer-attach:disabled { opacity: .45; cursor: default; }
376
- .jini-composer-spinner,
377
- .jini-runtime-spinner { animation: jini-chat-spin .8s linear infinite; }
378
- @keyframes jini-chat-spin { to { transform: rotate(360deg); } }
379
- .jini-chat-pane .jini-composer-footer-accessories {
380
- display: flex;
381
- margin-left: auto;
382
- min-width: 0;
383
- }
384
- .jini-chat-pane .jini-composer-send {
385
- display: grid;
386
- place-items: center;
387
- width: 32px;
388
- height: 32px;
389
- padding: 0;
390
- color: white;
391
- background: var(--jini-chat-text-strong);
392
- border: 0;
393
- border-radius: 8px;
394
- cursor: pointer;
395
- }
396
- .jini-chat-pane .jini-composer-send:disabled {
397
- color: #aaa59e;
398
- background: #ece8e2;
399
- cursor: default;
400
- }
401
- .jini-chat-pane__cancel {
402
- position: absolute;
403
- right: 48px;
404
- bottom: 22px;
405
- padding: 5px 9px;
406
- color: var(--jini-chat-muted);
407
- background: var(--jini-chat-panel);
408
- border: 1px solid var(--jini-chat-border);
409
- border-radius: 7px;
410
- cursor: pointer;
411
- }
412
- .jini-chat-pane__workdir {
413
- display: flex;
414
- align-items: center;
415
- gap: 7px;
416
- min-width: 0;
417
- padding: 5px 4px 0;
418
- color: var(--jini-chat-muted);
419
- font-size: 13px;
420
- }
421
- .jini-chat-pane__workdir code {
422
- overflow: hidden;
423
- text-overflow: ellipsis;
424
- white-space: nowrap;
425
- }
426
- .jini-chat-pane .jini-working-dir-picker {
427
- position: relative;
428
- display: inline-flex;
429
- align-items: flex-start;
430
- }
431
- .jini-chat-pane .jini-working-dir-trigger-row {
432
- display: inline-flex;
433
- align-items: center;
434
- gap: 2px;
435
- }
436
- .jini-chat-pane .jini-working-dir-trigger {
437
- appearance: none;
438
- display: inline-flex;
439
- align-items: center;
440
- gap: 6px;
441
- padding: 4px 6px;
442
- color: var(--jini-chat-muted);
443
- background: transparent;
444
- border: 0;
445
- border-radius: 8px;
446
- font: inherit;
447
- font-size: 13px;
448
- cursor: pointer;
449
- }
450
- .jini-chat-pane .jini-working-dir-trigger:hover,
451
- .jini-chat-pane .jini-working-dir-trigger:focus-visible {
452
- color: var(--jini-chat-text-strong);
453
- background: var(--jini-chat-subtle);
454
- outline: none;
455
- }
456
- .jini-chat-pane .jini-working-dir-trigger.invalid { color: var(--danger); }
457
- .jini-chat-pane .jini-working-dir-trigger-icon { flex: 0 0 auto; opacity: .75; }
458
- .jini-chat-pane .jini-working-dir-trigger.invalid .jini-working-dir-trigger-icon {
459
- color: var(--danger);
460
- opacity: 1;
461
- }
462
- .jini-chat-pane .jini-working-dir-trigger-label {
463
- max-width: 240px;
464
- overflow: hidden;
465
- text-overflow: ellipsis;
466
- white-space: nowrap;
467
- }
468
- .jini-chat-pane .jini-working-dir-trigger-chevron { flex: 0 0 auto; opacity: .55; }
469
- .jini-chat-pane .jini-working-dir-panel,
470
- .jini-chat-pane .jini-working-dir-flyout {
471
- position: absolute;
472
- z-index: 90;
473
- display: flex;
474
- flex-direction: column;
475
- min-width: 210px;
476
- padding: 5px;
477
- background: var(--jini-chat-panel);
478
- border: 1px solid var(--jini-chat-border-strong);
479
- border-radius: 12px;
480
- box-shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 10px 28px -10px rgba(0, 0, 0, .18);
481
- }
482
- .jini-chat-pane .jini-working-dir-panel {
483
- top: calc(100% + 6px);
484
- left: 0;
485
- }
486
- .jini-chat-pane .jini-working-dir-panel.up {
487
- top: auto;
488
- bottom: calc(100% + 6px);
489
- }
490
- .jini-chat-pane .jini-working-dir-item {
491
- appearance: none;
492
- display: flex;
493
- align-items: center;
494
- gap: 9px;
495
- width: 100%;
496
- min-height: 32px;
497
- padding: 0 9px;
498
- color: var(--jini-chat-text-strong);
499
- background: transparent;
500
- border: 0;
501
- border-radius: 8px;
502
- font: inherit;
503
- font-size: 13px;
504
- text-align: left;
505
- cursor: pointer;
506
- }
507
- .jini-chat-pane .jini-working-dir-item:hover,
508
- .jini-chat-pane .jini-working-dir-item:focus-visible,
509
- .jini-chat-pane .jini-working-dir-recent-item:hover,
510
- .jini-chat-pane .jini-working-dir-recent-item:focus-visible {
511
- background: var(--jini-chat-subtle);
512
- outline: none;
513
- }
514
- .jini-chat-pane .jini-working-dir-item-icon { flex: 0 0 auto; opacity: .8; }
515
- .jini-chat-pane .jini-working-dir-item > span {
516
- flex: 1 1 auto;
517
- min-width: 0;
518
- overflow: hidden;
519
- text-overflow: ellipsis;
520
- white-space: nowrap;
521
- }
522
- .jini-chat-pane .jini-working-dir-item-chevron { margin-left: auto; opacity: .55; }
523
- .jini-chat-pane .jini-working-dir-submenu-row { position: relative; }
524
- .jini-chat-pane .jini-working-dir-flyout {
525
- top: -5px;
526
- left: 100%;
527
- z-index: 91;
528
- min-width: 220px;
529
- max-width: 320px;
530
- margin-left: 4px;
531
- }
532
- .jini-chat-pane .jini-working-dir-flyout.up { top: auto; bottom: -5px; }
533
- .jini-chat-pane .jini-working-dir-flyout::before {
534
- position: absolute;
535
- top: 0;
536
- left: -8px;
537
- width: 8px;
538
- height: 100%;
539
- content: "";
540
- }
541
- .jini-chat-pane .jini-working-dir-recent-item {
542
- appearance: none;
543
- display: grid;
544
- grid-template-rows: auto auto;
545
- grid-template-columns: auto 1fr;
546
- align-items: center;
547
- width: 100%;
548
- min-height: 36px;
549
- padding: 4px 9px;
550
- color: var(--jini-chat-text-strong);
551
- background: transparent;
552
- border: 0;
553
- border-radius: 8px;
554
- font: inherit;
555
- text-align: left;
556
- cursor: pointer;
557
- column-gap: 9px;
558
- }
559
- .jini-chat-pane .jini-working-dir-recent-item .jini-working-dir-item-icon {
560
- grid-row: 1 / span 2;
561
- }
562
- .jini-chat-pane .jini-working-dir-recent-name,
563
- .jini-chat-pane .jini-working-dir-recent-path {
564
- grid-column: 2;
565
- overflow: hidden;
566
- text-overflow: ellipsis;
567
- white-space: nowrap;
568
- }
569
- .jini-chat-pane .jini-working-dir-recent-name { font-size: 13px; }
570
- .jini-chat-pane .jini-working-dir-recent-path {
571
- color: var(--jini-chat-muted);
572
- font-size: 11px;
573
- opacity: .7;
574
- }
575
- .jini-chat-pane .jini-working-dir-empty {
576
- padding: 8px 10px;
577
- color: var(--jini-chat-muted);
578
- font-size: 12px;
579
- white-space: nowrap;
580
- opacity: .7;
581
- }
582
- .jini-runtime-picker { position: relative; }
583
- .jini-runtime-trigger {
584
- display: inline-grid;
585
- grid-template-columns: 24px 14px;
586
- align-items: center;
587
- gap: 7px;
588
- height: 32px;
589
- min-width: 0;
590
- padding: 3px 7px 3px 5px;
591
- color: var(--jini-chat-text);
592
- background: transparent;
593
- border: 0;
594
- border-radius: 8px;
595
- cursor: pointer;
596
- }
597
- .jini-runtime-trigger:hover { background: var(--jini-chat-subtle); }
598
- .jini-runtime-trigger__copy { display: none; }
599
- .jini-runtime-trigger__copy strong {
600
- overflow: hidden;
601
- max-width: 122px;
602
- font-size: 11px;
603
- font-weight: 650;
604
- text-overflow: ellipsis;
605
- white-space: nowrap;
606
- }
607
- .jini-runtime-trigger__copy small {
608
- overflow: hidden;
609
- max-width: 122px;
610
- color: var(--jini-chat-muted);
611
- font-size: 9px;
612
- text-overflow: ellipsis;
613
- white-space: nowrap;
614
- }
615
- .jini-runtime-trigger__chevron { color: var(--jini-chat-muted); font-size: 12px; }
616
- .jini-runtime-agent-icon.agent-icon { flex: 0 0 auto; object-fit: contain; }
617
- .jini-runtime-agent-icon.agent-icon-mono {
618
- display: inline-block;
619
- background-color: currentColor;
620
- -webkit-mask-repeat: no-repeat;
621
- mask-repeat: no-repeat;
622
- -webkit-mask-position: center;
623
- mask-position: center;
624
- -webkit-mask-size: contain;
625
- mask-size: contain;
626
- }
627
- .jini-runtime-agent-icon.agent-icon-fallback {
628
- display: inline-flex;
629
- align-items: center;
630
- justify-content: center;
631
- color: #74716b;
632
- background: #f4f5f7;
633
- border: 1px solid #e1e5eb;
634
- border-radius: 6px;
635
- font-weight: 700;
636
- }
637
- .jini-runtime-popover {
638
- --jini-chat-panel: #fdfcfa;
639
- --jini-chat-text: #1a1916;
640
- --jini-chat-text-strong: #0d0c0a;
641
- --jini-chat-muted: #74716b;
642
- --jini-chat-faint: #b3b0a8;
643
- --jini-chat-border: #e1e5eb;
644
- --jini-chat-border-soft: #edf0f4;
645
- --jini-chat-subtle: #f4f5f7;
646
- box-sizing: border-box;
647
- padding: 8px;
648
- color: var(--jini-chat-text);
649
- background: var(--jini-chat-panel);
650
- border: 1px solid var(--jini-chat-border);
651
- border-radius: 12px;
652
- box-shadow: 0 18px 46px rgba(13, 12, 10, .15), 0 2px 8px rgba(13, 12, 10, .06);
653
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei UI", "Noto Sans", Roboto, "Helvetica Neue", Arial, sans-serif;
654
- font-size: 13.5px;
655
- line-height: 1.5;
656
- -webkit-font-smoothing: antialiased;
657
- }
658
- .jini-runtime-popover__head {
659
- display: flex;
660
- flex-direction: column;
661
- gap: 3px;
662
- padding: 10px 12px 12px;
663
- border-bottom: 1px solid var(--jini-chat-border-soft);
664
- }
665
- .jini-runtime-popover__head strong { color: var(--jini-chat-text-strong); font-size: 14px; font-weight: 650; }
666
- .jini-runtime-popover__head span { color: var(--jini-chat-muted); font-size: 12px; }
667
- .jini-runtime-mode,
668
- .jini-runtime-agent,
669
- .jini-runtime-rescan {
670
- display: flex;
671
- align-items: center;
672
- gap: 11px;
673
- box-sizing: border-box;
674
- width: 100%;
675
- min-height: 40px;
676
- padding: 8px 11px;
677
- color: var(--jini-chat-text);
678
- background: transparent;
679
- border: 0;
680
- border-radius: 8px;
681
- text-align: left;
682
- cursor: pointer;
683
- }
684
- .jini-runtime-mode:hover,
685
- .jini-runtime-agent:hover:not(:disabled),
686
- .jini-runtime-rescan:hover:not(:disabled) { background: var(--jini-chat-subtle); }
687
- .jini-runtime-mode.is-active { font-weight: 650; }
688
- .jini-runtime-mode:disabled,
689
- .jini-runtime-agent:disabled,
690
- .jini-runtime-rescan:disabled { color: var(--jini-chat-faint); cursor: default; }
691
- .jini-runtime-mode__meta,
692
- .jini-runtime-agent__status {
693
- margin-left: auto;
694
- color: var(--jini-chat-muted);
695
- font-size: 12px;
696
- white-space: nowrap;
697
- }
698
- .jini-runtime-check { flex: 0 0 auto; color: var(--jini-chat-text); }
699
- .jini-runtime-section-label {
700
- padding: 12px 11px 5px;
701
- color: var(--jini-chat-faint);
702
- font-size: 11px;
703
- font-weight: 650;
704
- letter-spacing: .08em;
705
- text-transform: uppercase;
706
- }
707
- .jini-runtime-agent.is-active { background: transparent; }
708
- .jini-runtime-agent__copy {
709
- display: flex;
710
- flex: 1;
711
- flex-direction: column;
712
- min-width: 0;
713
- }
714
- .jini-runtime-agent__copy strong { font-size: 13.5px; font-weight: 500; }
715
- .jini-runtime-agent__copy small {
716
- overflow: hidden;
717
- color: #8b857e;
718
- font-size: 10px;
719
- text-overflow: ellipsis;
720
- white-space: nowrap;
721
- }
722
- .jini-runtime-empty { padding: 10px 11px; color: var(--jini-chat-muted); font-size: 12px; }
723
- .jini-runtime-models {
724
- display: flex;
725
- flex-direction: column;
726
- gap: 9px;
727
- margin-top: 5px;
728
- padding: 10px 11px 8px;
729
- border-top: 1px dashed var(--jini-chat-border);
730
- }
731
- .jini-runtime-select {
732
- display: flex;
733
- flex-direction: column;
734
- gap: 5px;
735
- color: var(--jini-chat-muted);
736
- font-size: 13px;
737
- }
738
- .jini-runtime-select select {
739
- box-sizing: border-box;
740
- width: 100%;
741
- min-height: 40px;
742
- padding: 7px 10px;
743
- color: var(--jini-chat-text);
744
- background: var(--jini-chat-panel);
745
- border: 1px solid var(--jini-chat-border);
746
- border-radius: 8px;
747
- }
748
- /*
749
- * The BYOK model, rendered as a value rather than a control — see RuntimeByokDetails for why it
750
- * is not a disabled select. It occupies the same box the sibling selects do so the row still
751
- * reads as part of the same list, but carries no border: a bordered box with no affordance is
752
- * exactly the "looks editable, isn't" shape the plain text exists to avoid.
753
- */
754
- /*
755
- * The BYOK model list, which CustomSelect portals to document.body. runtimePopoverPosition puts
756
- * the runtime popover at z-index 1000; the shared .jini-select-menu default is 60, which is right
757
- * everywhere else and puts this menu behind the very popover that opened it. One above the
758
- * popover, not far above: it must clear its own surface and nothing else.
759
- */
760
- .jini-select-menu.jini-runtime-model-menu {
761
- z-index: 1001;
762
- }
763
- .jini-runtime-byok-model strong {
764
- box-sizing: border-box;
765
- display: flex;
766
- align-items: center;
767
- min-height: 40px;
768
- padding: 7px 10px;
769
- color: var(--jini-chat-text);
770
- font-weight: 600;
771
- word-break: break-all;
772
- }
773
- /*
774
- * Tool-call cards (ToolCard.tsx) and the per-turn usage summary (MessageRow.tsx) ship no CSS of
775
- * their own — see this file's own header note on why the package supplies a default theme at all.
776
- * Collapsed by default (.op-card-head is the only always-visible part), so a run with a dozen tool
777
- * calls reads as a dozen one-line rows, not a page of raw JSON.
778
- */
779
- .jini-chat-pane .jini-message-tools {
780
- display: flex;
781
- flex-direction: column;
782
- gap: 6px;
783
- width: 100%;
784
- }
785
- .jini-chat-pane .op-card {
786
- border: 1px solid var(--jini-chat-border);
787
- border-radius: var(--radius);
788
- background: var(--jini-chat-subtle);
789
- overflow: hidden;
790
- font-size: 13px;
791
- }
792
- .jini-chat-pane .op-card-head {
793
- display: flex;
794
- align-items: center;
795
- gap: 8px;
796
- width: 100%;
797
- padding: 7px 10px;
798
- background: none;
799
- border: 0;
800
- font: inherit;
801
- text-align: left;
802
- cursor: pointer;
803
- color: inherit;
804
- }
805
- .jini-chat-pane .op-status { display: inline-flex; flex-shrink: 0; }
806
- .jini-chat-pane .op-status-ok { color: #4e875f; }
807
- .jini-chat-pane .op-status-error { color: var(--danger); }
808
- .jini-chat-pane .op-status-running { color: var(--jini-chat-accent); }
809
- .jini-chat-pane .op-title { font-weight: 600; flex-shrink: 0; }
810
- .jini-chat-pane .shimmer-text { opacity: .6; }
811
- .jini-chat-pane .op-meta {
812
- color: var(--jini-chat-muted);
813
- overflow: hidden;
814
- text-overflow: ellipsis;
815
- white-space: nowrap;
816
- flex: 1;
817
- min-width: 0;
818
- }
819
- .jini-chat-pane .op-expand-chev { flex-shrink: 0; color: var(--jini-chat-faint); }
820
- /* Collapsed by default: 0 max-height clips the inner content, no display:none — keeps the height
821
- transition instead of an instant jump cut. */
822
- .jini-chat-pane .accordion-collapsible { max-height: 0; overflow: hidden; transition: max-height .15s ease; }
823
- .jini-chat-pane .accordion-collapsible.open { max-height: 480px; overflow-y: auto; }
824
- .jini-chat-pane .accordion-collapsible-inner { padding: 0 10px 10px; }
825
- .jini-chat-pane .op-card-detail { display: flex; flex-direction: column; gap: 6px; }
826
- .jini-chat-pane .op-path,
827
- .jini-chat-pane .op-command,
828
- .jini-chat-pane .op-output {
829
- font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
830
- font-size: 12px;
831
- background: var(--jini-chat-panel);
832
- border: 1px solid var(--jini-chat-border);
833
- border-radius: 6px;
834
- padding: 6px 8px;
835
- margin: 0;
836
- white-space: pre-wrap;
837
- word-break: break-word;
838
- }
839
- .jini-chat-pane .op-open {
840
- border: 1px solid var(--jini-chat-border-strong);
841
- border-radius: 6px;
842
- background: var(--jini-chat-panel);
843
- padding: 2px 8px;
844
- font-size: 11px;
845
- cursor: pointer;
846
- }
847
- /* The "Done · 6m 29s · 2612 out · $0.4028" line — real numbers from the run's own kind:'usage' event. */
848
- .jini-chat-pane .jini-message-usage {
849
- display: flex;
850
- align-items: center;
851
- gap: 6px;
852
- font-size: 11px;
853
- color: var(--jini-chat-muted);
854
- margin-top: 2px;
855
- }
856
- .jini-chat-pane .jini-message-usage-dot { font-size: 8px; color: #4e875f; }
857
- @media (max-width: 560px) {
858
- .jini-chat-pane__header { padding-inline: 16px; }
859
- .jini-chat-pane .jini-message-list { padding-inline: 16px; }
860
- .jini-chat-pane__controls { padding-inline: 10px; }
861
- }
862
- `;
863
- //# sourceMappingURL=styles.js.map