glirastes 0.3.0 → 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 (310) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +146 -9
  3. package/codegen/package.json +5 -0
  4. package/dist/cjs/codegen/asset-sync.d.ts +20 -0
  5. package/dist/cjs/codegen/asset-sync.js +28 -0
  6. package/dist/cjs/codegen/coverage.d.ts +66 -0
  7. package/dist/cjs/codegen/coverage.js +408 -0
  8. package/dist/cjs/codegen/endpoint-scanner.d.ts +16 -0
  9. package/dist/cjs/codegen/endpoint-scanner.js +197 -0
  10. package/dist/cjs/codegen/format.d.ts +17 -0
  11. package/dist/cjs/codegen/format.js +34 -0
  12. package/dist/cjs/codegen/fs-utils.d.ts +45 -0
  13. package/dist/cjs/codegen/fs-utils.js +165 -0
  14. package/dist/cjs/codegen/index.d.ts +13 -0
  15. package/dist/cjs/codegen/index.js +33 -0
  16. package/dist/cjs/codegen/mcp-generator.d.ts +50 -0
  17. package/dist/cjs/codegen/mcp-generator.js +803 -0
  18. package/dist/cjs/codegen/module-generator.d.ts +11 -0
  19. package/dist/cjs/codegen/module-generator.js +353 -0
  20. package/dist/cjs/codegen/nestjs-scanner.d.ts +43 -0
  21. package/dist/cjs/codegen/nestjs-scanner.js +241 -0
  22. package/dist/cjs/codegen/output-recommender.d.ts +23 -0
  23. package/dist/cjs/codegen/output-recommender.js +33 -0
  24. package/dist/cjs/codegen/scaffolder.d.ts +36 -0
  25. package/dist/cjs/codegen/scaffolder.js +262 -0
  26. package/dist/cjs/codegen/skill-generator.d.ts +49 -0
  27. package/dist/cjs/codegen/skill-generator.js +967 -0
  28. package/dist/cjs/codegen/types.d.ts +52 -0
  29. package/dist/cjs/codegen/types.js +16 -0
  30. package/dist/cjs/codegen/ui-scanner.d.ts +24 -0
  31. package/dist/cjs/codegen/ui-scanner.js +202 -0
  32. package/dist/cjs/codegen/validator.d.ts +35 -0
  33. package/dist/cjs/codegen/validator.js +292 -0
  34. package/dist/cjs/index.d.ts +1 -0
  35. package/dist/cjs/index.js +23 -0
  36. package/dist/cjs/openapi/index.d.ts +78 -0
  37. package/dist/cjs/openapi/index.js +347 -0
  38. package/dist/cjs/package.json +1 -0
  39. package/dist/cjs/react/audio-worklet-processor.d.ts +16 -0
  40. package/dist/cjs/react/audio-worklet-processor.js +27 -0
  41. package/dist/cjs/react/bridges/rest-session-bridge.d.ts +113 -0
  42. package/dist/cjs/react/bridges/rest-session-bridge.js +209 -0
  43. package/dist/cjs/react/components/ai-chat-panel.d.ts +12 -0
  44. package/dist/cjs/react/components/ai-chat-panel.js +67 -0
  45. package/dist/cjs/react/components/ai-trigger-button.d.ts +2 -0
  46. package/dist/cjs/react/components/ai-trigger-button.js +239 -0
  47. package/dist/cjs/react/components/approval-card.d.ts +9 -0
  48. package/dist/cjs/react/components/approval-card.js +24 -0
  49. package/dist/cjs/react/components/bulk-approval-card.d.ts +9 -0
  50. package/dist/cjs/react/components/bulk-approval-card.js +36 -0
  51. package/dist/cjs/react/components/chat-input.d.ts +10 -0
  52. package/dist/cjs/react/components/chat-input.js +60 -0
  53. package/dist/cjs/react/components/chat-window.d.ts +2 -0
  54. package/dist/cjs/react/components/chat-window.js +134 -0
  55. package/dist/cjs/react/components/confirm-dialog.d.ts +32 -0
  56. package/dist/cjs/react/components/confirm-dialog.js +48 -0
  57. package/dist/cjs/react/components/floating-chat-ui.d.ts +90 -0
  58. package/dist/cjs/react/components/floating-chat-ui.js +163 -0
  59. package/dist/cjs/react/components/mention-chip.d.ts +16 -0
  60. package/dist/cjs/react/components/mention-chip.js +42 -0
  61. package/dist/cjs/react/components/mention-input.d.ts +8 -0
  62. package/dist/cjs/react/components/mention-input.js +117 -0
  63. package/dist/cjs/react/components/message-bubble.d.ts +11 -0
  64. package/dist/cjs/react/components/message-bubble.js +171 -0
  65. package/dist/cjs/react/components/message-list.d.ts +8 -0
  66. package/dist/cjs/react/components/message-list.js +52 -0
  67. package/dist/cjs/react/components/pipeline-timeline.d.ts +7 -0
  68. package/dist/cjs/react/components/pipeline-timeline.js +72 -0
  69. package/dist/cjs/react/components/recording-bar.d.ts +2 -0
  70. package/dist/cjs/react/components/recording-bar.js +81 -0
  71. package/dist/cjs/react/components/recording-controls.d.ts +18 -0
  72. package/dist/cjs/react/components/recording-controls.js +38 -0
  73. package/dist/cjs/react/components/rich-mention-input.d.ts +2 -0
  74. package/dist/cjs/react/components/rich-mention-input.js +571 -0
  75. package/dist/cjs/react/components/session-switcher.d.ts +14 -0
  76. package/dist/cjs/react/components/session-switcher.js +133 -0
  77. package/dist/cjs/react/components/suggestion-bar.d.ts +9 -0
  78. package/dist/cjs/react/components/suggestion-bar.js +47 -0
  79. package/dist/cjs/react/components/suggestion-chip.d.ts +9 -0
  80. package/dist/cjs/react/components/suggestion-chip.js +14 -0
  81. package/dist/cjs/react/components/voice-input-addon.d.ts +13 -0
  82. package/dist/cjs/react/components/voice-input-addon.js +31 -0
  83. package/dist/cjs/react/components/voice-input-button.d.ts +2 -0
  84. package/dist/cjs/react/components/voice-input-button.js +55 -0
  85. package/dist/cjs/react/components/wavesurfer-loader.d.ts +5 -0
  86. package/dist/cjs/react/components/wavesurfer-loader.js +36 -0
  87. package/dist/cjs/react/hooks/use-ai-chat.d.ts +22 -0
  88. package/dist/cjs/react/hooks/use-ai-chat.js +51 -0
  89. package/dist/cjs/react/hooks/use-approvals.d.ts +23 -0
  90. package/dist/cjs/react/hooks/use-approvals.js +63 -0
  91. package/dist/cjs/react/hooks/use-deepgram-transcription.d.ts +2 -0
  92. package/dist/cjs/react/hooks/use-deepgram-transcription.js +329 -0
  93. package/dist/cjs/react/hooks/use-drag-resize-panel.d.ts +48 -0
  94. package/dist/cjs/react/hooks/use-drag-resize-panel.js +308 -0
  95. package/dist/cjs/react/hooks/use-draggable-position.d.ts +25 -0
  96. package/dist/cjs/react/hooks/use-draggable-position.js +134 -0
  97. package/dist/cjs/react/hooks/use-keyboard-shortcut.d.ts +20 -0
  98. package/dist/cjs/react/hooks/use-keyboard-shortcut.js +93 -0
  99. package/dist/cjs/react/hooks/use-mentions.d.ts +23 -0
  100. package/dist/cjs/react/hooks/use-mentions.js +42 -0
  101. package/dist/cjs/react/hooks/use-suggestions.d.ts +22 -0
  102. package/dist/cjs/react/hooks/use-suggestions.js +39 -0
  103. package/dist/cjs/react/index.d.ts +43 -0
  104. package/dist/cjs/react/index.js +111 -0
  105. package/dist/cjs/react/provider/ai-chat-provider.d.ts +45 -0
  106. package/dist/cjs/react/provider/ai-chat-provider.js +1024 -0
  107. package/dist/cjs/react/provider/chat-context.d.ts +84 -0
  108. package/dist/cjs/react/provider/chat-context.js +13 -0
  109. package/dist/cjs/react/template.d.ts +84 -0
  110. package/dist/cjs/react/template.js +90 -0
  111. package/dist/cjs/react/themes.d.ts +24 -0
  112. package/dist/cjs/react/themes.js +273 -0
  113. package/dist/cjs/react/transports/langgraph/index.d.ts +2 -0
  114. package/dist/cjs/react/transports/langgraph/index.js +8 -0
  115. package/dist/cjs/react/transports/langgraph/langgraph-ai-chat.d.ts +62 -0
  116. package/dist/cjs/react/transports/langgraph/langgraph-ai-chat.js +94 -0
  117. package/dist/cjs/react/transports/langgraph.d.ts +71 -0
  118. package/dist/cjs/react/transports/langgraph.js +369 -0
  119. package/dist/cjs/react/transports/vercel/index.d.ts +2 -0
  120. package/dist/cjs/react/transports/vercel/index.js +8 -0
  121. package/dist/cjs/react/transports/vercel/vercel-ai-chat.d.ts +49 -0
  122. package/dist/cjs/react/transports/vercel/vercel-ai-chat.js +81 -0
  123. package/dist/cjs/react/transports/vercel.d.ts +30 -0
  124. package/dist/cjs/react/transports/vercel.js +69 -0
  125. package/dist/cjs/react/types.d.ts +760 -0
  126. package/dist/cjs/react/types.js +2 -0
  127. package/dist/cjs/react/ui.d.ts +73 -0
  128. package/dist/cjs/react/ui.js +183 -0
  129. package/dist/cjs/react/utils/create-approval-description.d.ts +53 -0
  130. package/dist/cjs/react/utils/create-approval-description.js +122 -0
  131. package/dist/cjs/react/utils/create-tool-result-handler.d.ts +90 -0
  132. package/dist/cjs/react/utils/create-tool-result-handler.js +168 -0
  133. package/dist/cjs/react/utils/mention-markup.d.ts +13 -0
  134. package/dist/cjs/react/utils/mention-markup.js +117 -0
  135. package/dist/cjs/react/utils/merge-pipeline-steps.d.ts +19 -0
  136. package/dist/cjs/react/utils/merge-pipeline-steps.js +81 -0
  137. package/dist/cjs/react/utils/sanitize-stored-messages.d.ts +23 -0
  138. package/dist/cjs/react/utils/sanitize-stored-messages.js +52 -0
  139. package/dist/cjs/server/adapters/nestjs/chat/ai-chat-auth.guard.d.ts +10 -0
  140. package/dist/cjs/server/adapters/nestjs/chat/ai-chat-auth.guard.js +42 -0
  141. package/dist/cjs/server/adapters/nestjs/chat/ai-chat-module-options.interface.d.ts +32 -0
  142. package/dist/cjs/server/adapters/nestjs/chat/ai-chat-module-options.interface.js +4 -0
  143. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.controller.d.ts +11 -0
  144. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.controller.js +80 -0
  145. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.module.d.ts +9 -0
  146. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.module.js +119 -0
  147. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.service.d.ts +13 -0
  148. package/dist/cjs/server/adapters/nestjs/chat/ai-chat.service.js +131 -0
  149. package/dist/cjs/server/adapters/nestjs/chat/dto/ai-chat-request.dto.d.ts +7 -0
  150. package/dist/cjs/server/adapters/nestjs/chat/dto/ai-chat-request.dto.js +52 -0
  151. package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message-part.dto.d.ts +19 -0
  152. package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message-part.dto.js +108 -0
  153. package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message.dto.d.ts +8 -0
  154. package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message.dto.js +59 -0
  155. package/dist/cjs/server/adapters/nestjs/chat/dto/index.d.ts +3 -0
  156. package/dist/cjs/server/adapters/nestjs/chat/dto/index.js +9 -0
  157. package/dist/cjs/server/adapters/nestjs/chat/index.d.ts +3 -0
  158. package/dist/cjs/server/adapters/nestjs/chat/index.js +9 -0
  159. package/dist/cjs/server/adapters/nestjs/chat/speech-stream.gateway.d.ts +4 -0
  160. package/dist/cjs/server/adapters/nestjs/chat/speech-stream.gateway.js +73 -0
  161. package/dist/cjs/server/adapters/nestjs/chat/ws-loader.d.ts +5 -0
  162. package/dist/cjs/server/adapters/nestjs/chat/ws-loader.js +72 -0
  163. package/dist/cjs/server/adapters/nestjs/decorators/ai-module.decorator.d.ts +6 -0
  164. package/dist/cjs/server/adapters/nestjs/decorators/ai-module.decorator.js +13 -0
  165. package/dist/cjs/server/adapters/nestjs/decorators/ai-param.decorator.d.ts +5 -0
  166. package/dist/cjs/server/adapters/nestjs/decorators/ai-param.decorator.js +15 -0
  167. package/dist/cjs/server/adapters/nestjs/decorators/ai-tool.decorator.d.ts +6 -0
  168. package/dist/cjs/server/adapters/nestjs/decorators/ai-tool.decorator.js +22 -0
  169. package/dist/cjs/server/adapters/nestjs/decorators/constants.d.ts +4 -0
  170. package/dist/cjs/server/adapters/nestjs/decorators/constants.js +7 -0
  171. package/dist/cjs/server/adapters/nestjs/index.d.ts +14 -0
  172. package/dist/cjs/server/adapters/nestjs/index.js +42 -0
  173. package/dist/cjs/server/adapters/nestjs/metadata.d.ts +39 -0
  174. package/dist/cjs/server/adapters/nestjs/metadata.js +36 -0
  175. package/dist/cjs/server/adapters/nestjs/module/ai-tools-explorer.service.d.ts +36 -0
  176. package/dist/cjs/server/adapters/nestjs/module/ai-tools-explorer.service.js +159 -0
  177. package/dist/cjs/server/adapters/nestjs/module/ai-tools.module.d.ts +37 -0
  178. package/dist/cjs/server/adapters/nestjs/module/ai-tools.module.js +44 -0
  179. package/dist/cjs/server/adapters/nestjs/module/ai-tools.service.d.ts +28 -0
  180. package/dist/cjs/server/adapters/nestjs/module/ai-tools.service.js +41 -0
  181. package/dist/cjs/server/adapters/nestjs/scanner/nestjs-scanner.d.ts +16 -0
  182. package/dist/cjs/server/adapters/nestjs/scanner/nestjs-scanner.js +117 -0
  183. package/dist/cjs/server/adapters/nestjs/scanner/schema-builder.d.ts +26 -0
  184. package/dist/cjs/server/adapters/nestjs/scanner/schema-builder.js +259 -0
  185. package/dist/cjs/server/adapters/nestjs/swagger.d.ts +7 -0
  186. package/dist/cjs/server/adapters/nestjs/swagger.js +39 -0
  187. package/dist/cjs/server/adapters/nextjs/context-helpers.d.ts +22 -0
  188. package/dist/cjs/server/adapters/nextjs/context-helpers.js +60 -0
  189. package/dist/cjs/server/adapters/nextjs/create-ai-chat-handler.d.ts +94 -0
  190. package/dist/cjs/server/adapters/nextjs/create-ai-chat-handler.js +965 -0
  191. package/dist/cjs/server/adapters/nextjs/filter-fallback-error.d.ts +11 -0
  192. package/dist/cjs/server/adapters/nextjs/filter-fallback-error.js +41 -0
  193. package/dist/cjs/server/adapters/nextjs/index.d.ts +8 -0
  194. package/dist/cjs/server/adapters/nextjs/index.js +22 -0
  195. package/dist/cjs/server/adapters/nextjs/prepare-model-messages.d.ts +58 -0
  196. package/dist/cjs/server/adapters/nextjs/prepare-model-messages.js +114 -0
  197. package/dist/cjs/server/adapters/nextjs/sanitize-model-messages.d.ts +64 -0
  198. package/dist/cjs/server/adapters/nextjs/sanitize-model-messages.js +489 -0
  199. package/dist/cjs/server/adapters/nextjs/server-action-helper.d.ts +7 -0
  200. package/dist/cjs/server/adapters/nextjs/server-action-helper.js +40 -0
  201. package/dist/cjs/server/adapters/nextjs/types.d.ts +246 -0
  202. package/dist/cjs/server/adapters/nextjs/types.js +2 -0
  203. package/dist/cjs/server/adapters/nextjs/with-ai-tool.d.ts +9 -0
  204. package/dist/cjs/server/adapters/nextjs/with-ai-tool.js +12 -0
  205. package/dist/cjs/server/core/followup-tool.d.ts +9 -0
  206. package/dist/cjs/server/core/followup-tool.js +82 -0
  207. package/dist/cjs/server/core/index.d.ts +139 -0
  208. package/dist/cjs/server/core/index.js +818 -0
  209. package/dist/cjs/server/core/intent-classifier.d.ts +94 -0
  210. package/dist/cjs/server/core/intent-classifier.js +324 -0
  211. package/dist/cjs/server/core/model-selector.d.ts +12 -0
  212. package/dist/cjs/server/core/model-selector.js +48 -0
  213. package/dist/cjs/server/core/module-router.d.ts +14 -0
  214. package/dist/cjs/server/core/module-router.js +110 -0
  215. package/dist/cjs/server/core/zod-compact.d.ts +18 -0
  216. package/dist/cjs/server/core/zod-compact.js +129 -0
  217. package/dist/cjs/server/index.d.ts +6 -0
  218. package/dist/cjs/server/index.js +28 -0
  219. package/dist/cjs/server/lancer/cache.d.ts +9 -0
  220. package/dist/cjs/server/lancer/cache.js +33 -0
  221. package/dist/cjs/server/lancer/client.d.ts +2 -0
  222. package/dist/cjs/server/lancer/client.js +279 -0
  223. package/dist/cjs/server/lancer/errors.d.ts +13 -0
  224. package/dist/cjs/server/lancer/errors.js +21 -0
  225. package/dist/cjs/server/lancer/index.d.ts +3 -0
  226. package/dist/cjs/server/lancer/index.js +7 -0
  227. package/dist/cjs/server/lancer/telemetry-buffer.d.ts +15 -0
  228. package/dist/cjs/server/lancer/telemetry-buffer.js +64 -0
  229. package/dist/cjs/server/lancer/types.d.ts +201 -0
  230. package/dist/cjs/server/lancer/types.js +5 -0
  231. package/dist/cjs/server/pii-shield/aegis-detector.d.ts +26 -0
  232. package/dist/cjs/server/pii-shield/aegis-detector.js +26 -0
  233. package/dist/cjs/server/pii-shield/create-pii-shield.d.ts +2 -0
  234. package/dist/cjs/server/pii-shield/create-pii-shield.js +191 -0
  235. package/dist/cjs/server/pii-shield/deep-walk.d.ts +1 -0
  236. package/dist/cjs/server/pii-shield/deep-walk.js +19 -0
  237. package/dist/cjs/server/pii-shield/fake-data.d.ts +5 -0
  238. package/dist/cjs/server/pii-shield/fake-data.js +170 -0
  239. package/dist/cjs/server/pii-shield/index.d.ts +4 -0
  240. package/dist/cjs/server/pii-shield/index.js +9 -0
  241. package/dist/cjs/server/pii-shield/leakage.d.ts +1 -0
  242. package/dist/cjs/server/pii-shield/leakage.js +15 -0
  243. package/dist/cjs/server/pii-shield/session-mapping.d.ts +12 -0
  244. package/dist/cjs/server/pii-shield/session-mapping.js +70 -0
  245. package/dist/cjs/server/pipeline.d.ts +26 -0
  246. package/dist/cjs/server/pipeline.js +127 -0
  247. package/dist/cjs/server/testing/approvals.d.ts +11 -0
  248. package/dist/cjs/server/testing/approvals.js +41 -0
  249. package/dist/cjs/server/testing/combination.d.ts +3 -0
  250. package/dist/cjs/server/testing/combination.js +83 -0
  251. package/dist/cjs/server/testing/create-test-suite.d.ts +29 -0
  252. package/dist/cjs/server/testing/create-test-suite.js +81 -0
  253. package/dist/cjs/server/testing/edge-cases.d.ts +8 -0
  254. package/dist/cjs/server/testing/edge-cases.js +277 -0
  255. package/dist/cjs/server/testing/guardrails.d.ts +14 -0
  256. package/dist/cjs/server/testing/guardrails.js +152 -0
  257. package/dist/cjs/server/testing/helpers.d.ts +14 -0
  258. package/dist/cjs/server/testing/helpers.js +119 -0
  259. package/dist/cjs/server/testing/index.d.ts +12 -0
  260. package/dist/cjs/server/testing/index.js +37 -0
  261. package/dist/cjs/server/testing/mock-executor.d.ts +8 -0
  262. package/dist/cjs/server/testing/mock-executor.js +40 -0
  263. package/dist/cjs/server/testing/regression.d.ts +7 -0
  264. package/dist/cjs/server/testing/regression.js +27 -0
  265. package/dist/cjs/server/testing/routing.d.ts +12 -0
  266. package/dist/cjs/server/testing/routing.js +63 -0
  267. package/dist/cjs/server/testing/schema-consistency.d.ts +6 -0
  268. package/dist/cjs/server/testing/schema-consistency.js +56 -0
  269. package/dist/cjs/server/testing/smoke.d.ts +11 -0
  270. package/dist/cjs/server/testing/smoke.js +64 -0
  271. package/dist/cjs/server/testing/types.d.ts +156 -0
  272. package/dist/cjs/server/testing/types.js +2 -0
  273. package/dist/cjs/types.d.ts +696 -0
  274. package/dist/cjs/types.js +91 -0
  275. package/dist/cli/commands/install-skills.d.ts +17 -0
  276. package/dist/cli/commands/install-skills.js +185 -0
  277. package/dist/cli/commands/install-skills.js.map +1 -0
  278. package/dist/cli/index.js +25 -0
  279. package/dist/cli/index.js.map +1 -1
  280. package/dist/react/components/ai-trigger-button.js +4 -6
  281. package/dist/react/components/ai-trigger-button.js.map +1 -1
  282. package/dist/react/components/recording-bar.js +4 -6
  283. package/dist/react/components/recording-bar.js.map +1 -1
  284. package/dist/react/components/wavesurfer-loader.d.ts +5 -0
  285. package/dist/react/components/wavesurfer-loader.js +34 -0
  286. package/dist/react/components/wavesurfer-loader.js.map +1 -0
  287. package/dist/server/adapters/nestjs/chat/ai-chat.module.d.ts +1 -1
  288. package/dist/server/adapters/nestjs/chat/ai-chat.module.js +3 -2
  289. package/dist/server/adapters/nestjs/chat/ai-chat.module.js.map +1 -1
  290. package/dist/server/adapters/nestjs/chat/speech-stream.gateway.d.ts +1 -1
  291. package/dist/server/adapters/nestjs/chat/speech-stream.gateway.js +10 -8
  292. package/dist/server/adapters/nestjs/chat/speech-stream.gateway.js.map +1 -1
  293. package/dist/server/adapters/nestjs/chat/ws-loader.d.ts +5 -0
  294. package/dist/server/adapters/nestjs/chat/ws-loader.js +37 -0
  295. package/dist/server/adapters/nestjs/chat/ws-loader.js.map +1 -0
  296. package/openapi/package.json +5 -0
  297. package/package.json +59 -16
  298. package/react/langgraph/package.json +5 -0
  299. package/react/package.json +5 -0
  300. package/react/vercel/package.json +5 -0
  301. package/server/nestjs/package.json +5 -0
  302. package/server/nextjs/package.json +5 -0
  303. package/server/package.json +5 -0
  304. package/server/testing/package.json +5 -0
  305. package/skills/README.md +107 -0
  306. package/skills/building-glirastes-chat-ui/SKILL.md +378 -0
  307. package/skills/integrating-glirastes-nestjs/SKILL.md +346 -0
  308. package/skills/integrating-glirastes-nextjs/SKILL.md +306 -0
  309. package/skills/integrating-glirastes-nextjs-with-nestjs-backend/SKILL.md +359 -0
  310. package/skills/maintaining-glirastes-tools/SKILL.md +463 -0
