glirastes 0.2.1 → 0.3.1

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 (319) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/CODE_OF_CONDUCT.md +85 -0
  3. package/CONTRIBUTING.md +87 -0
  4. package/README.md +268 -23
  5. package/SECURITY.md +46 -0
  6. package/codegen/package.json +5 -0
  7. package/dist/cjs/codegen/asset-sync.d.ts +20 -0
  8. package/dist/cjs/codegen/asset-sync.js +28 -0
  9. package/dist/cjs/codegen/coverage.d.ts +66 -0
  10. package/dist/cjs/codegen/coverage.js +408 -0
  11. package/dist/cjs/codegen/endpoint-scanner.d.ts +16 -0
  12. package/dist/cjs/codegen/endpoint-scanner.js +197 -0
  13. package/dist/cjs/codegen/format.d.ts +17 -0
  14. package/dist/cjs/codegen/format.js +34 -0
  15. package/dist/cjs/codegen/fs-utils.d.ts +45 -0
  16. package/dist/cjs/codegen/fs-utils.js +165 -0
  17. package/dist/cjs/codegen/index.d.ts +13 -0
  18. package/dist/cjs/codegen/index.js +33 -0
  19. package/dist/cjs/codegen/mcp-generator.d.ts +50 -0
  20. package/dist/cjs/codegen/mcp-generator.js +803 -0
  21. package/dist/cjs/codegen/module-generator.d.ts +11 -0
  22. package/dist/cjs/codegen/module-generator.js +353 -0
  23. package/dist/cjs/codegen/nestjs-scanner.d.ts +43 -0
  24. package/dist/cjs/codegen/nestjs-scanner.js +241 -0
  25. package/dist/cjs/codegen/output-recommender.d.ts +23 -0
  26. package/dist/cjs/codegen/output-recommender.js +33 -0
  27. package/dist/cjs/codegen/scaffolder.d.ts +36 -0
  28. package/dist/cjs/codegen/scaffolder.js +262 -0
  29. package/dist/cjs/codegen/skill-generator.d.ts +49 -0
  30. package/dist/cjs/codegen/skill-generator.js +967 -0
  31. package/dist/cjs/codegen/types.d.ts +52 -0
  32. package/dist/cjs/codegen/types.js +16 -0
  33. package/dist/cjs/codegen/ui-scanner.d.ts +24 -0
  34. package/dist/cjs/codegen/ui-scanner.js +202 -0
  35. package/dist/cjs/codegen/validator.d.ts +35 -0
  36. package/dist/cjs/codegen/validator.js +292 -0
  37. package/dist/cjs/index.d.ts +1 -0
  38. package/dist/cjs/index.js +23 -0
  39. package/dist/cjs/openapi/index.d.ts +78 -0
  40. package/dist/cjs/openapi/index.js +347 -0
  41. package/dist/cjs/package.json +1 -0
  42. package/dist/cjs/react/audio-worklet-processor.d.ts +16 -0
  43. package/dist/cjs/react/audio-worklet-processor.js +27 -0
  44. package/dist/cjs/react/bridges/rest-session-bridge.d.ts +113 -0
  45. package/dist/cjs/react/bridges/rest-session-bridge.js +209 -0
  46. package/dist/cjs/react/components/ai-chat-panel.d.ts +12 -0
  47. package/dist/cjs/react/components/ai-chat-panel.js +67 -0
  48. package/dist/cjs/react/components/ai-trigger-button.d.ts +2 -0
  49. package/dist/cjs/react/components/ai-trigger-button.js +239 -0
  50. package/dist/cjs/react/components/approval-card.d.ts +9 -0
  51. package/dist/cjs/react/components/approval-card.js +24 -0
  52. package/dist/cjs/react/components/bulk-approval-card.d.ts +9 -0
  53. package/dist/cjs/react/components/bulk-approval-card.js +36 -0
  54. package/dist/cjs/react/components/chat-input.d.ts +10 -0
  55. package/dist/cjs/react/components/chat-input.js +60 -0
  56. package/dist/cjs/react/components/chat-window.d.ts +2 -0
  57. package/dist/cjs/react/components/chat-window.js +134 -0
  58. package/dist/cjs/react/components/confirm-dialog.d.ts +32 -0
  59. package/dist/cjs/react/components/confirm-dialog.js +48 -0
  60. package/dist/cjs/react/components/floating-chat-ui.d.ts +90 -0
  61. package/dist/cjs/react/components/floating-chat-ui.js +163 -0
  62. package/dist/cjs/react/components/mention-chip.d.ts +16 -0
  63. package/dist/cjs/react/components/mention-chip.js +42 -0
  64. package/dist/cjs/react/components/mention-input.d.ts +8 -0
  65. package/dist/cjs/react/components/mention-input.js +117 -0
  66. package/dist/cjs/react/components/message-bubble.d.ts +11 -0
  67. package/dist/cjs/react/components/message-bubble.js +171 -0
  68. package/dist/cjs/react/components/message-list.d.ts +8 -0
  69. package/dist/cjs/react/components/message-list.js +52 -0
  70. package/dist/cjs/react/components/pipeline-timeline.d.ts +7 -0
  71. package/dist/cjs/react/components/pipeline-timeline.js +72 -0
  72. package/dist/cjs/react/components/recording-bar.d.ts +2 -0
  73. package/dist/cjs/react/components/recording-bar.js +81 -0
  74. package/dist/cjs/react/components/recording-controls.d.ts +18 -0
  75. package/dist/cjs/react/components/recording-controls.js +38 -0
  76. package/dist/cjs/react/components/rich-mention-input.d.ts +2 -0
  77. package/dist/cjs/react/components/rich-mention-input.js +571 -0
  78. package/dist/cjs/react/components/session-switcher.d.ts +14 -0
  79. package/dist/cjs/react/components/session-switcher.js +133 -0
  80. package/dist/cjs/react/components/suggestion-bar.d.ts +9 -0
  81. package/dist/cjs/react/components/suggestion-bar.js +47 -0
  82. package/dist/cjs/react/components/suggestion-chip.d.ts +9 -0
  83. package/dist/cjs/react/components/suggestion-chip.js +14 -0
  84. package/dist/cjs/react/components/voice-input-addon.d.ts +13 -0
  85. package/dist/cjs/react/components/voice-input-addon.js +31 -0
  86. package/dist/cjs/react/components/voice-input-button.d.ts +2 -0
  87. package/dist/cjs/react/components/voice-input-button.js +55 -0
  88. package/dist/cjs/react/components/wavesurfer-loader.d.ts +5 -0
  89. package/dist/cjs/react/components/wavesurfer-loader.js +36 -0
  90. package/dist/cjs/react/hooks/use-ai-chat.d.ts +22 -0
  91. package/dist/cjs/react/hooks/use-ai-chat.js +51 -0
  92. package/dist/cjs/react/hooks/use-approvals.d.ts +23 -0
  93. package/dist/cjs/react/hooks/use-approvals.js +63 -0
  94. package/dist/cjs/react/hooks/use-deepgram-transcription.d.ts +2 -0
  95. package/dist/cjs/react/hooks/use-deepgram-transcription.js +329 -0
  96. package/dist/cjs/react/hooks/use-drag-resize-panel.d.ts +48 -0
  97. package/dist/cjs/react/hooks/use-drag-resize-panel.js +308 -0
  98. package/dist/cjs/react/hooks/use-draggable-position.d.ts +25 -0
  99. package/dist/cjs/react/hooks/use-draggable-position.js +134 -0
  100. package/dist/cjs/react/hooks/use-keyboard-shortcut.d.ts +20 -0
  101. package/dist/cjs/react/hooks/use-keyboard-shortcut.js +93 -0
  102. package/dist/cjs/react/hooks/use-mentions.d.ts +23 -0
  103. package/dist/cjs/react/hooks/use-mentions.js +42 -0
  104. package/dist/cjs/react/hooks/use-suggestions.d.ts +22 -0
  105. package/dist/cjs/react/hooks/use-suggestions.js +39 -0
  106. package/dist/cjs/react/index.d.ts +43 -0
  107. package/dist/cjs/react/index.js +111 -0
  108. package/dist/cjs/react/provider/ai-chat-provider.d.ts +45 -0
  109. package/dist/cjs/react/provider/ai-chat-provider.js +1024 -0
  110. package/dist/cjs/react/provider/chat-context.d.ts +84 -0
  111. package/dist/cjs/react/provider/chat-context.js +13 -0
  112. package/dist/cjs/react/template.d.ts +84 -0
  113. package/dist/cjs/react/template.js +90 -0
  114. package/dist/cjs/react/themes.d.ts +24 -0
  115. package/dist/cjs/react/themes.js +273 -0
  116. package/dist/cjs/react/transports/langgraph/index.d.ts +2 -0
  117. package/dist/cjs/react/transports/langgraph/index.js +8 -0
  118. package/dist/cjs/react/transports/langgraph/langgraph-ai-chat.d.ts +62 -0
  119. package/dist/cjs/react/transports/langgraph/langgraph-ai-chat.js +94 -0
  120. package/dist/cjs/react/transports/langgraph.d.ts +71 -0
  121. package/dist/cjs/react/transports/langgraph.js +369 -0
  122. package/dist/cjs/react/transports/vercel/index.d.ts +2 -0
  123. package/dist/cjs/react/transports/vercel/index.js +8 -0
  124. package/dist/cjs/react/transports/vercel/vercel-ai-chat.d.ts +49 -0
  125. package/dist/cjs/react/transports/vercel/vercel-ai-chat.js +81 -0
  126. package/dist/cjs/react/transports/vercel.d.ts +30 -0
  127. package/dist/cjs/react/transports/vercel.js +69 -0
  128. package/dist/cjs/react/types.d.ts +760 -0
  129. package/dist/cjs/react/types.js +2 -0
  130. package/dist/cjs/react/ui.d.ts +73 -0
  131. package/dist/cjs/react/ui.js +183 -0
  132. package/dist/cjs/react/utils/create-approval-description.d.ts +53 -0
  133. package/dist/cjs/react/utils/create-approval-description.js +122 -0
  134. package/dist/cjs/react/utils/create-tool-result-handler.d.ts +90 -0
  135. package/dist/cjs/react/utils/create-tool-result-handler.js +168 -0
  136. package/dist/cjs/react/utils/mention-markup.d.ts +13 -0
  137. package/dist/cjs/react/utils/mention-markup.js +117 -0
  138. package/dist/cjs/react/utils/merge-pipeline-steps.d.ts +19 -0
  139. package/dist/cjs/react/utils/merge-pipeline-steps.js +81 -0
  140. package/dist/cjs/react/utils/sanitize-stored-messages.d.ts +23 -0
  141. package/dist/cjs/react/utils/sanitize-stored-messages.js +52 -0
  142. package/dist/cjs/server/adapters/nestjs/chat/ai-chat-auth.guard.d.ts +10 -0
  143. package/dist/cjs/server/adapters/nestjs/chat/ai-chat-auth.guard.js +42 -0
  144. package/dist/cjs/server/adapters/nestjs/chat/ai-chat-module-options.interface.d.ts +32 -0
  145. package/dist/cjs/server/adapters/nestjs/chat/ai-chat-module-options.interface.js +4 -0
  146. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.controller.d.ts +11 -0
  147. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.controller.js +80 -0
  148. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.module.d.ts +9 -0
  149. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.module.js +119 -0
  150. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.service.d.ts +13 -0
  151. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.service.js +131 -0
  152. package/dist/cjs/server/adapters/nestjs/chat/dto/ai-chat-request.dto.d.ts +7 -0
  153. package/dist/cjs/server/adapters/nestjs/chat/dto/ai-chat-request.dto.js +52 -0
  154. package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message-part.dto.d.ts +19 -0
  155. package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message-part.dto.js +108 -0
  156. package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message.dto.d.ts +8 -0
  157. package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message.dto.js +59 -0
  158. package/dist/cjs/server/adapters/nestjs/chat/dto/index.d.ts +3 -0
  159. package/dist/cjs/server/adapters/nestjs/chat/dto/index.js +9 -0
  160. package/dist/cjs/server/adapters/nestjs/chat/index.d.ts +3 -0
  161. package/dist/cjs/server/adapters/nestjs/chat/index.js +9 -0
  162. package/dist/cjs/server/adapters/nestjs/chat/speech-stream.gateway.d.ts +4 -0
  163. package/dist/cjs/server/adapters/nestjs/chat/speech-stream.gateway.js +73 -0
  164. package/dist/cjs/server/adapters/nestjs/chat/ws-loader.d.ts +5 -0
  165. package/dist/cjs/server/adapters/nestjs/chat/ws-loader.js +72 -0
  166. package/dist/cjs/server/adapters/nestjs/decorators/ai-module.decorator.d.ts +6 -0
  167. package/dist/cjs/server/adapters/nestjs/decorators/ai-module.decorator.js +13 -0
  168. package/dist/cjs/server/adapters/nestjs/decorators/ai-param.decorator.d.ts +5 -0
  169. package/dist/cjs/server/adapters/nestjs/decorators/ai-param.decorator.js +15 -0
  170. package/dist/cjs/server/adapters/nestjs/decorators/ai-tool.decorator.d.ts +6 -0
  171. package/dist/cjs/server/adapters/nestjs/decorators/ai-tool.decorator.js +22 -0
  172. package/dist/cjs/server/adapters/nestjs/decorators/constants.d.ts +4 -0
  173. package/dist/cjs/server/adapters/nestjs/decorators/constants.js +7 -0
  174. package/dist/cjs/server/adapters/nestjs/index.d.ts +14 -0
  175. package/dist/cjs/server/adapters/nestjs/index.js +42 -0
  176. package/dist/cjs/server/adapters/nestjs/metadata.d.ts +39 -0
  177. package/dist/cjs/server/adapters/nestjs/metadata.js +36 -0
  178. package/dist/cjs/server/adapters/nestjs/module/ai-tools-explorer.service.d.ts +36 -0
  179. package/dist/cjs/server/adapters/nestjs/module/ai-tools-explorer.service.js +159 -0
  180. package/dist/cjs/server/adapters/nestjs/module/ai-tools.module.d.ts +37 -0
  181. package/dist/cjs/server/adapters/nestjs/module/ai-tools.module.js +44 -0
  182. package/dist/cjs/server/adapters/nestjs/module/ai-tools.service.d.ts +28 -0
  183. package/dist/cjs/server/adapters/nestjs/module/ai-tools.service.js +41 -0
  184. package/dist/cjs/server/adapters/nestjs/scanner/nestjs-scanner.d.ts +16 -0
  185. package/dist/cjs/server/adapters/nestjs/scanner/nestjs-scanner.js +117 -0
  186. package/dist/cjs/server/adapters/nestjs/scanner/schema-builder.d.ts +26 -0
  187. package/dist/cjs/server/adapters/nestjs/scanner/schema-builder.js +259 -0
  188. package/dist/cjs/server/adapters/nestjs/swagger.d.ts +7 -0
  189. package/dist/cjs/server/adapters/nestjs/swagger.js +39 -0
  190. package/dist/cjs/server/adapters/nextjs/context-helpers.d.ts +22 -0
  191. package/dist/cjs/server/adapters/nextjs/context-helpers.js +60 -0
  192. package/dist/cjs/server/adapters/nextjs/create-ai-chat-handler.d.ts +94 -0
  193. package/dist/cjs/server/adapters/nextjs/create-ai-chat-handler.js +965 -0
  194. package/dist/cjs/server/adapters/nextjs/filter-fallback-error.d.ts +11 -0
  195. package/dist/cjs/server/adapters/nextjs/filter-fallback-error.js +41 -0
  196. package/dist/cjs/server/adapters/nextjs/index.d.ts +8 -0
  197. package/dist/cjs/server/adapters/nextjs/index.js +22 -0
  198. package/dist/cjs/server/adapters/nextjs/prepare-model-messages.d.ts +58 -0
  199. package/dist/cjs/server/adapters/nextjs/prepare-model-messages.js +114 -0
  200. package/dist/cjs/server/adapters/nextjs/sanitize-model-messages.d.ts +64 -0
  201. package/dist/cjs/server/adapters/nextjs/sanitize-model-messages.js +489 -0
  202. package/dist/cjs/server/adapters/nextjs/server-action-helper.d.ts +7 -0
  203. package/dist/cjs/server/adapters/nextjs/server-action-helper.js +40 -0
  204. package/dist/cjs/server/adapters/nextjs/types.d.ts +246 -0
  205. package/dist/cjs/server/adapters/nextjs/types.js +2 -0
  206. package/dist/cjs/server/adapters/nextjs/with-ai-tool.d.ts +9 -0
  207. package/dist/cjs/server/adapters/nextjs/with-ai-tool.js +12 -0
  208. package/dist/cjs/server/core/followup-tool.d.ts +9 -0
  209. package/dist/cjs/server/core/followup-tool.js +82 -0
  210. package/dist/cjs/server/core/index.d.ts +139 -0
  211. package/dist/cjs/server/core/index.js +818 -0
  212. package/dist/cjs/server/core/intent-classifier.d.ts +94 -0
  213. package/dist/cjs/server/core/intent-classifier.js +324 -0
  214. package/dist/cjs/server/core/model-selector.d.ts +12 -0
  215. package/dist/cjs/server/core/model-selector.js +48 -0
  216. package/dist/cjs/server/core/module-router.d.ts +14 -0
  217. package/dist/cjs/server/core/module-router.js +110 -0
  218. package/dist/cjs/server/core/zod-compact.d.ts +18 -0
  219. package/dist/cjs/server/core/zod-compact.js +129 -0
  220. package/dist/cjs/server/index.d.ts +6 -0
  221. package/dist/cjs/server/index.js +28 -0
  222. package/dist/cjs/server/lancer/cache.d.ts +9 -0
  223. package/dist/cjs/server/lancer/cache.js +33 -0
  224. package/dist/cjs/server/lancer/client.d.ts +2 -0
  225. package/dist/cjs/server/lancer/client.js +279 -0
  226. package/dist/cjs/server/lancer/errors.d.ts +13 -0
  227. package/dist/cjs/server/lancer/errors.js +21 -0
  228. package/dist/cjs/server/lancer/index.d.ts +3 -0
  229. package/dist/cjs/server/lancer/index.js +7 -0
  230. package/dist/cjs/server/lancer/telemetry-buffer.d.ts +15 -0
  231. package/dist/cjs/server/lancer/telemetry-buffer.js +64 -0
  232. package/dist/cjs/server/lancer/types.d.ts +201 -0
  233. package/dist/cjs/server/lancer/types.js +5 -0
  234. package/dist/cjs/server/pii-shield/aegis-detector.d.ts +26 -0
  235. package/dist/cjs/server/pii-shield/aegis-detector.js +26 -0
  236. package/dist/cjs/server/pii-shield/create-pii-shield.d.ts +2 -0
  237. package/dist/cjs/server/pii-shield/create-pii-shield.js +191 -0
  238. package/dist/cjs/server/pii-shield/deep-walk.d.ts +1 -0
  239. package/dist/cjs/server/pii-shield/deep-walk.js +19 -0
  240. package/dist/cjs/server/pii-shield/fake-data.d.ts +5 -0
  241. package/dist/cjs/server/pii-shield/fake-data.js +170 -0
  242. package/dist/cjs/server/pii-shield/index.d.ts +4 -0
  243. package/dist/cjs/server/pii-shield/index.js +9 -0
  244. package/dist/cjs/server/pii-shield/leakage.d.ts +1 -0
  245. package/dist/cjs/server/pii-shield/leakage.js +15 -0
  246. package/dist/cjs/server/pii-shield/session-mapping.d.ts +12 -0
  247. package/dist/cjs/server/pii-shield/session-mapping.js +70 -0
  248. package/dist/cjs/server/pipeline.d.ts +26 -0
  249. package/dist/cjs/server/pipeline.js +127 -0
  250. package/dist/cjs/server/testing/approvals.d.ts +11 -0
  251. package/dist/cjs/server/testing/approvals.js +41 -0
  252. package/dist/cjs/server/testing/combination.d.ts +3 -0
  253. package/dist/cjs/server/testing/combination.js +83 -0
  254. package/dist/cjs/server/testing/create-test-suite.d.ts +29 -0
  255. package/dist/cjs/server/testing/create-test-suite.js +81 -0
  256. package/dist/cjs/server/testing/edge-cases.d.ts +8 -0
  257. package/dist/cjs/server/testing/edge-cases.js +277 -0
  258. package/dist/cjs/server/testing/guardrails.d.ts +14 -0
  259. package/dist/cjs/server/testing/guardrails.js +152 -0
  260. package/dist/cjs/server/testing/helpers.d.ts +14 -0
  261. package/dist/cjs/server/testing/helpers.js +119 -0
  262. package/dist/cjs/server/testing/index.d.ts +12 -0
  263. package/dist/cjs/server/testing/index.js +37 -0
  264. package/dist/cjs/server/testing/mock-executor.d.ts +8 -0
  265. package/dist/cjs/server/testing/mock-executor.js +40 -0
  266. package/dist/cjs/server/testing/regression.d.ts +7 -0
  267. package/dist/cjs/server/testing/regression.js +27 -0
  268. package/dist/cjs/server/testing/routing.d.ts +12 -0
  269. package/dist/cjs/server/testing/routing.js +63 -0
  270. package/dist/cjs/server/testing/schema-consistency.d.ts +6 -0
  271. package/dist/cjs/server/testing/schema-consistency.js +56 -0
  272. package/dist/cjs/server/testing/smoke.d.ts +11 -0
  273. package/dist/cjs/server/testing/smoke.js +64 -0
  274. package/dist/cjs/server/testing/types.d.ts +156 -0
  275. package/dist/cjs/server/testing/types.js +2 -0
  276. package/dist/cjs/types.d.ts +696 -0
  277. package/dist/cjs/types.js +91 -0
  278. package/dist/cli/commands/install-skills.d.ts +17 -0
  279. package/dist/cli/commands/install-skills.js +185 -0
  280. package/dist/cli/commands/install-skills.js.map +1 -0
  281. package/dist/cli/index.js +25 -0
  282. package/dist/cli/index.js.map +1 -1
  283. package/dist/react/components/ai-trigger-button.js +4 -6
  284. package/dist/react/components/ai-trigger-button.js.map +1 -1
  285. package/dist/react/components/recording-bar.js +4 -6
  286. package/dist/react/components/recording-bar.js.map +1 -1
  287. package/dist/react/components/wavesurfer-loader.d.ts +5 -0
  288. package/dist/react/components/wavesurfer-loader.js +34 -0
  289. package/dist/react/components/wavesurfer-loader.js.map +1 -0
  290. package/dist/server/adapters/nestjs/chat/ai-chat.module.d.ts +1 -1
  291. package/dist/server/adapters/nestjs/chat/ai-chat.module.js +3 -2
  292. package/dist/server/adapters/nestjs/chat/ai-chat.module.js.map +1 -1
  293. package/dist/server/adapters/nestjs/chat/speech-stream.gateway.d.ts +1 -1
  294. package/dist/server/adapters/nestjs/chat/speech-stream.gateway.js +10 -8
  295. package/dist/server/adapters/nestjs/chat/speech-stream.gateway.js.map +1 -1
  296. package/dist/server/adapters/nestjs/chat/ws-loader.d.ts +5 -0
  297. package/dist/server/adapters/nestjs/chat/ws-loader.js +37 -0
  298. package/dist/server/adapters/nestjs/chat/ws-loader.js.map +1 -0
  299. package/dist/server/adapters/nextjs/create-ai-chat-handler.d.ts +16 -0
  300. package/dist/server/adapters/nextjs/create-ai-chat-handler.js +14 -3
  301. package/dist/server/adapters/nextjs/create-ai-chat-handler.js.map +1 -1
  302. package/dist/server/adapters/nextjs/filter-fallback-error.d.ts +11 -0
  303. package/dist/server/adapters/nextjs/filter-fallback-error.js +38 -0
  304. package/dist/server/adapters/nextjs/filter-fallback-error.js.map +1 -0
  305. package/openapi/package.json +5 -0
  306. package/package.json +66 -21
  307. package/react/langgraph/package.json +5 -0
  308. package/react/package.json +5 -0
  309. package/react/vercel/package.json +5 -0
  310. package/server/nestjs/package.json +5 -0
  311. package/server/nextjs/package.json +5 -0
  312. package/server/package.json +5 -0
  313. package/server/testing/package.json +5 -0
  314. package/skills/README.md +107 -0
  315. package/skills/building-glirastes-chat-ui/SKILL.md +378 -0
  316. package/skills/integrating-glirastes-nestjs/SKILL.md +346 -0
  317. package/skills/integrating-glirastes-nextjs/SKILL.md +306 -0
  318. package/skills/integrating-glirastes-nextjs-with-nestjs-backend/SKILL.md +359 -0
  319. package/skills/maintaining-glirastes-tools/SKILL.md +463 -0
