@lenne.tech/ng-base 18.1.2 → 22.0.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 (416) hide show
  1. package/CLAUDE.md +55 -0
  2. package/LICENSE +2 -2
  3. package/README.md +237 -44
  4. package/fesm2022/lenne.tech-ng-base-ai.mjs +767 -0
  5. package/fesm2022/lenne.tech-ng-base-ai.mjs.map +1 -0
  6. package/fesm2022/lenne.tech-ng-base-auth-provide.mjs +939 -0
  7. package/fesm2022/lenne.tech-ng-base-auth-provide.mjs.map +1 -0
  8. package/fesm2022/lenne.tech-ng-base-auth.mjs +454 -0
  9. package/fesm2022/lenne.tech-ng-base-auth.mjs.map +1 -0
  10. package/fesm2022/lenne.tech-ng-base-bug-bug-report-dialog-BRzVmKJr.mjs +825 -0
  11. package/fesm2022/lenne.tech-ng-base-bug-bug-report-dialog-BRzVmKJr.mjs.map +1 -0
  12. package/fesm2022/lenne.tech-ng-base-bug-bug-report-service-DWoTb_iw.mjs +351 -0
  13. package/fesm2022/lenne.tech-ng-base-bug-bug-report-service-DWoTb_iw.mjs.map +1 -0
  14. package/fesm2022/lenne.tech-ng-base-bug-capture-engine-TkjMDdqj.mjs +1046 -0
  15. package/fesm2022/lenne.tech-ng-base-bug-capture-engine-TkjMDdqj.mjs.map +1 -0
  16. package/fesm2022/lenne.tech-ng-base-bug-constants-Brm2KGHi.mjs +4 -0
  17. package/fesm2022/lenne.tech-ng-base-bug-constants-Brm2KGHi.mjs.map +1 -0
  18. package/fesm2022/lenne.tech-ng-base-bug-messages-BsP4fRQU.mjs +179 -0
  19. package/fesm2022/lenne.tech-ng-base-bug-messages-BsP4fRQU.mjs.map +1 -0
  20. package/fesm2022/lenne.tech-ng-base-bug-provide.mjs +26 -0
  21. package/fesm2022/lenne.tech-ng-base-bug-provide.mjs.map +1 -0
  22. package/fesm2022/lenne.tech-ng-base-bug-report-Tzlhe1Cm.mjs +62 -0
  23. package/fesm2022/lenne.tech-ng-base-bug-report-Tzlhe1Cm.mjs.map +1 -0
  24. package/fesm2022/lenne.tech-ng-base-bug-server.mjs +818 -0
  25. package/fesm2022/lenne.tech-ng-base-bug-server.mjs.map +1 -0
  26. package/fesm2022/lenne.tech-ng-base-bug.mjs +196 -0
  27. package/fesm2022/lenne.tech-ng-base-bug.mjs.map +1 -0
  28. package/fesm2022/lenne.tech-ng-base-files-ui.mjs +445 -0
  29. package/fesm2022/lenne.tech-ng-base-files-ui.mjs.map +1 -0
  30. package/fesm2022/lenne.tech-ng-base-files.mjs +474 -0
  31. package/fesm2022/lenne.tech-ng-base-files.mjs.map +1 -0
  32. package/fesm2022/lenne.tech-ng-base-server.mjs +408 -0
  33. package/fesm2022/lenne.tech-ng-base-server.mjs.map +1 -0
  34. package/fesm2022/lenne.tech-ng-base-share.mjs +76 -0
  35. package/fesm2022/lenne.tech-ng-base-share.mjs.map +1 -0
  36. package/fesm2022/lenne.tech-ng-base-sync.mjs +1096 -0
  37. package/fesm2022/lenne.tech-ng-base-sync.mjs.map +1 -0
  38. package/fesm2022/lenne.tech-ng-base-testing.mjs +171 -0
  39. package/fesm2022/lenne.tech-ng-base-testing.mjs.map +1 -0
  40. package/fesm2022/lenne.tech-ng-base-ui-provide.mjs +124 -0
  41. package/fesm2022/lenne.tech-ng-base-ui-provide.mjs.map +1 -0
  42. package/fesm2022/lenne.tech-ng-base-ui.mjs +34611 -0
  43. package/fesm2022/lenne.tech-ng-base-ui.mjs.map +1 -0
  44. package/fesm2022/lenne.tech-ng-base-utils.mjs +287 -0
  45. package/fesm2022/lenne.tech-ng-base-utils.mjs.map +1 -0
  46. package/fesm2022/lenne.tech-ng-base.mjs +615 -902
  47. package/fesm2022/lenne.tech-ng-base.mjs.map +1 -1
  48. package/i18n/auth/de.json +17 -0
  49. package/i18n/auth/en.json +17 -0
  50. package/i18n/bug/de.json +85 -0
  51. package/i18n/bug/en.json +85 -0
  52. package/i18n/de.json +8 -0
  53. package/i18n/en.json +8 -0
  54. package/i18n/files/de.json +27 -0
  55. package/i18n/files/en.json +27 -0
  56. package/i18n/share/de.json +8 -0
  57. package/i18n/share/en.json +8 -0
  58. package/i18n/ui/de.json +38 -0
  59. package/i18n/ui/en.json +38 -0
  60. package/package.json +127 -58
  61. package/types/lenne.tech-ng-base-ai.d.ts +830 -0
  62. package/types/lenne.tech-ng-base-auth-provide.d.ts +603 -0
  63. package/types/lenne.tech-ng-base-auth.d.ts +320 -0
  64. package/types/lenne.tech-ng-base-bug-provide.d.ts +272 -0
  65. package/types/lenne.tech-ng-base-bug-rolldown-runtime-C25Le4-w.d.ts +1 -0
  66. package/types/lenne.tech-ng-base-bug-server.d.ts +316 -0
  67. package/types/lenne.tech-ng-base-bug.d.ts +202 -0
  68. package/types/lenne.tech-ng-base-files-ui.d.ts +116 -0
  69. package/types/lenne.tech-ng-base-files.d.ts +288 -0
  70. package/types/lenne.tech-ng-base-server.d.ts +262 -0
  71. package/types/lenne.tech-ng-base-share.d.ts +21 -0
  72. package/types/lenne.tech-ng-base-sync.d.ts +380 -0
  73. package/types/lenne.tech-ng-base-testing.d.ts +327 -0
  74. package/types/lenne.tech-ng-base-ui-provide.d.ts +65 -0
  75. package/types/lenne.tech-ng-base-ui.d.ts +7732 -0
  76. package/types/lenne.tech-ng-base-utils.d.ts +150 -0
  77. package/types/lenne.tech-ng-base.d.ts +503 -0
  78. package/ui/styles/components/accordion.css +3 -0
  79. package/ui/styles/components/alert-dialog.css +4 -0
  80. package/ui/styles/components/alert.css +3 -0
  81. package/ui/styles/components/aspect-ratio.css +3 -0
  82. package/ui/styles/components/attachment.css +4 -0
  83. package/ui/styles/components/autocomplete.css +4 -0
  84. package/ui/styles/components/avatar.css +3 -0
  85. package/ui/styles/components/badge.css +3 -0
  86. package/ui/styles/components/breadcrumb.css +3 -0
  87. package/ui/styles/components/bubble.css +3 -0
  88. package/ui/styles/components/button-group.css +3 -0
  89. package/ui/styles/components/button.css +3 -0
  90. package/ui/styles/components/calendar.css +5 -0
  91. package/ui/styles/components/card.css +3 -0
  92. package/ui/styles/components/checkbox.css +3 -0
  93. package/ui/styles/components/code-block.css +4 -0
  94. package/ui/styles/components/collapsible.css +3 -0
  95. package/ui/styles/components/combobox.css +5 -0
  96. package/ui/styles/components/command.css +5 -0
  97. package/ui/styles/components/context-menu.css +3 -0
  98. package/ui/styles/components/date-picker.css +7 -0
  99. package/ui/styles/components/dialog.css +4 -0
  100. package/ui/styles/components/drawer.css +3 -0
  101. package/ui/styles/components/dropdown-menu.css +3 -0
  102. package/ui/styles/components/empty.css +3 -0
  103. package/ui/styles/components/field.css +5 -0
  104. package/ui/styles/components/hover-card.css +3 -0
  105. package/ui/styles/components/index.css +91 -0
  106. package/ui/styles/components/input-group.css +6 -0
  107. package/ui/styles/components/input-otp.css +3 -0
  108. package/ui/styles/components/input.css +3 -0
  109. package/ui/styles/components/item.css +4 -0
  110. package/ui/styles/components/kbd.css +3 -0
  111. package/ui/styles/components/label.css +3 -0
  112. package/ui/styles/components/lt-breadcrumb.css +3 -0
  113. package/ui/styles/components/lt-bug-attachments.css +5 -0
  114. package/ui/styles/components/lt-bug-journey-timeline.css +5 -0
  115. package/ui/styles/components/lt-bug-report-dialog.css +15 -0
  116. package/ui/styles/components/lt-bug-report.css +4 -0
  117. package/ui/styles/components/lt-color-mode-button.css +3 -0
  118. package/ui/styles/components/lt-confirm-dialog.css +4 -0
  119. package/ui/styles/components/lt-data-view.css +5 -0
  120. package/ui/styles/components/lt-date-picker.css +3 -0
  121. package/ui/styles/components/lt-date-time-picker.css +5 -0
  122. package/ui/styles/components/lt-enter-action.css +2 -0
  123. package/ui/styles/components/lt-footer.css +3 -0
  124. package/ui/styles/components/lt-form-field.css +4 -0
  125. package/ui/styles/components/lt-header.css +5 -0
  126. package/ui/styles/components/lt-imports.css +21 -0
  127. package/ui/styles/components/lt-navigation-menu.css +3 -0
  128. package/ui/styles/components/lt-notice.css +3 -0
  129. package/ui/styles/components/lt-overlay-defaults.css +3 -0
  130. package/ui/styles/components/lt-page-card.css +3 -0
  131. package/ui/styles/components/lt-page-title.css +2 -0
  132. package/ui/styles/components/lt-password-input.css +4 -0
  133. package/ui/styles/components/lt-readonly-field.css +2 -0
  134. package/ui/styles/components/lt-select.css +4 -0
  135. package/ui/styles/components/lt-text-field.css +5 -0
  136. package/ui/styles/components/lt-toolbar-item.css +2 -0
  137. package/ui/styles/components/lt-toolbar.css +3 -0
  138. package/ui/styles/components/lt-tus-upload-component.css +5 -0
  139. package/ui/styles/components/marker.css +3 -0
  140. package/ui/styles/components/menubar.css +3 -0
  141. package/ui/styles/components/message-scroller.css +4 -0
  142. package/ui/styles/components/message.css +3 -0
  143. package/ui/styles/components/native-select.css +3 -0
  144. package/ui/styles/components/navigation-menu.css +3 -0
  145. package/ui/styles/components/pagination.css +4 -0
  146. package/ui/styles/components/popover.css +3 -0
  147. package/ui/styles/components/progress.css +3 -0
  148. package/ui/styles/components/questionnaire.css +4 -0
  149. package/ui/styles/components/radio-group.css +3 -0
  150. package/ui/styles/components/resizable.css +3 -0
  151. package/ui/styles/components/select.css +3 -0
  152. package/ui/styles/components/separator.css +3 -0
  153. package/ui/styles/components/sheet.css +4 -0
  154. package/ui/styles/components/sidebar.css +9 -0
  155. package/ui/styles/components/skeleton.css +3 -0
  156. package/ui/styles/components/slider.css +3 -0
  157. package/ui/styles/components/sonner.css +4 -0
  158. package/ui/styles/components/spinner.css +3 -0
  159. package/ui/styles/components/switch.css +3 -0
  160. package/ui/styles/components/table.css +3 -0
  161. package/ui/styles/components/tabs.css +4 -0
  162. package/ui/styles/components/textarea.css +3 -0
  163. package/ui/styles/components/toggle-group.css +4 -0
  164. package/ui/styles/components/toggle.css +3 -0
  165. package/ui/styles/components/tooltip.css +3 -0
  166. package/ui/styles/components/trace.css +3 -0
  167. package/ui/styles/components/typography.css +3 -0
  168. package/ui/styles/components/utils.css +2 -0
  169. package/ui/styles/core.css +137 -0
  170. package/ui/styles/palette.css +94 -0
  171. package/ui/styles/theme.css +14 -0
  172. package/ui/styles/transitions.css +131 -0
  173. package/base-cms/index.d.ts +0 -5
  174. package/base-cms/interfaces/base-cms-module-config.interface.d.ts +0 -16
  175. package/base-cms/pages/base-cms/base-cms.component.d.ts +0 -92
  176. package/base-cms/public-api.d.ts +0 -5
  177. package/base-components/components/breadcrumb/breadcrumb.component.d.ts +0 -10
  178. package/base-components/components/change-password/change-password.component.d.ts +0 -24
  179. package/base-components/components/checkbox/checkbox.component.d.ts +0 -12
  180. package/base-components/components/delete-account/delete-account.component.d.ts +0 -15
  181. package/base-components/components/fab-button/fab-button.component.d.ts +0 -16
  182. package/base-components/components/input/input.component.d.ts +0 -27
  183. package/base-components/components/loading-bar/loading-bar.component.d.ts +0 -17
  184. package/base-components/components/model-form/model-form-base.component.d.ts +0 -64
  185. package/base-components/components/model-form/model-form.component.d.ts +0 -139
  186. package/base-components/components/model-form-sub/model-form-sub.component.d.ts +0 -56
  187. package/base-components/components/model-table/model-table.component.d.ts +0 -115
  188. package/base-components/components/refence-input/refence-input.component.d.ts +0 -84
  189. package/base-components/components/select/select.component.d.ts +0 -25
  190. package/base-components/components/skeleton-loader/skeleton-loader.component.d.ts +0 -10
  191. package/base-components/components/tags/tags.component.d.ts +0 -60
  192. package/base-components/components/textarea/textarea.component.d.ts +0 -21
  193. package/base-components/components/toast/toast.component.d.ts +0 -19
  194. package/base-components/components/upload-image/upload-image.component.d.ts +0 -111
  195. package/base-components/directives/back-button.directive.d.ts +0 -9
  196. package/base-components/directives/context-menu.directive.d.ts +0 -22
  197. package/base-components/directives/sort.directive.d.ts +0 -15
  198. package/base-components/directives/stop-propagation.directive.d.ts +0 -10
  199. package/base-components/index.d.ts +0 -5
  200. package/base-components/pipes/ellipses.pipe.d.ts +0 -10
  201. package/base-components/public-api.d.ts +0 -26
  202. package/base-prototype/index.d.ts +0 -5
  203. package/base-prototype/pages/email-verification/email-verification.component.d.ts +0 -18
  204. package/base-prototype/pages/forgot-password/forgot-password.component.d.ts +0 -26
  205. package/base-prototype/pages/login/login.component.d.ts +0 -33
  206. package/base-prototype/pages/profile/profile.component.d.ts +0 -24
  207. package/base-prototype/pages/register/register.component.d.ts +0 -31
  208. package/base-prototype/pages/set-password/set-password.component.d.ts +0 -29
  209. package/base-prototype/public-api.d.ts +0 -9
  210. package/esm2022/base-cms/interfaces/base-cms-module-config.interface.mjs +0 -3
  211. package/esm2022/base-cms/lenne.tech-ng-base-base-cms.mjs +0 -5
  212. package/esm2022/base-cms/pages/base-cms/base-cms.component.mjs +0 -238
  213. package/esm2022/base-cms/public-api.mjs +0 -8
  214. package/esm2022/base-components/components/breadcrumb/breadcrumb.component.mjs +0 -23
  215. package/esm2022/base-components/components/change-password/change-password.component.mjs +0 -97
  216. package/esm2022/base-components/components/checkbox/checkbox.component.mjs +0 -38
  217. package/esm2022/base-components/components/delete-account/delete-account.component.mjs +0 -59
  218. package/esm2022/base-components/components/fab-button/fab-button.component.mjs +0 -24
  219. package/esm2022/base-components/components/input/input.component.mjs +0 -75
  220. package/esm2022/base-components/components/loading-bar/loading-bar.component.mjs +0 -37
  221. package/esm2022/base-components/components/model-form/model-form-base.component.mjs +0 -145
  222. package/esm2022/base-components/components/model-form/model-form.component.mjs +0 -591
  223. package/esm2022/base-components/components/model-form-sub/model-form-sub.component.mjs +0 -117
  224. package/esm2022/base-components/components/model-table/model-table.component.mjs +0 -478
  225. package/esm2022/base-components/components/refence-input/refence-input.component.mjs +0 -278
  226. package/esm2022/base-components/components/select/select.component.mjs +0 -62
  227. package/esm2022/base-components/components/skeleton-loader/skeleton-loader.component.mjs +0 -33
  228. package/esm2022/base-components/components/tags/tags.component.mjs +0 -227
  229. package/esm2022/base-components/components/textarea/textarea.component.mjs +0 -79
  230. package/esm2022/base-components/components/toast/toast.component.mjs +0 -69
  231. package/esm2022/base-components/components/upload-image/upload-image.component.mjs +0 -346
  232. package/esm2022/base-components/directives/back-button.directive.mjs +0 -25
  233. package/esm2022/base-components/directives/context-menu.directive.mjs +0 -112
  234. package/esm2022/base-components/directives/sort.directive.mjs +0 -61
  235. package/esm2022/base-components/directives/stop-propagation.directive.mjs +0 -24
  236. package/esm2022/base-components/lenne.tech-ng-base-base-components.mjs +0 -5
  237. package/esm2022/base-components/pipes/ellipses.pipe.mjs +0 -23
  238. package/esm2022/base-components/public-api.mjs +0 -30
  239. package/esm2022/base-prototype/lenne.tech-ng-base-base-prototype.mjs +0 -5
  240. package/esm2022/base-prototype/pages/email-verification/email-verification.component.mjs +0 -60
  241. package/esm2022/base-prototype/pages/forgot-password/forgot-password.component.mjs +0 -78
  242. package/esm2022/base-prototype/pages/login/login.component.mjs +0 -114
  243. package/esm2022/base-prototype/pages/profile/profile.component.mjs +0 -87
  244. package/esm2022/base-prototype/pages/register/register.component.mjs +0 -100
  245. package/esm2022/base-prototype/pages/set-password/set-password.component.mjs +0 -91
  246. package/esm2022/base-prototype/public-api.mjs +0 -11
  247. package/esm2022/lenne.tech-ng-base.mjs +0 -5
  248. package/esm2022/public-api.mjs +0 -25
  249. package/esm2022/shared/classes/auth.class.mjs +0 -14
  250. package/esm2022/shared/classes/basic-user.class.mjs +0 -49
  251. package/esm2022/shared/classes/graphql-enum.class.mjs +0 -10
  252. package/esm2022/shared/classes/graphql-meta.class.mjs +0 -345
  253. package/esm2022/shared/classes/graphql-type.class.mjs +0 -14
  254. package/esm2022/shared/classes/helper.class.mjs +0 -307
  255. package/esm2022/shared/classes/sort.class.mjs +0 -38
  256. package/esm2022/shared/classes/standard.class.mjs +0 -40
  257. package/esm2022/shared/decorators/debounce.decorator.mjs +0 -12
  258. package/esm2022/shared/enums/comparison-operator.enum.mjs +0 -16
  259. package/esm2022/shared/enums/graphql-request-type.enum.mjs +0 -10
  260. package/esm2022/shared/enums/logical-operator.enum.mjs +0 -10
  261. package/esm2022/shared/enums/skeleton-type.enum.mjs +0 -7
  262. package/esm2022/shared/enums/sort-order.enum.mjs +0 -6
  263. package/esm2022/shared/enums/toast-type.enum.mjs +0 -8
  264. package/esm2022/shared/functions/ws-client.function.mjs +0 -39
  265. package/esm2022/shared/interfaces/base-module-config.interface.mjs +0 -3
  266. package/esm2022/shared/interfaces/breadcrumb.interface.mjs +0 -2
  267. package/esm2022/shared/interfaces/can-component-deactivate.interface.mjs +0 -2
  268. package/esm2022/shared/interfaces/cms-enum-values.interface.mjs +0 -2
  269. package/esm2022/shared/interfaces/cms-field-config.interface.mjs +0 -2
  270. package/esm2022/shared/interfaces/cms-model-config.interface.mjs +0 -2
  271. package/esm2022/shared/interfaces/cms-table-field.interface.mjs +0 -2
  272. package/esm2022/shared/interfaces/combined-filter-input.interface.mjs +0 -2
  273. package/esm2022/shared/interfaces/compress-options.interface.mjs +0 -2
  274. package/esm2022/shared/interfaces/cropping-options.interface.mjs +0 -2
  275. package/esm2022/shared/interfaces/field-object.interface.mjs +0 -2
  276. package/esm2022/shared/interfaces/field.interface.mjs +0 -2
  277. package/esm2022/shared/interfaces/filter-input.interface.mjs +0 -2
  278. package/esm2022/shared/interfaces/find-args.interface.mjs +0 -2
  279. package/esm2022/shared/interfaces/graphql-crud-type.interface.mjs +0 -2
  280. package/esm2022/shared/interfaces/graphql-fields-object.interface.mjs +0 -2
  281. package/esm2022/shared/interfaces/graphql-options.interface.mjs +0 -2
  282. package/esm2022/shared/interfaces/graphql-plus-options.interfacen.mjs +0 -2
  283. package/esm2022/shared/interfaces/graphql-type-collection.interface.mjs +0 -2
  284. package/esm2022/shared/interfaces/login-config.interface.mjs +0 -2
  285. package/esm2022/shared/interfaces/register-config.interface.mjs +0 -2
  286. package/esm2022/shared/interfaces/single-filter-input.interface.mjs +0 -2
  287. package/esm2022/shared/interfaces/sort-input.interface.mjs +0 -2
  288. package/esm2022/shared/interfaces/time-components.interface.mjs +0 -2
  289. package/esm2022/shared/interfaces/toast.interface.mjs +0 -2
  290. package/esm2022/shared/lenne.tech-ng-base-shared.mjs +0 -5
  291. package/esm2022/shared/public-api.mjs +0 -74
  292. package/esm2022/shared/services/auth.service.mjs +0 -152
  293. package/esm2022/shared/services/breadcrumb.service.mjs +0 -69
  294. package/esm2022/shared/services/cms.service.mjs +0 -82
  295. package/esm2022/shared/services/file.service.mjs +0 -86
  296. package/esm2022/shared/services/forms.service.mjs +0 -61
  297. package/esm2022/shared/services/graphql-meta.service.mjs +0 -132
  298. package/esm2022/shared/services/graphql-plus.service.mjs +0 -93
  299. package/esm2022/shared/services/graphql.service.mjs +0 -510
  300. package/esm2022/shared/services/image.service.mjs +0 -102
  301. package/esm2022/shared/services/loader.service.mjs +0 -78
  302. package/esm2022/shared/services/navigation.service.mjs +0 -38
  303. package/esm2022/shared/services/scroll.service.mjs +0 -207
  304. package/esm2022/shared/services/storage.service.mjs +0 -149
  305. package/esm2022/shared/services/toast.service.mjs +0 -39
  306. package/esm2022/shared/services/user.service.mjs +0 -160
  307. package/esm2022/shared/services/ws.service.mjs +0 -17
  308. package/esm2022/shared/types/graphql-fields.type.mjs +0 -2
  309. package/esm2022/shared/types/storage.type.mjs +0 -2
  310. package/esm2022/shared/validators/email.validator.mjs +0 -7
  311. package/esm2022/shared/validators/match.validator.mjs +0 -22
  312. package/esm2022/shared/validators/secure-password.validator.mjs +0 -7
  313. package/esm2022/src/base.module.mjs +0 -64
  314. package/esm2022/src/decorators/auto-unsubscribe.decorator.mjs +0 -23
  315. package/esm2022/src/directives/lazy-load.directive.mjs +0 -48
  316. package/esm2022/src/directives/match-height.directive.mjs +0 -92
  317. package/esm2022/src/directives/resizable.directive.mjs +0 -92
  318. package/esm2022/src/factories/apollo-options.factory.mjs +0 -108
  319. package/esm2022/src/functions/extract-files.function.mjs +0 -87
  320. package/esm2022/src/guards/auth.guard.mjs +0 -91
  321. package/esm2022/src/guards/can-deactivate.guard.mjs +0 -16
  322. package/esm2022/src/guards/logout.guard.mjs +0 -34
  323. package/esm2022/src/pipes/date-ago.pipe.mjs +0 -64
  324. package/esm2022/src/pipes/safe-html.pipe.mjs +0 -22
  325. package/esm2022/src/services/fullscreen.service.mjs +0 -51
  326. package/esm2022/src/services/seo.service.mjs +0 -109
  327. package/esm2022/src/services/theme.service.mjs +0 -44
  328. package/fesm2022/lenne.tech-ng-base-base-cms.mjs +0 -251
  329. package/fesm2022/lenne.tech-ng-base-base-cms.mjs.map +0 -1
  330. package/fesm2022/lenne.tech-ng-base-base-components.mjs +0 -2917
  331. package/fesm2022/lenne.tech-ng-base-base-components.mjs.map +0 -1
  332. package/fesm2022/lenne.tech-ng-base-base-prototype.mjs +0 -505
  333. package/fesm2022/lenne.tech-ng-base-base-prototype.mjs.map +0 -1
  334. package/fesm2022/lenne.tech-ng-base-shared.mjs +0 -2863
  335. package/fesm2022/lenne.tech-ng-base-shared.mjs.map +0 -1
  336. package/index.d.ts +0 -5
  337. package/public-api.d.ts +0 -17
  338. package/shared/classes/auth.class.d.ts +0 -10
  339. package/shared/classes/basic-user.class.d.ts +0 -27
  340. package/shared/classes/graphql-enum.class.d.ts +0 -7
  341. package/shared/classes/graphql-meta.class.d.ts +0 -66
  342. package/shared/classes/graphql-type.class.d.ts +0 -13
  343. package/shared/classes/helper.class.d.ts +0 -99
  344. package/shared/classes/sort.class.d.ts +0 -12
  345. package/shared/classes/standard.class.d.ts +0 -32
  346. package/shared/decorators/debounce.decorator.d.ts +0 -1
  347. package/shared/enums/comparison-operator.enum.d.ts +0 -14
  348. package/shared/enums/graphql-request-type.enum.d.ts +0 -8
  349. package/shared/enums/logical-operator.enum.d.ts +0 -8
  350. package/shared/enums/skeleton-type.enum.d.ts +0 -5
  351. package/shared/enums/sort-order.enum.d.ts +0 -4
  352. package/shared/enums/toast-type.enum.d.ts +0 -6
  353. package/shared/functions/ws-client.function.d.ts +0 -5
  354. package/shared/index.d.ts +0 -5
  355. package/shared/interfaces/base-module-config.interface.d.ts +0 -61
  356. package/shared/interfaces/breadcrumb.interface.d.ts +0 -4
  357. package/shared/interfaces/can-component-deactivate.interface.d.ts +0 -7
  358. package/shared/interfaces/cms-enum-values.interface.d.ts +0 -4
  359. package/shared/interfaces/cms-field-config.interface.d.ts +0 -45
  360. package/shared/interfaces/cms-model-config.interface.d.ts +0 -14
  361. package/shared/interfaces/cms-table-field.interface.d.ts +0 -10
  362. package/shared/interfaces/combined-filter-input.interface.d.ts +0 -9
  363. package/shared/interfaces/compress-options.interface.d.ts +0 -15
  364. package/shared/interfaces/cropping-options.interface.d.ts +0 -12
  365. package/shared/interfaces/field-object.interface.d.ts +0 -6
  366. package/shared/interfaces/field.interface.d.ts +0 -5
  367. package/shared/interfaces/filter-input.interface.d.ts +0 -9
  368. package/shared/interfaces/find-args.interface.d.ts +0 -11
  369. package/shared/interfaces/graphql-crud-type.interface.d.ts +0 -7
  370. package/shared/interfaces/graphql-fields-object.interface.d.ts +0 -6
  371. package/shared/interfaces/graphql-options.interface.d.ts +0 -11
  372. package/shared/interfaces/graphql-plus-options.interfacen.d.ts +0 -9
  373. package/shared/interfaces/graphql-type-collection.interface.d.ts +0 -7
  374. package/shared/interfaces/login-config.interface.d.ts +0 -6
  375. package/shared/interfaces/register-config.interface.d.ts +0 -4
  376. package/shared/interfaces/single-filter-input.interface.d.ts +0 -11
  377. package/shared/interfaces/sort-input.interface.d.ts +0 -5
  378. package/shared/interfaces/time-components.interface.d.ts +0 -6
  379. package/shared/interfaces/toast.interface.d.ts +0 -8
  380. package/shared/public-api.d.ts +0 -65
  381. package/shared/services/auth.service.d.ts +0 -44
  382. package/shared/services/breadcrumb.service.d.ts +0 -32
  383. package/shared/services/cms.service.d.ts +0 -27
  384. package/shared/services/file.service.d.ts +0 -22
  385. package/shared/services/forms.service.d.ts +0 -14
  386. package/shared/services/graphql-meta.service.d.ts +0 -45
  387. package/shared/services/graphql-plus.service.d.ts +0 -27
  388. package/shared/services/graphql.service.d.ts +0 -71
  389. package/shared/services/image.service.d.ts +0 -27
  390. package/shared/services/loader.service.d.ts +0 -32
  391. package/shared/services/navigation.service.d.ts +0 -15
  392. package/shared/services/scroll.service.d.ts +0 -85
  393. package/shared/services/storage.service.d.ts +0 -49
  394. package/shared/services/toast.service.d.ts +0 -15
  395. package/shared/services/user.service.d.ts +0 -77
  396. package/shared/services/ws.service.d.ts +0 -8
  397. package/shared/types/graphql-fields.type.d.ts +0 -5
  398. package/shared/types/storage.type.d.ts +0 -4
  399. package/shared/validators/email.validator.d.ts +0 -1
  400. package/shared/validators/match.validator.d.ts +0 -4
  401. package/shared/validators/secure-password.validator.d.ts +0 -1
  402. package/src/base.module.d.ts +0 -16
  403. package/src/decorators/auto-unsubscribe.decorator.d.ts +0 -5
  404. package/src/directives/lazy-load.directive.d.ts +0 -17
  405. package/src/directives/match-height.directive.d.ts +0 -20
  406. package/src/directives/resizable.directive.d.ts +0 -26
  407. package/src/factories/apollo-options.factory.d.ts +0 -16
  408. package/src/functions/extract-files.function.d.ts +0 -15
  409. package/src/guards/auth.guard.d.ts +0 -27
  410. package/src/guards/can-deactivate.guard.d.ts +0 -10
  411. package/src/guards/logout.guard.d.ts +0 -16
  412. package/src/pipes/date-ago.pipe.d.ts +0 -34
  413. package/src/pipes/safe-html.pipe.d.ts +0 -13
  414. package/src/services/fullscreen.service.d.ts +0 -18
  415. package/src/services/seo.service.d.ts +0 -50
  416. package/src/services/theme.service.d.ts +0 -17
