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,246 @@
1
+ import type { z } from 'zod';
2
+ import type { ToolContext, ToolRegistry, EndpointMethod, UiActionTemplate, UiPattern, ModelTier, AuditEmitter, AiPipeline, FollowupsConfig, PipelineResult, PiiShield, TelemetrySink, PromptOverride } from '../../../types.js';
3
+ import type { Lancer } from '../../lancer/index.js';
4
+ import type { InternalApiCaller } from '../../core/index.js';
5
+ export interface WithAiToolOptions<TInput extends z.ZodTypeAny = z.ZodTypeAny> {
6
+ toolName: string;
7
+ id?: string;
8
+ module?: string;
9
+ sharedWith?: string[];
10
+ description: string;
11
+ method?: EndpointMethod;
12
+ path?: string;
13
+ inputSchema: TInput;
14
+ needsApproval?: boolean;
15
+ uiActionOnSuccess?: UiActionTemplate;
16
+ uiPattern?: UiPattern;
17
+ }
18
+ export type AiToolRouteHandler = ((req: Request, context?: {
19
+ params: Promise<Record<string, string>>;
20
+ }) => Response | Promise<Response>) & {
21
+ __aiToolMeta?: WithAiToolOptions;
22
+ };
23
+ export type LoadTools = (context: ToolContext & {
24
+ callEndpoint: InternalApiCaller;
25
+ }) => ToolRegistry | Promise<ToolRegistry>;
26
+ export interface GuardrailResult {
27
+ ok: boolean;
28
+ reason?: string;
29
+ sanitizedMessages?: unknown[];
30
+ }
31
+ export type GuardrailHook = (messages: unknown[]) => GuardrailResult | Promise<GuardrailResult>;
32
+ export interface IntentRoutingResult {
33
+ toolNames?: string[];
34
+ systemPromptAddition?: string;
35
+ maxSteps?: number;
36
+ contextWindow?: number;
37
+ modelTier?: ModelTier;
38
+ metadata?: Record<string, unknown>;
39
+ }
40
+ export type IntentRouter = (latestUserText: string, allToolNames: string[]) => IntentRoutingResult | Promise<IntentRoutingResult>;
41
+ export type StepLimitSource = 'explicit' | 'module' | 'safety';
42
+ export interface StepUsage {
43
+ inputTokens: number;
44
+ outputTokens: number;
45
+ totalTokens: number;
46
+ }
47
+ export interface PipelineStepReport {
48
+ stepNumber: number;
49
+ finishReason: string;
50
+ toolCalls: string[];
51
+ toolResults: number;
52
+ requiresApproval: boolean;
53
+ pendingApprovals: number;
54
+ summary: string;
55
+ usage: StepUsage;
56
+ createdAt: string;
57
+ }
58
+ export type PipelineStreamStatus = 'running' | 'completed' | 'safety-stop' | 'aborted' | 'error';
59
+ export interface PipelineStreamState {
60
+ status: PipelineStreamStatus;
61
+ totalSteps: number;
62
+ finishReason?: string;
63
+ maxSteps: number;
64
+ stepLimitSource: StepLimitSource;
65
+ updatedAt: string;
66
+ message?: string;
67
+ }
68
+ export interface AiChatHandlerConfig {
69
+ /**
70
+ * Static tools (ToolRegistry). Used when pipeline mode is active.
71
+ * Alternative to loadTools — when both are provided, `tools` takes precedence.
72
+ */
73
+ tools?: ToolRegistry;
74
+ /**
75
+ * Dynamic tool loader. Used in legacy mode (without pipeline).
76
+ * When `tools` is provided, loadTools is ignored.
77
+ */
78
+ loadTools?: LoadTools;
79
+ /**
80
+ * AI Pipeline (Pro feature via glirastes/server).
81
+ * When provided, replaces guardrails + intentRouter with the pipeline's
82
+ * process() method. The pipeline handles intent classification, tool
83
+ * selection, guardrails, and model selection.
84
+ */
85
+ pipeline?: AiPipeline;
86
+ /**
87
+ * Followups configuration. Pro feature — requires pipeline from glirastes/server.
88
+ * Only used with pipeline mode.
89
+ */
90
+ followups?: FollowupsConfig;
91
+ /**
92
+ * Model or model-resolver. Optional when pipeline `ModelSelectorConfig`
93
+ * entries include an `instance` field — the adapter falls back to
94
+ * `pipelineResult.model.instance` automatically.
95
+ */
96
+ model?: unknown | ((context: {
97
+ routing?: IntentRoutingResult;
98
+ pipelineResult?: PipelineResult;
99
+ }) => unknown);
100
+ systemPrompt: string | ((context: {
101
+ routing?: IntentRoutingResult;
102
+ pipelineResult?: PipelineResult;
103
+ currentDate: Date;
104
+ }) => string);
105
+ locale?: string;
106
+ uiActionSchema?: z.ZodTypeAny;
107
+ maxOutputTokens?: number;
108
+ temperature?: number;
109
+ /**
110
+ * Explicit hard cap for reasoning steps.
111
+ *
112
+ * When omitted or null, `safetyMaxSteps` is used as a soft safety cap.
113
+ */
114
+ maxSteps?: number | null;
115
+ /**
116
+ * Safety cap used when no explicit/module maxSteps is defined.
117
+ *
118
+ * Defaults to 24 and is intended as a guard against runaway loops,
119
+ * while users can still stop manually at any time.
120
+ */
121
+ safetyMaxSteps?: number;
122
+ /**
123
+ * Emit per-step reports as `data-step-report` stream parts.
124
+ * Enabled by default.
125
+ */
126
+ emitStepReports?: boolean;
127
+ maxContextMessages?: number;
128
+ /**
129
+ * Number of recent user/assistant text pairs to include as conversation
130
+ * history for intent classification. Helps the classifier understand
131
+ * follow-up messages. Defaults to 4.
132
+ */
133
+ maxConversationHistoryPairs?: number;
134
+ /**
135
+ * @deprecated Use `pipeline` instead. Ignored when `pipeline` is set.
136
+ */
137
+ guardrails?: GuardrailHook;
138
+ /**
139
+ * @deprecated Use `pipeline` instead. Ignored when `pipeline` is set.
140
+ */
141
+ intentRouter?: IntentRouter;
142
+ /**
143
+ * PII Shield instance for anonymization/pseudonymization.
144
+ * When provided, user messages are anonymized before reaching the LLM,
145
+ * tool-call arguments are re-hydrated, and responses are de-anonymized.
146
+ */
147
+ piiShield?: PiiShield;
148
+ wrapHandler?: <T>(callback: () => T | Promise<T>, req: Request) => Promise<T>;
149
+ onError?: (error: unknown, req: Request) => void;
150
+ onToolError?: (toolId: string, error: unknown) => void;
151
+ /**
152
+ * Called after pipeline classification and tool scoping, before streaming.
153
+ * Use this to log which intent, module, model, and tools were selected.
154
+ */
155
+ onPipelineResult?: (result: PipelineResult) => void;
156
+ onStepReport?: (report: PipelineStepReport) => void;
157
+ onFinish?: (event: {
158
+ totalSteps: number;
159
+ finishReason: string;
160
+ usage: {
161
+ inputTokens: number;
162
+ outputTokens: number;
163
+ totalTokens: number;
164
+ };
165
+ wasTruncated: boolean;
166
+ maxSteps: number;
167
+ stepLimitSource: StepLimitSource;
168
+ }) => void;
169
+ /**
170
+ * Unified audit event callback.
171
+ * Receives all audit events from all SDK packages (server-core, server-pro,
172
+ * lancer) as well as adapter-level session events.
173
+ * Forward to your SIEM, logging backend, or compliance store.
174
+ */
175
+ onAudit?: AuditEmitter;
176
+ /**
177
+ * Remote telemetry sink for forwarding audit events to Glirastes.
178
+ *
179
+ * Pass `lancer.telemetry` to enable monitoring on the Glirastes dashboard
180
+ * — works with both Free and Pro API keys. When combined with `pipeline`,
181
+ * Pro-tier telemetry is handled by server-pro; this field additionally
182
+ * forwards adapter-level session events.
183
+ *
184
+ * ```typescript
185
+ * const lancer = createLancer({ apiKey: process.env.GLIRASTES_API_KEY! });
186
+ * createAiChatHandler({ telemetry: lancer.telemetry, ... });
187
+ * ```
188
+ */
189
+ telemetry?: TelemetrySink;
190
+ /**
191
+ * Lancer client for runtime prompt and model overrides (Pro feature).
192
+ *
193
+ * When provided, the adapter fetches prompt overrides from Glirastes
194
+ * via `lancer.config.fetch(['prompts', 'models'])` and merges them with the
195
+ * local system prompt and model selection based on the classified module.
196
+ *
197
+ * For model overrides to work, also provide `modelInstanceFactory`.
198
+ *
199
+ * ```typescript
200
+ * const lancer = createLancer({ apiKey: process.env.GLIRASTES_API_KEY! });
201
+ * createAiChatHandler({ lancer, pipeline, ... });
202
+ * ```
203
+ */
204
+ lancer?: Lancer;
205
+ /**
206
+ * Default model IDs per tier as configured in the consumer app.
207
+ * Reported to Glirastes on first request so the dashboard can display them.
208
+ *
209
+ * ```typescript
210
+ * createAiChatHandler({
211
+ * modelDefaults: { fast: 'openai/gpt-4o-mini', standard: 'openai/gpt-4o', powerful: 'openai/gpt-4o' },
212
+ * ...
213
+ * });
214
+ * ```
215
+ */
216
+ modelDefaults?: Record<string, string>;
217
+ /**
218
+ * Factory that turns a modelId string (e.g. "anthropic/claude-sonnet-4")
219
+ * into a ready-to-use LanguageModel instance.
220
+ *
221
+ * Required for Glirastes model overrides to take effect at runtime.
222
+ * When a model override is configured on the Glirastes dashboard,
223
+ * this factory creates the replacement model instance.
224
+ *
225
+ * ```typescript
226
+ * const openrouter = createOpenAI({ baseURL: 'https://openrouter.ai/api/v1', apiKey });
227
+ * createAiChatHandler({ modelInstanceFactory: (id) => openrouter(id), ... });
228
+ * ```
229
+ */
230
+ modelInstanceFactory?: (modelId: string) => unknown;
231
+ }
232
+ export type { PromptOverride };
233
+ export type { AiPipeline, FollowupsConfig, PipelineResult };
234
+ export interface ExecuteToolOptions {
235
+ toolName: string;
236
+ input: unknown;
237
+ tools: ToolRegistry;
238
+ locale?: string;
239
+ uiActionSchema?: z.ZodTypeAny;
240
+ }
241
+ export interface ExecuteToolResult {
242
+ success: boolean;
243
+ data?: unknown;
244
+ error?: string;
245
+ uiAction?: Record<string, unknown>;
246
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/server/adapters/nextjs/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { z } from 'zod';
2
+ import type { WithAiToolOptions, AiToolRouteHandler } from './types.js';
3
+ /**
4
+ * Wraps a Next.js App Router handler with AI tool metadata.
5
+ * The handler works as before -- metadata is for the codegen scanner.
6
+ */
7
+ export declare function withAiTool<TInput extends z.ZodTypeAny>(options: WithAiToolOptions<TInput>, handler: (req: Request, context?: {
8
+ params: Promise<Record<string, string>>;
9
+ }) => Response | Promise<Response>): AiToolRouteHandler;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Wraps a Next.js App Router handler with AI tool metadata.
3
+ * The handler works as before -- metadata is for the codegen scanner.
4
+ */
5
+ export function withAiTool(options, handler) {
6
+ const decoratedHandler = (req, ctx) => handler(req, ctx);
7
+ decoratedHandler.__aiToolMeta = options;
8
+ return decoratedHandler;
9
+ }
10
+ //# sourceMappingURL=with-ai-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-ai-tool.js","sourceRoot":"","sources":["../../../../src/server/adapters/nextjs/with-ai-tool.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,OAAkC,EAClC,OAGiC;IAEjC,MAAM,gBAAgB,GAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CACxD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,gBAAgB,CAAC,YAAY,GAAG,OAA4B,CAAC;IAC7D,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type Tool, type FollowupsConfig } from '../../types.js';
2
+ /**
3
+ * Create a followup suggestion tool definition.
4
+ *
5
+ * This tool allows the LLM to suggest contextual follow-up actions
6
+ * at the end of a conversation turn. The frontend renders these as
7
+ * clickable suggestion chips.
8
+ */
9
+ export declare function createFollowupTool(config?: FollowupsConfig): Tool | null;
@@ -0,0 +1,80 @@
1
+ import { z } from 'zod';
2
+ import { defineTool } from '../../types.js';
3
+ // ============================================================================
4
+ // Default Locale (English)
5
+ // ============================================================================
6
+ const DEFAULT_LOCALE = {
7
+ description: 'Suggest contextual follow-up actions after completing a task.',
8
+ suggestionHint: 'Formulate suggestions as the user would type them. ' +
9
+ 'Use concrete names/titles from the context instead of generic placeholders.',
10
+ examples: {
11
+ good: [
12
+ 'Set deadline for "Prepare meeting"',
13
+ 'Create subtasks for "Prepare meeting"',
14
+ 'Show only high priority tasks',
15
+ ],
16
+ bad: [
17
+ 'Perform another action',
18
+ 'Show help',
19
+ ],
20
+ },
21
+ };
22
+ // ============================================================================
23
+ // Default Followup Config
24
+ // ============================================================================
25
+ const DEFAULT_COUNT = 3;
26
+ // ============================================================================
27
+ // Factory
28
+ // ============================================================================
29
+ /**
30
+ * Create a followup suggestion tool definition.
31
+ *
32
+ * This tool allows the LLM to suggest contextual follow-up actions
33
+ * at the end of a conversation turn. The frontend renders these as
34
+ * clickable suggestion chips.
35
+ */
36
+ export function createFollowupTool(config) {
37
+ const enabled = config?.enabled ?? true;
38
+ if (!enabled)
39
+ return null;
40
+ const count = Math.max(1, Math.min(5, config?.count ?? DEFAULT_COUNT));
41
+ const locale = config?.locale ?? DEFAULT_LOCALE;
42
+ const goodExamples = locale.examples?.good
43
+ ? locale.examples.good.map((e) => `- "${e}"`).join('\n')
44
+ : '';
45
+ const badExamples = locale.examples?.bad
46
+ ? locale.examples.bad.map((e) => `- "${e}"`).join('\n')
47
+ : '';
48
+ const description = `${locale.description}
49
+
50
+ ${locale.suggestionHint}
51
+
52
+ ${goodExamples ? `Good examples:\n${goodExamples}\n` : ''}
53
+ ${badExamples ? `Avoid:\n${badExamples}\n` : ''}
54
+ Generate exactly ${count} suggestions.
55
+
56
+ IMPORTANT: After calling this tool, do NOT include the suggestions in your text response. The UI renders them automatically as clickable chips. Your text response should only confirm the completed action — never list or repeat the suggestions.`;
57
+ const inputSchema = z.object({
58
+ suggestions: z
59
+ .array(z.string().min(1).max(200))
60
+ .min(1)
61
+ .max(5)
62
+ .describe(locale.suggestionHint),
63
+ });
64
+ return defineTool({
65
+ id: 'suggest_followups',
66
+ description,
67
+ inputSchema,
68
+ needsApproval: false,
69
+ execute: async (input) => {
70
+ const limitedSuggestions = input.suggestions.slice(0, count);
71
+ return {
72
+ success: true,
73
+ followups: limitedSuggestions,
74
+ _instruction: 'Suggestions registered and will be shown as clickable chips in the UI. ' +
75
+ 'Do NOT repeat or list them in your text response.',
76
+ };
77
+ },
78
+ });
79
+ }
80
+ //# sourceMappingURL=followup-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"followup-tool.js","sourceRoot":"","sources":["../../../src/server/core/followup-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAwD,MAAM,gBAAgB,CAAC;AAElG,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,MAAM,cAAc,GAAmB;IACrC,WAAW,EAAE,+DAA+D;IAC5E,cAAc,EACZ,qDAAqD;QACrD,6EAA6E;IAC/E,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,oCAAoC;YACpC,uCAAuC;YACvC,+BAA+B;SAChC;QACD,GAAG,EAAE;YACH,wBAAwB;YACxB,WAAW;SACZ;KACF;CACF,CAAC;AAEF,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAwB;IACzD,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC;IACxC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,cAAc,CAAC;IAEhD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI;QACxC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG;QACtC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACvD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,WAAW;;EAEzC,MAAM,CAAC,cAAc;;EAErB,YAAY,CAAC,CAAC,CAAC,mBAAmB,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE;EACvD,WAAW,CAAC,CAAC,CAAC,WAAW,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE;mBAC5B,KAAK;;oPAE4N,CAAC;IAEnP,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;QAC3B,WAAW,EAAE,CAAC;aACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;KACnC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;QAChB,EAAE,EAAE,mBAAmB;QACvB,WAAW;QACX,WAAW;QACX,aAAa,EAAE,KAAK;QACpB,OAAO,EAAE,KAAK,EAAE,KAAkC,EAAE,EAAE;YACpD,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,kBAAkB;gBAC7B,YAAY,EACV,yEAAyE;oBACzE,mDAAmD;aACtD,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,139 @@
1
+ import type { AiEndpointToolDefinition, AiUiToolDefinition, EndpointMethod, Tool, ToolContext, ToolRegistry, UiPattern, AuditEmitter, TelemetrySink } from '../../types.js';
2
+ import { z } from 'zod';
3
+ export interface InternalApiRequest {
4
+ method: EndpointMethod;
5
+ path: string;
6
+ body?: unknown;
7
+ }
8
+ export interface InternalApiResponse {
9
+ ok: boolean;
10
+ status: number;
11
+ data?: unknown;
12
+ error?: string;
13
+ }
14
+ export type InternalApiCaller = (request: InternalApiRequest) => Promise<InternalApiResponse>;
15
+ export type NodeIncomingHeaders = Record<string, string | string[] | undefined>;
16
+ export interface FetchInternalApiCallerOptions {
17
+ baseUrl: string;
18
+ fetchImpl?: typeof fetch;
19
+ defaultHeaders?: Record<string, string>;
20
+ }
21
+ export interface NextInternalApiCallerOptions {
22
+ origin: string;
23
+ cookieHeader?: string;
24
+ defaultHeaders?: Record<string, string>;
25
+ fetchImpl?: typeof fetch;
26
+ }
27
+ export interface ExpressInternalApiCallerOptions {
28
+ baseUrl: string;
29
+ reqHeaders?: NodeIncomingHeaders;
30
+ forwardHeaderNames?: string[];
31
+ defaultHeaders?: Record<string, string>;
32
+ fetchImpl?: typeof fetch;
33
+ }
34
+ export interface EndpointToolContext extends ToolContext {
35
+ callEndpoint: InternalApiCaller;
36
+ }
37
+ /**
38
+ * Truncate large tool results to prevent LLM context overflow.
39
+ *
40
+ * Strategy: find the largest array in the top-level result and
41
+ * progressively remove items from the end until the serialized
42
+ * size is under the limit. A `_truncated` object is appended so the
43
+ * LLM knows the data was cut.
44
+ */
45
+ export declare function truncateToolResult(result: unknown, maxChars?: number): unknown;
46
+ export declare function buildPath(pathTemplate: string, payload: Record<string, unknown>): string;
47
+ export declare function stripPathParams(pathTemplate: string, payload: Record<string, unknown>): Record<string, unknown>;
48
+ export declare function buildQueryString(payload: Record<string, unknown>): string;
49
+ export declare function applyTemplateValue(value: unknown, input: Record<string, unknown>, responseData: Record<string, unknown>): unknown;
50
+ /**
51
+ * Build a uiAction from a UiPattern definition + runtime data.
52
+ */
53
+ export declare function buildUiActionFromPattern(pattern: UiPattern, input: Record<string, unknown>, response: Record<string, unknown>): Record<string, unknown> | undefined;
54
+ /**
55
+ * Validates and normalizes optional uiAction inside tool results.
56
+ * Invalid actions are dropped so frontend event handling stays deterministic.
57
+ *
58
+ * @param result - Tool execution result (may contain uiAction)
59
+ * @param uiActionSchema - Zod schema to validate against (from createUiActionSchema)
60
+ */
61
+ export declare function normalizeResultUiAction(result: unknown, uiActionSchema?: z.ZodTypeAny): unknown;
62
+ /**
63
+ * Convert an endpoint tool definition into a Tool.
64
+ * Uses callEndpoint from the ToolContext to execute HTTP requests.
65
+ */
66
+ export declare function endpointToolToTool<TInput extends z.ZodTypeAny>(endpointTool: AiEndpointToolDefinition<TInput>): Tool;
67
+ /**
68
+ * Convert an array of endpoint tools into a ToolRegistry.
69
+ */
70
+ export declare function endpointToolsToRegistry(endpointTools: ReadonlyArray<AiEndpointToolDefinition>): ToolRegistry;
71
+ /**
72
+ * Convert a UI tool definition into a Tool.
73
+ * UI tools never call external services — they only produce uiActions.
74
+ */
75
+ export declare function uiToolToTool<TInput extends z.ZodTypeAny>(uiTool: AiUiToolDefinition<TInput>): Tool;
76
+ /**
77
+ * Convert an array of UI tools into a ToolRegistry.
78
+ */
79
+ export declare function uiToolsToRegistry(uiTools: ReadonlyArray<AiUiToolDefinition>): ToolRegistry;
80
+ /**
81
+ * Options for converting tools to AI SDK tools.
82
+ */
83
+ export interface ToolToAiToolOptions {
84
+ /** Zod schema for validating uiActions at runtime */
85
+ uiActionSchema?: z.ZodTypeAny;
86
+ /** Called when a tool execution fails */
87
+ onError?: (toolId: string, error: unknown) => void;
88
+ /**
89
+ * When true, validate tool results against outputSchema in dev mode.
90
+ * Defaults to true when NODE_ENV !== 'production'.
91
+ */
92
+ validateOutputSchemas?: boolean;
93
+ /** Audit event emitter for PCI DSS / compliance logging */
94
+ onAudit?: AuditEmitter;
95
+ /** Session ID for audit context */
96
+ sessionId?: string;
97
+ /** Trace ID for correlating events within a single request */
98
+ traceId?: string;
99
+ /**
100
+ * Remote telemetry sink for forwarding audit events to Glirastes.
101
+ * Compatible with `lancer.telemetry`. Fire-and-forget — never blocks
102
+ * tool execution. Enables monitoring dashboard for Free-tier users.
103
+ */
104
+ telemetry?: TelemetrySink;
105
+ }
106
+ /**
107
+ * Convert a Tool to an AI SDK-compatible tool object.
108
+ *
109
+ * Returns a plain object with `description`, `parameters`, `execute` that
110
+ * can be passed to any AI SDK that follows the Vercel AI SDK convention.
111
+ *
112
+ * @param tool - The tool to convert
113
+ * @param context - Runtime context (currentDate, locale, runtime)
114
+ * @param toolName - Override tool name (defaults to tool.id)
115
+ * @param options - Additional options
116
+ */
117
+ export declare function toolToAiTool(tool: Tool, context: ToolContext, toolName?: string, options?: ToolToAiToolOptions): {
118
+ _toolId: string;
119
+ description: string;
120
+ parameters: z.ZodType<any, z.ZodTypeDef, any>;
121
+ needsApproval: ((input: unknown) => Promise<boolean>) | undefined;
122
+ execute: (input: unknown) => Promise<unknown>;
123
+ };
124
+ /**
125
+ * Convert a registry of tools to AI SDK tools.
126
+ * The SDK does not perform authorization — the backend API that each tool
127
+ * calls is responsible for permission enforcement.
128
+ */
129
+ export declare function toolsToAiTools(registry: ToolRegistry, context: ToolContext, options?: ToolToAiToolOptions): Record<string, ReturnType<typeof toolToAiTool>>;
130
+ export declare function normalizeNodeHeaders(headers: NodeIncomingHeaders, allowedHeaderNames?: string[]): Record<string, string>;
131
+ export declare function createFetchInternalApiCaller(options: FetchInternalApiCallerOptions): InternalApiCaller;
132
+ export declare function createNextInternalApiCaller(options: NextInternalApiCallerOptions): InternalApiCaller;
133
+ export declare function createExpressInternalApiCaller(options: ExpressInternalApiCallerOptions): InternalApiCaller;
134
+ export { zodToCompactDescription } from './zod-compact.js';
135
+ export { createFollowupTool } from './followup-tool.js';
136
+ export { defineModule, createAiRouter } from './module-router.js';
137
+ export { createModelSelector, createModelSelectorFromMap } from './model-selector.js';
138
+ export { createIntentClassifier, tokenize, jaccardSimilarity, classifyWithHeuristics, buildClassificationPrompt, parseJsonResponse, } from './intent-classifier.js';
139
+ export type { LocalClassifierConfig } from './intent-classifier.js';