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,609 @@
1
+ import { generateEndpointRegistry, generateUiRegistry, generateActionIdRegistry, generateModuleRegistry, validateAiTools, formatValidationReport, checkAiCoverage, formatCoverageReport, scaffoldAiTool, formatScaffoldResult, generateAgentSkills, generateMcpServer, recommendOutputFormat, syncAssetToGlirastes, } from '../codegen/index.js';
2
+ function getFlagValue(args, flag) {
3
+ const index = args.indexOf(flag);
4
+ return index >= 0 ? args[index + 1] : undefined;
5
+ }
6
+ function hasFlag(args, flag) {
7
+ return args.includes(flag);
8
+ }
9
+ function parseCommand(args) {
10
+ const [command, ...rest] = args;
11
+ const validCommands = [
12
+ 'generate',
13
+ 'validate',
14
+ 'generate-tools',
15
+ 'generate-endpoint-tools',
16
+ 'generate-ui-tools',
17
+ 'generate-modules',
18
+ 'generate-skills',
19
+ 'generate-mcp-server',
20
+ 'generate-auto',
21
+ 'validate-tools',
22
+ 'coverage',
23
+ 'scaffold',
24
+ 'test',
25
+ 'check-upgrade',
26
+ 'sync',
27
+ ];
28
+ if (!command || !validCommands.includes(command)) {
29
+ throw new Error(`Usage: glirastes <command> [options]\n\nCommands:\n` +
30
+ ` generate Generate endpoint tools from OpenAPI spec\n` +
31
+ ` validate Validate OpenAPI spec\n` +
32
+ ` generate-tools Generate all registries (endpoint + UI + modules)\n` +
33
+ ` generate-endpoint-tools Generate endpoint tool registry\n` +
34
+ ` generate-ui-tools Generate UI tool registry + action IDs\n` +
35
+ ` generate-modules Generate module registry\n` +
36
+ ` generate-skills Generate agent skill files (Claude Code / Codex) [--sync] [--remote]\n` +
37
+ ` generate-mcp-server Generate MCP server project from tool definitions [--sync] [--remote]\n` +
38
+ ` generate-auto Auto-detect best output format and generate\n` +
39
+ ` validate-tools Validate AI tool configuration\n` +
40
+ ` coverage Check AI tool coverage\n` +
41
+ ` scaffold Scaffold ai-tool.ts from route.ts\n` +
42
+ ` test Scaffold AI behavior test file\n` +
43
+ ` check-upgrade Analyze upgrade gaps from release notes (--from-version)\n` +
44
+ ` sync Sync tool schemas to Glirastes platform\n`);
45
+ }
46
+ return { command: command, rest };
47
+ }
48
+ export async function runCli(args) {
49
+ const { command, rest } = parseCommand(args);
50
+ // OpenAPI commands — lazy-load openapi-gen to avoid requiring it at startup
51
+ if (command === 'validate') {
52
+ const { validateOpenApiFile } = await import('../openapi/index.js');
53
+ const inputPath = getFlagValue(rest, '--input');
54
+ if (!inputPath)
55
+ throw new Error('--input is required.');
56
+ const validation = await validateOpenApiFile({ inputPath });
57
+ for (const warning of validation.warnings)
58
+ console.warn(warning);
59
+ if (validation.errors.length > 0) {
60
+ throw new Error(`OpenAPI validation failed:\n${validation.errors.join('\n')}`);
61
+ }
62
+ console.log(`OpenAPI valid. Enabled AI tools: ${validation.enabledTools}. Warnings: ${validation.warnings.length}.`);
63
+ return;
64
+ }
65
+ if (command === 'generate') {
66
+ const { generateFromOpenApiFile } = await import('../openapi/index.js');
67
+ const inputPath = getFlagValue(rest, '--input');
68
+ const outputPath = getFlagValue(rest, '--output');
69
+ if (!inputPath)
70
+ throw new Error('--input is required.');
71
+ if (!outputPath)
72
+ throw new Error('--output is required for generate.');
73
+ const validation = await generateFromOpenApiFile({ inputPath, outputPath });
74
+ for (const warning of validation.warnings)
75
+ console.warn(warning);
76
+ console.log(`Generated endpoint tools at ${outputPath}`);
77
+ console.log(`Enabled AI tools: ${validation.enabledTools}. Warnings: ${validation.warnings.length}.`);
78
+ return;
79
+ }
80
+ // Project-based commands — need rootDir
81
+ const rootDir = getFlagValue(rest, '--root') ?? process.cwd();
82
+ const quiet = hasFlag(rest, '--quiet');
83
+ const ci = hasFlag(rest, '--ci');
84
+ // Read glirastes config from package.json (supports monorepo scan/output config)
85
+ const { readFileSync, existsSync } = await import('node:fs');
86
+ const { join } = await import('node:path');
87
+ const pkgJsonPath = join(rootDir, 'package.json');
88
+ let glirastesConfig = {};
89
+ try {
90
+ const pkg = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
91
+ glirastesConfig = (pkg.glirastes ?? {});
92
+ }
93
+ catch {
94
+ // No package.json or no glirastes field — use defaults
95
+ }
96
+ // Derive nestjsDirs from scan config: dirs that contain NestJS controllers
97
+ const nestjsDirs = (glirastesConfig.scan ?? [])
98
+ .map(d => join(rootDir, d))
99
+ .filter(d => existsSync(d));
100
+ const options = {
101
+ rootDir,
102
+ quiet,
103
+ outputDir: glirastesConfig.output,
104
+ apiDir: glirastesConfig.apiDir,
105
+ componentsDir: glirastesConfig.componentsDir,
106
+ nestjsDirs: nestjsDirs.length > 0 ? nestjsDirs : undefined,
107
+ nestjsApiPrefix: glirastesConfig.nestjsApiPrefix,
108
+ };
109
+ if (command === 'generate-tools') {
110
+ const metaPath = getFlagValue(rest, '--meta');
111
+ const generateOpts = options;
112
+ await generateEndpointRegistry(generateOpts);
113
+ await generateUiRegistry(generateOpts);
114
+ await generateActionIdRegistry(generateOpts);
115
+ // Only generate modules if there are tools with module metadata
116
+ try {
117
+ await generateModuleRegistry(generateOpts, metaPath);
118
+ }
119
+ catch {
120
+ if (!quiet)
121
+ console.log('\u2139 Module generation skipped (no module metadata found)');
122
+ }
123
+ // Run coverage and validation
124
+ const report = await checkAiCoverage(generateOpts);
125
+ console.log(formatCoverageReport(report, { quiet }));
126
+ const validation = await validateAiTools(generateOpts);
127
+ if (validation.issues.length > 0) {
128
+ console.log(formatValidationReport(validation, { quiet }));
129
+ }
130
+ if (ci && !validation.passed) {
131
+ process.exit(1);
132
+ }
133
+ return;
134
+ }
135
+ if (command === 'generate-endpoint-tools') {
136
+ await generateEndpointRegistry(options);
137
+ return;
138
+ }
139
+ if (command === 'generate-ui-tools') {
140
+ await generateUiRegistry(options);
141
+ await generateActionIdRegistry(options);
142
+ return;
143
+ }
144
+ if (command === 'generate-modules') {
145
+ const metaPath = getFlagValue(rest, '--meta');
146
+ await generateModuleRegistry(options, metaPath);
147
+ return;
148
+ }
149
+ if (command === 'generate-skills') {
150
+ const appName = getFlagValue(rest, '--app-name');
151
+ const baseUrl = getFlagValue(rest, '--base-url');
152
+ const authType = getFlagValue(rest, '--auth') ?? 'bearer';
153
+ const tokenEnvVar = getFlagValue(rest, '--token-env') ?? 'API_TOKEN';
154
+ const format = getFlagValue(rest, '--format'); // markdown, json, or both (default)
155
+ const outputDir = getFlagValue(rest, '--output-dir');
156
+ if (!appName)
157
+ throw new Error('--app-name is required for generate-skills.');
158
+ if (!baseUrl)
159
+ throw new Error('--base-url is required for generate-skills.');
160
+ const authStrategy = buildAuthStrategy(authType, tokenEnvVar, rest);
161
+ const formats = format === 'markdown' ? ['markdown'] :
162
+ format === 'json' ? ['json'] :
163
+ ['markdown', 'json'];
164
+ const skillConfig = { appName, baseUrl, auth: authStrategy };
165
+ const result = await generateAgentSkills({
166
+ ...options,
167
+ skillConfig,
168
+ formats,
169
+ skillOutputDir: outputDir,
170
+ });
171
+ const remote = hasFlag(rest, '--remote');
172
+ const shouldSync = rest.includes('--sync') || remote;
173
+ if (shouldSync) {
174
+ const apiKey = getFlagValue(rest, '--glirastes-key') ?? process.env.GLIRASTES_API_KEY;
175
+ const glirasterUrl = getFlagValue(rest, '--glirastes-url') ?? process.env.GLIRASTES_URL ?? 'https://api.glirastes.chainmatics.io';
176
+ if (!apiKey) {
177
+ console.warn('⚠ --sync/--remote requires GLIRASTES_API_KEY or --glirastes-key');
178
+ }
179
+ else {
180
+ const syncResult = await syncAssetToGlirastes({
181
+ apiKey,
182
+ glirasterUrl,
183
+ name: appName,
184
+ type: 'skill',
185
+ version: '1.0.0',
186
+ toolCount: result.toolCount,
187
+ config: { appName, baseUrl, auth: authStrategy },
188
+ toolManifest: { tools: result.tools },
189
+ });
190
+ console.log(`✓ Synced to Glirastes: skill "${appName}" (${syncResult.action})`);
191
+ if (remote) {
192
+ const generateRes = await fetch(`${glirasterUrl}/v1/registry/assets/${syncResult.assetId}/generate`, {
193
+ method: 'POST',
194
+ headers: { 'x-api-key': apiKey, 'Content-Type': 'application/json' },
195
+ });
196
+ if (!generateRes.ok) {
197
+ console.warn(`⚠ Remote generation failed (${generateRes.status})`);
198
+ }
199
+ else {
200
+ const genResult = await generateRes.json();
201
+ console.log(`✓ Remote generation complete: v${genResult.version}, ${genResult.files.length} files`);
202
+ }
203
+ }
204
+ }
205
+ }
206
+ if (remote) {
207
+ console.log(`✓ Remote generation triggered for skill "${appName}"`);
208
+ return;
209
+ }
210
+ return;
211
+ }
212
+ if (command === 'generate-mcp-server') {
213
+ const { writeFile, mkdir } = await import('node:fs/promises');
214
+ const { join, dirname } = await import('node:path');
215
+ const appName = getFlagValue(rest, '--app-name');
216
+ const baseUrl = getFlagValue(rest, '--base-url');
217
+ const authType = getFlagValue(rest, '--auth') ?? 'bearer';
218
+ const tokenEnvVar = getFlagValue(rest, '--token-env') ?? 'API_TOKEN';
219
+ const outputDir = getFlagValue(rest, '--output-dir') ?? 'mcp-server';
220
+ if (!appName)
221
+ throw new Error('--app-name is required for generate-mcp-server.');
222
+ if (!baseUrl)
223
+ throw new Error('--base-url is required for generate-mcp-server.');
224
+ const authStrategy = buildAuthStrategy(authType, tokenEnvVar, rest);
225
+ const result = await generateMcpServer({
226
+ ...options,
227
+ skillConfig: { appName, baseUrl, auth: authStrategy },
228
+ mcpOutputDir: outputDir,
229
+ });
230
+ const remote = hasFlag(rest, '--remote');
231
+ // Write generated files to disk (skip when --remote)
232
+ if (!remote) {
233
+ for (const file of result.files) {
234
+ const fullPath = join(rootDir, file.path);
235
+ await mkdir(dirname(fullPath), { recursive: true });
236
+ await writeFile(fullPath, file.content, 'utf-8');
237
+ if (!quiet)
238
+ console.log(` wrote ${file.path}`);
239
+ }
240
+ if (!quiet) {
241
+ console.log(`\nMCP server generated: ${result.toolCount} tools across ${result.modulesUsed.length} modules`);
242
+ }
243
+ }
244
+ const shouldSync = rest.includes('--sync') || remote;
245
+ if (shouldSync) {
246
+ const apiKey = getFlagValue(rest, '--glirastes-key') ?? process.env.GLIRASTES_API_KEY;
247
+ const glirasterUrl = getFlagValue(rest, '--glirastes-url') ?? process.env.GLIRASTES_URL ?? 'https://api.glirastes.chainmatics.io';
248
+ if (!apiKey) {
249
+ console.warn('⚠ --sync/--remote requires GLIRASTES_API_KEY or --glirastes-key');
250
+ }
251
+ else {
252
+ const syncResult = await syncAssetToGlirastes({
253
+ apiKey,
254
+ glirasterUrl,
255
+ name: appName,
256
+ type: 'mcp-server',
257
+ version: '1.0.0',
258
+ toolCount: result.toolCount,
259
+ config: { appName, baseUrl, auth: authStrategy },
260
+ toolManifest: { tools: result.tools, modules: result.modulesUsed },
261
+ });
262
+ console.log(`✓ Synced to Glirastes: mcp-server "${appName}" (${syncResult.action})`);
263
+ if (remote) {
264
+ const generateRes = await fetch(`${glirasterUrl}/v1/registry/assets/${syncResult.assetId}/generate`, {
265
+ method: 'POST',
266
+ headers: { 'x-api-key': apiKey, 'Content-Type': 'application/json' },
267
+ });
268
+ if (!generateRes.ok) {
269
+ console.warn(`⚠ Remote generation failed (${generateRes.status})`);
270
+ }
271
+ else {
272
+ const genResult = await generateRes.json();
273
+ console.log(`✓ Remote generation complete: v${genResult.version}, ${genResult.files.length} files`);
274
+ }
275
+ }
276
+ }
277
+ }
278
+ if (remote) {
279
+ console.log(`✓ Remote generation triggered for mcp-server "${appName}"`);
280
+ }
281
+ return;
282
+ }
283
+ if (command === 'generate-auto') {
284
+ const { writeFile, mkdir } = await import('node:fs/promises');
285
+ const { join, dirname } = await import('node:path');
286
+ const appName = getFlagValue(rest, '--app-name');
287
+ const baseUrl = getFlagValue(rest, '--base-url');
288
+ const authType = getFlagValue(rest, '--auth') ?? 'bearer';
289
+ const tokenEnvVar = getFlagValue(rest, '--token-env') ?? 'API_TOKEN';
290
+ const skillOutputDir = getFlagValue(rest, '--skill-output-dir');
291
+ const mcpOutputDir = getFlagValue(rest, '--mcp-output-dir') ?? 'mcp-server';
292
+ if (!appName)
293
+ throw new Error('--app-name is required for generate-auto.');
294
+ if (!baseUrl)
295
+ throw new Error('--base-url is required for generate-auto.');
296
+ const authStrategy = buildAuthStrategy(authType, tokenEnvVar, rest);
297
+ const hasStreaming = hasFlag(rest, '--streaming');
298
+ const hasWebSocket = hasFlag(rest, '--websocket');
299
+ const multiAgentAccess = hasFlag(rest, '--multi-agent');
300
+ const toolCountStr = getFlagValue(rest, '--tool-count');
301
+ const toolCount = toolCountStr ? parseInt(toolCountStr, 10) : undefined;
302
+ const recommendation = recommendOutputFormat({
303
+ auth: authStrategy,
304
+ hasStreaming,
305
+ hasWebSocket,
306
+ multiAgentAccess,
307
+ toolCount,
308
+ });
309
+ if (!quiet) {
310
+ console.log(`Auto-detected format: ${recommendation.format}`);
311
+ console.log(` Reason: ${recommendation.reason}`);
312
+ console.log('');
313
+ }
314
+ const skillConfig = { appName, baseUrl, auth: authStrategy };
315
+ if (recommendation.format === 'skill' || recommendation.format === 'both') {
316
+ await generateAgentSkills({
317
+ ...options,
318
+ skillConfig,
319
+ formats: ['markdown', 'json'],
320
+ skillOutputDir,
321
+ });
322
+ }
323
+ if (recommendation.format === 'mcp' || recommendation.format === 'both') {
324
+ const result = await generateMcpServer({
325
+ ...options,
326
+ skillConfig,
327
+ mcpOutputDir,
328
+ });
329
+ // Write generated MCP files to disk
330
+ for (const file of result.files) {
331
+ const fullPath = join(rootDir, file.path);
332
+ await mkdir(dirname(fullPath), { recursive: true });
333
+ await writeFile(fullPath, file.content, 'utf-8');
334
+ if (!quiet)
335
+ console.log(` wrote ${file.path}`);
336
+ }
337
+ }
338
+ return;
339
+ }
340
+ if (command === 'validate-tools') {
341
+ const showFix = hasFlag(rest, '--fix');
342
+ const validation = await validateAiTools(options);
343
+ console.log(formatValidationReport(validation, { quiet, showFix }));
344
+ if (ci && !validation.passed) {
345
+ process.exit(1);
346
+ }
347
+ return;
348
+ }
349
+ if (command === 'coverage') {
350
+ const report = await checkAiCoverage(options);
351
+ console.log(formatCoverageReport(report, { quiet }));
352
+ if (ci) {
353
+ const hasIssues = report.routeCoveragePercent < 100 ||
354
+ report.componentCoveragePercent < 100 ||
355
+ report.missingHandlers.length > 0;
356
+ if (hasIssues)
357
+ process.exit(1);
358
+ }
359
+ return;
360
+ }
361
+ if (command === 'scaffold') {
362
+ const routeFile = getFlagValue(rest, '--route');
363
+ if (!routeFile)
364
+ throw new Error('--route is required for scaffold.');
365
+ const force = hasFlag(rest, '--force');
366
+ const dryRun = hasFlag(rest, '--dry-run');
367
+ const result = await scaffoldAiTool({
368
+ routeFile,
369
+ rootDir,
370
+ force,
371
+ dryRun,
372
+ });
373
+ console.log(formatScaffoldResult(result, { dryRun, rootDir }));
374
+ return;
375
+ }
376
+ if (command === 'test') {
377
+ const { scaffoldTestFile } = await import('./commands/test.js');
378
+ const outputPath = getFlagValue(rest, '--output');
379
+ const force = hasFlag(rest, '--force');
380
+ const dryRun = hasFlag(rest, '--dry-run');
381
+ await scaffoldTestFile({ rootDir, outputPath, force, dryRun });
382
+ return;
383
+ }
384
+ if (command === 'check-upgrade') {
385
+ const { checkUpgrade } = await import('./commands/check-upgrade.js');
386
+ const fromVersion = getFlagValue(rest, '--from-version');
387
+ await checkUpgrade({ rootDir, fromVersion });
388
+ return;
389
+ }
390
+ // Sync tool schemas to Glirastes platform
391
+ if (command === 'sync') {
392
+ const apiKey = getFlagValue(rest, '--api-key') ?? process.env.GLIRASTES_API_KEY ?? process.env.CHAINMATICS_API_KEY;
393
+ const baseUrl = getFlagValue(rest, '--url') ?? process.env.GLIRASTES_URL ?? 'https://api.glirastes.chainmatics.io';
394
+ if (!apiKey) {
395
+ throw new Error('API key required. Use --api-key or set GLIRASTES_API_KEY env var.');
396
+ }
397
+ const { scanEndpointTools, scanUiTools } = await import('../codegen/index.js');
398
+ const { readFile } = await import('fs/promises');
399
+ // Collect all tools (endpoint + UI)
400
+ const tools = [];
401
+ // --- Endpoint tools ---
402
+ const scanResult = await scanEndpointTools(options);
403
+ for (const file of scanResult.files) {
404
+ const content = await readFile(file.absolutePath, 'utf-8');
405
+ // Match defineEndpointTool({ id: '...' }) or defineAiEndpointTool({ id: '...' })
406
+ const idMatches = content.matchAll(/define(?:Ai)?EndpointTool\(\s*\{[^}]*?id:\s*['"]([^'"]+)['"]/gs);
407
+ for (const match of idMatches) {
408
+ const toolId = match[1];
409
+ // Try to extract description
410
+ const descMatch = content.match(new RegExp(`id:\\s*['"]${toolId}['"][^}]*?description:\\s*['"]([^'"]+)['"]`, 's'));
411
+ // Try to extract allowedRoles array
412
+ const allowedRoles = extractAllowedRoles(content);
413
+ // Try to extract module
414
+ const moduleMatch = content.match(/module:\s*['"]([^'"]+)['"]/);
415
+ tools.push({
416
+ toolId,
417
+ version: '1.0.0',
418
+ type: 'endpoint',
419
+ schema: {},
420
+ moduleId: moduleMatch?.[1] ?? undefined,
421
+ metadata: {
422
+ description: descMatch?.[1] ?? '',
423
+ sourceFile: file.relativePath,
424
+ allowedRoles,
425
+ },
426
+ });
427
+ }
428
+ // Also match single tool: defineEndpointTool({ ... }) with withAiTool pattern
429
+ if (tools.length === 0 && file.exportType === 'single') {
430
+ const singleId = content.match(/id:\s*['"]([^'"]+)['"]/);
431
+ if (singleId) {
432
+ const allowedRoles = extractAllowedRoles(content);
433
+ const moduleMatch = content.match(/module:\s*['"]([^'"]+)['"]/);
434
+ tools.push({
435
+ toolId: singleId[1],
436
+ version: '1.0.0',
437
+ type: 'endpoint',
438
+ schema: {},
439
+ moduleId: moduleMatch?.[1] ?? undefined,
440
+ metadata: {
441
+ sourceFile: file.relativePath,
442
+ allowedRoles,
443
+ },
444
+ });
445
+ }
446
+ }
447
+ }
448
+ // --- UI tools ---
449
+ const uiScanResult = await scanUiTools(options);
450
+ for (const file of uiScanResult.files) {
451
+ const content = await readFile(file.absolutePath, 'utf-8');
452
+ // Extract each toolName from defineUiTool / defineAiUiTool blocks
453
+ const toolNameMatches = content.matchAll(/toolName\s*:\s*['"]([^'"]+)['"]/g);
454
+ for (const match of toolNameMatches) {
455
+ const toolName = match[1];
456
+ const descMatch = content.match(/description\s*:\s*`([^`]+)`/s) ??
457
+ content.match(/description\s*:\s*['"]([^'"]+)['"]/);
458
+ const allowedRoles = extractAllowedRoles(content);
459
+ const moduleMatch = content.match(/module:\s*['"]([^'"]+)['"]/);
460
+ tools.push({
461
+ toolId: toolName,
462
+ version: '1.0.0',
463
+ type: 'ui',
464
+ schema: {},
465
+ moduleId: moduleMatch?.[1] ?? undefined,
466
+ metadata: {
467
+ description: descMatch?.[1]?.trim().slice(0, 200) ?? '',
468
+ sourceFile: file.relativePath,
469
+ allowedRoles,
470
+ },
471
+ });
472
+ }
473
+ }
474
+ // --- NestJS @AiTool decorated controllers ---
475
+ if (options.nestjsDirs && options.nestjsDirs.length > 0) {
476
+ const { scanNestControllers } = await import('../codegen/index.js');
477
+ const nestResult = await scanNestControllers(options.nestjsDirs, options.nestjsApiPrefix ?? '/api');
478
+ for (const tool of nestResult.tools) {
479
+ tools.push({
480
+ toolId: tool.name,
481
+ version: '1.0.0',
482
+ type: 'endpoint',
483
+ schema: {},
484
+ moduleId: tool.module ?? undefined,
485
+ metadata: {
486
+ description: tool.description?.slice(0, 200) ?? '',
487
+ sourceFile: tool.controllerFile,
488
+ allowedRoles: tool.allowedRoles ?? [],
489
+ ...(tool.needsApproval ? { needsApproval: true } : {}),
490
+ },
491
+ });
492
+ }
493
+ }
494
+ if (tools.length === 0) {
495
+ console.log('No tools found. Run "glirastes generate-tools" first.');
496
+ return;
497
+ }
498
+ const endpointCount = tools.filter(t => t.type === 'endpoint').length;
499
+ const uiCount = tools.filter(t => t.type === 'ui').length;
500
+ // POST to Glirastes Registry
501
+ console.log(`Syncing ${tools.length} tools (${endpointCount} endpoint, ${uiCount} UI) to ${baseUrl}...`);
502
+ const response = await fetch(`${baseUrl}/v1/registry/sync`, {
503
+ method: 'POST',
504
+ headers: {
505
+ 'Content-Type': 'application/json',
506
+ Authorization: `Bearer ${apiKey}`,
507
+ },
508
+ body: JSON.stringify({ tools }),
509
+ });
510
+ if (!response.ok) {
511
+ const body = await response.text();
512
+ throw new Error(`Sync failed (${response.status}): ${body}`);
513
+ }
514
+ const result = await response.json();
515
+ console.log(`Synced ${tools.length} tools to Glirastes:`);
516
+ if (result.added.length > 0)
517
+ console.log(` Added: ${result.added.join(', ')}`);
518
+ if (result.updated.length > 0)
519
+ console.log(` Updated: ${result.updated.join(', ')}`);
520
+ if (result.unchanged.length > 0)
521
+ console.log(` Unchanged: ${result.unchanged.length} tools`);
522
+ // Sync module prompts as baseline overrides (optional --meta flag)
523
+ const metaPath = getFlagValue(rest, '--meta');
524
+ if (metaPath) {
525
+ const { readFile } = await import('fs/promises');
526
+ const { resolve } = await import('path');
527
+ const metaFile = resolve(rootDir, metaPath);
528
+ try {
529
+ const metaContent = await readFile(metaFile, 'utf-8');
530
+ // Extract systemPrompt per module from metadata file
531
+ const modulePrompts = [];
532
+ // Match patterns like: moduleId: { ... systemPrompt: `...` }
533
+ const moduleBlocks = metaContent.matchAll(/(\w+)\s*:\s*\{[^}]*systemPrompt\s*:\s*`([^`]+)`/gs);
534
+ for (const match of moduleBlocks) {
535
+ modulePrompts.push({
536
+ moduleId: match[1],
537
+ systemPrompt: match[2].trim(),
538
+ });
539
+ }
540
+ if (modulePrompts.length > 0) {
541
+ console.log(`\nSyncing ${modulePrompts.length} module prompt baselines...`);
542
+ for (const mp of modulePrompts) {
543
+ const promptRes = await fetch(`${baseUrl}/v1/primus/modules/${encodeURIComponent(mp.moduleId)}/prompt`, {
544
+ method: 'PUT',
545
+ headers: {
546
+ 'Content-Type': 'application/json',
547
+ Authorization: `Bearer ${apiKey}`,
548
+ },
549
+ body: JSON.stringify({
550
+ mode: 'replace',
551
+ systemPrompt: mp.systemPrompt,
552
+ }),
553
+ });
554
+ if (promptRes.ok) {
555
+ console.log(` Synced prompt for module: ${mp.moduleId}`);
556
+ }
557
+ else {
558
+ console.warn(` Failed to sync prompt for module: ${mp.moduleId} (${promptRes.status})`);
559
+ }
560
+ }
561
+ }
562
+ }
563
+ catch {
564
+ // Meta file not found or unreadable — skip prompt sync silently
565
+ }
566
+ }
567
+ return;
568
+ }
569
+ }
570
+ /**
571
+ * Extract allowedRoles array from tool source file content.
572
+ * Matches patterns like: allowedRoles: ['admin', 'manager']
573
+ */
574
+ function extractAllowedRoles(content) {
575
+ const match = content.match(/allowedRoles:\s*\[([^\]]*)\]/);
576
+ if (!match)
577
+ return [];
578
+ const inner = match[1];
579
+ const roles = [];
580
+ const roleMatches = inner.matchAll(/['"]([^'"]+)['"]/g);
581
+ for (const m of roleMatches) {
582
+ roles.push(m[1]);
583
+ }
584
+ return roles;
585
+ }
586
+ function buildAuthStrategy(authType, tokenEnvVar, args) {
587
+ switch (authType) {
588
+ case 'api-key':
589
+ return {
590
+ type: 'api-key',
591
+ headerName: getFlagValue(args, '--header-name') ?? 'X-API-Key',
592
+ keyEnvVar: tokenEnvVar,
593
+ };
594
+ case 'oauth2':
595
+ return {
596
+ type: 'oauth2',
597
+ tokenUrl: getFlagValue(args, '--token-url') ?? '',
598
+ clientIdEnvVar: getFlagValue(args, '--client-id-env') ?? 'OAUTH_CLIENT_ID',
599
+ clientSecretEnvVar: getFlagValue(args, '--client-secret-env') ?? 'OAUTH_CLIENT_SECRET',
600
+ scopes: getFlagValue(args, '--scopes')?.split(','),
601
+ };
602
+ case 'cookie':
603
+ return { type: 'cookie' };
604
+ case 'bearer':
605
+ default:
606
+ return { type: 'bearer', tokenEnvVar };
607
+ }
608
+ }
609
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface ChangelogItem {
2
+ description: string;
3
+ package: string;
4
+ }
5
+ export interface ChangelogEntry {
6
+ version: string;
7
+ date: string;
8
+ added: ChangelogItem[];
9
+ fixed: ChangelogItem[];
10
+ breaking: ChangelogItem[];
11
+ }
12
+ export declare function parseChangelog(content: string): ChangelogEntry[];
13
+ export declare function getChangelogDiff(content: string, fromVersion: string, toVersion: string): ChangelogEntry[];