glirastes 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 (424) hide show
  1. package/CHANGELOG.md +468 -0
  2. package/README.md +651 -0
  3. package/dist/cli/bin.d.ts +2 -0
  4. package/dist/cli/bin.js +34 -0
  5. package/dist/cli/bin.js.map +1 -0
  6. package/dist/cli/commands/check-upgrade.d.ts +15 -0
  7. package/dist/cli/commands/check-upgrade.js +138 -0
  8. package/dist/cli/commands/check-upgrade.js.map +1 -0
  9. package/dist/cli/commands/test.d.ts +8 -0
  10. package/dist/cli/commands/test.js +76 -0
  11. package/dist/cli/commands/test.js.map +1 -0
  12. package/dist/cli/index.d.ts +1 -0
  13. package/dist/cli/index.js +609 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/cli/utils/changelog-parser.d.ts +13 -0
  16. package/dist/cli/utils/changelog-parser.js +89 -0
  17. package/dist/cli/utils/changelog-parser.js.map +1 -0
  18. package/dist/cli/utils/commit-parser.d.ts +8 -0
  19. package/dist/cli/utils/commit-parser.js +23 -0
  20. package/dist/cli/utils/commit-parser.js.map +1 -0
  21. package/dist/cli/utils/gap-detector.d.ts +14 -0
  22. package/dist/cli/utils/gap-detector.js +65 -0
  23. package/dist/cli/utils/gap-detector.js.map +1 -0
  24. package/dist/cli/utils/get-cli-version.d.ts +2 -0
  25. package/dist/cli/utils/get-cli-version.js +10 -0
  26. package/dist/cli/utils/get-cli-version.js.map +1 -0
  27. package/dist/codegen/asset-sync.d.ts +20 -0
  28. package/dist/codegen/asset-sync.js +26 -0
  29. package/dist/codegen/asset-sync.js.map +1 -0
  30. package/dist/codegen/coverage.d.ts +66 -0
  31. package/dist/codegen/coverage.js +372 -0
  32. package/dist/codegen/coverage.js.map +1 -0
  33. package/dist/codegen/endpoint-scanner.d.ts +16 -0
  34. package/dist/codegen/endpoint-scanner.js +161 -0
  35. package/dist/codegen/endpoint-scanner.js.map +1 -0
  36. package/dist/codegen/format.d.ts +17 -0
  37. package/dist/codegen/format.js +28 -0
  38. package/dist/codegen/format.js.map +1 -0
  39. package/dist/codegen/fs-utils.d.ts +45 -0
  40. package/dist/codegen/fs-utils.js +155 -0
  41. package/dist/codegen/fs-utils.js.map +1 -0
  42. package/dist/codegen/index.d.ts +13 -0
  43. package/dist/codegen/index.js +13 -0
  44. package/dist/codegen/index.js.map +1 -0
  45. package/dist/codegen/mcp-generator.d.ts +50 -0
  46. package/dist/codegen/mcp-generator.js +801 -0
  47. package/dist/codegen/mcp-generator.js.map +1 -0
  48. package/dist/codegen/module-generator.d.ts +11 -0
  49. package/dist/codegen/module-generator.js +351 -0
  50. package/dist/codegen/module-generator.js.map +1 -0
  51. package/dist/codegen/nestjs-scanner.d.ts +43 -0
  52. package/dist/codegen/nestjs-scanner.js +239 -0
  53. package/dist/codegen/nestjs-scanner.js.map +1 -0
  54. package/dist/codegen/output-recommender.d.ts +23 -0
  55. package/dist/codegen/output-recommender.js +31 -0
  56. package/dist/codegen/output-recommender.js.map +1 -0
  57. package/dist/codegen/scaffolder.d.ts +36 -0
  58. package/dist/codegen/scaffolder.js +259 -0
  59. package/dist/codegen/scaffolder.js.map +1 -0
  60. package/dist/codegen/skill-generator.d.ts +49 -0
  61. package/dist/codegen/skill-generator.js +965 -0
  62. package/dist/codegen/skill-generator.js.map +1 -0
  63. package/dist/codegen/types.d.ts +52 -0
  64. package/dist/codegen/types.js +14 -0
  65. package/dist/codegen/types.js.map +1 -0
  66. package/dist/codegen/ui-scanner.d.ts +24 -0
  67. package/dist/codegen/ui-scanner.js +197 -0
  68. package/dist/codegen/ui-scanner.js.map +1 -0
  69. package/dist/codegen/validator.d.ts +35 -0
  70. package/dist/codegen/validator.js +256 -0
  71. package/dist/codegen/validator.js.map +1 -0
  72. package/dist/openapi/demo-generate.d.ts +1 -0
  73. package/dist/openapi/demo-generate.js +15 -0
  74. package/dist/openapi/demo-generate.js.map +1 -0
  75. package/dist/openapi/index.d.ts +78 -0
  76. package/dist/openapi/index.js +341 -0
  77. package/dist/openapi/index.js.map +1 -0
  78. package/dist/react/audio-worklet-processor.d.ts +9 -0
  79. package/dist/react/audio-worklet-processor.js +28 -0
  80. package/dist/react/audio-worklet-processor.js.map +1 -0
  81. package/dist/react/bridges/rest-session-bridge.d.ts +113 -0
  82. package/dist/react/bridges/rest-session-bridge.js +207 -0
  83. package/dist/react/bridges/rest-session-bridge.js.map +1 -0
  84. package/dist/react/components/ai-chat-panel.d.ts +12 -0
  85. package/dist/react/components/ai-chat-panel.js +65 -0
  86. package/dist/react/components/ai-chat-panel.js.map +1 -0
  87. package/dist/react/components/ai-trigger-button.d.ts +2 -0
  88. package/dist/react/components/ai-trigger-button.js +239 -0
  89. package/dist/react/components/ai-trigger-button.js.map +1 -0
  90. package/dist/react/components/approval-card.d.ts +9 -0
  91. package/dist/react/components/approval-card.js +22 -0
  92. package/dist/react/components/approval-card.js.map +1 -0
  93. package/dist/react/components/bulk-approval-card.d.ts +9 -0
  94. package/dist/react/components/bulk-approval-card.js +34 -0
  95. package/dist/react/components/bulk-approval-card.js.map +1 -0
  96. package/dist/react/components/chat-input.d.ts +10 -0
  97. package/dist/react/components/chat-input.js +58 -0
  98. package/dist/react/components/chat-input.js.map +1 -0
  99. package/dist/react/components/chat-window.d.ts +2 -0
  100. package/dist/react/components/chat-window.js +132 -0
  101. package/dist/react/components/chat-window.js.map +1 -0
  102. package/dist/react/components/confirm-dialog.d.ts +32 -0
  103. package/dist/react/components/confirm-dialog.js +46 -0
  104. package/dist/react/components/confirm-dialog.js.map +1 -0
  105. package/dist/react/components/floating-chat-ui.d.ts +84 -0
  106. package/dist/react/components/floating-chat-ui.js +161 -0
  107. package/dist/react/components/floating-chat-ui.js.map +1 -0
  108. package/dist/react/components/mention-chip.d.ts +16 -0
  109. package/dist/react/components/mention-chip.js +39 -0
  110. package/dist/react/components/mention-chip.js.map +1 -0
  111. package/dist/react/components/mention-input.d.ts +8 -0
  112. package/dist/react/components/mention-input.js +115 -0
  113. package/dist/react/components/mention-input.js.map +1 -0
  114. package/dist/react/components/message-bubble.d.ts +11 -0
  115. package/dist/react/components/message-bubble.js +123 -0
  116. package/dist/react/components/message-bubble.js.map +1 -0
  117. package/dist/react/components/message-list.d.ts +8 -0
  118. package/dist/react/components/message-list.js +50 -0
  119. package/dist/react/components/message-list.js.map +1 -0
  120. package/dist/react/components/pipeline-timeline.d.ts +7 -0
  121. package/dist/react/components/pipeline-timeline.js +70 -0
  122. package/dist/react/components/pipeline-timeline.js.map +1 -0
  123. package/dist/react/components/recording-bar.d.ts +2 -0
  124. package/dist/react/components/recording-bar.js +81 -0
  125. package/dist/react/components/recording-bar.js.map +1 -0
  126. package/dist/react/components/recording-controls.d.ts +18 -0
  127. package/dist/react/components/recording-controls.js +35 -0
  128. package/dist/react/components/recording-controls.js.map +1 -0
  129. package/dist/react/components/rich-mention-input.d.ts +2 -0
  130. package/dist/react/components/rich-mention-input.js +569 -0
  131. package/dist/react/components/rich-mention-input.js.map +1 -0
  132. package/dist/react/components/session-switcher.d.ts +14 -0
  133. package/dist/react/components/session-switcher.js +131 -0
  134. package/dist/react/components/session-switcher.js.map +1 -0
  135. package/dist/react/components/suggestion-bar.d.ts +9 -0
  136. package/dist/react/components/suggestion-bar.js +45 -0
  137. package/dist/react/components/suggestion-bar.js.map +1 -0
  138. package/dist/react/components/suggestion-chip.d.ts +9 -0
  139. package/dist/react/components/suggestion-chip.js +12 -0
  140. package/dist/react/components/suggestion-chip.js.map +1 -0
  141. package/dist/react/components/voice-input-addon.d.ts +13 -0
  142. package/dist/react/components/voice-input-addon.js +29 -0
  143. package/dist/react/components/voice-input-addon.js.map +1 -0
  144. package/dist/react/components/voice-input-button.d.ts +2 -0
  145. package/dist/react/components/voice-input-button.js +53 -0
  146. package/dist/react/components/voice-input-button.js.map +1 -0
  147. package/dist/react/hooks/use-ai-chat.d.ts +22 -0
  148. package/dist/react/hooks/use-ai-chat.js +49 -0
  149. package/dist/react/hooks/use-ai-chat.js.map +1 -0
  150. package/dist/react/hooks/use-approvals.d.ts +23 -0
  151. package/dist/react/hooks/use-approvals.js +61 -0
  152. package/dist/react/hooks/use-approvals.js.map +1 -0
  153. package/dist/react/hooks/use-deepgram-transcription.d.ts +2 -0
  154. package/dist/react/hooks/use-deepgram-transcription.js +327 -0
  155. package/dist/react/hooks/use-deepgram-transcription.js.map +1 -0
  156. package/dist/react/hooks/use-drag-resize-panel.d.ts +48 -0
  157. package/dist/react/hooks/use-drag-resize-panel.js +306 -0
  158. package/dist/react/hooks/use-drag-resize-panel.js.map +1 -0
  159. package/dist/react/hooks/use-draggable-position.d.ts +25 -0
  160. package/dist/react/hooks/use-draggable-position.js +132 -0
  161. package/dist/react/hooks/use-draggable-position.js.map +1 -0
  162. package/dist/react/hooks/use-keyboard-shortcut.d.ts +20 -0
  163. package/dist/react/hooks/use-keyboard-shortcut.js +91 -0
  164. package/dist/react/hooks/use-keyboard-shortcut.js.map +1 -0
  165. package/dist/react/hooks/use-mentions.d.ts +23 -0
  166. package/dist/react/hooks/use-mentions.js +40 -0
  167. package/dist/react/hooks/use-mentions.js.map +1 -0
  168. package/dist/react/hooks/use-suggestions.d.ts +22 -0
  169. package/dist/react/hooks/use-suggestions.js +37 -0
  170. package/dist/react/hooks/use-suggestions.js.map +1 -0
  171. package/dist/react/index.d.ts +43 -0
  172. package/dist/react/index.js +53 -0
  173. package/dist/react/index.js.map +1 -0
  174. package/dist/react/provider/ai-chat-provider.d.ts +45 -0
  175. package/dist/react/provider/ai-chat-provider.js +1021 -0
  176. package/dist/react/provider/ai-chat-provider.js.map +1 -0
  177. package/dist/react/provider/chat-context.d.ts +84 -0
  178. package/dist/react/provider/chat-context.js +10 -0
  179. package/dist/react/provider/chat-context.js.map +1 -0
  180. package/dist/react/styles.css +897 -0
  181. package/dist/react/template.d.ts +84 -0
  182. package/dist/react/template.js +83 -0
  183. package/dist/react/template.js.map +1 -0
  184. package/dist/react/themes.d.ts +24 -0
  185. package/dist/react/themes.js +269 -0
  186. package/dist/react/themes.js.map +1 -0
  187. package/dist/react/transports/langgraph/index.d.ts +2 -0
  188. package/dist/react/transports/langgraph/index.js +3 -0
  189. package/dist/react/transports/langgraph/index.js.map +1 -0
  190. package/dist/react/transports/langgraph/langgraph-ai-chat.d.ts +62 -0
  191. package/dist/react/transports/langgraph/langgraph-ai-chat.js +92 -0
  192. package/dist/react/transports/langgraph/langgraph-ai-chat.js.map +1 -0
  193. package/dist/react/transports/langgraph.d.ts +71 -0
  194. package/dist/react/transports/langgraph.js +366 -0
  195. package/dist/react/transports/langgraph.js.map +1 -0
  196. package/dist/react/transports/vercel/index.d.ts +2 -0
  197. package/dist/react/transports/vercel/index.js +3 -0
  198. package/dist/react/transports/vercel/index.js.map +1 -0
  199. package/dist/react/transports/vercel/vercel-ai-chat.d.ts +49 -0
  200. package/dist/react/transports/vercel/vercel-ai-chat.js +79 -0
  201. package/dist/react/transports/vercel/vercel-ai-chat.js.map +1 -0
  202. package/dist/react/transports/vercel.d.ts +30 -0
  203. package/dist/react/transports/vercel.js +67 -0
  204. package/dist/react/transports/vercel.js.map +1 -0
  205. package/dist/react/types.d.ts +750 -0
  206. package/dist/react/types.js +2 -0
  207. package/dist/react/types.js.map +1 -0
  208. package/dist/react/ui.d.ts +73 -0
  209. package/dist/react/ui.js +170 -0
  210. package/dist/react/ui.js.map +1 -0
  211. package/dist/react/utils/create-approval-description.d.ts +53 -0
  212. package/dist/react/utils/create-approval-description.js +120 -0
  213. package/dist/react/utils/create-approval-description.js.map +1 -0
  214. package/dist/react/utils/create-tool-result-handler.d.ts +90 -0
  215. package/dist/react/utils/create-tool-result-handler.js +166 -0
  216. package/dist/react/utils/create-tool-result-handler.js.map +1 -0
  217. package/dist/react/utils/mention-markup.d.ts +13 -0
  218. package/dist/react/utils/mention-markup.js +111 -0
  219. package/dist/react/utils/mention-markup.js.map +1 -0
  220. package/dist/react/utils/merge-pipeline-steps.d.ts +19 -0
  221. package/dist/react/utils/merge-pipeline-steps.js +79 -0
  222. package/dist/react/utils/merge-pipeline-steps.js.map +1 -0
  223. package/dist/react/utils/sanitize-stored-messages.d.ts +23 -0
  224. package/dist/react/utils/sanitize-stored-messages.js +50 -0
  225. package/dist/react/utils/sanitize-stored-messages.js.map +1 -0
  226. package/dist/server/adapters/nestjs/chat/ai-chat-auth.guard.d.ts +10 -0
  227. package/dist/server/adapters/nestjs/chat/ai-chat-auth.guard.js +40 -0
  228. package/dist/server/adapters/nestjs/chat/ai-chat-auth.guard.js.map +1 -0
  229. package/dist/server/adapters/nestjs/chat/ai-chat-module-options.interface.d.ts +32 -0
  230. package/dist/server/adapters/nestjs/chat/ai-chat-module-options.interface.js +2 -0
  231. package/dist/server/adapters/nestjs/chat/ai-chat-module-options.interface.js.map +1 -0
  232. package/dist/server/adapters/nestjs/chat/ai-chat.controller.d.ts +11 -0
  233. package/dist/server/adapters/nestjs/chat/ai-chat.controller.js +78 -0
  234. package/dist/server/adapters/nestjs/chat/ai-chat.controller.js.map +1 -0
  235. package/dist/server/adapters/nestjs/chat/ai-chat.module.d.ts +9 -0
  236. package/dist/server/adapters/nestjs/chat/ai-chat.module.js +116 -0
  237. package/dist/server/adapters/nestjs/chat/ai-chat.module.js.map +1 -0
  238. package/dist/server/adapters/nestjs/chat/ai-chat.service.d.ts +13 -0
  239. package/dist/server/adapters/nestjs/chat/ai-chat.service.js +129 -0
  240. package/dist/server/adapters/nestjs/chat/ai-chat.service.js.map +1 -0
  241. package/dist/server/adapters/nestjs/chat/dto/ai-chat-request.dto.d.ts +7 -0
  242. package/dist/server/adapters/nestjs/chat/dto/ai-chat-request.dto.js +49 -0
  243. package/dist/server/adapters/nestjs/chat/dto/ai-chat-request.dto.js.map +1 -0
  244. package/dist/server/adapters/nestjs/chat/dto/chat-message-part.dto.d.ts +19 -0
  245. package/dist/server/adapters/nestjs/chat/dto/chat-message-part.dto.js +105 -0
  246. package/dist/server/adapters/nestjs/chat/dto/chat-message-part.dto.js.map +1 -0
  247. package/dist/server/adapters/nestjs/chat/dto/chat-message.dto.d.ts +8 -0
  248. package/dist/server/adapters/nestjs/chat/dto/chat-message.dto.js +56 -0
  249. package/dist/server/adapters/nestjs/chat/dto/chat-message.dto.js.map +1 -0
  250. package/dist/server/adapters/nestjs/chat/dto/index.d.ts +3 -0
  251. package/dist/server/adapters/nestjs/chat/dto/index.js +4 -0
  252. package/dist/server/adapters/nestjs/chat/dto/index.js.map +1 -0
  253. package/dist/server/adapters/nestjs/chat/index.d.ts +3 -0
  254. package/dist/server/adapters/nestjs/chat/index.js +3 -0
  255. package/dist/server/adapters/nestjs/chat/index.js.map +1 -0
  256. package/dist/server/adapters/nestjs/chat/speech-stream.gateway.d.ts +4 -0
  257. package/dist/server/adapters/nestjs/chat/speech-stream.gateway.js +69 -0
  258. package/dist/server/adapters/nestjs/chat/speech-stream.gateway.js.map +1 -0
  259. package/dist/server/adapters/nestjs/decorators/ai-module.decorator.d.ts +6 -0
  260. package/dist/server/adapters/nestjs/decorators/ai-module.decorator.js +11 -0
  261. package/dist/server/adapters/nestjs/decorators/ai-module.decorator.js.map +1 -0
  262. package/dist/server/adapters/nestjs/decorators/ai-param.decorator.d.ts +5 -0
  263. package/dist/server/adapters/nestjs/decorators/ai-param.decorator.js +13 -0
  264. package/dist/server/adapters/nestjs/decorators/ai-param.decorator.js.map +1 -0
  265. package/dist/server/adapters/nestjs/decorators/ai-tool.decorator.d.ts +6 -0
  266. package/dist/server/adapters/nestjs/decorators/ai-tool.decorator.js +20 -0
  267. package/dist/server/adapters/nestjs/decorators/ai-tool.decorator.js.map +1 -0
  268. package/dist/server/adapters/nestjs/decorators/constants.d.ts +4 -0
  269. package/dist/server/adapters/nestjs/decorators/constants.js +5 -0
  270. package/dist/server/adapters/nestjs/decorators/constants.js.map +1 -0
  271. package/dist/server/adapters/nestjs/index.d.ts +14 -0
  272. package/dist/server/adapters/nestjs/index.js +20 -0
  273. package/dist/server/adapters/nestjs/index.js.map +1 -0
  274. package/dist/server/adapters/nestjs/metadata.d.ts +39 -0
  275. package/dist/server/adapters/nestjs/metadata.js +30 -0
  276. package/dist/server/adapters/nestjs/metadata.js.map +1 -0
  277. package/dist/server/adapters/nestjs/module/ai-tools-explorer.service.d.ts +36 -0
  278. package/dist/server/adapters/nestjs/module/ai-tools-explorer.service.js +156 -0
  279. package/dist/server/adapters/nestjs/module/ai-tools-explorer.service.js.map +1 -0
  280. package/dist/server/adapters/nestjs/module/ai-tools.module.d.ts +37 -0
  281. package/dist/server/adapters/nestjs/module/ai-tools.module.js +42 -0
  282. package/dist/server/adapters/nestjs/module/ai-tools.module.js.map +1 -0
  283. package/dist/server/adapters/nestjs/module/ai-tools.service.d.ts +28 -0
  284. package/dist/server/adapters/nestjs/module/ai-tools.service.js +38 -0
  285. package/dist/server/adapters/nestjs/module/ai-tools.service.js.map +1 -0
  286. package/dist/server/adapters/nestjs/scanner/nestjs-scanner.d.ts +16 -0
  287. package/dist/server/adapters/nestjs/scanner/nestjs-scanner.js +115 -0
  288. package/dist/server/adapters/nestjs/scanner/nestjs-scanner.js.map +1 -0
  289. package/dist/server/adapters/nestjs/scanner/schema-builder.d.ts +26 -0
  290. package/dist/server/adapters/nestjs/scanner/schema-builder.js +255 -0
  291. package/dist/server/adapters/nestjs/scanner/schema-builder.js.map +1 -0
  292. package/dist/server/adapters/nestjs/swagger.d.ts +7 -0
  293. package/dist/server/adapters/nestjs/swagger.js +37 -0
  294. package/dist/server/adapters/nestjs/swagger.js.map +1 -0
  295. package/dist/server/adapters/nextjs/context-helpers.d.ts +22 -0
  296. package/dist/server/adapters/nextjs/context-helpers.js +55 -0
  297. package/dist/server/adapters/nextjs/context-helpers.js.map +1 -0
  298. package/dist/server/adapters/nextjs/create-ai-chat-handler.d.ts +78 -0
  299. package/dist/server/adapters/nextjs/create-ai-chat-handler.js +950 -0
  300. package/dist/server/adapters/nextjs/create-ai-chat-handler.js.map +1 -0
  301. package/dist/server/adapters/nextjs/index.d.ts +8 -0
  302. package/dist/server/adapters/nextjs/index.js +9 -0
  303. package/dist/server/adapters/nextjs/index.js.map +1 -0
  304. package/dist/server/adapters/nextjs/prepare-model-messages.d.ts +58 -0
  305. package/dist/server/adapters/nextjs/prepare-model-messages.js +111 -0
  306. package/dist/server/adapters/nextjs/prepare-model-messages.js.map +1 -0
  307. package/dist/server/adapters/nextjs/sanitize-model-messages.d.ts +64 -0
  308. package/dist/server/adapters/nextjs/sanitize-model-messages.js +487 -0
  309. package/dist/server/adapters/nextjs/sanitize-model-messages.js.map +1 -0
  310. package/dist/server/adapters/nextjs/server-action-helper.d.ts +7 -0
  311. package/dist/server/adapters/nextjs/server-action-helper.js +38 -0
  312. package/dist/server/adapters/nextjs/server-action-helper.js.map +1 -0
  313. package/dist/server/adapters/nextjs/types.d.ts +246 -0
  314. package/dist/server/adapters/nextjs/types.js +2 -0
  315. package/dist/server/adapters/nextjs/types.js.map +1 -0
  316. package/dist/server/adapters/nextjs/with-ai-tool.d.ts +9 -0
  317. package/dist/server/adapters/nextjs/with-ai-tool.js +10 -0
  318. package/dist/server/adapters/nextjs/with-ai-tool.js.map +1 -0
  319. package/dist/server/core/followup-tool.d.ts +9 -0
  320. package/dist/server/core/followup-tool.js +80 -0
  321. package/dist/server/core/followup-tool.js.map +1 -0
  322. package/dist/server/core/index.d.ts +139 -0
  323. package/dist/server/core/index.js +787 -0
  324. package/dist/server/core/index.js.map +1 -0
  325. package/dist/server/core/intent-classifier.d.ts +94 -0
  326. package/dist/server/core/intent-classifier.js +314 -0
  327. package/dist/server/core/intent-classifier.js.map +1 -0
  328. package/dist/server/core/model-selector.d.ts +12 -0
  329. package/dist/server/core/model-selector.js +45 -0
  330. package/dist/server/core/model-selector.js.map +1 -0
  331. package/dist/server/core/module-router.d.ts +14 -0
  332. package/dist/server/core/module-router.js +107 -0
  333. package/dist/server/core/module-router.js.map +1 -0
  334. package/dist/server/core/zod-compact.d.ts +18 -0
  335. package/dist/server/core/zod-compact.js +127 -0
  336. package/dist/server/core/zod-compact.js.map +1 -0
  337. package/dist/server/index.d.ts +5 -0
  338. package/dist/server/index.js +8 -0
  339. package/dist/server/index.js.map +1 -0
  340. package/dist/server/lancer/cache.d.ts +9 -0
  341. package/dist/server/lancer/cache.js +30 -0
  342. package/dist/server/lancer/cache.js.map +1 -0
  343. package/dist/server/lancer/client.d.ts +2 -0
  344. package/dist/server/lancer/client.js +277 -0
  345. package/dist/server/lancer/client.js.map +1 -0
  346. package/dist/server/lancer/errors.d.ts +13 -0
  347. package/dist/server/lancer/errors.js +18 -0
  348. package/dist/server/lancer/errors.js.map +1 -0
  349. package/dist/server/lancer/index.d.ts +3 -0
  350. package/dist/server/lancer/index.js +3 -0
  351. package/dist/server/lancer/index.js.map +1 -0
  352. package/dist/server/lancer/telemetry-buffer.d.ts +15 -0
  353. package/dist/server/lancer/telemetry-buffer.js +61 -0
  354. package/dist/server/lancer/telemetry-buffer.js.map +1 -0
  355. package/dist/server/lancer/types.d.ts +201 -0
  356. package/dist/server/lancer/types.js +5 -0
  357. package/dist/server/lancer/types.js.map +1 -0
  358. package/dist/server/pii-shield/aegis-detector.d.ts +26 -0
  359. package/dist/server/pii-shield/aegis-detector.js +24 -0
  360. package/dist/server/pii-shield/aegis-detector.js.map +1 -0
  361. package/dist/server/pii-shield/create-pii-shield.d.ts +2 -0
  362. package/dist/server/pii-shield/create-pii-shield.js +189 -0
  363. package/dist/server/pii-shield/create-pii-shield.js.map +1 -0
  364. package/dist/server/pii-shield/deep-walk.d.ts +1 -0
  365. package/dist/server/pii-shield/deep-walk.js +17 -0
  366. package/dist/server/pii-shield/deep-walk.js.map +1 -0
  367. package/dist/server/pii-shield/fake-data.d.ts +5 -0
  368. package/dist/server/pii-shield/fake-data.js +168 -0
  369. package/dist/server/pii-shield/fake-data.js.map +1 -0
  370. package/dist/server/pii-shield/index.d.ts +4 -0
  371. package/dist/server/pii-shield/index.js +5 -0
  372. package/dist/server/pii-shield/index.js.map +1 -0
  373. package/dist/server/pii-shield/leakage.d.ts +1 -0
  374. package/dist/server/pii-shield/leakage.js +13 -0
  375. package/dist/server/pii-shield/leakage.js.map +1 -0
  376. package/dist/server/pii-shield/session-mapping.d.ts +12 -0
  377. package/dist/server/pii-shield/session-mapping.js +68 -0
  378. package/dist/server/pii-shield/session-mapping.js.map +1 -0
  379. package/dist/server/pipeline.d.ts +26 -0
  380. package/dist/server/pipeline.js +125 -0
  381. package/dist/server/pipeline.js.map +1 -0
  382. package/dist/server/testing/approvals.d.ts +11 -0
  383. package/dist/server/testing/approvals.js +39 -0
  384. package/dist/server/testing/approvals.js.map +1 -0
  385. package/dist/server/testing/combination.d.ts +3 -0
  386. package/dist/server/testing/combination.js +81 -0
  387. package/dist/server/testing/combination.js.map +1 -0
  388. package/dist/server/testing/create-test-suite.d.ts +29 -0
  389. package/dist/server/testing/create-test-suite.js +79 -0
  390. package/dist/server/testing/create-test-suite.js.map +1 -0
  391. package/dist/server/testing/edge-cases.d.ts +8 -0
  392. package/dist/server/testing/edge-cases.js +275 -0
  393. package/dist/server/testing/edge-cases.js.map +1 -0
  394. package/dist/server/testing/guardrails.d.ts +14 -0
  395. package/dist/server/testing/guardrails.js +150 -0
  396. package/dist/server/testing/guardrails.js.map +1 -0
  397. package/dist/server/testing/helpers.d.ts +14 -0
  398. package/dist/server/testing/helpers.js +114 -0
  399. package/dist/server/testing/helpers.js.map +1 -0
  400. package/dist/server/testing/index.d.ts +12 -0
  401. package/dist/server/testing/index.js +21 -0
  402. package/dist/server/testing/index.js.map +1 -0
  403. package/dist/server/testing/mock-executor.d.ts +8 -0
  404. package/dist/server/testing/mock-executor.js +38 -0
  405. package/dist/server/testing/mock-executor.js.map +1 -0
  406. package/dist/server/testing/regression.d.ts +7 -0
  407. package/dist/server/testing/regression.js +25 -0
  408. package/dist/server/testing/regression.js.map +1 -0
  409. package/dist/server/testing/routing.d.ts +12 -0
  410. package/dist/server/testing/routing.js +61 -0
  411. package/dist/server/testing/routing.js.map +1 -0
  412. package/dist/server/testing/schema-consistency.d.ts +6 -0
  413. package/dist/server/testing/schema-consistency.js +54 -0
  414. package/dist/server/testing/schema-consistency.js.map +1 -0
  415. package/dist/server/testing/smoke.d.ts +11 -0
  416. package/dist/server/testing/smoke.js +62 -0
  417. package/dist/server/testing/smoke.js.map +1 -0
  418. package/dist/server/testing/types.d.ts +156 -0
  419. package/dist/server/testing/types.js +2 -0
  420. package/dist/server/testing/types.js.map +1 -0
  421. package/dist/types.d.ts +696 -0
  422. package/dist/types.js +84 -0
  423. package/dist/types.js.map +1 -0
  424. package/package.json +187 -0