@@ -11,7 +11,7 @@ import { DiscoveryModule, DiscoveryService, Reflector } from '@nestjs/core';
11
11
  import { AiToolsExplorerService } from '../module/ai-tools-explorer.service.js';
12
12
  import { AiToolsService } from '../module/ai-tools.service.js';
13
13
  import { createAiToolsProviders } from '../module/ai-tools.module.js';
14
- import { WebSocketServer } from 'ws';
14
+ import { loadWs } from './ws-loader.js';
15
15
  import { AiChatController } from './ai-chat.controller.js';
16
16
  import { AiChatService } from './ai-chat.service.js';
17
17
  import { AI_CHAT_MODULE_OPTIONS, } from './ai-chat-module-options.interface.js';
@@ -79,7 +79,7 @@ let AiChatModule = class AiChatModule {
79
79
  exports: [AiToolsService],
80
80
  };
81
81
  }
82
- static attachWebSockets(app) {
82
+ static async attachWebSockets(app) {
83
83
  if (!AiChatModule_1.initialized) {
84
84
  throw new Error('AiChatModule.forRoot() or forRootAsync() must be called before attachWebSockets()');
85
85
  }
@@ -93,6 +93,7 @@ let AiChatModule = class AiChatModule {
93
93
  if (!deepgramKey) {
94
94
  throw new Error('DEEPGRAM_API_KEY environment variable is required when speechToText feature is enabled');
95
95
  }
96
+ const { WebSocketServer } = await loadWs();
96
97
  const httpServer = app.getHttpServer();
97
98
  const wss = new WebSocketServer({ noServer: true });
98
99
  const handleSpeechStream = createSpeechStreamHandler(configService);
@@ -1 +1 @@
1
- {"version":3,"file":"ai-chat.module.js","sourceRoot":"","sources":["../../../../../src/server/adapters/nestjs/chat/ai-chat.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-chat.module.js","sourceRoot":"","sources":["../../../../../src/server/adapters/nestjs/chat/ai-chat.module.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { ConfigService } from '@nestjs/config';
2
2
  import type { IncomingMessage } from 'http';
3
- import WebSocket from 'ws';
3
+ import type WebSocket from 'ws';
4
4
  export declare function createSpeechStreamHandler(configService: ConfigService): (clientSocket: WebSocket, req: IncomingMessage) => Promise<void>;
@@ -1,8 +1,10 @@
1
1
  import { Logger } from '@nestjs/common';
2
- import WebSocket from 'ws';
2
+ import { loadWs } from './ws-loader.js';
3
3
  export function createSpeechStreamHandler(configService) {
4
4
  const logger = new Logger('SpeechStreamGateway');
5
5
  return async (clientSocket, req) => {
6
+ const { WebSocket: WebSocketCtor } = await loadWs();
7
+ const WS_OPEN = WebSocketCtor.OPEN;
6
8
  const url = new URL(req.url ?? '', `http://${req.headers.host}`);
7
9
  const token = url.searchParams.get('token');
8
10
  if (!token) {
@@ -26,41 +28,41 @@ export function createSpeechStreamHandler(configService) {
26
28
  dgUrl.searchParams.set('interim_results', 'true');
27
29
  dgUrl.searchParams.set('encoding', 'linear16');
28
30
  dgUrl.searchParams.set('sample_rate', '16000');
29
- const dgSocket = new WebSocket(dgUrl.toString(), {
31
+ const dgSocket = new WebSocketCtor(dgUrl.toString(), {
30
32
  headers: { Authorization: `Token ${apiKey}` },
31
33
  });
32
34
  dgSocket.on('open', () => {
33
35
  logger.log(`Deepgram connected (language=${language})`);
34
36
  });
35
37
  dgSocket.on('message', (data) => {
36
- if (clientSocket.readyState === WebSocket.OPEN) {
38
+ if (clientSocket.readyState === WS_OPEN) {
37
39
  clientSocket.send(data.toString());
38
40
  }
39
41
  });
40
42
  dgSocket.on('error', (err) => {
41
43
  logger.error(`Deepgram error: ${err.message}`);
42
- if (clientSocket.readyState === WebSocket.OPEN) {
44
+ if (clientSocket.readyState === WS_OPEN) {
43
45
  clientSocket.send(JSON.stringify({ type: 'error', message: 'Transcription error' }));
44
46
  }
45
47
  });
46
48
  dgSocket.on('close', () => {
47
- if (clientSocket.readyState === WebSocket.OPEN) {
49
+ if (clientSocket.readyState === WS_OPEN) {
48
50
  clientSocket.close();
49
51
  }
50
52
  });
51
53
  clientSocket.on('message', (data) => {
52
- if (dgSocket.readyState === WebSocket.OPEN) {
54
+ if (dgSocket.readyState === WS_OPEN) {
53
55
  dgSocket.send(data);
54
56
  }
55
57
  });
56
58
  clientSocket.on('close', () => {
57
- if (dgSocket.readyState === WebSocket.OPEN) {
59
+ if (dgSocket.readyState === WS_OPEN) {
58
60
  dgSocket.close();
59
61
  }
60
62
  });
61
63
  clientSocket.on('error', (err) => {
62
64
  logger.error(`Client socket error: ${err.message}`);
63
- if (dgSocket.readyState === WebSocket.OPEN) {
65
+ if (dgSocket.readyState === WS_OPEN) {
64
66
  dgSocket.close();
65
67
  }
66
68
  });
@@ -1 +1 @@
1
- {"version":3,"file":"speech-stream.gateway.js","sourceRoot":"","sources":["../../../../../src/server/adapters/nestjs/chat/speech-stream.gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speech-stream.gateway.js","sourceRoot":"","sources":["../../../../../src/server/adapters/nestjs/chat/speech-stream.gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface WsModule {
2
+ WebSocketServer: any;
3
+ WebSocket: any;
4
+ }
5
+ export declare function loadWs(): Promise<WsModule>;
@@ -0,0 +1,37 @@
1
+ // Runtime loader for the optional `ws` peer dependency.
2
+ //
3
+ // `ws` is only needed when the speech-to-text feature is enabled
4
+ // (AiChatModule.attachWebSockets()). A top-level `import { WebSocketServer }
5
+ // from 'ws'` would force every NestJS consumer to install `ws` even when
6
+ // they don't use speech — and crash with `ERR_MODULE_NOT_FOUND` at startup
7
+ // if they don't.
8
+ //
9
+ // We use a plain dynamic `import('ws')` inside a try/catch:
10
+ // - In ESM dist: native dynamic import — Node resolves `ws` only at the
11
+ // moment `attachWebSockets` is called.
12
+ // - In CJS dist: TypeScript lowers `import('ws')` to a Promise wrapper around
13
+ // `require('ws')` — same lazy semantics.
14
+ // - Bundlers that bundle the server (esbuild / webpack for serverless deploys)
15
+ // will still see `ws` as a referenced module. If your deployment bundles,
16
+ // either install `ws` unconditionally, or mark it as an external in your
17
+ // bundler config (esbuild `--external:ws`, webpack `externals: { ws: 'commonjs ws' }`).
18
+ // Standard NestJS deployments don't bundle and are unaffected.
19
+ let cached;
20
+ export async function loadWs() {
21
+ if (cached)
22
+ return cached;
23
+ let mod;
24
+ try {
25
+ mod = await import('ws');
26
+ }
27
+ catch (err) {
28
+ throw new Error("[glirastes] The 'ws' package is required for the speech-to-text feature " +
29
+ '(AiChatModule.attachWebSockets). Install it with: npm install ws', { cause: err });
30
+ }
31
+ cached = {
32
+ WebSocketServer: mod.WebSocketServer ?? mod.default?.WebSocketServer,
33
+ WebSocket: mod.default ?? mod.WebSocket,
34
+ };
35
+ return cached;
36
+ }
37
+ //# sourceMappingURL=ws-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-loader.js","sourceRoot":"","sources":["../../../../../src/server/adapters/nestjs/chat/ws-loader.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,iEAAiE;AACjE,6EAA6E;AAC7E,yEAAyE;AACzE,2EAA2E;AAC3E,iBAAiB;AACjB,EAAE;AACF,4DAA4D;AAC5D,wEAAwE;AACxE,yCAAyC;AACzC,8EAA8E;AAC9E,2CAA2C;AAC3C,+EAA+E;AAC/E,4EAA4E;AAC5E,2EAA2E;AAC3E,0FAA0F;AAC1F,iEAAiE;AAOjE,IAAI,MAA4B,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,0EAA0E;YACxE,kEAAkE,EACpE,EAAE,KAAK,EAAE,GAAY,EAAE,CACxB,CAAC;IACJ,CAAC;IAED,MAAM,GAAG;QACP,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,OAAO,EAAE,eAAe;QACpE,SAAS,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS;KACxC,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../dist/cjs/openapi/index.js",
3
+ "module": "../dist/openapi/index.js",
4
+ "types": "../dist/openapi/index.d.ts"
5
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "glirastes",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Official Chainmatics SDK for building AI-powered chat, tools, and agent systems. Part of the Glirastes platform.",
5
5
  "license": "Apache-2.0",
6
6
  "author": {
@@ -53,24 +53,54 @@
53
53
  },
54
54
  "exports": {
55
55
  ".": {
56
- "types": "./dist/index.d.ts",
57
- "default": "./dist/index.js"
56
+ "import": {
57
+ "types": "./dist/index.d.ts",
58
+ "default": "./dist/index.js"
59
+ },
60
+ "require": {
61
+ "types": "./dist/cjs/index.d.ts",
62
+ "default": "./dist/cjs/index.js"
63
+ }
58
64
  },
59
65
  "./server": {
60
- "types": "./dist/server/index.d.ts",
61
- "default": "./dist/server/index.js"
66
+ "import": {
67
+ "types": "./dist/server/index.d.ts",
68
+ "default": "./dist/server/index.js"
69
+ },
70
+ "require": {
71
+ "types": "./dist/cjs/server/index.d.ts",
72
+ "default": "./dist/cjs/server/index.js"
73
+ }
62
74
  },
63
75
  "./server/nextjs": {
64
- "types": "./dist/server/adapters/nextjs/index.d.ts",
65
- "default": "./dist/server/adapters/nextjs/index.js"
76
+ "import": {
77
+ "types": "./dist/server/adapters/nextjs/index.d.ts",
78
+ "default": "./dist/server/adapters/nextjs/index.js"
79
+ },
80
+ "require": {
81
+ "types": "./dist/cjs/server/adapters/nextjs/index.d.ts",
82
+ "default": "./dist/cjs/server/adapters/nextjs/index.js"
83
+ }
66
84
  },
67
85
  "./server/nestjs": {
68
- "types": "./dist/server/adapters/nestjs/index.d.ts",
69
- "default": "./dist/server/adapters/nestjs/index.js"
86
+ "import": {
87
+ "types": "./dist/server/adapters/nestjs/index.d.ts",
88
+ "default": "./dist/server/adapters/nestjs/index.js"
89
+ },
90
+ "require": {
91
+ "types": "./dist/cjs/server/adapters/nestjs/index.d.ts",
92
+ "default": "./dist/cjs/server/adapters/nestjs/index.js"
93
+ }
70
94
  },
71
95
  "./server/testing": {
72
- "types": "./dist/server/testing/index.d.ts",
73
- "default": "./dist/server/testing/index.js"
96
+ "import": {
97
+ "types": "./dist/server/testing/index.d.ts",
98
+ "default": "./dist/server/testing/index.js"
99
+ },
100
+ "require": {
101
+ "types": "./dist/cjs/server/testing/index.d.ts",
102
+ "default": "./dist/cjs/server/testing/index.js"
103
+ }
74
104
  },
75
105
  "./react": {
76
106
  "types": "./dist/react/index.d.ts",
@@ -96,6 +126,11 @@
96
126
  },
97
127
  "files": [
98
128
  "dist",
129
+ "server",
130
+ "react",
131
+ "codegen",
132
+ "openapi",
133
+ "skills",
99
134
  "CHANGELOG.md",
100
135
  "CODE_OF_CONDUCT.md",
101
136
  "CONTRIBUTING.md",
@@ -105,20 +140,20 @@
105
140
  "SECURITY.md"
106
141
  ],
107
142
  "scripts": {
108
- "build": "tsc -p tsconfig.json && cp src/react/styles.css dist/react/styles.css",
143
+ "build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && cp src/react/styles.css dist/react/styles.css && node -e \"require('fs').writeFileSync('dist/cjs/package.json', '{\\\"type\\\":\\\"commonjs\\\"}\\n')\" && node scripts/generate-subpath-shims.mjs",
109
144
  "typecheck": "tsc --noEmit",
110
145
  "test": "vitest run"
111
146
  },
112
147
  "dependencies": {
113
- "zod": "^3.24.1",
148
+ "zod": "^3.25.76",
114
149
  "snowball-stemmers": "^0.6.0",
115
- "ai": "^6.0.0",
116
- "@ai-sdk/react": "^3.0.0",
117
- "react-markdown": "^10.1.0"
150
+ "ai": "^6.0.0"
118
151
  },
119
152
  "peerDependencies": {
120
153
  "react": "^18 || ^19",
121
154
  "react-dom": "^19",
155
+ "@ai-sdk/react": "^3.0.0",
156
+ "react-markdown": "^10.1.0",
122
157
  "wavesurfer.js": "^7",
123
158
  "@nestjs/common": "^10 || ^11",
124
159
  "@nestjs/core": "^10 || ^11",
@@ -139,6 +174,12 @@
139
174
  "react-dom": {
140
175
  "optional": true
141
176
  },
177
+ "@ai-sdk/react": {
178
+ "optional": true
179
+ },
180
+ "react-markdown": {
181
+ "optional": true
182
+ },
142
183
  "wavesurfer.js": {
143
184
  "optional": true
144
185
  },
@@ -188,6 +229,8 @@
188
229
  "@types/snowball-stemmers": "^0.6.0",
189
230
  "react": "^19.0.0",
190
231
  "react-dom": "^19.0.0",
232
+ "@ai-sdk/react": "^3.0.0",
233
+ "react-markdown": "^10.1.0",
191
234
  "wavesurfer.js": "^7.12.1",
192
235
  "@nestjs/common": "^11.0.0",
193
236
  "@nestjs/core": "^11.0.0",
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../../dist/cjs/react/transports/langgraph/index.js",
3
+ "module": "../../dist/react/transports/langgraph/index.js",
4
+ "types": "../../dist/react/transports/langgraph/index.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../dist/cjs/react/index.js",
3
+ "module": "../dist/react/index.js",
4
+ "types": "../dist/react/index.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../../dist/cjs/react/transports/vercel/index.js",
3
+ "module": "../../dist/react/transports/vercel/index.js",
4
+ "types": "../../dist/react/transports/vercel/index.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../../dist/cjs/server/adapters/nestjs/index.js",
3
+ "module": "../../dist/server/adapters/nestjs/index.js",
4
+ "types": "../../dist/server/adapters/nestjs/index.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../../dist/cjs/server/adapters/nextjs/index.js",
3
+ "module": "../../dist/server/adapters/nextjs/index.js",
4
+ "types": "../../dist/server/adapters/nextjs/index.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../dist/cjs/server/index.js",
3
+ "module": "../dist/server/index.js",
4
+ "types": "../dist/server/index.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../../dist/cjs/server/testing/index.js",
3
+ "module": "../../dist/server/testing/index.js",
4
+ "types": "../../dist/server/testing/index.d.ts"
5
+ }
@@ -0,0 +1,107 @@
1
+ # Glirastes Agent Skills
2
+
3
+ Pre-built [agent skills](https://docs.claude.com/en/docs/claude-code/skills) that teach a coding agent (Claude Code, Codex, Cursor, …) how to integrate, maintain, and customize the Glirastes SDK in a real codebase. Drop them into your repo's `.claude/skills/` (or your agent's equivalent), and the agent picks the right one automatically based on the task.
4
+
5
+ Skills are a separate concept from `glirastes generate-skills`:
6
+
7
+ - **`generate-skills` (CLI command)** — turns *your tools* into skill files so external agents can call your tools.
8
+ - **These skills (this directory)** — instruct an agent on how to *integrate Glirastes itself* into a project.
9
+
10
+ ## Available skills
11
+
12
+ | Skill | Use when |
13
+ |---|---|
14
+ | [`integrating-glirastes-nextjs`](./integrating-glirastes-nextjs/SKILL.md) | Adding chat to a Next.js App Router app where Next.js is the only backend. |
15
+ | [`integrating-glirastes-nestjs`](./integrating-glirastes-nestjs/SKILL.md) | Adding chat to a NestJS backend (with or without a separate frontend). |
16
+ | [`integrating-glirastes-nextjs-with-nestjs-backend`](./integrating-glirastes-nextjs-with-nestjs-backend/SKILL.md) | Full-stack setup: Next.js frontend in one workspace, separate NestJS backend in another. |
17
+ | [`maintaining-glirastes-tools`](./maintaining-glirastes-tools/SKILL.md) | Authoring `ai-tool.ts` / `ai-ui-tool.ts`, intent modules, codegen pipeline, all CLI commands. |
18
+ | [`building-glirastes-chat-ui`](./building-glirastes-chat-ui/SKILL.md) | Customizing the chat UI — theming, mentions, voice input, approval cards, action bus. |
19
+
20
+ The three `integrating-*` skills are mutually exclusive: pick the one that matches your stack. The other two are stack-agnostic.
21
+
22
+ ## Installing into your project
23
+
24
+ These skills ship with the npm package, so they're always in sync with the SDK version you've installed. Use the bundled CLI installer:
25
+
26
+ ```bash
27
+ # Project-local: all skills into ./.claude/skills (default)
28
+ npx glirastes install-skills
29
+
30
+ # Global: into ~/.claude/skills — picked up by every Claude Code session on this machine
31
+ npx glirastes install-skills --global # short: -g
32
+
33
+ # Stack-filtered — only the skills relevant to your setup
34
+ npx glirastes install-skills --stack nextjs # Next.js standalone
35
+ npx glirastes install-skills --stack nestjs # NestJS standalone
36
+ npx glirastes install-skills --stack nextjs+nestjs # Next.js + NestJS monorepo
37
+ npx glirastes install-skills --stack all # explicit "all" (default)
38
+
39
+ # Combine: global + stack filter
40
+ npx glirastes install-skills -g --stack nextjs+nestjs
41
+
42
+ # Different agent? Pass --target (mutually exclusive with --global)
43
+ npx glirastes install-skills --target .codex/skills
44
+
45
+ # Symlink mode — skills auto-update when you bump glirastes
46
+ npx glirastes install-skills --symlink
47
+
48
+ # Preview without writing
49
+ npx glirastes install-skills --dry-run
50
+
51
+ # Overwrite previously installed skills
52
+ npx glirastes install-skills --force
53
+ ```
54
+
55
+ | Flag | Effect |
56
+ |---|---|
57
+ | *(default)* | Install into `./.claude/skills` relative to the current project. |
58
+ | `-g`, `--global` | Install into `~/.claude/skills` so every project on this machine sees the skills. Mutually exclusive with `--target`. |
59
+ | `--target <dir>` | Override the destination. Accepts relative or absolute paths and `~/`-prefixed paths. |
60
+ | `--stack <name>` | `nextjs` \| `nestjs` \| `nextjs+nestjs` \| `all` (default). Filters which skills are installed. |
61
+ | `--symlink` | Symlink instead of copy — skills track the installed `glirastes` version automatically on `npm install`. |
62
+ | `--force` | Overwrite skills that already exist at the target. |
63
+ | `--dry-run` | Print what would happen without writing anything. |
64
+
65
+ ### Project-local vs global — which to pick?
66
+
67
+ - **Project-local** (default): each project sees skills tied to its own installed `glirastes` version. Best when teams collaborate via git — the project's `.claude/skills` is checked in (or symlinked, then `.gitignore`d).
68
+ - **Global** (`-g`): one install per developer machine, shared across every project. Best for a solo dev who works on multiple Glirastes projects and wants consistency without re-running the installer per project.
69
+
70
+ Both modes can coexist. Project-local skills override global skills when the same name is present in both.
71
+
72
+ ### Manual install (no CLI)
73
+
74
+ If you prefer not to use the installer:
75
+
76
+ ```bash
77
+ mkdir -p .claude/skills
78
+ cp -r node_modules/glirastes/skills/*/ .claude/skills/
79
+ ```
80
+
81
+ Or symlink:
82
+
83
+ ```bash
84
+ mkdir -p .claude/skills
85
+ for skill in node_modules/glirastes/skills/*/; do
86
+ ln -sf "$(pwd)/$skill" ".claude/skills/$(basename "$skill")"
87
+ done
88
+ ```
89
+
90
+ ## Skill authoring
91
+
92
+ If you fork or extend a skill, follow the [Anthropic skill creator best practices](https://github.com/anthropics/anthropic-cookbook/tree/main/agents/agent-skills):
93
+
94
+ - Use the verb-ing-noun naming pattern (`integrating-glirastes-nextjs`, not `glirastes-nextjs-helper`)
95
+ - Keep `SKILL.md` under ~500 lines — split deep references into sibling files, one level deep
96
+ - Frontmatter `description` must be third-person and include the trigger condition
97
+ - Include code snippets you can adapt, not just abstract guidance
98
+
99
+ ## Reporting issues / suggesting improvements
100
+
101
+ These skills evolve with the SDK. If a skill steers an agent toward an outdated API, [open an issue](https://github.com/chainmatics/glirastes/issues) with:
102
+
103
+ 1. The skill name
104
+ 2. The agent's incorrect output
105
+ 3. The correct API for the current SDK version
106
+
107
+ Pull requests welcome.