@@ -0,0 +1,11 @@
1
+ type ErrorChunk = {
2
+ type: 'error';
3
+ errorText: string;
4
+ };
5
+ declare function isErrorChunk(chunk: unknown): chunk is ErrorChunk;
6
+ export declare function filterFallbackError<T>(source: ReadableStream<T>): ReadableStream<T>;
7
+ export declare const __testing__: {
8
+ FALLBACK_ERROR_TEXT: string;
9
+ isErrorChunk: typeof isErrorChunk;
10
+ };
11
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.__testing__ = void 0;
4
+ exports.filterFallbackError = filterFallbackError;
5
+ /**
6
+ * The Vercel AI SDK emits a generic
7
+ * { type: 'error', errorText: 'No output generated. Check the stream for errors.' }
8
+ * chunk whenever `streamText` finishes with no text output — including the
9
+ * (very common) case where it already streamed a real error chunk earlier
10
+ * in the same response (e.g. an upstream provider rejection).
11
+ *
12
+ * That double-error confuses chat UIs: the first message says "API key
13
+ * invalid", the second says "no output, check the stream for errors", and
14
+ * users have no way to tell they describe the same incident.
15
+ *
16
+ * This transform drops the fallback error iff a more specific error chunk
17
+ * has already been forwarded in the same stream. The first error always
18
+ * passes through unchanged.
19
+ */
20
+ const FALLBACK_ERROR_TEXT = 'No output generated. Check the stream for errors.';
21
+ function isErrorChunk(chunk) {
22
+ return (typeof chunk === 'object' &&
23
+ chunk !== null &&
24
+ chunk.type === 'error' &&
25
+ typeof chunk.errorText === 'string');
26
+ }
27
+ function filterFallbackError(source) {
28
+ let seenError = false;
29
+ return source.pipeThrough(new TransformStream({
30
+ transform(chunk, controller) {
31
+ if (isErrorChunk(chunk)) {
32
+ if (seenError && chunk.errorText === FALLBACK_ERROR_TEXT) {
33
+ return; // drop the duplicate fallback
34
+ }
35
+ seenError = true;
36
+ }
37
+ controller.enqueue(chunk);
38
+ },
39
+ }));
40
+ }
41
+ exports.__testing__ = { FALLBACK_ERROR_TEXT, isErrorChunk };
@@ -0,0 +1,8 @@
1
+ export { withAiTool } from './with-ai-tool.js';
2
+ export { createAiChatHandler, type StreamHandlerContext, type AiChatHandlerFullConfig, } from './create-ai-chat-handler.js';
3
+ export { extractOrigin, buildRuntimeContext, buildToolContext, createInternalApiCallerFromRequest, } from './context-helpers.js';
4
+ export { sanitizeModelMessages } from './sanitize-model-messages.js';
5
+ export { prepareModelMessages, wrapToolsForVercelAi, type PrepareModelMessagesOptions, } from './prepare-model-messages.js';
6
+ export { executeTool } from './server-action-helper.js';
7
+ export { createNextInternalApiCaller } from '../../core/index.js';
8
+ export type { WithAiToolOptions, AiToolRouteHandler, AiChatHandlerConfig, LoadTools, GuardrailResult, GuardrailHook, IntentRoutingResult, IntentRouter, StepLimitSource, StepUsage, PipelineStepReport, PipelineStreamStatus, PipelineStreamState, ExecuteToolOptions, ExecuteToolResult, AiPipeline, FollowupsConfig, PipelineResult, } from './types.js';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNextInternalApiCaller = exports.executeTool = exports.wrapToolsForVercelAi = exports.prepareModelMessages = exports.sanitizeModelMessages = exports.createInternalApiCallerFromRequest = exports.buildToolContext = exports.buildRuntimeContext = exports.extractOrigin = exports.createAiChatHandler = exports.withAiTool = void 0;
4
+ var with_ai_tool_js_1 = require("./with-ai-tool.js");
5
+ Object.defineProperty(exports, "withAiTool", { enumerable: true, get: function () { return with_ai_tool_js_1.withAiTool; } });
6
+ var create_ai_chat_handler_js_1 = require("./create-ai-chat-handler.js");
7
+ Object.defineProperty(exports, "createAiChatHandler", { enumerable: true, get: function () { return create_ai_chat_handler_js_1.createAiChatHandler; } });
8
+ var context_helpers_js_1 = require("./context-helpers.js");
9
+ Object.defineProperty(exports, "extractOrigin", { enumerable: true, get: function () { return context_helpers_js_1.extractOrigin; } });
10
+ Object.defineProperty(exports, "buildRuntimeContext", { enumerable: true, get: function () { return context_helpers_js_1.buildRuntimeContext; } });
11
+ Object.defineProperty(exports, "buildToolContext", { enumerable: true, get: function () { return context_helpers_js_1.buildToolContext; } });
12
+ Object.defineProperty(exports, "createInternalApiCallerFromRequest", { enumerable: true, get: function () { return context_helpers_js_1.createInternalApiCallerFromRequest; } });
13
+ var sanitize_model_messages_js_1 = require("./sanitize-model-messages.js");
14
+ Object.defineProperty(exports, "sanitizeModelMessages", { enumerable: true, get: function () { return sanitize_model_messages_js_1.sanitizeModelMessages; } });
15
+ var prepare_model_messages_js_1 = require("./prepare-model-messages.js");
16
+ Object.defineProperty(exports, "prepareModelMessages", { enumerable: true, get: function () { return prepare_model_messages_js_1.prepareModelMessages; } });
17
+ Object.defineProperty(exports, "wrapToolsForVercelAi", { enumerable: true, get: function () { return prepare_model_messages_js_1.wrapToolsForVercelAi; } });
18
+ var server_action_helper_js_1 = require("./server-action-helper.js");
19
+ Object.defineProperty(exports, "executeTool", { enumerable: true, get: function () { return server_action_helper_js_1.executeTool; } });
20
+ // Re-export from server-node for convenience
21
+ var index_js_1 = require("../../core/index.js");
22
+ Object.defineProperty(exports, "createNextInternalApiCaller", { enumerable: true, get: function () { return index_js_1.createNextInternalApiCaller; } });
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Utilities for preparing model messages and wrapping tools for Vercel AI SDK.
3
+ *
4
+ * - {@link prepareModelMessages} encapsulates the full pipeline:
5
+ * `convertToModelMessages` → `slice` → `pruneMessages` → `sanitizeModelMessages`
6
+ *
7
+ * - {@link wrapToolsForVercelAi} converts SDK tools (from `toolsToAiTools`) into
8
+ * Vercel AI SDK `tool()` instances ready for `streamText()`.
9
+ *
10
+ * @module
11
+ */
12
+ import { type UIMessage } from 'ai';
13
+ export interface PrepareModelMessagesOptions {
14
+ /** Max model messages to keep after slicing (default: 12). */
15
+ maxContextMessages?: number;
16
+ /** Override pruneMessages config. */
17
+ pruneConfig?: {
18
+ /** How to handle reasoning blocks (default: 'none'). */
19
+ reasoning?: 'none' | 'keep';
20
+ /** Tool-call pruning strategy (default: 'before-last-3-messages'). */
21
+ toolCalls?: string;
22
+ /** Empty message handling (default: 'remove'). */
23
+ emptyMessages?: 'remove' | 'keep';
24
+ };
25
+ }
26
+ /**
27
+ * Convert UI messages into sanitized model messages ready for `streamText()`.
28
+ *
29
+ * Pipeline:
30
+ * 1. `convertToModelMessages` (with `ignoreIncompleteToolCalls: true`)
31
+ * 2. Slice to `maxContextMessages`
32
+ * 3. `pruneMessages` — remove old reasoning / tool-calls / empty messages
33
+ * 4. `sanitizeModelMessages` — strip orphaned tool-calls for OpenAI compatibility
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * import { prepareModelMessages } from './index.js';
38
+ *
39
+ * const messages = await prepareModelMessages(uiMessages, {
40
+ * maxContextMessages: 12,
41
+ * });
42
+ * // messages is safe to pass to streamText()
43
+ * ```
44
+ */
45
+ export declare function prepareModelMessages(uiMessages: UIMessage[], options?: PrepareModelMessagesOptions): Promise<unknown[]>;
46
+ /**
47
+ * Convert SDK AI tools (output of `toolsToAiTools`) into Vercel AI SDK
48
+ * `tool()` instances.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * import { wrapToolsForVercelAi } from './index.js';
53
+ *
54
+ * const vercelTools = wrapToolsForVercelAi(ctx.tools);
55
+ * const result = streamText({ tools: vercelTools, ... });
56
+ * ```
57
+ */
58
+ export declare function wrapToolsForVercelAi(sdkTools: Record<string, unknown>): Record<string, unknown>;
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ /**
3
+ * Utilities for preparing model messages and wrapping tools for Vercel AI SDK.
4
+ *
5
+ * - {@link prepareModelMessages} encapsulates the full pipeline:
6
+ * `convertToModelMessages` → `slice` → `pruneMessages` → `sanitizeModelMessages`
7
+ *
8
+ * - {@link wrapToolsForVercelAi} converts SDK tools (from `toolsToAiTools`) into
9
+ * Vercel AI SDK `tool()` instances ready for `streamText()`.
10
+ *
11
+ * @module
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.prepareModelMessages = prepareModelMessages;
15
+ exports.wrapToolsForVercelAi = wrapToolsForVercelAi;
16
+ const ai_1 = require("ai");
17
+ const sanitize_model_messages_js_1 = require("./sanitize-model-messages.js");
18
+ /**
19
+ * Convert UI messages into sanitized model messages ready for `streamText()`.
20
+ *
21
+ * Pipeline:
22
+ * 1. `convertToModelMessages` (with `ignoreIncompleteToolCalls: true`)
23
+ * 2. Slice to `maxContextMessages`
24
+ * 3. `pruneMessages` — remove old reasoning / tool-calls / empty messages
25
+ * 4. `sanitizeModelMessages` — strip orphaned tool-calls for OpenAI compatibility
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * import { prepareModelMessages } from './index.js';
30
+ *
31
+ * const messages = await prepareModelMessages(uiMessages, {
32
+ * maxContextMessages: 12,
33
+ * });
34
+ * // messages is safe to pass to streamText()
35
+ * ```
36
+ */
37
+ async function prepareModelMessages(uiMessages, options) {
38
+ const maxCtx = options?.maxContextMessages ?? 12;
39
+ const raw = await (0, ai_1.convertToModelMessages)(uiMessages, {
40
+ ignoreIncompleteToolCalls: true,
41
+ });
42
+ const sliced = raw.slice(-maxCtx);
43
+ const pruned = (0, ai_1.pruneMessages)({
44
+ messages: sliced,
45
+ reasoning: (options?.pruneConfig?.reasoning ?? 'none'),
46
+ toolCalls: (options?.pruneConfig?.toolCalls ??
47
+ 'before-last-3-messages'),
48
+ emptyMessages: (options?.pruneConfig?.emptyMessages ?? 'remove'),
49
+ });
50
+ const sanitized = (0, sanitize_model_messages_js_1.sanitizeModelMessages)(pruned);
51
+ // Strip uiAction from tool-result parts — the LLM doesn't need them
52
+ // (uiActions are auto-generated by SDK templates and consumed by the client)
53
+ return stripUiActionsFromToolResults(sanitized);
54
+ }
55
+ // ---------------------------------------------------------------------------
56
+ // stripUiActionsFromToolResults
57
+ // ---------------------------------------------------------------------------
58
+ /**
59
+ * Remove `uiAction` fields from tool-result parts in model messages.
60
+ *
61
+ * UI actions are auto-generated by SDK templates (uiActionOnSuccess, uiPattern)
62
+ * and consumed by the client for toasts, navigation, and refreshes. The LLM
63
+ * doesn't generate or use them — keeping them wastes 100-500 tokens per call.
64
+ *
65
+ * This runs AFTER sanitization so it doesn't interfere with orphan detection.
66
+ */
67
+ function stripUiActionsFromToolResults(messages) {
68
+ return messages.map((msg) => {
69
+ const m = msg;
70
+ if (m.role !== 'tool' || !Array.isArray(m.content))
71
+ return msg;
72
+ const newContent = m.content.map((part) => {
73
+ if (part.type !== 'tool-result' || !isPlainObject(part.result)) {
74
+ return part;
75
+ }
76
+ const result = part.result;
77
+ if (!('uiAction' in result))
78
+ return part;
79
+ const { uiAction: _stripped, ...rest } = result;
80
+ return { ...part, result: rest };
81
+ });
82
+ return { ...m, content: newContent };
83
+ });
84
+ }
85
+ function isPlainObject(v) {
86
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
87
+ }
88
+ /**
89
+ * Convert SDK AI tools (output of `toolsToAiTools`) into Vercel AI SDK
90
+ * `tool()` instances.
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * import { wrapToolsForVercelAi } from './index.js';
95
+ *
96
+ * const vercelTools = wrapToolsForVercelAi(ctx.tools);
97
+ * const result = streamText({ tools: vercelTools, ... });
98
+ * ```
99
+ */
100
+ function wrapToolsForVercelAi(sdkTools) {
101
+ const wrapped = {};
102
+ for (const [name, raw] of Object.entries(sdkTools)) {
103
+ const sdkTool = raw;
104
+ wrapped[name] = (0, ai_1.tool)({
105
+ description: sdkTool.description,
106
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
107
+ inputSchema: (0, ai_1.zodSchema)(sdkTool.parameters),
108
+ needsApproval: sdkTool.needsApproval,
109
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
110
+ execute: sdkTool.execute,
111
+ });
112
+ }
113
+ return wrapped;
114
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Sanitize model messages for OpenAI compatibility.
3
+ *
4
+ * Handles three classes of problems that occur after convertToModelMessages +
5
+ * pruneMessages from the Vercel AI SDK:
6
+ *
7
+ * 1. **Orphaned tool-calls** — assistant has tool-call but no matching
8
+ * tool-result anywhere (pruneMessages stripped it).
9
+ * 2. **Orphaned tool-approval-requests** — approval request without matching
10
+ * response, or whose linked tool-call was removed.
11
+ * 3. **Ordering violations** — OpenAI requires tool-result messages to
12
+ * IMMEDIATELY follow their assistant message. After pruning, the ordering
13
+ * can break.
14
+ *
15
+ * **Important:** The OpenAI provider silently drops `tool-approval-response`
16
+ * parts during serialization. A tool message containing ONLY approval-responses
17
+ * (no tool-result) produces zero OpenAI messages. Therefore, a tool-call is
18
+ * only considered "safe" when it has an adjacent `tool-result` — a
19
+ * `tool-approval-response` alone does NOT satisfy this requirement.
20
+ *
21
+ * **Exception:** When the LAST message is a tool message containing
22
+ * `tool-approval-response` parts, those tool-calls are preserved. The Vercel
23
+ * AI SDK's `streamText` runs `collectToolApprovals()` on the last message
24
+ * and executes approved tools BEFORE sending anything to OpenAI. Stripping
25
+ * these would break the approval flow (causing an infinite loop where the
26
+ * model re-generates the same tool call).
27
+ *
28
+ * The public API is {@link sanitizeModelMessages}, which runs two passes:
29
+ * - Primary pass: adjacency-based orphan removal
30
+ * - Safety-net pass: strict re-check for any remaining orphans
31
+ *
32
+ * @module
33
+ */
34
+ /**
35
+ * Sanitize model messages by removing orphaned tool-calls and
36
+ * tool-approval-requests.
37
+ *
38
+ * A tool-call is considered orphaned when it does not have an adjacent
39
+ * `tool-result` in the immediately following tool message(s). A
40
+ * `tool-approval-response` alone does NOT count — the OpenAI provider
41
+ * silently drops these during serialization.
42
+ *
43
+ * **Exception:** Tool-calls with a `tool-approval-response` in the LAST
44
+ * message are preserved. The Vercel AI SDK's `streamText` runs
45
+ * `collectToolApprovals()` to execute approved tools before calling the
46
+ * model provider, so these are safe to keep.
47
+ *
48
+ * Call this on the output of `pruneMessages()` (from the `ai` SDK) before
49
+ * passing messages to `streamText()`. Or use {@link prepareModelMessages}
50
+ * which calls this automatically.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * import { sanitizeModelMessages } from './index.js';
55
+ *
56
+ * const raw = await convertToModelMessages(uiMessages, {
57
+ * ignoreIncompleteToolCalls: true,
58
+ * });
59
+ * const pruned = pruneMessages({ messages: raw.slice(-12), ... });
60
+ * const clean = sanitizeModelMessages(pruned);
61
+ * // clean is safe to pass to streamText()
62
+ * ```
63
+ */
64
+ export declare function sanitizeModelMessages<T>(messages: T[]): T[];