@@ -0,0 +1,84 @@
1
+ import type { AiChatPanelProps, ChatInputProps, MessageBubbleProps, MessageListProps } from './types.js';
2
+ type ClassDictionary = Record<string, boolean | null | undefined>;
3
+ type ClassArray = ClassValue[];
4
+ type ClassPrimitive = string | number | null | undefined | false;
5
+ export type ClassValue = ClassPrimitive | ClassDictionary | ClassArray;
6
+ export declare function cn(...values: ClassValue[]): string;
7
+ export declare const defaultTheme: {
8
+ readonly colors: {
9
+ readonly primary: "#6366f1";
10
+ readonly background: "#ffffff";
11
+ readonly bubbleUser: "#e0e7ff";
12
+ readonly bubbleAssistant: "#f3f4f6";
13
+ readonly border: "#e5e7eb";
14
+ readonly text: "#111827";
15
+ readonly textMuted: "#6b7280";
16
+ };
17
+ readonly radius: {
18
+ readonly panel: "0.75rem";
19
+ readonly bubble: "0.75rem";
20
+ readonly input: "0.5rem";
21
+ readonly chip: "9999px";
22
+ };
23
+ readonly spacing: {
24
+ readonly panelPadding: "1rem";
25
+ readonly bubbleGap: "0.75rem";
26
+ readonly inputPadding: "0.75rem";
27
+ };
28
+ };
29
+ export type ChatTheme = typeof defaultTheme;
30
+ export declare const tailwindThemeExtension: {
31
+ readonly colors: {
32
+ readonly 'chat-primary': "rgb(var(--chat-primary) / <alpha-value>)";
33
+ readonly 'chat-background': "rgb(var(--chat-background) / <alpha-value>)";
34
+ readonly 'chat-bubble-user': "rgb(var(--chat-bubble-user) / <alpha-value>)";
35
+ readonly 'chat-bubble-assistant': "rgb(var(--chat-bubble-assistant) / <alpha-value>)";
36
+ readonly 'chat-border': "rgb(var(--chat-border) / <alpha-value>)";
37
+ readonly 'chat-text': "rgb(var(--chat-text) / <alpha-value>)";
38
+ readonly 'chat-text-muted': "rgb(var(--chat-text-muted) / <alpha-value>)";
39
+ };
40
+ readonly borderRadius: {
41
+ readonly 'chat-panel': "0.75rem";
42
+ readonly 'chat-bubble': "0.75rem";
43
+ readonly 'chat-input': "0.5rem";
44
+ readonly 'chat-chip': "9999px";
45
+ };
46
+ };
47
+ export interface StyledMessageBubbleProps extends MessageBubbleProps {
48
+ classNames?: {
49
+ base?: string;
50
+ user?: string;
51
+ assistant?: string;
52
+ system?: string;
53
+ };
54
+ }
55
+ export declare function StyledMessageBubble({ message, className, classNames, }: StyledMessageBubbleProps): import("react/jsx-runtime").JSX.Element;
56
+ export interface StyledMessageListProps extends MessageListProps {
57
+ classNames?: {
58
+ root?: string;
59
+ loadMore?: string;
60
+ bubble?: string;
61
+ };
62
+ }
63
+ export declare function StyledMessageList({ className, classNames }: StyledMessageListProps): import("react/jsx-runtime").JSX.Element;
64
+ export interface StyledChatInputProps extends ChatInputProps {
65
+ classNames?: {
66
+ root?: string;
67
+ textarea?: string;
68
+ sendButton?: string;
69
+ stopButton?: string;
70
+ };
71
+ }
72
+ export declare function StyledChatInput({ className, onSubmit, classNames, }: StyledChatInputProps): import("react/jsx-runtime").JSX.Element;
73
+ export interface StyledChatPanelProps extends AiChatPanelProps {
74
+ classNames?: {
75
+ root?: string;
76
+ errorBanner?: string;
77
+ emptyState?: string;
78
+ suggestionBar?: string;
79
+ suggestionChip?: string;
80
+ mentionChip?: string;
81
+ };
82
+ }
83
+ export declare function StyledChatPanel({ className, classNames }: StyledChatPanelProps): import("react/jsx-runtime").JSX.Element;
84
+ export {};
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { AiChatPanel } from './components/ai-chat-panel.js';
3
+ import { ChatInput } from './components/chat-input.js';
4
+ import { MessageBubble } from './components/message-bubble.js';
5
+ import { MessageList } from './components/message-list.js';
6
+ function appendClass(output, value) {
7
+ if (!value)
8
+ return;
9
+ if (typeof value === 'string' || typeof value === 'number') {
10
+ output.push(String(value));
11
+ return;
12
+ }
13
+ if (Array.isArray(value)) {
14
+ for (const item of value)
15
+ appendClass(output, item);
16
+ return;
17
+ }
18
+ for (const [key, enabled] of Object.entries(value)) {
19
+ if (enabled)
20
+ output.push(key);
21
+ }
22
+ }
23
+ export function cn(...values) {
24
+ const output = [];
25
+ for (const value of values)
26
+ appendClass(output, value);
27
+ return output.join(' ');
28
+ }
29
+ // ---------------------------------------------------------------------------
30
+ // Theme tokens
31
+ // ---------------------------------------------------------------------------
32
+ export const defaultTheme = {
33
+ colors: {
34
+ primary: '#6366f1',
35
+ background: '#ffffff',
36
+ bubbleUser: '#e0e7ff',
37
+ bubbleAssistant: '#f3f4f6',
38
+ border: '#e5e7eb',
39
+ text: '#111827',
40
+ textMuted: '#6b7280',
41
+ },
42
+ radius: {
43
+ panel: '0.75rem',
44
+ bubble: '0.75rem',
45
+ input: '0.5rem',
46
+ chip: '9999px',
47
+ },
48
+ spacing: {
49
+ panelPadding: '1rem',
50
+ bubbleGap: '0.75rem',
51
+ inputPadding: '0.75rem',
52
+ },
53
+ };
54
+ export const tailwindThemeExtension = {
55
+ colors: {
56
+ 'chat-primary': 'rgb(var(--chat-primary) / <alpha-value>)',
57
+ 'chat-background': 'rgb(var(--chat-background) / <alpha-value>)',
58
+ 'chat-bubble-user': 'rgb(var(--chat-bubble-user) / <alpha-value>)',
59
+ 'chat-bubble-assistant': 'rgb(var(--chat-bubble-assistant) / <alpha-value>)',
60
+ 'chat-border': 'rgb(var(--chat-border) / <alpha-value>)',
61
+ 'chat-text': 'rgb(var(--chat-text) / <alpha-value>)',
62
+ 'chat-text-muted': 'rgb(var(--chat-text-muted) / <alpha-value>)',
63
+ },
64
+ borderRadius: {
65
+ 'chat-panel': '0.75rem',
66
+ 'chat-bubble': '0.75rem',
67
+ 'chat-input': '0.5rem',
68
+ 'chat-chip': '9999px',
69
+ },
70
+ };
71
+ export function StyledMessageBubble({ message, className, classNames, }) {
72
+ return (_jsx(MessageBubble, { message: message, className: cn('max-w-[85%] rounded-xl px-4 py-3 text-sm leading-relaxed shadow-sm', classNames?.base, message.role === 'user' && 'ml-auto bg-[rgb(var(--chat-bubble-user,224_231_255))] text-right', message.role === 'user' && classNames?.user, message.role === 'assistant' && 'mr-auto bg-[rgb(var(--chat-bubble-assistant,243_244_246))] text-left', message.role === 'assistant' && classNames?.assistant, message.role === 'system' && 'mx-auto bg-[rgb(var(--chat-bubble-assistant,243_244_246))] text-center', message.role === 'system' && classNames?.system, className) }));
73
+ }
74
+ export function StyledMessageList({ className, classNames }) {
75
+ return (_jsx(MessageList, { className: cn('flex-1 min-h-0 overflow-y-auto px-4 py-3', '[&>[data-action=load-more]]:mx-auto [&>[data-action=load-more]]:mb-3', '[&>[data-action=load-more]]:rounded-md [&>[data-action=load-more]]:border', '[&>[data-action=load-more]]:border-[rgb(var(--chat-border,229_231_235))]', '[&>[data-action=load-more]]:px-3 [&>[data-action=load-more]]:py-1.5', '[&>[data-action=load-more]]:text-xs [&>[data-action=load-more]]:font-medium', '[&>[data-component=message-bubble]]:mb-3', classNames?.root, classNames?.loadMore, classNames?.bubble, className) }));
76
+ }
77
+ export function StyledChatInput({ className, onSubmit, classNames, }) {
78
+ return (_jsx(ChatInput, { className: cn('shrink-0 border-t border-[rgb(var(--chat-border,229_231_235))]', 'bg-[rgb(var(--chat-background,255_255_255))] px-4 py-3', 'flex items-end gap-2', '[&_textarea]:min-h-[44px] [&_textarea]:max-h-[160px] [&_textarea]:flex-1 [&_textarea]:resize-none', '[&_textarea]:rounded-lg [&_textarea]:border [&_textarea]:border-[rgb(var(--chat-border,229_231_235))]', '[&_textarea]:bg-transparent [&_textarea]:px-3 [&_textarea]:py-2.5', '[&_textarea]:text-[rgb(var(--chat-text,17_24_39))]', '[&_textarea]:placeholder:text-[rgb(var(--chat-text-muted,107_114_128))]', '[&_textarea]:outline-none [&_textarea]:focus:ring-2 [&_textarea]:focus:ring-indigo-200', '[&_[data-action=send]]:rounded-lg [&_[data-action=send]]:bg-[rgb(var(--chat-primary,99_102_241))]', '[&_[data-action=send]]:px-3 [&_[data-action=send]]:py-2 [&_[data-action=send]]:text-sm', '[&_[data-action=send]]:font-medium [&_[data-action=send]]:text-white', '[&_[data-action=send]]:disabled:cursor-not-allowed [&_[data-action=send]]:disabled:opacity-50', '[&_[data-action=stop]]:rounded-lg [&_[data-action=stop]]:border', '[&_[data-action=stop]]:border-[rgb(var(--chat-border,229_231_235))]', '[&_[data-action=stop]]:px-3 [&_[data-action=stop]]:py-2 [&_[data-action=stop]]:text-sm', classNames?.root, classNames?.textarea, classNames?.sendButton, classNames?.stopButton, className), onSubmit: onSubmit }));
79
+ }
80
+ export function StyledChatPanel({ className, classNames }) {
81
+ return (_jsx(AiChatPanel, { className: cn('flex h-full min-h-0 flex-col overflow-hidden rounded-xl border', 'border-[rgb(var(--chat-border,229_231_235))]', 'bg-[rgb(var(--chat-background,255_255_255))] text-[rgb(var(--chat-text,17_24_39))]', 'shadow-sm', '[&_[data-component=error-banner]]:border-b [&_[data-component=error-banner]]:border-red-200', '[&_[data-component=error-banner]]:bg-red-50 [&_[data-component=error-banner]]:px-4', '[&_[data-component=error-banner]]:py-2.5 [&_[data-component=error-banner]]:text-sm', '[&_[data-component=empty-state]]:flex-1 [&_[data-component=empty-state]]:grid', '[&_[data-component=empty-state]]:place-items-center [&_[data-component=empty-state]]:px-6', '[&_[data-component=empty-state]]:text-sm [&_[data-component=empty-state]]:text-[rgb(var(--chat-text-muted,107_114_128))]', '[&_[data-component=suggestion-bar]]:px-4 [&_[data-component=suggestion-bar]]:pb-2', '[&_[data-component=suggestion-chip]]:rounded-full', '[&_[data-component=suggestion-chip]]:bg-[rgb(var(--chat-primary,99_102_241))]', '[&_[data-component=suggestion-chip]]:px-3 [&_[data-component=suggestion-chip]]:py-1.5', '[&_[data-component=suggestion-chip]]:text-xs [&_[data-component=suggestion-chip]]:font-medium', '[&_[data-component=suggestion-chip]]:text-white', '[&_[data-component=mention-chip]]:inline-flex [&_[data-component=mention-chip]]:items-center', '[&_[data-component=mention-chip]]:rounded-full [&_[data-component=mention-chip]]:bg-slate-100', '[&_[data-component=mention-chip]]:px-2.5 [&_[data-component=mention-chip]]:py-1', '[&_[data-component=mention-chip]]:text-xs', classNames?.root, classNames?.errorBanner, classNames?.emptyState, classNames?.suggestionBar, classNames?.suggestionChip, classNames?.mentionChip, className) }));
82
+ }
83
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/react/template.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { ChatTheme, ChatThemeColors, ChatThemePreset } from './types.js';
2
+ interface ResolvedTheme {
3
+ colors: Required<ChatThemeColors>;
4
+ radius: string;
5
+ radiusSmall: string;
6
+ fontFamily: string;
7
+ /** Optional effect hint applied as `data-theme-effect` on widget roots. */
8
+ effect?: 'glass';
9
+ }
10
+ declare const PRESETS: Record<ChatThemePreset, ResolvedTheme>;
11
+ export declare const DEFAULT_THEME_PRESET: ChatThemePreset;
12
+ /** Returns the `data-theme-effect` attribute value for a theme, or `undefined`. */
13
+ export declare function getThemeEffect(theme?: ChatTheme): string | undefined;
14
+ /**
15
+ * Resolve a `ChatTheme` prop into a plain `Record<string, string>` of
16
+ * CSS custom properties that can be spread onto a component `style` prop.
17
+ *
18
+ * ```tsx
19
+ * const vars = getThemeVars(theme);
20
+ * <div style={vars}>…</div>
21
+ * ```
22
+ */
23
+ export declare function getThemeVars(theme?: ChatTheme): Record<string, string>;
24
+ export { PRESETS as CHAT_THEME_PRESETS };
@@ -0,0 +1,269 @@
1
+ const DEFAULT_FONT = '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif';
2
+ const MONO_FONT = '"JetBrains Mono", "Fira Code", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace';
3
+ const PROFESSIONAL_LIGHTBLUE = {
4
+ colors: {
5
+ primary: '#6366f1',
6
+ primarySoft: '#818cf8',
7
+ primaryTint: 'rgba(99, 102, 241, 0.12)',
8
+ bg: '#ffffff',
9
+ bgMuted: '#f9fafb',
10
+ bubbleUser: '#e0e7ff',
11
+ bubbleAssistant: '#f3f4f6',
12
+ text: '#111827',
13
+ textMuted: '#6b7280',
14
+ border: '#e5e7eb',
15
+ danger: '#dc2626',
16
+ },
17
+ radius: '0.875rem',
18
+ radiusSmall: '0.5rem',
19
+ fontFamily: DEFAULT_FONT,
20
+ };
21
+ const PROFESSIONAL_DARK = {
22
+ colors: {
23
+ primary: '#818cf8',
24
+ primarySoft: '#a78bfa',
25
+ primaryTint: 'rgba(129, 140, 248, 0.18)',
26
+ bg: '#0f172a',
27
+ bgMuted: '#1e293b',
28
+ bubbleUser: '#312e81',
29
+ bubbleAssistant: '#1e293b',
30
+ text: '#f8fafc',
31
+ textMuted: '#94a3b8',
32
+ border: '#334155',
33
+ danger: '#f87171',
34
+ },
35
+ radius: '0.875rem',
36
+ radiusSmall: '0.5rem',
37
+ fontFamily: DEFAULT_FONT,
38
+ };
39
+ const MINIMAL_WHITE = {
40
+ colors: {
41
+ primary: '#111827',
42
+ primarySoft: '#374151',
43
+ primaryTint: 'rgba(17, 24, 39, 0.06)',
44
+ bg: '#ffffff',
45
+ bgMuted: '#fafafa',
46
+ bubbleUser: '#f3f4f6',
47
+ bubbleAssistant: '#fafafa',
48
+ text: '#111827',
49
+ textMuted: '#6b7280',
50
+ border: '#e5e7eb',
51
+ danger: '#991b1b',
52
+ },
53
+ radius: '0.5rem',
54
+ radiusSmall: '0.375rem',
55
+ fontFamily: DEFAULT_FONT,
56
+ };
57
+ const VIBRANT_INDIGO = {
58
+ colors: {
59
+ primary: '#8b5cf6',
60
+ primarySoft: '#ec4899',
61
+ primaryTint: 'rgba(139, 92, 246, 0.16)',
62
+ bg: '#ffffff',
63
+ bgMuted: '#faf5ff',
64
+ bubbleUser: '#ede9fe',
65
+ bubbleAssistant: '#fdf2f8',
66
+ text: '#1e1b4b',
67
+ textMuted: '#6b21a8',
68
+ border: '#e9d5ff',
69
+ danger: '#dc2626',
70
+ },
71
+ radius: '1.25rem',
72
+ radiusSmall: '0.75rem',
73
+ fontFamily: DEFAULT_FONT,
74
+ };
75
+ const TERMINAL_GREEN = {
76
+ colors: {
77
+ primary: '#22c55e',
78
+ primarySoft: '#4ade80',
79
+ primaryTint: 'rgba(34, 197, 94, 0.15)',
80
+ bg: '#000000',
81
+ bgMuted: '#0a0a0a',
82
+ bubbleUser: '#052e16',
83
+ bubbleAssistant: '#0a0a0a',
84
+ text: '#4ade80',
85
+ textMuted: '#15803d',
86
+ border: '#14532d',
87
+ danger: '#ef4444',
88
+ },
89
+ radius: '0.25rem',
90
+ radiusSmall: '0.125rem',
91
+ fontFamily: MONO_FONT,
92
+ };
93
+ /** Translucent frosted-glass look — pairs with a blurred background. */
94
+ const LIQUID_GLASS = {
95
+ colors: {
96
+ primary: '#60a5fa',
97
+ primarySoft: '#c4b5fd',
98
+ primaryTint: 'rgba(96, 165, 250, 0.18)',
99
+ bg: 'rgba(255, 255, 255, 0.72)',
100
+ bgMuted: 'rgba(255, 255, 255, 0.55)',
101
+ bubbleUser: 'rgba(96, 165, 250, 0.22)',
102
+ bubbleAssistant: 'rgba(255, 255, 255, 0.82)',
103
+ text: '#0f172a',
104
+ textMuted: '#475569',
105
+ border: 'rgba(255, 255, 255, 0.6)',
106
+ danger: '#ef4444',
107
+ },
108
+ radius: '1.5rem',
109
+ radiusSmall: '0.875rem',
110
+ fontFamily: DEFAULT_FONT,
111
+ effect: 'glass',
112
+ };
113
+ const PURPLE_HAZE = {
114
+ colors: {
115
+ primary: '#a855f7',
116
+ primarySoft: '#d946ef',
117
+ primaryTint: 'rgba(168, 85, 247, 0.18)',
118
+ bg: '#1a0b2e',
119
+ bgMuted: '#2a1348',
120
+ bubbleUser: '#4c1d95',
121
+ bubbleAssistant: '#2a1348',
122
+ text: '#f5f3ff',
123
+ textMuted: '#c4b5fd',
124
+ border: '#4c1d95',
125
+ danger: '#fb7185',
126
+ },
127
+ radius: '1rem',
128
+ radiusSmall: '0.625rem',
129
+ fontFamily: DEFAULT_FONT,
130
+ };
131
+ const BLUE_DREAM = {
132
+ colors: {
133
+ primary: '#3b82f6',
134
+ primarySoft: '#0ea5e9',
135
+ primaryTint: 'rgba(59, 130, 246, 0.14)',
136
+ bg: '#f0f9ff',
137
+ bgMuted: '#e0f2fe',
138
+ bubbleUser: '#dbeafe',
139
+ bubbleAssistant: '#ffffff',
140
+ text: '#0c4a6e',
141
+ textMuted: '#0369a1',
142
+ border: '#bae6fd',
143
+ danger: '#dc2626',
144
+ },
145
+ radius: '1.125rem',
146
+ radiusSmall: '0.625rem',
147
+ fontFamily: DEFAULT_FONT,
148
+ };
149
+ const SUNSET_ORANGE = {
150
+ colors: {
151
+ primary: '#f97316',
152
+ primarySoft: '#ec4899',
153
+ primaryTint: 'rgba(249, 115, 22, 0.16)',
154
+ bg: '#fffbeb',
155
+ bgMuted: '#fef3c7',
156
+ bubbleUser: '#fed7aa',
157
+ bubbleAssistant: '#ffffff',
158
+ text: '#7c2d12',
159
+ textMuted: '#b45309',
160
+ border: '#fde68a',
161
+ danger: '#dc2626',
162
+ },
163
+ radius: '1.25rem',
164
+ radiusSmall: '0.75rem',
165
+ fontFamily: DEFAULT_FONT,
166
+ };
167
+ const OCEAN_TEAL = {
168
+ colors: {
169
+ primary: '#14b8a6',
170
+ primarySoft: '#06b6d4',
171
+ primaryTint: 'rgba(20, 184, 166, 0.14)',
172
+ bg: '#042f2e',
173
+ bgMuted: '#134e4a',
174
+ bubbleUser: '#115e59',
175
+ bubbleAssistant: '#134e4a',
176
+ text: '#ccfbf1',
177
+ textMuted: '#5eead4',
178
+ border: '#134e4a',
179
+ danger: '#fb7185',
180
+ },
181
+ radius: '0.875rem',
182
+ radiusSmall: '0.5rem',
183
+ fontFamily: DEFAULT_FONT,
184
+ };
185
+ /** Pure monochrome. Black background, stark white text, zero color. */
186
+ const MIDNIGHT_MONO = {
187
+ colors: {
188
+ primary: '#ffffff',
189
+ primarySoft: '#d4d4d4',
190
+ primaryTint: 'rgba(255, 255, 255, 0.08)',
191
+ bg: '#0a0a0a',
192
+ bgMuted: '#171717',
193
+ bubbleUser: '#262626',
194
+ bubbleAssistant: '#171717',
195
+ text: '#fafafa',
196
+ textMuted: '#a3a3a3',
197
+ border: '#262626',
198
+ danger: '#f87171',
199
+ },
200
+ radius: '0.75rem',
201
+ radiusSmall: '0.375rem',
202
+ fontFamily: DEFAULT_FONT,
203
+ };
204
+ const PRESETS = {
205
+ 'professional-lightblue': PROFESSIONAL_LIGHTBLUE,
206
+ 'professional-dark': PROFESSIONAL_DARK,
207
+ 'minimal-white': MINIMAL_WHITE,
208
+ 'vibrant-indigo': VIBRANT_INDIGO,
209
+ 'terminal-green': TERMINAL_GREEN,
210
+ 'liquid-glass': LIQUID_GLASS,
211
+ 'purple-haze': PURPLE_HAZE,
212
+ 'blue-dream': BLUE_DREAM,
213
+ 'sunset-orange': SUNSET_ORANGE,
214
+ 'ocean-teal': OCEAN_TEAL,
215
+ 'midnight-mono': MIDNIGHT_MONO,
216
+ };
217
+ export const DEFAULT_THEME_PRESET = 'professional-lightblue';
218
+ // ---------------------------------------------------------------------------
219
+ // Resolution
220
+ // ---------------------------------------------------------------------------
221
+ function resolve(theme) {
222
+ if (!theme)
223
+ return PROFESSIONAL_LIGHTBLUE;
224
+ if (typeof theme === 'string')
225
+ return PRESETS[theme] ?? PROFESSIONAL_LIGHTBLUE;
226
+ const override = theme;
227
+ const base = (override.preset && PRESETS[override.preset]) ?? PROFESSIONAL_LIGHTBLUE;
228
+ return {
229
+ colors: { ...base.colors, ...(override.colors ?? {}) },
230
+ radius: override.radius ?? base.radius,
231
+ radiusSmall: override.radiusSmall ?? base.radiusSmall,
232
+ fontFamily: override.fontFamily ?? base.fontFamily,
233
+ effect: base.effect,
234
+ };
235
+ }
236
+ /** Returns the `data-theme-effect` attribute value for a theme, or `undefined`. */
237
+ export function getThemeEffect(theme) {
238
+ return resolve(theme).effect;
239
+ }
240
+ /**
241
+ * Resolve a `ChatTheme` prop into a plain `Record<string, string>` of
242
+ * CSS custom properties that can be spread onto a component `style` prop.
243
+ *
244
+ * ```tsx
245
+ * const vars = getThemeVars(theme);
246
+ * <div style={vars}>…</div>
247
+ * ```
248
+ */
249
+ export function getThemeVars(theme) {
250
+ const r = resolve(theme);
251
+ return {
252
+ '--cm-primary': r.colors.primary,
253
+ '--cm-primary-soft': r.colors.primarySoft,
254
+ '--cm-primary-tint': r.colors.primaryTint,
255
+ '--cm-bg': r.colors.bg,
256
+ '--cm-bg-muted': r.colors.bgMuted,
257
+ '--cm-bubble-user': r.colors.bubbleUser,
258
+ '--cm-bubble-assistant': r.colors.bubbleAssistant,
259
+ '--cm-text': r.colors.text,
260
+ '--cm-text-muted': r.colors.textMuted,
261
+ '--cm-border': r.colors.border,
262
+ '--cm-danger': r.colors.danger,
263
+ '--cm-radius': r.radius,
264
+ '--cm-radius-sm': r.radiusSmall,
265
+ '--cm-font': r.fontFamily,
266
+ };
267
+ }
268
+ export { PRESETS as CHAT_THEME_PRESETS };
269
+ //# sourceMappingURL=themes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.js","sourceRoot":"","sources":["../../src/react/themes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { useLangGraphChatTransport, useLangGraphChatTransport as useLangGraph, type UseLangGraphChatTransportOptions, type LangGraphUpdatesEvent, type LangGraphMessageEvent, type LangGraphCustomEvent, type LangGraphToolCallEvent, type LangGraphToolResultEvent, type LangGraphErrorEvent, type LangGraphRequestBody, } from '../langgraph.js';
2
+ export { LangGraphAiChat, type LangGraphAiChatProps } from './langgraph-ai-chat.js';
@@ -0,0 +1,3 @@
1
+ export { useLangGraphChatTransport, useLangGraphChatTransport as useLangGraph, } from '../langgraph.js';
2
+ export { LangGraphAiChat } from './langgraph-ai-chat.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/react/transports/langgraph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,yBAAyB,IAAI,YAAY,GAS1C,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAA6B,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type FloatingChatUIProps } from '../../components/floating-chat-ui.js';
3
+ import { type LangGraphCustomEvent } from '../langgraph.js';
4
+ import type { AiChatProviderConfig, ChatTransportDataPart, SessionConfig } from '../../types.js';
5
+ export interface LangGraphAiChatProps extends AiChatProviderConfig, FloatingChatUIProps {
6
+ /** Chat API endpoint URL (e.g. `/api/chat`). */
7
+ endpoint: string;
8
+ /** Static headers or a function that returns headers per request. */
9
+ headers?: Record<string, string> | (() => Record<string, string>);
10
+ /**
11
+ * Fixed LangGraph thread id. Ignored when `sessions` is provided —
12
+ * in that mode the active session id is used as the thread id.
13
+ */
14
+ threadId?: string;
15
+ /** Extra fields to merge into every request body. */
16
+ bodyExtras?: Record<string, unknown> | (() => Record<string, unknown>);
17
+ /** fetch credentials mode. Default: `same-origin`. */
18
+ credentials?: RequestCredentials;
19
+ /** Hook for translating backend `event: custom` events into data parts. */
20
+ onCustomEvent?: (evt: LangGraphCustomEvent) => ChatTransportDataPart | null;
21
+ /** Hook for rendering LangGraph `event: updates` as status labels. */
22
+ renderUpdate?: (node: string, update: Record<string, unknown>) => string | null;
23
+ /**
24
+ * Multi-session hooks. When provided, the drop-in renders a session
25
+ * switcher in the header and wires the active session id into the
26
+ * LangGraph transport as `threadId`. Pass your own `SessionConfig`
27
+ * (typically a bridge to `chatService.getSessions/createSession/...`).
28
+ *
29
+ * See `SessionConfig` in `glirastes/react`.
30
+ */
31
+ sessions?: SessionConfig;
32
+ /**
33
+ * Replace the default floating UI with custom children. Useful when you
34
+ * want to compose `<MessageList />`, `<ChatInput />`, etc. yourself or
35
+ * render an inline `<AiChatPanel />` instead of a floating window.
36
+ */
37
+ children?: ReactNode;
38
+ }
39
+ /**
40
+ * Drop-in LangGraph chat widget. Bundles transport, provider, and a
41
+ * floating (trigger button + draggable window) chat UI into one component.
42
+ * Zero dependency on `@ai-sdk/react` or `ai`.
43
+ *
44
+ * ```tsx
45
+ * 'use client';
46
+ * import { LangGraphAiChat } from 'glirastes/react/langgraph';
47
+ *
48
+ * export default function Layout({ children }) {
49
+ * return (
50
+ * <>
51
+ * {children}
52
+ * <LangGraphAiChat endpoint="/api/chat" />
53
+ * </>
54
+ * );
55
+ * }
56
+ * ```
57
+ *
58
+ * All `AiChatProviderConfig` fields (session, mentions, classNames, etc.)
59
+ * and `FloatingChatUIProps` (title, defaultOpen, width, height, draggable,
60
+ * resizable) are accepted as top-level props.
61
+ */
62
+ export declare function LangGraphAiChat({ endpoint, headers, threadId, bodyExtras, credentials, onCustomEvent, renderUpdate, sessions, title, open, onOpenChange, defaultOpen, draggable, resizable, size, hideTriggerWhenOpen, shortcut, showClearButton, confirmClear, showSessionSwitcher, headerActions, triggerIcon, showMic, children, ...providerConfig }: LangGraphAiChatProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,92 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useEffect, useMemo, useState } from 'react';
4
+ import { AiChatProvider } from '../../provider/ai-chat-provider.js';
5
+ import { FloatingChatUI } from '../../components/floating-chat-ui.js';
6
+ import { useLangGraphChatTransport, } from '../langgraph.js';
7
+ /**
8
+ * Drop-in LangGraph chat widget. Bundles transport, provider, and a
9
+ * floating (trigger button + draggable window) chat UI into one component.
10
+ * Zero dependency on `@ai-sdk/react` or `ai`.
11
+ *
12
+ * ```tsx
13
+ * 'use client';
14
+ * import { LangGraphAiChat } from 'glirastes/react/langgraph';
15
+ *
16
+ * export default function Layout({ children }) {
17
+ * return (
18
+ * <>
19
+ * {children}
20
+ * <LangGraphAiChat endpoint="/api/chat" />
21
+ * </>
22
+ * );
23
+ * }
24
+ * ```
25
+ *
26
+ * All `AiChatProviderConfig` fields (session, mentions, classNames, etc.)
27
+ * and `FloatingChatUIProps` (title, defaultOpen, width, height, draggable,
28
+ * resizable) are accepted as top-level props.
29
+ */
30
+ export function LangGraphAiChat({ endpoint, headers, threadId, bodyExtras, credentials, onCustomEvent, renderUpdate, sessions, title, open, onOpenChange, defaultOpen, draggable, resizable, size, hideTriggerWhenOpen, shortcut, showClearButton, confirmClear, showSessionSwitcher, headerActions, triggerIcon, showMic, children, ...providerConfig }) {
31
+ // The widget owns its own copy of the active id so it can feed it to
32
+ // the LangGraph transport as `threadId`. The provider is left in
33
+ // *uncontrolled* mode — we only pass `defaultActiveId` (initial seed)
34
+ // and `onActiveIdChange` (so the provider's auto-select / switchSession
35
+ // calls update our local state). This lets the provider's bootstrap
36
+ // skip ('default' sentinel) work correctly.
37
+ const [activeId, setActiveId] = useState(() => {
38
+ if (sessions?.activeId)
39
+ return sessions.activeId;
40
+ if (sessions?.defaultActiveId)
41
+ return sessions.defaultActiveId;
42
+ return threadId ?? 'default';
43
+ });
44
+ // If the caller controls `activeId` externally, mirror it.
45
+ useEffect(() => {
46
+ if (sessions?.activeId && sessions.activeId !== activeId) {
47
+ setActiveId(sessions.activeId);
48
+ }
49
+ // eslint-disable-next-line react-hooks/exhaustive-deps
50
+ }, [sessions?.activeId]);
51
+ const effectiveThreadId = sessions ? activeId : threadId;
52
+ // When multi-session mode is active, also surface the active id as
53
+ // `sessionId` in the request body. LangGraph projects vary on the
54
+ // canonical name (`threadId` vs `sessionId`); shipping both is harmless
55
+ // and lets backends like chaingrow's `/chat/stream` handler — which
56
+ // reads `body.sessionId` — pick up the active session without the
57
+ // consumer having to wire `bodyExtras` themselves.
58
+ const effectiveBodyExtras = useMemo(() => {
59
+ if (!sessions)
60
+ return bodyExtras;
61
+ return () => {
62
+ const base = typeof bodyExtras === 'function' ? bodyExtras() : bodyExtras ?? {};
63
+ return { ...base, sessionId: activeId };
64
+ };
65
+ }, [sessions, bodyExtras, activeId]);
66
+ const transport = useLangGraphChatTransport({
67
+ endpoint,
68
+ headers,
69
+ threadId: effectiveThreadId,
70
+ bodyExtras: effectiveBodyExtras,
71
+ credentials,
72
+ onCustomEvent,
73
+ renderUpdate,
74
+ });
75
+ const effectiveSession = useMemo(() => {
76
+ if (!sessions)
77
+ return providerConfig.session;
78
+ // Strip any consumer-supplied `activeId` and replace with a seed
79
+ // (`defaultActiveId`) so the provider stays uncontrolled.
80
+ const { activeId: _consumerActiveId, ...rest } = sessions;
81
+ return {
82
+ ...rest,
83
+ defaultActiveId: activeId,
84
+ onActiveIdChange: (id) => {
85
+ setActiveId(id);
86
+ sessions.onActiveIdChange?.(id);
87
+ },
88
+ };
89
+ }, [sessions, activeId, providerConfig.session]);
90
+ return (_jsx(AiChatProvider, { transport: transport, ...providerConfig, session: effectiveSession, children: children ?? (_jsx(FloatingChatUI, { title: title, defaultOpen: defaultOpen, draggable: draggable, resizable: resizable, size: size, hideTriggerWhenOpen: hideTriggerWhenOpen, shortcut: shortcut, showClearButton: showClearButton, confirmClear: confirmClear, showSessionSwitcher: showSessionSwitcher, headerActions: headerActions, triggerIcon: triggerIcon, showMic: showMic })) }));
91
+ }
92
+ //# sourceMappingURL=langgraph-ai-chat.js.map