@@ -0,0 +1,830 @@
1
+ import * as i0 from "@angular/core";
2
+ import { EnvironmentProviders, InjectionToken, Signal } from "@angular/core";
3
+ /** Execution mode for a prompt. `auto` = reactive agent loop, `plan` = validate-all-then-execute. */
4
+ type LtAiMode = 'auto' | 'plan';
5
+ /**
6
+ * Input for a single AI run — sent to `POST /ai/prompt` | `POST /ai/stream`.
7
+ *
8
+ * Distinct from {@link LtAiPromptInput} (CRUD input for the user-facing
9
+ * `LtAiPrompt` entity). Pre-1.7.0 release builds called this type
10
+ * `LtAiPromptInput`; renamed to avoid a silent declaration merge with the
11
+ * CRUD input introduced for `LtAiPromptsService`.
12
+ */
13
+ interface LtAiPromptRunInput {
14
+ /** Confirm execution of actions that required confirmation in a previous turn. */
15
+ confirm?: boolean;
16
+ /** Id of the connection to use (omit to let the backend resolution chain decide). */
17
+ connectionId?: string;
18
+ /** Conversation id for multi-turn continuation. */
19
+ conversationId?: string;
20
+ /** Structured context the assistant should consider. */
21
+ context?: Record<string, unknown>;
22
+ /** Untrusted client metadata (current URL, navigation, console logs) for enrichment. */
23
+ metadata?: Record<string, unknown>;
24
+ /** Execution mode (defaults to the backend's `ai.defaultMode`). */
25
+ mode?: LtAiMode;
26
+ /** The user's prompt text. */
27
+ prompt: string;
28
+ /** Override the admin default for requiring confirmation of mutating actions. */
29
+ requireConfirmation?: boolean;
30
+ }
31
+ /** A tool action executed (or planned/pending) during a run. */
32
+ interface LtAiAction {
33
+ arguments?: Record<string, any>;
34
+ name: string;
35
+ result?: any;
36
+ success?: boolean;
37
+ }
38
+ /** Token usage of a single run (best effort). */
39
+ interface LtAiUsage {
40
+ completionTokens?: number;
41
+ promptTokens?: number;
42
+ totalTokens?: number;
43
+ }
44
+ /** Compact token-budget summary attached to every response. */
45
+ interface LtAiBudgetSummary {
46
+ /** Effective limit (user → tenant → LLM context window → null). Null = no limit. */
47
+ maxTokens?: number;
48
+ promptTokens?: number;
49
+ remainingTokens?: number;
50
+ resetAt?: string;
51
+ /** Which scope yielded maxTokens: 'user', 'tenant' or 'llm'. */
52
+ scope?: 'llm' | 'tenant' | 'user';
53
+ usedTokens?: number;
54
+ }
55
+ /** Structured response of a prompt run (`CoreAiResponse`). */
56
+ interface LtAiResponse {
57
+ actions?: LtAiAction[];
58
+ budget?: LtAiBudgetSummary;
59
+ connectionId?: string;
60
+ /** Context-window utilization at the end of the run (used/total tokens). */
61
+ contextWindow?: {
62
+ total: number;
63
+ used: number;
64
+ };
65
+ conversationId?: string;
66
+ data?: any;
67
+ denied?: boolean;
68
+ deniedActions?: LtAiAction[];
69
+ iterations?: number;
70
+ pendingActions?: LtAiAction[];
71
+ pendingQuestion?: {
72
+ options?: {
73
+ label: string;
74
+ value: string;
75
+ }[];
76
+ question: string;
77
+ };
78
+ plan?: LtAiAction[];
79
+ requiresConfirmation?: boolean;
80
+ text: string;
81
+ usage?: LtAiUsage;
82
+ }
83
+ /** Server-sent event emitted by `POST /ai/stream`. */
84
+ type LtAiStreamEvent = {
85
+ action: LtAiAction;
86
+ type: 'action';
87
+ } | {
88
+ message: string;
89
+ type: 'error';
90
+ } | {
91
+ response: LtAiResponse;
92
+ type: 'final';
93
+ } | {
94
+ token: string;
95
+ type: 'token';
96
+ };
97
+ /** Callbacks for {@link LtAiState.promptStream}. */
98
+ interface LtAiStreamHandlers {
99
+ onAction?: (action: LtAiAction) => void;
100
+ onError?: (message: string) => void;
101
+ onEvent?: (event: LtAiStreamEvent) => void;
102
+ onFinal?: (response: LtAiResponse) => void;
103
+ onToken?: (token: string) => void;
104
+ }
105
+ /** A single chat message in {@link LtAiChatState}. */
106
+ interface LtAiMessage {
107
+ actions?: LtAiAction[];
108
+ budget?: LtAiBudgetSummary;
109
+ content: string;
110
+ createdAt?: string;
111
+ denied?: boolean;
112
+ error?: boolean;
113
+ /** Pending actions awaiting confirmation (assistant turns only). */
114
+ pendingActions?: LtAiAction[];
115
+ /** Whether this assistant turn is still streaming. */
116
+ pending?: boolean;
117
+ /** Whether this assistant turn awaits a confirmation to proceed. */
118
+ requiresConfirmation?: boolean;
119
+ role: 'assistant' | 'user';
120
+ }
121
+ /** A non-sensitive connection the current user/tenant may use. */
122
+ interface LtAiAvailableConnection {
123
+ id: string;
124
+ isDefault?: boolean;
125
+ locked?: boolean;
126
+ model?: string;
127
+ name?: string;
128
+ selected?: boolean;
129
+ }
130
+ /** The current user's AI settings as they take effect (`GET/PUT /ai/settings`, nest-server >= 12.3.0). */
131
+ interface LtAiSettings {
132
+ /** Whether MCP asks this user before a destructive tool (and a mutating one, if configured) runs. */
133
+ mcpConfirmation: boolean;
134
+ /** Whether the server fixed `mcpConfirmation`, so the user cannot change it (a change answers 403 `#LTNS_0609`). */
135
+ mcpConfirmationEnforced: boolean;
136
+ }
137
+ /** The user's own choices for `PUT /ai/settings`; a field left out stays unchanged. */
138
+ interface LtAiSettingsInput {
139
+ mcpConfirmation?: boolean;
140
+ }
141
+ /** Whether the API's AI module is on (`GET /ai/status`), as `LtAiStatusService` holds it. */
142
+ interface LtAiStatus {
143
+ /** True only after a well-formed 200: the AI module is on. */
144
+ enabled: boolean;
145
+ /** Why the status could not be read (network, timeout, other status, malformed body); null for an answer, 404 included. */
146
+ error: null | string;
147
+ /** True once an answer or an error is in. */
148
+ loaded: boolean;
149
+ /** Whether the API serves MCP; false whenever `enabled` is false. */
150
+ mcp: boolean;
151
+ }
152
+ /** Usage for a single scope (user or tenant). */
153
+ interface LtAiUsageScope {
154
+ maxPrompts?: number;
155
+ maxTokens?: number;
156
+ period: string;
157
+ refId?: string;
158
+ remainingPrompts?: number;
159
+ remainingTokens?: number;
160
+ resetAt?: string;
161
+ scope: string;
162
+ usedPrompts: number;
163
+ usedTokens: number;
164
+ }
165
+ /** Full usage info (`GET /ai/usage`). */
166
+ interface LtAiUsageInfo {
167
+ tenant?: LtAiUsageScope;
168
+ user?: LtAiUsageScope;
169
+ }
170
+ /** Admin view of a connection (`apiKey` is never returned — only `hasApiKey`). */
171
+ interface LtAiConnection {
172
+ apiKeyEnv?: string;
173
+ baseUrl?: string;
174
+ capabilities?: string[];
175
+ defaultMaxTokens?: number;
176
+ defaultTemperature?: number;
177
+ description?: string;
178
+ enabled?: boolean;
179
+ enforced?: boolean;
180
+ enforcedTenantIds?: string[];
181
+ hasApiKey?: boolean;
182
+ id: string;
183
+ isDefault?: boolean;
184
+ model?: string;
185
+ name?: string;
186
+ providerType?: string;
187
+ supportsJsonResponse?: boolean;
188
+ supportsNativeTools?: boolean;
189
+ supportsVision?: boolean;
190
+ tenantIds?: string[];
191
+ }
192
+ /** Input to create/update a connection (`apiKey`: value sets, '' clears, omit leaves). */
193
+ interface LtAiConnectionInput {
194
+ apiKey?: string;
195
+ apiKeyEnv?: string;
196
+ baseUrl?: string;
197
+ defaultMaxTokens?: number;
198
+ defaultTemperature?: number;
199
+ description?: string;
200
+ enabled?: boolean;
201
+ enforced?: boolean;
202
+ enforcedTenantIds?: string[];
203
+ isDefault?: boolean;
204
+ model?: string;
205
+ name?: string;
206
+ providerType?: string;
207
+ supportsJsonResponse?: boolean;
208
+ supportsNativeTools?: boolean;
209
+ supportsVision?: boolean;
210
+ tenantIds?: string[];
211
+ }
212
+ /** A tenant/user connection preference. */
213
+ interface LtAiConnectionPreference {
214
+ connectionId: string;
215
+ enforced?: boolean;
216
+ id?: string;
217
+ refId: string;
218
+ scope: 'tenant' | 'user';
219
+ }
220
+ /** A per-user/per-tenant budget-limit override. */
221
+ interface LtAiBudgetLimit {
222
+ id?: string;
223
+ maxPrompts?: number;
224
+ maxTokens?: number;
225
+ period?: 'day' | 'month' | 'none';
226
+ refId: string;
227
+ scope: 'tenant' | 'user';
228
+ }
229
+ /** An AI interaction audit record. */
230
+ interface LtAiInteraction {
231
+ actions?: {
232
+ name: string;
233
+ success: boolean;
234
+ }[];
235
+ completionTokens?: number;
236
+ connectionId?: string;
237
+ createdAt?: string;
238
+ id: string;
239
+ iterations?: number;
240
+ prompt?: string;
241
+ promptTokens?: number;
242
+ responseText?: string;
243
+ tenantId?: string;
244
+ totalTokens?: number;
245
+ userId?: string;
246
+ }
247
+ /**
248
+ * An admin-editable AI slot — a logical building block of the SYSTEM prompt
249
+ * (e.g. `base`, `permissions`, `anti_hallucination`, `tool_catalog`).
250
+ * The backend ships built-in defaults for every key; a row here OVERRIDES the
251
+ * default for its `key` (optionally scoped by `locale`/`capability`).
252
+ * When multi-tenancy is active, slots are tenant-scoped.
253
+ */
254
+ interface LtAiSlot {
255
+ /** Capability scope: 'all', 'native' or 'emulated'. */
256
+ capability?: string;
257
+ /** Slot text (supports {{placeholders}}). */
258
+ content: string;
259
+ createdAt?: string;
260
+ /** Admin-facing description of the slot. */
261
+ description?: string;
262
+ /** Whether the slot is included in the prompt. */
263
+ enabled?: boolean;
264
+ id: string;
265
+ /** Logical prompt slot key (e.g. 'base', 'permissions', 'anti_hallucination'). */
266
+ key: string;
267
+ /** Locale (e.g. 'en', 'de'); empty = all languages. */
268
+ locale?: string;
269
+ /** Assembly order (ascending). */
270
+ order?: number;
271
+ /** Tenant id the slot applies to (auto-set; undefined = system-wide). */
272
+ tenantId?: string;
273
+ updatedAt?: string;
274
+ }
275
+ /** Input to create/update an admin AI slot. */
276
+ interface LtAiSlotInput {
277
+ capability?: string;
278
+ content?: string;
279
+ description?: string;
280
+ enabled?: boolean;
281
+ key?: string;
282
+ locale?: string;
283
+ order?: number;
284
+ }
285
+ /**
286
+ * Effective slot for the admin UI — framework defaults + tenant overrides +
287
+ * tenant customs in one list. The `isSystem` / `isOverride` flags drive which
288
+ * actions the UI renders:
289
+ * - `isSystem: true` → virtual default row (no `id`). Action: "Bearbeiten" → POST creates an override.
290
+ * - `isOverride: true` → tenant row that overrides a system default. Action: "Zurücksetzen" → reset.
291
+ * - else → custom tenant slot. Action: "Löschen" → real delete (no restore).
292
+ */
293
+ interface LtAiEffectiveSlot {
294
+ capability?: string;
295
+ content: string;
296
+ description?: string;
297
+ enabled: boolean;
298
+ id?: string;
299
+ /** True when a tenant row overrides a framework default. */
300
+ isOverride: boolean;
301
+ /** True for built-in framework defaults (no DB row). */
302
+ isSystem: boolean;
303
+ key: string;
304
+ locale?: string;
305
+ order: number;
306
+ scope?: string;
307
+ /** System-default key this row overrides (only on overrides). */
308
+ systemKey?: string;
309
+ tenantId?: string;
310
+ }
311
+ /**
312
+ * Public metadata of a registered placeholder — returned by the placeholders
313
+ * endpoint. Used by the slot / prompt editors to render a "what can I insert"
314
+ * hint sidebar dynamically (no hard-coded list in the frontend).
315
+ */
316
+ interface LtAiPlaceholder {
317
+ /** One-sentence description shown in the helper sidebar. */
318
+ description: string;
319
+ /** Optional example value (tooltip). */
320
+ example?: string;
321
+ /** Token name without curly braces (e.g. `'roles'` matches `{{roles}}`). */
322
+ name: string;
323
+ }
324
+ /**
325
+ * A learned prompt hint from the governed self-improvement loop. Only `approved`
326
+ * + enabled hints reach the prompt; hints only ever ADD guidance and can never
327
+ * relax the backend-enforced security core.
328
+ */
329
+ interface LtAiPromptHint {
330
+ /** Guidance text added to the prompt when approved. */
331
+ content: string;
332
+ createdAt?: string;
333
+ /** Whether the hint is active. */
334
+ enabled?: boolean;
335
+ id: string;
336
+ /** Number of times the failure pattern was observed. */
337
+ occurrences?: number;
338
+ /** Scope the hint applies to (e.g. a tool name); empty = global. */
339
+ scope?: string;
340
+ /** Governance status: 'suggested', 'approved' or 'rejected'. */
341
+ status?: string;
342
+ /** Failure-pattern identifier that produced the hint. */
343
+ trigger?: string;
344
+ updatedAt?: string;
345
+ }
346
+ /** Input to create/update a learned prompt hint (typically approve/reject or edit). */
347
+ interface LtAiPromptHintInput {
348
+ content?: string;
349
+ enabled?: boolean;
350
+ occurrences?: number;
351
+ scope?: string;
352
+ status?: string;
353
+ trigger?: string;
354
+ }
355
+ /**
356
+ * A user-facing prompt ("Vorlage") — a short, named piece of text the user
357
+ * can insert into the chat input with one click. Different from
358
+ * {@link LtAiSlot}, which is the admin-only system-prompt building block.
359
+ *
360
+ * Visibility scopes:
361
+ * - `user` — only the owner sees it ("private", default).
362
+ * - `tenant` — all members of the owner's tenant see it ("public").
363
+ */
364
+ interface LtAiPrompt {
365
+ /** The prompt text inserted into the chat input (may contain placeholders). */
366
+ content: string;
367
+ createdAt?: string;
368
+ /** Optional description. */
369
+ description?: string;
370
+ /** Whether the prompt is active (disabled prompts are hidden). */
371
+ enabled?: boolean;
372
+ /** Optional icon hint (lucide name or single emoji). */
373
+ icon?: string;
374
+ id: string;
375
+ /** Display label shown in the picker. */
376
+ name: string;
377
+ /** Owner user id (set automatically by the server). */
378
+ ownerId?: string;
379
+ /** Sort order in the picker (ascending). */
380
+ order?: number;
381
+ /** Visibility scope (`'user'` | `'tenant'` | `'global'`). */
382
+ scope: string;
383
+ /** Tenant id when `scope === 'tenant'` (set automatically by the server). */
384
+ tenantId?: string;
385
+ updatedAt?: string;
386
+ }
387
+ /**
388
+ * Input to create/update a {@link LtAiPrompt} (user-facing "Vorlage").
389
+ *
390
+ * Distinct from {@link LtAiPromptRunInput} (the payload for `LtAiService.prompt()`).
391
+ * Used by `LtAiPromptsService.create()` / `.update()`.
392
+ */
393
+ interface LtAiPromptInput {
394
+ content?: string;
395
+ description?: string;
396
+ enabled?: boolean;
397
+ icon?: string;
398
+ name?: string;
399
+ order?: number;
400
+ scope?: string;
401
+ }
402
+ interface LtAiState {
403
+ error: Signal<null | string>;
404
+ loading: Signal<boolean>;
405
+ prompt: (input: LtAiPromptRunInput) => Promise<LtAiResponse>;
406
+ promptStream: (input: LtAiPromptRunInput, handlers?: LtAiStreamHandlers, options?: {
407
+ signal?: AbortSignal;
408
+ }) => Promise<LtAiResponse | undefined>;
409
+ streaming: Signal<boolean>;
410
+ }
411
+ interface LtAiChatOptions {
412
+ /** Fixed connection id (or a ref) to use for every turn. */
413
+ connectionId?: Signal<string | undefined> | string;
414
+ /**
415
+ * Existing conversation id to continue (or a signal). When the signal changes, the chat continues that conversation;
416
+ * the server's answer updates the chat's own `conversationId` either way.
417
+ */
418
+ conversationId?: Signal<string | undefined> | string;
419
+ /**
420
+ * Cap the local `messages` array. When the cap is exceeded after a new push,
421
+ * the oldest entries are removed. Use this for long-running chats to prevent
422
+ * unbounded memory growth. Server-side conversation history is unaffected.
423
+ */
424
+ maxMessages?: number;
425
+ /** Producer for per-turn client metadata (e.g. current URL). */
426
+ metadata?: () => Record<string, unknown>;
427
+ /** Execution mode for every turn (or a signal, read per turn). */
428
+ mode?: LtAiMode | Signal<LtAiMode | undefined>;
429
+ /** Whether to stream responses (default true). */
430
+ stream?: boolean;
431
+ }
432
+ interface LtAiChatState {
433
+ budget: Signal<LtAiBudgetSummary | null>;
434
+ clear: () => void;
435
+ confirm: () => Promise<void>;
436
+ /** Context-window utilization of the latest assistant turn (used/total tokens). */
437
+ contextWindow: Signal<{
438
+ total: number;
439
+ used: number;
440
+ } | null>;
441
+ conversationId: Signal<string | undefined>;
442
+ error: Signal<null | string>;
443
+ messages: Signal<LtAiMessage[]>;
444
+ requiresConfirmation: Signal<boolean>;
445
+ send: (content: string) => Promise<void>;
446
+ stop: () => void;
447
+ streaming: Signal<boolean>;
448
+ }
449
+ interface LtAiConnectionsState {
450
+ connections: Signal<LtAiAvailableConnection[]>;
451
+ error: Signal<null | string>;
452
+ loading: Signal<boolean>;
453
+ load: () => Promise<void>;
454
+ locked: Signal<boolean>;
455
+ select: (connectionId: string) => Promise<void>;
456
+ selected: Signal<LtAiAvailableConnection | undefined>;
457
+ }
458
+ interface LtAiStatusState {
459
+ enabled: Signal<boolean>;
460
+ error: Signal<null | string>;
461
+ /** Reads the status once per app start; `force` asks again. Never throws. */
462
+ load: (options?: {
463
+ force?: boolean;
464
+ }) => Promise<void>;
465
+ loaded: Signal<boolean>;
466
+ mcp: Signal<boolean>;
467
+ }
468
+ interface LtAiSettingsState {
469
+ /** True when the server fixed the MCP confirmation: show the switch disabled. */
470
+ enforced: Signal<boolean>;
471
+ error: Signal<null | string>;
472
+ load: () => Promise<void>;
473
+ loading: Signal<boolean>;
474
+ settings: Signal<LtAiSettings | null>;
475
+ /** Stores the user's choice and adopts the answer; throws (and sets `error`) when refused. */
476
+ update: (input: LtAiSettingsInput) => Promise<void>;
477
+ }
478
+ interface LtAiUsageState {
479
+ error: Signal<null | string>;
480
+ loading: Signal<boolean>;
481
+ load: () => Promise<void>;
482
+ usage: Signal<LtAiUsageInfo | null>;
483
+ }
484
+ /**
485
+ * User-facing prompt service. Lets any signed-in user manage their own
486
+ * prompts ("Vorlagen") and use the visible ones (own private + tenant public)
487
+ * in a chat.
488
+ */
489
+ interface LtAiPromptsState {
490
+ create: (input: LtAiPromptInput) => Promise<LtAiPrompt>;
491
+ error: Signal<null | string>;
492
+ load: () => Promise<void>;
493
+ loading: Signal<boolean>;
494
+ prompts: Signal<LtAiPrompt[]>;
495
+ remove: (id: string) => Promise<LtAiPrompt>;
496
+ update: (id: string, input: LtAiPromptInput) => Promise<LtAiPrompt>;
497
+ }
498
+ /**
499
+ * Admin AI service surface — headless on purpose: every method returns the
500
+ * raw backend response. No shared `loading` / `error` refs because admin
501
+ * screens typically need per-row spinners and per-action toasts that a single
502
+ * shared ref cannot model. Wire each call to your UI layer's loading/error
503
+ * scheme.
504
+ *
505
+ * All endpoints are server-side `@Restricted(ADMIN)`; the service itself
506
+ * does not enforce role. Render admin UI behind a frontend route guard for UX,
507
+ * but trust the backend for authorization.
508
+ */
509
+ interface LtAiAdminState {
510
+ /** Create a per-user/per-tenant budget limit override (POST /ai/budget-limits). */
511
+ createBudgetLimit: (input: LtAiBudgetLimit) => Promise<LtAiBudgetLimit>;
512
+ /** Create a connection. `input.apiKey` is write-only; the response never echoes it. */
513
+ createConnection: (input: LtAiConnectionInput) => Promise<LtAiConnection>;
514
+ /** Create a learned prompt hint (typically used to manually approve/reject). */
515
+ createPromptHint: (input: LtAiPromptHintInput) => Promise<LtAiPromptHint>;
516
+ /** Create a tenant-scoped system-prompt slot row (overrides framework default for `key`). */
517
+ createSlot: (input: LtAiSlotInput) => Promise<LtAiSlot>;
518
+ deleteBudgetLimit: (id: string) => Promise<LtAiBudgetLimit>;
519
+ deleteConnection: (id: string) => Promise<LtAiConnection>;
520
+ /** Delete a connection preference by its preference id (NOT the user/tenant id). */
521
+ deletePreference: (id: string) => Promise<LtAiConnectionPreference>;
522
+ deletePromptHint: (id: string) => Promise<LtAiPromptHint>;
523
+ deleteSlot: (id: string) => Promise<LtAiSlot>;
524
+ /**
525
+ * Re-detect a connection's `capabilities` / `supportsNativeTools` / `supportsVision`
526
+ * by probing the provider. Mutates the persisted connection row.
527
+ */
528
+ detectCapabilities: (id: string) => Promise<LtAiConnection>;
529
+ /** Returns the connection WITHOUT the `apiKey` (only `hasApiKey: boolean`). */
530
+ getConnection: (id: string) => Promise<LtAiConnection>;
531
+ listBudgetLimits: () => Promise<LtAiBudgetLimit[]>;
532
+ listConnections: () => Promise<LtAiConnection[]>;
533
+ /** Effective slots view — framework defaults overlaid by tenant overrides + tenant customs. */
534
+ listEffectiveSlots: () => Promise<LtAiEffectiveSlot[]>;
535
+ /** Recent AI interactions (audit log, ADMIN-only). */
536
+ listInteractions: () => Promise<LtAiInteraction[]>;
537
+ listPreferences: () => Promise<LtAiConnectionPreference[]>;
538
+ listPromptHints: () => Promise<LtAiPromptHint[]>;
539
+ /** List ONLY tenant overrides + customs (not the framework defaults — use `listEffectiveSlots` for that). */
540
+ listSlots: () => Promise<LtAiSlot[]>;
541
+ /** Reset a tenant override → framework default applies again. */
542
+ resetSlot: (id: string) => Promise<boolean>;
543
+ /**
544
+ * Upsert a connection preference for the given `refId` (user or tenant) +
545
+ * `scope`. Replaces the existing row for that scope if present.
546
+ */
547
+ setPreference: (input: LtAiConnectionPreference) => Promise<LtAiConnectionPreference>;
548
+ updateBudgetLimit: (id: string, input: LtAiBudgetLimit) => Promise<LtAiBudgetLimit>;
549
+ /**
550
+ * Update a connection. `input.apiKey`: pass the new value to set, an empty
551
+ * string `''` to clear, omit to leave the stored key unchanged.
552
+ */
553
+ updateConnection: (id: string, input: LtAiConnectionInput) => Promise<LtAiConnection>;
554
+ updatePromptHint: (id: string, input: LtAiPromptHintInput) => Promise<LtAiPromptHint>;
555
+ updateSlot: (id: string, input: LtAiSlotInput) => Promise<LtAiSlot>;
556
+ }
557
+ /**
558
+ * Placeholder list service. Loads the runtime placeholder registry from
559
+ * the backend (`GET /ai/placeholders`) so slot / prompt editors can render
560
+ * a dynamic helper sidebar without hard-coding any names in the frontend.
561
+ */
562
+ interface LtAiPlaceholdersState {
563
+ error: Signal<null | string>;
564
+ load: () => Promise<void>;
565
+ loading: Signal<boolean>;
566
+ placeholders: Signal<LtAiPlaceholder[]>;
567
+ }
568
+ /** A chat session created by {@link injectLtAiChat}. */
569
+ type LtAiChat = LtAiChatState;
570
+ /**
571
+ * Create a chat session (counterpart of `useLtAiChat()`), bound to the current injection context: a running stream is
572
+ * stopped on destroy. Streams by default; `send` is ignored while a turn runs; `confirm()` re-sends the last prompt with
573
+ * `confirm: true`; abort is not an error; `maxMessages` trims the oldest messages.
574
+ *
575
+ * Every chat has its own state (messages, conversation, budget, streaming); it does not share `LtAiService`'s signals.
576
+ * A stream `error` event marks the assistant turn as failed and sets `error`, like a failed request.
577
+ *
578
+ * @example
579
+ * protected readonly chat = injectLtAiChat({ connectionId: this.connectionId, metadata: () => ({ url: location.href }) });
580
+ */
581
+ export declare function injectLtAiChat(options?: LtAiChatOptions): LtAiChat;
582
+ /**
583
+ * Admin AI endpoints, headless on purpose: every method returns the raw response, no shared loading/error state.
584
+ * ADMIN is enforced server-side (`@Restricted(ADMIN)`). Ids are `encodeURIComponent`-ed.
585
+ */
586
+ export declare class LtAiAdminService implements LtAiAdminState {
587
+ private readonly http;
588
+ listConnections: () => Promise<LtAiConnection[]>;
589
+ createConnection: (input: LtAiConnectionInput) => Promise<LtAiConnection>;
590
+ getConnection: (id: string) => Promise<LtAiConnection>;
591
+ updateConnection: (id: string, input: LtAiConnectionInput) => Promise<LtAiConnection>;
592
+ deleteConnection: (id: string) => Promise<LtAiConnection>;
593
+ detectCapabilities: (id: string) => Promise<LtAiConnection>;
594
+ listPreferences: () => Promise<LtAiConnectionPreference[]>;
595
+ setPreference: (input: LtAiConnectionPreference) => Promise<LtAiConnectionPreference>;
596
+ deletePreference: (id: string) => Promise<LtAiConnectionPreference>;
597
+ listBudgetLimits: () => Promise<LtAiBudgetLimit[]>;
598
+ createBudgetLimit: (input: LtAiBudgetLimit) => Promise<LtAiBudgetLimit>;
599
+ updateBudgetLimit: (id: string, input: LtAiBudgetLimit) => Promise<LtAiBudgetLimit>;
600
+ deleteBudgetLimit: (id: string) => Promise<LtAiBudgetLimit>;
601
+ listSlots: () => Promise<LtAiSlot[]>;
602
+ listEffectiveSlots: () => Promise<LtAiEffectiveSlot[]>;
603
+ createSlot: (input: LtAiSlotInput) => Promise<LtAiSlot>;
604
+ updateSlot: (id: string, input: LtAiSlotInput) => Promise<LtAiSlot>;
605
+ deleteSlot: (id: string) => Promise<LtAiSlot>;
606
+ resetSlot: (id: string) => Promise<boolean>;
607
+ listPromptHints: () => Promise<LtAiPromptHint[]>;
608
+ createPromptHint: (input: LtAiPromptHintInput) => Promise<LtAiPromptHint>;
609
+ updatePromptHint: (id: string, input: LtAiPromptHintInput) => Promise<LtAiPromptHint>;
610
+ deletePromptHint: (id: string) => Promise<LtAiPromptHint>;
611
+ listInteractions: () => Promise<LtAiInteraction[]>;
612
+ static ɵfac: i0.ɵɵFactoryDeclaration<LtAiAdminService, never>;
613
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
614
+ }
615
+ /**
616
+ * Connections the user may pick (`GET /ai/connections/available`, `POST /ai/connections/select`), the counterpart
617
+ * of `useLtAiConnections()`. `selected` is the connection flagged `selected`; `locked` is true when a mandatory layer
618
+ * applies (any connection flagged `locked`), then the picker should be read-only.
619
+ */
620
+ export declare class LtAiConnectionsService implements LtAiConnectionsState {
621
+ private readonly http;
622
+ private readonly calls;
623
+ private readonly list;
624
+ readonly connections: import("@angular/core").Signal<LtAiAvailableConnection[]>;
625
+ readonly error: import("@angular/core").Signal<string | null>;
626
+ readonly loading: import("@angular/core").Signal<boolean>;
627
+ readonly locked: import("@angular/core").Signal<boolean>;
628
+ readonly selected: import("@angular/core").Signal<LtAiAvailableConnection | undefined>;
629
+ /** Load the available connections; a failure sets `error` and does not throw. */
630
+ load(): Promise<void>;
631
+ /** Make `connectionId` the user's default; adopts the list the server answers with. Throws (and sets `error`) when refused. */
632
+ select(connectionId: string): Promise<void>;
633
+ static ɵfac: i0.ɵɵFactoryDeclaration<LtAiConnectionsService, never>;
634
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
635
+ }
636
+ /** Maximum length of one SSE line (1 MiB); longer lines abort the stream. */
637
+ export declare const LT_AI_SSE_MAX_LINE: number;
638
+ /** HTTP helpers of the AI services (counterpart of `buildLtAiUrl` / `ltAiRequest`). All calls use the auth-aware `LT_FETCH`. */
639
+ export declare class LtAiHttpService {
640
+ private readonly api;
641
+ private readonly fetch;
642
+ private readonly options;
643
+ /** AI base path (`/ai`). */
644
+ basePath(): string;
645
+ /** `<api><basePath><path>`. */
646
+ buildUrl(path: string): string;
647
+ /** JSON request (`Accept: application/json`); throws {@link ltAiResponseError} on non-2xx; 204 → `undefined`. */
648
+ request<T>(method: 'DELETE' | 'GET' | 'POST' | 'PUT', path: string, body?: unknown, options?: {
649
+ signal?: AbortSignal;
650
+ }): Promise<T>;
651
+ /** Raw request for streaming (`POST /ai/stream`). */
652
+ stream(path: string, body: unknown, options?: {
653
+ signal?: AbortSignal;
654
+ }): Promise<Response>;
655
+ static ɵfac: i0.ɵɵFactoryDeclaration<LtAiHttpService, never>;
656
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
657
+ }
658
+ /** Build an `Error & { status }` from an error response (`message`/`error`, arrays joined, capped at 1 KiB). */
659
+ export declare function ltAiResponseError(response: Response): Promise<Error & {
660
+ status: number;
661
+ }>;
662
+ /**
663
+ * Parse an SSE response body (`data: {json}` lines) and call `onEvent` per event. Handles chunks split mid-line,
664
+ * ignores non-`data:` lines, `[DONE]` and malformed JSON, throws on lines over 1 MiB; aborting cancels the reader.
665
+ *
666
+ * `options.signal` stops parsing without cancelling the underlying fetch (component-destroy races): the reader is
667
+ * cancelled, also while it waits for the next chunk, and the function resolves without delivering further events.
668
+ * An error thrown by `onEvent` propagates (and cancels the reader); only unparsable payloads are skipped.
669
+ */
670
+ export declare function parseLtAiSseStream(response: Response, onEvent: (event: LtAiStreamEvent) => void, options?: {
671
+ signal?: AbortSignal;
672
+ }): Promise<void>;
673
+ /** Options of `provideLtAi()`; runtime override `NG_PUBLIC_LT_AI_BASE_PATH`. */
674
+ interface LtAiOptions {
675
+ /** REST base of the nest-server AI controller (default `/ai`). */
676
+ basePath?: string;
677
+ }
678
+ /** Resolved AI options. */
679
+ export declare const LT_AI_OPTIONS: InjectionToken<Required<LtAiOptions>>;
680
+ /** AI providers (base path). The AI services work without it with the defaults. */
681
+ export declare function provideLtAi(options?: LtAiOptions): EnvironmentProviders;
682
+ /**
683
+ * Runtime placeholder registry for prompts (`GET /ai/placeholders`), the counterpart of `useLtAiPlaceholders()`, so
684
+ * slot/prompt editors can list the supported `{{placeholders}}` without hard-coding them.
685
+ */
686
+ export declare class LtAiPlaceholdersService implements LtAiPlaceholdersState {
687
+ private readonly http;
688
+ private readonly calls;
689
+ private readonly list;
690
+ readonly error: import("@angular/core").Signal<string | null>;
691
+ readonly loading: import("@angular/core").Signal<boolean>;
692
+ readonly placeholders: import("@angular/core").Signal<LtAiPlaceholder[]>;
693
+ /** Load the registry; a failure sets `error`, empties the list and does not throw. */
694
+ load(): Promise<void>;
695
+ static ɵfac: i0.ɵɵFactoryDeclaration<LtAiPlaceholdersService, never>;
696
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
697
+ }
698
+ /**
699
+ * Saved prompts ("Vorlagen") of the user and the tenant (`GET/POST /ai/prompts`, `PUT/DELETE /ai/prompts/:id`), the
700
+ * counterpart of `useLtAiPrompts()`. `load()` returns what the user may see (own + tenant), filtered by the server.
701
+ * The list reloads after each mutation; ids are `encodeURIComponent`-ed.
702
+ */
703
+ export declare class LtAiPromptsService implements LtAiPromptsState {
704
+ private readonly http;
705
+ private readonly calls;
706
+ private readonly list;
707
+ private loadSequence;
708
+ readonly error: import("@angular/core").Signal<string | null>;
709
+ readonly loading: import("@angular/core").Signal<boolean>;
710
+ readonly prompts: import("@angular/core").Signal<LtAiPrompt[]>;
711
+ /** Load the visible prompts; a failure sets `error`, empties the list and does not throw. Only the latest load is applied. */
712
+ load(): Promise<void>;
713
+ /** Create a prompt and reload the list; throws (and sets `error`) when refused. */
714
+ create(input: LtAiPromptInput): Promise<LtAiPrompt>;
715
+ /** Update a prompt and reload the list; throws (and sets `error`) when refused. */
716
+ update(id: string, input: LtAiPromptInput): Promise<LtAiPrompt>;
717
+ /** Delete a prompt and reload the list; throws (and sets `error`) when refused. */
718
+ remove(id: string): Promise<LtAiPrompt>;
719
+ private mutate;
720
+ static ɵfac: i0.ɵɵFactoryDeclaration<LtAiPromptsService, never>;
721
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
722
+ }
723
+ /**
724
+ * Prompt runs (`POST /ai/prompt`) and the SSE stream (`POST /ai/stream`, events token/action/error/final), the
725
+ * counterpart of `useLtAi()`. Headless: pair it with an own UI or use {@link injectLtAiChat}.
726
+ *
727
+ * Root service: `loading` and `streaming` stay `true` while any call of the kind runs, `error` holds the latest
728
+ * failure (an abort is not one).
729
+ */
730
+ export declare class LtAiService implements LtAiState {
731
+ private readonly http;
732
+ private readonly calls;
733
+ private readonly streams;
734
+ /** Message of the latest failed run or stream `error` event. */
735
+ readonly error: import("@angular/core").Signal<string | null>;
736
+ /** `true` while a `prompt()` runs. */
737
+ readonly loading: import("@angular/core").Signal<boolean>;
738
+ /** `true` while a `promptStream()` runs. */
739
+ readonly streaming: import("@angular/core").Signal<boolean>;
740
+ /** Run a prompt and return the full structured response; rejects (and sets `error`) on a non-2xx answer. */
741
+ prompt(input: LtAiPromptRunInput): Promise<LtAiResponse>;
742
+ /**
743
+ * Run a prompt and stream the answer; resolves with the final response, or `undefined` when the backend closes the
744
+ * stream without a `final` event. A stream `error` event sets `error` and calls `handlers.onError` without
745
+ * rejecting. Aborting through `options.signal` rejects with an `AbortError` and leaves `error` untouched.
746
+ *
747
+ * Meant for the browser: during SSR the render waits until the stream ends.
748
+ */
749
+ promptStream(input: LtAiPromptRunInput, handlers?: LtAiStreamHandlers, options?: {
750
+ signal?: AbortSignal;
751
+ }): Promise<LtAiResponse | undefined>;
752
+ static ɵfac: i0.ɵɵFactoryDeclaration<LtAiService, never>;
753
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
754
+ }
755
+ /**
756
+ * The user's own AI settings (`GET/PUT /ai/settings`, nest-server >= 12.3.0), the counterpart of `useLtAiSettings()`.
757
+ *
758
+ * The answer is always the setting as it takes effect and is adopted as is. When the server fixes it
759
+ * (`ai.mcp.confirmation.enforced`), `enforced` is true, the switch should be shown disabled, and `update()` is refused
760
+ * with 403 `#LTNS_0609` (the previous value stays).
761
+ */
762
+ export declare class LtAiSettingsService implements LtAiSettingsState {
763
+ private readonly http;
764
+ private readonly calls;
765
+ private readonly current;
766
+ readonly enforced: import("@angular/core").Signal<boolean>;
767
+ readonly error: import("@angular/core").Signal<string | null>;
768
+ readonly loading: import("@angular/core").Signal<boolean>;
769
+ readonly settings: import("@angular/core").Signal<LtAiSettings | null>;
770
+ /** Load the settings; a failure sets `error` and does not throw. */
771
+ load(): Promise<void>;
772
+ /** Store the user's choice and adopt the server's answer; throws (and sets `error`) when refused. */
773
+ update(input: LtAiSettingsInput): Promise<void>;
774
+ static ɵfac: i0.ɵɵFactoryDeclaration<LtAiSettingsService, never>;
775
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
776
+ }
777
+ /** `TransferState` key under which the server hands the AI status to the browser. */
778
+ export declare const LT_AI_STATUS_STATE_KEY: import("@angular/core").StateKey<LtAiStatus>;
779
+ /** Upper bound of the status request, so a hanging API cannot stall every server render. */
780
+ export declare const LT_AI_STATUS_TIMEOUT_MS = 5000;
781
+ /**
782
+ * Whether the API's AI module is on (`GET /ai/status`, no credentials, 5 s timeout), the counterpart of
783
+ * `useLtAiStatus()`. nest-server answers 200 `{ mcp }` while the module is on and 404 while it is off.
784
+ *
785
+ * One request per app: concurrent `load()` calls share it, a loaded status is not asked again unless `force` is set.
786
+ * On the server the render waits for the answer and the status travels to the browser via `TransferState`, so the
787
+ * browser adopts it without a second request. Sent without credentials: the endpoint is public and the auth-aware
788
+ * fetch would start its 401 handling for nothing.
789
+ *
790
+ * Fails closed: anything but a well-formed 200 leaves `enabled` false. A 404 is an answer ("AI is off") and sets no
791
+ * `error`; a network error, a timeout, any other status or a malformed body sets a fixed `error` text, never the raw
792
+ * error message (on the server that may carry the private API URL incl. credentials and ends up in the HTML).
793
+ */
794
+ export declare class LtAiStatusService implements LtAiStatusState {
795
+ private readonly http;
796
+ private readonly transferState;
797
+ private readonly pendingTasks;
798
+ private readonly isServer;
799
+ private readonly state;
800
+ private inflight;
801
+ readonly enabled: import("@angular/core").Signal<boolean>;
802
+ readonly error: import("@angular/core").Signal<string | null>;
803
+ readonly loaded: import("@angular/core").Signal<boolean>;
804
+ readonly mcp: import("@angular/core").Signal<boolean>;
805
+ /** Read the status once per app start; `force` asks again. Never throws. */
806
+ load(options?: {
807
+ force?: boolean;
808
+ }): Promise<void>;
809
+ private fetchStatus;
810
+ private readTransferred;
811
+ static ɵfac: i0.ɵɵFactoryDeclaration<LtAiStatusService, never>;
812
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
813
+ }
814
+ /**
815
+ * Token/prompt usage and budget of user and tenant (`GET /ai/usage`), the counterpart of `useLtAiUsage()`. The compact
816
+ * per-response budget is on every prompt response (see `injectLtAiChat().budget`); this loads the full breakdown.
817
+ */
818
+ export declare class LtAiUsageService implements LtAiUsageState {
819
+ private readonly http;
820
+ private readonly calls;
821
+ private readonly current;
822
+ readonly error: import("@angular/core").Signal<string | null>;
823
+ readonly loading: import("@angular/core").Signal<boolean>;
824
+ readonly usage: import("@angular/core").Signal<LtAiUsageInfo | null>;
825
+ /** Load the usage; a failure sets `error` and does not throw. */
826
+ load(): Promise<void>;
827
+ static ɵfac: i0.ɵɵFactoryDeclaration<LtAiUsageService, never>;
828
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
829
+ }
830
+ export type { LtAiAction, LtAiAdminState, LtAiAvailableConnection, LtAiBudgetLimit, LtAiBudgetSummary, LtAiChat, LtAiChatOptions, LtAiChatState, LtAiConnection, LtAiConnectionInput, LtAiConnectionPreference, LtAiConnectionsState, LtAiEffectiveSlot, LtAiInteraction, LtAiMessage, LtAiMode, LtAiOptions, LtAiPlaceholder, LtAiPlaceholdersState, LtAiPrompt, LtAiPromptHint, LtAiPromptHintInput, LtAiPromptInput, LtAiPromptRunInput, LtAiPromptsState, LtAiResponse, LtAiSettings, LtAiSettingsInput, LtAiSettingsState, LtAiSlot, LtAiSlotInput, LtAiState, LtAiStatus, LtAiStatusState, LtAiStreamEvent, LtAiStreamHandlers, LtAiUsage, LtAiUsageInfo, LtAiUsageScope, LtAiUsageState };