@proofhound/core 0.1.6

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 (670) hide show
  1. package/LICENSE +190 -0
  2. package/dist/index.d.ts +7 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +10 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/infra/index.d.ts +12 -0
  7. package/dist/infra/index.d.ts.map +1 -0
  8. package/dist/infra/index.js +27 -0
  9. package/dist/infra/index.js.map +1 -0
  10. package/dist/server/channels/mcp/annotation.tools.d.ts +4 -0
  11. package/dist/server/channels/mcp/annotation.tools.d.ts.map +1 -0
  12. package/dist/server/channels/mcp/annotation.tools.js +132 -0
  13. package/dist/server/channels/mcp/annotation.tools.js.map +1 -0
  14. package/dist/server/channels/mcp/canary-release.tools.d.ts +4 -0
  15. package/dist/server/channels/mcp/canary-release.tools.d.ts.map +1 -0
  16. package/dist/server/channels/mcp/canary-release.tools.js +279 -0
  17. package/dist/server/channels/mcp/canary-release.tools.js.map +1 -0
  18. package/dist/server/channels/mcp/connector.tools.d.ts +4 -0
  19. package/dist/server/channels/mcp/connector.tools.d.ts.map +1 -0
  20. package/dist/server/channels/mcp/connector.tools.js +211 -0
  21. package/dist/server/channels/mcp/connector.tools.js.map +1 -0
  22. package/dist/server/channels/mcp/dataset-import.tools.d.ts +4 -0
  23. package/dist/server/channels/mcp/dataset-import.tools.d.ts.map +1 -0
  24. package/dist/server/channels/mcp/dataset-import.tools.js +107 -0
  25. package/dist/server/channels/mcp/dataset-import.tools.js.map +1 -0
  26. package/dist/server/channels/mcp/dataset.tools.d.ts +4 -0
  27. package/dist/server/channels/mcp/dataset.tools.d.ts.map +1 -0
  28. package/dist/server/channels/mcp/dataset.tools.js +166 -0
  29. package/dist/server/channels/mcp/dataset.tools.js.map +1 -0
  30. package/dist/server/channels/mcp/experiment.tools.d.ts +4 -0
  31. package/dist/server/channels/mcp/experiment.tools.d.ts.map +1 -0
  32. package/dist/server/channels/mcp/experiment.tools.js +133 -0
  33. package/dist/server/channels/mcp/experiment.tools.js.map +1 -0
  34. package/dist/server/channels/mcp/index.d.ts +19 -0
  35. package/dist/server/channels/mcp/index.d.ts.map +1 -0
  36. package/dist/server/channels/mcp/index.js +35 -0
  37. package/dist/server/channels/mcp/index.js.map +1 -0
  38. package/dist/server/channels/mcp/mcp-context.d.ts +30 -0
  39. package/dist/server/channels/mcp/mcp-context.d.ts.map +1 -0
  40. package/dist/server/channels/mcp/mcp-context.js +110 -0
  41. package/dist/server/channels/mcp/mcp-context.js.map +1 -0
  42. package/dist/server/channels/mcp/mcp-server.factory.d.ts +13 -0
  43. package/dist/server/channels/mcp/mcp-server.factory.d.ts.map +1 -0
  44. package/dist/server/channels/mcp/mcp-server.factory.js +42 -0
  45. package/dist/server/channels/mcp/mcp-server.factory.js.map +1 -0
  46. package/dist/server/channels/mcp/mcp.controller.d.ts +10 -0
  47. package/dist/server/channels/mcp/mcp.controller.d.ts.map +1 -0
  48. package/dist/server/channels/mcp/mcp.controller.js +67 -0
  49. package/dist/server/channels/mcp/mcp.controller.js.map +1 -0
  50. package/dist/server/channels/mcp/mcp.module.d.ts +3 -0
  51. package/dist/server/channels/mcp/mcp.module.d.ts.map +1 -0
  52. package/dist/server/channels/mcp/mcp.module.js +114 -0
  53. package/dist/server/channels/mcp/mcp.module.js.map +1 -0
  54. package/dist/server/channels/mcp/mcp.tokens.d.ts +2 -0
  55. package/dist/server/channels/mcp/mcp.tokens.d.ts.map +1 -0
  56. package/dist/server/channels/mcp/mcp.tokens.js +8 -0
  57. package/dist/server/channels/mcp/mcp.tokens.js.map +1 -0
  58. package/dist/server/channels/mcp/mcp.transport.d.ts +11 -0
  59. package/dist/server/channels/mcp/mcp.transport.d.ts.map +1 -0
  60. package/dist/server/channels/mcp/mcp.transport.js +71 -0
  61. package/dist/server/channels/mcp/mcp.transport.js.map +1 -0
  62. package/dist/server/channels/mcp/mcp.types.d.ts +16 -0
  63. package/dist/server/channels/mcp/mcp.types.d.ts.map +1 -0
  64. package/dist/server/channels/mcp/mcp.types.js +3 -0
  65. package/dist/server/channels/mcp/mcp.types.js.map +1 -0
  66. package/dist/server/channels/mcp/model.tools.d.ts +4 -0
  67. package/dist/server/channels/mcp/model.tools.d.ts.map +1 -0
  68. package/dist/server/channels/mcp/model.tools.js +215 -0
  69. package/dist/server/channels/mcp/model.tools.js.map +1 -0
  70. package/dist/server/channels/mcp/monitoring.tools.d.ts +4 -0
  71. package/dist/server/channels/mcp/monitoring.tools.d.ts.map +1 -0
  72. package/dist/server/channels/mcp/monitoring.tools.js +81 -0
  73. package/dist/server/channels/mcp/monitoring.tools.js.map +1 -0
  74. package/dist/server/channels/mcp/optimization.tools.d.ts +4 -0
  75. package/dist/server/channels/mcp/optimization.tools.d.ts.map +1 -0
  76. package/dist/server/channels/mcp/optimization.tools.js +104 -0
  77. package/dist/server/channels/mcp/optimization.tools.js.map +1 -0
  78. package/dist/server/channels/mcp/prompt.tools.d.ts +5 -0
  79. package/dist/server/channels/mcp/prompt.tools.d.ts.map +1 -0
  80. package/dist/server/channels/mcp/prompt.tools.js +258 -0
  81. package/dist/server/channels/mcp/prompt.tools.js.map +1 -0
  82. package/dist/server/channels/mcp/quick-start.tools.d.ts +4 -0
  83. package/dist/server/channels/mcp/quick-start.tools.d.ts.map +1 -0
  84. package/dist/server/channels/mcp/quick-start.tools.js +48 -0
  85. package/dist/server/channels/mcp/quick-start.tools.js.map +1 -0
  86. package/dist/server/channels/mcp/release-line.tools.d.ts +4 -0
  87. package/dist/server/channels/mcp/release-line.tools.d.ts.map +1 -0
  88. package/dist/server/channels/mcp/release-line.tools.js +101 -0
  89. package/dist/server/channels/mcp/release-line.tools.js.map +1 -0
  90. package/dist/server/channels/mcp/run-result.tools.d.ts +4 -0
  91. package/dist/server/channels/mcp/run-result.tools.d.ts.map +1 -0
  92. package/dist/server/channels/mcp/run-result.tools.js +116 -0
  93. package/dist/server/channels/mcp/run-result.tools.js.map +1 -0
  94. package/dist/server/channels/mcp/token.tools.d.ts +4 -0
  95. package/dist/server/channels/mcp/token.tools.d.ts.map +1 -0
  96. package/dist/server/channels/mcp/token.tools.js +87 -0
  97. package/dist/server/channels/mcp/token.tools.js.map +1 -0
  98. package/dist/server/common/access-control.d.ts +5 -0
  99. package/dist/server/common/access-control.d.ts.map +1 -0
  100. package/dist/server/common/access-control.js +25 -0
  101. package/dist/server/common/access-control.js.map +1 -0
  102. package/dist/server/common/actor-context.d.ts +11 -0
  103. package/dist/server/common/actor-context.d.ts.map +1 -0
  104. package/dist/server/common/actor-context.js +8 -0
  105. package/dist/server/common/actor-context.js.map +1 -0
  106. package/dist/server/common/contracts/access-control.service.d.ts +6 -0
  107. package/dist/server/common/contracts/access-control.service.d.ts.map +1 -0
  108. package/dist/server/common/contracts/access-control.service.js +13 -0
  109. package/dist/server/common/contracts/access-control.service.js.map +1 -0
  110. package/dist/server/common/contracts/actor-context.resolver.d.ts +7 -0
  111. package/dist/server/common/contracts/actor-context.resolver.d.ts.map +1 -0
  112. package/dist/server/common/contracts/actor-context.resolver.js +15 -0
  113. package/dist/server/common/contracts/actor-context.resolver.js.map +1 -0
  114. package/dist/server/common/contracts/connector-context.resolver.d.ts +19 -0
  115. package/dist/server/common/contracts/connector-context.resolver.d.ts.map +1 -0
  116. package/dist/server/common/contracts/connector-context.resolver.js +23 -0
  117. package/dist/server/common/contracts/connector-context.resolver.js.map +1 -0
  118. package/dist/server/common/contracts/http-actor.guard.d.ts +13 -0
  119. package/dist/server/common/contracts/http-actor.guard.d.ts.map +1 -0
  120. package/dist/server/common/contracts/http-actor.guard.js +87 -0
  121. package/dist/server/common/contracts/http-actor.guard.js.map +1 -0
  122. package/dist/server/common/contracts/index.d.ts +23 -0
  123. package/dist/server/common/contracts/index.d.ts.map +1 -0
  124. package/dist/server/common/contracts/index.js +45 -0
  125. package/dist/server/common/contracts/index.js.map +1 -0
  126. package/dist/server/common/contracts/limiter-key.strategy.d.ts +8 -0
  127. package/dist/server/common/contracts/limiter-key.strategy.d.ts.map +1 -0
  128. package/dist/server/common/contracts/limiter-key.strategy.js +24 -0
  129. package/dist/server/common/contracts/limiter-key.strategy.js.map +1 -0
  130. package/dist/server/common/contracts/local-access-control.service.d.ts +7 -0
  131. package/dist/server/common/contracts/local-access-control.service.d.ts.map +1 -0
  132. package/dist/server/common/contracts/local-access-control.service.js +41 -0
  133. package/dist/server/common/contracts/local-access-control.service.js.map +1 -0
  134. package/dist/server/common/contracts/local-actor-context.resolver.d.ts +13 -0
  135. package/dist/server/common/contracts/local-actor-context.resolver.d.ts.map +1 -0
  136. package/dist/server/common/contracts/local-actor-context.resolver.js +102 -0
  137. package/dist/server/common/contracts/local-actor-context.resolver.js.map +1 -0
  138. package/dist/server/common/contracts/local-contracts.module.d.ts +3 -0
  139. package/dist/server/common/contracts/local-contracts.module.d.ts.map +1 -0
  140. package/dist/server/common/contracts/local-contracts.module.js +78 -0
  141. package/dist/server/common/contracts/local-contracts.module.js.map +1 -0
  142. package/dist/server/common/contracts/local-mcp-auth.resolver.d.ts +12 -0
  143. package/dist/server/common/contracts/local-mcp-auth.resolver.d.ts.map +1 -0
  144. package/dist/server/common/contracts/local-mcp-auth.resolver.js +66 -0
  145. package/dist/server/common/contracts/local-mcp-auth.resolver.js.map +1 -0
  146. package/dist/server/common/contracts/local-project-context.resolver.d.ts +8 -0
  147. package/dist/server/common/contracts/local-project-context.resolver.d.ts.map +1 -0
  148. package/dist/server/common/contracts/local-project-context.resolver.js +27 -0
  149. package/dist/server/common/contracts/local-project-context.resolver.js.map +1 -0
  150. package/dist/server/common/contracts/local-user-token.verifier.d.ts +26 -0
  151. package/dist/server/common/contracts/local-user-token.verifier.d.ts.map +1 -0
  152. package/dist/server/common/contracts/local-user-token.verifier.js +96 -0
  153. package/dist/server/common/contracts/local-user-token.verifier.js.map +1 -0
  154. package/dist/server/common/contracts/mcp-auth.resolver.d.ts +7 -0
  155. package/dist/server/common/contracts/mcp-auth.resolver.d.ts.map +1 -0
  156. package/dist/server/common/contracts/mcp-auth.resolver.js +12 -0
  157. package/dist/server/common/contracts/mcp-auth.resolver.js.map +1 -0
  158. package/dist/server/common/contracts/project-context.resolver.d.ts +11 -0
  159. package/dist/server/common/contracts/project-context.resolver.d.ts.map +1 -0
  160. package/dist/server/common/contracts/project-context.resolver.js +22 -0
  161. package/dist/server/common/contracts/project-context.resolver.js.map +1 -0
  162. package/dist/server/common/contracts/quota-policy.hook.d.ts +24 -0
  163. package/dist/server/common/contracts/quota-policy.hook.d.ts.map +1 -0
  164. package/dist/server/common/contracts/quota-policy.hook.js +22 -0
  165. package/dist/server/common/contracts/quota-policy.hook.js.map +1 -0
  166. package/dist/server/common/contracts/runtime-limits.provider.d.ts +17 -0
  167. package/dist/server/common/contracts/runtime-limits.provider.d.ts.map +1 -0
  168. package/dist/server/common/contracts/runtime-limits.provider.js +23 -0
  169. package/dist/server/common/contracts/runtime-limits.provider.js.map +1 -0
  170. package/dist/server/common/contracts/token.service.d.ts +11 -0
  171. package/dist/server/common/contracts/token.service.d.ts.map +1 -0
  172. package/dist/server/common/contracts/token.service.js +12 -0
  173. package/dist/server/common/contracts/token.service.js.map +1 -0
  174. package/dist/server/common/contracts/types.d.ts +45 -0
  175. package/dist/server/common/contracts/types.d.ts.map +1 -0
  176. package/dist/server/common/contracts/types.js +8 -0
  177. package/dist/server/common/contracts/types.js.map +1 -0
  178. package/dist/server/common/contracts/workflow-authorization.hook.d.ts +9 -0
  179. package/dist/server/common/contracts/workflow-authorization.hook.d.ts.map +1 -0
  180. package/dist/server/common/contracts/workflow-authorization.hook.js +27 -0
  181. package/dist/server/common/contracts/workflow-authorization.hook.js.map +1 -0
  182. package/dist/server/common/decorators/current-project.decorator.d.ts +5 -0
  183. package/dist/server/common/decorators/current-project.decorator.d.ts.map +1 -0
  184. package/dist/server/common/decorators/current-project.decorator.js +22 -0
  185. package/dist/server/common/decorators/current-project.decorator.js.map +1 -0
  186. package/dist/server/common/decorators/current-user.decorator.d.ts +13 -0
  187. package/dist/server/common/decorators/current-user.decorator.d.ts.map +1 -0
  188. package/dist/server/common/decorators/current-user.decorator.js +9 -0
  189. package/dist/server/common/decorators/current-user.decorator.js.map +1 -0
  190. package/dist/server/common/errors/db-error.d.ts +2 -0
  191. package/dist/server/common/errors/db-error.d.ts.map +1 -0
  192. package/dist/server/common/errors/db-error.js +12 -0
  193. package/dist/server/common/errors/db-error.js.map +1 -0
  194. package/dist/server/common/project-context.d.ts +22 -0
  195. package/dist/server/common/project-context.d.ts.map +1 -0
  196. package/dist/server/common/project-context.js +60 -0
  197. package/dist/server/common/project-context.js.map +1 -0
  198. package/dist/server/common/project-context.module.d.ts +3 -0
  199. package/dist/server/common/project-context.module.d.ts.map +1 -0
  200. package/dist/server/common/project-context.module.js +22 -0
  201. package/dist/server/common/project-context.module.js.map +1 -0
  202. package/dist/server/index.d.ts +4 -0
  203. package/dist/server/index.d.ts.map +1 -0
  204. package/dist/server/index.js +8 -0
  205. package/dist/server/index.js.map +1 -0
  206. package/dist/server/infrastructure/llm/run-result-writer.d.ts +10 -0
  207. package/dist/server/infrastructure/llm/run-result-writer.d.ts.map +1 -0
  208. package/dist/server/infrastructure/llm/run-result-writer.js +103 -0
  209. package/dist/server/infrastructure/llm/run-result-writer.js.map +1 -0
  210. package/dist/server/infrastructure/orchestration/bullmq.module.d.ts +3 -0
  211. package/dist/server/infrastructure/orchestration/bullmq.module.d.ts.map +1 -0
  212. package/dist/server/infrastructure/orchestration/bullmq.module.js +36 -0
  213. package/dist/server/infrastructure/orchestration/bullmq.module.js.map +1 -0
  214. package/dist/server/infrastructure/orchestration/bullmq.service.d.ts +10 -0
  215. package/dist/server/infrastructure/orchestration/bullmq.service.d.ts.map +1 -0
  216. package/dist/server/infrastructure/orchestration/bullmq.service.js +44 -0
  217. package/dist/server/infrastructure/orchestration/bullmq.service.js.map +1 -0
  218. package/dist/server/infrastructure/orchestration/dbos.module.d.ts +3 -0
  219. package/dist/server/infrastructure/orchestration/dbos.module.d.ts.map +1 -0
  220. package/dist/server/infrastructure/orchestration/dbos.module.js +21 -0
  221. package/dist/server/infrastructure/orchestration/dbos.module.js.map +1 -0
  222. package/dist/server/infrastructure/orchestration/dbos.service.d.ts +7 -0
  223. package/dist/server/infrastructure/orchestration/dbos.service.d.ts.map +1 -0
  224. package/dist/server/infrastructure/orchestration/dbos.service.js +43 -0
  225. package/dist/server/infrastructure/orchestration/dbos.service.js.map +1 -0
  226. package/dist/server/infrastructure/orchestration/index.d.ts +6 -0
  227. package/dist/server/infrastructure/orchestration/index.d.ts.map +1 -0
  228. package/dist/server/infrastructure/orchestration/index.js +14 -0
  229. package/dist/server/infrastructure/orchestration/index.js.map +1 -0
  230. package/dist/server/infrastructure/orchestration/orchestration.constants.d.ts +2 -0
  231. package/dist/server/infrastructure/orchestration/orchestration.constants.d.ts.map +1 -0
  232. package/dist/server/infrastructure/orchestration/orchestration.constants.js +5 -0
  233. package/dist/server/infrastructure/orchestration/orchestration.constants.js.map +1 -0
  234. package/dist/server/infrastructure/orchestration/orchestration.module.d.ts +3 -0
  235. package/dist/server/infrastructure/orchestration/orchestration.module.d.ts.map +1 -0
  236. package/dist/server/infrastructure/orchestration/orchestration.module.js +22 -0
  237. package/dist/server/infrastructure/orchestration/orchestration.module.js.map +1 -0
  238. package/dist/server/modules/annotation/annotation.controller.d.ts +245 -0
  239. package/dist/server/modules/annotation/annotation.controller.d.ts.map +1 -0
  240. package/dist/server/modules/annotation/annotation.controller.js +159 -0
  241. package/dist/server/modules/annotation/annotation.controller.js.map +1 -0
  242. package/dist/server/modules/annotation/annotation.module.d.ts +3 -0
  243. package/dist/server/modules/annotation/annotation.module.d.ts.map +1 -0
  244. package/dist/server/modules/annotation/annotation.module.js +26 -0
  245. package/dist/server/modules/annotation/annotation.module.js.map +1 -0
  246. package/dist/server/modules/annotation/annotation.repository.d.ts +28 -0
  247. package/dist/server/modules/annotation/annotation.repository.d.ts.map +1 -0
  248. package/dist/server/modules/annotation/annotation.repository.js +634 -0
  249. package/dist/server/modules/annotation/annotation.repository.js.map +1 -0
  250. package/dist/server/modules/annotation/annotation.service.d.ts +26 -0
  251. package/dist/server/modules/annotation/annotation.service.d.ts.map +1 -0
  252. package/dist/server/modules/annotation/annotation.service.js +144 -0
  253. package/dist/server/modules/annotation/annotation.service.js.map +1 -0
  254. package/dist/server/modules/canary-release/canary-release.controller.d.ts +629 -0
  255. package/dist/server/modules/canary-release/canary-release.controller.d.ts.map +1 -0
  256. package/dist/server/modules/canary-release/canary-release.controller.js +244 -0
  257. package/dist/server/modules/canary-release/canary-release.controller.js.map +1 -0
  258. package/dist/server/modules/canary-release/canary-release.module.d.ts +3 -0
  259. package/dist/server/modules/canary-release/canary-release.module.d.ts.map +1 -0
  260. package/dist/server/modules/canary-release/canary-release.module.js +27 -0
  261. package/dist/server/modules/canary-release/canary-release.module.js.map +1 -0
  262. package/dist/server/modules/canary-release/canary-release.repository.d.ts +686 -0
  263. package/dist/server/modules/canary-release/canary-release.repository.d.ts.map +1 -0
  264. package/dist/server/modules/canary-release/canary-release.repository.js +673 -0
  265. package/dist/server/modules/canary-release/canary-release.repository.js.map +1 -0
  266. package/dist/server/modules/canary-release/canary-release.service.d.ts +55 -0
  267. package/dist/server/modules/canary-release/canary-release.service.d.ts.map +1 -0
  268. package/dist/server/modules/canary-release/canary-release.service.js +573 -0
  269. package/dist/server/modules/canary-release/canary-release.service.js.map +1 -0
  270. package/dist/server/modules/canary-release/canary-runtime.d.ts +60 -0
  271. package/dist/server/modules/canary-release/canary-runtime.d.ts.map +1 -0
  272. package/dist/server/modules/canary-release/canary-runtime.js +328 -0
  273. package/dist/server/modules/canary-release/canary-runtime.js.map +1 -0
  274. package/dist/server/modules/connector/connector.controller.d.ts +446 -0
  275. package/dist/server/modules/connector/connector.controller.d.ts.map +1 -0
  276. package/dist/server/modules/connector/connector.controller.js +235 -0
  277. package/dist/server/modules/connector/connector.controller.js.map +1 -0
  278. package/dist/server/modules/connector/connector.driver-factory.d.ts +66 -0
  279. package/dist/server/modules/connector/connector.driver-factory.d.ts.map +1 -0
  280. package/dist/server/modules/connector/connector.driver-factory.js +314 -0
  281. package/dist/server/modules/connector/connector.driver-factory.js.map +1 -0
  282. package/dist/server/modules/connector/connector.module.d.ts +3 -0
  283. package/dist/server/modules/connector/connector.module.d.ts.map +1 -0
  284. package/dist/server/modules/connector/connector.module.js +28 -0
  285. package/dist/server/modules/connector/connector.module.js.map +1 -0
  286. package/dist/server/modules/connector/connector.repository.d.ts +369 -0
  287. package/dist/server/modules/connector/connector.repository.d.ts.map +1 -0
  288. package/dist/server/modules/connector/connector.repository.js +323 -0
  289. package/dist/server/modules/connector/connector.repository.js.map +1 -0
  290. package/dist/server/modules/connector/connector.service.d.ts +60 -0
  291. package/dist/server/modules/connector/connector.service.d.ts.map +1 -0
  292. package/dist/server/modules/connector/connector.service.js +682 -0
  293. package/dist/server/modules/connector/connector.service.js.map +1 -0
  294. package/dist/server/modules/dataset/dataset-field-schema.util.d.ts +4 -0
  295. package/dist/server/modules/dataset/dataset-field-schema.util.d.ts.map +1 -0
  296. package/dist/server/modules/dataset/dataset-field-schema.util.js +57 -0
  297. package/dist/server/modules/dataset/dataset-field-schema.util.js.map +1 -0
  298. package/dist/server/modules/dataset/dataset-import.controller.d.ts +79 -0
  299. package/dist/server/modules/dataset/dataset-import.controller.d.ts.map +1 -0
  300. package/dist/server/modules/dataset/dataset-import.controller.js +124 -0
  301. package/dist/server/modules/dataset/dataset-import.controller.js.map +1 -0
  302. package/dist/server/modules/dataset/dataset-import.repository.d.ts +63 -0
  303. package/dist/server/modules/dataset/dataset-import.repository.d.ts.map +1 -0
  304. package/dist/server/modules/dataset/dataset-import.repository.js +176 -0
  305. package/dist/server/modules/dataset/dataset-import.repository.js.map +1 -0
  306. package/dist/server/modules/dataset/dataset-import.service.d.ts +36 -0
  307. package/dist/server/modules/dataset/dataset-import.service.d.ts.map +1 -0
  308. package/dist/server/modules/dataset/dataset-import.service.js +227 -0
  309. package/dist/server/modules/dataset/dataset-import.service.js.map +1 -0
  310. package/dist/server/modules/dataset/dataset.controller.d.ts +127 -0
  311. package/dist/server/modules/dataset/dataset.controller.d.ts.map +1 -0
  312. package/dist/server/modules/dataset/dataset.controller.js +168 -0
  313. package/dist/server/modules/dataset/dataset.controller.js.map +1 -0
  314. package/dist/server/modules/dataset/dataset.module.d.ts +3 -0
  315. package/dist/server/modules/dataset/dataset.module.d.ts.map +1 -0
  316. package/dist/server/modules/dataset/dataset.module.js +29 -0
  317. package/dist/server/modules/dataset/dataset.module.js.map +1 -0
  318. package/dist/server/modules/dataset/dataset.repository.d.ts +75 -0
  319. package/dist/server/modules/dataset/dataset.repository.d.ts.map +1 -0
  320. package/dist/server/modules/dataset/dataset.repository.js +238 -0
  321. package/dist/server/modules/dataset/dataset.repository.js.map +1 -0
  322. package/dist/server/modules/dataset/dataset.service.d.ts +50 -0
  323. package/dist/server/modules/dataset/dataset.service.d.ts.map +1 -0
  324. package/dist/server/modules/dataset/dataset.service.js +343 -0
  325. package/dist/server/modules/dataset/dataset.service.js.map +1 -0
  326. package/dist/server/modules/experiment/experiment.aggregator.d.ts +14 -0
  327. package/dist/server/modules/experiment/experiment.aggregator.d.ts.map +1 -0
  328. package/dist/server/modules/experiment/experiment.aggregator.js +39 -0
  329. package/dist/server/modules/experiment/experiment.aggregator.js.map +1 -0
  330. package/dist/server/modules/experiment/experiment.controller.d.ts +361 -0
  331. package/dist/server/modules/experiment/experiment.controller.d.ts.map +1 -0
  332. package/dist/server/modules/experiment/experiment.controller.js +162 -0
  333. package/dist/server/modules/experiment/experiment.controller.js.map +1 -0
  334. package/dist/server/modules/experiment/experiment.launcher.d.ts +14 -0
  335. package/dist/server/modules/experiment/experiment.launcher.d.ts.map +1 -0
  336. package/dist/server/modules/experiment/experiment.launcher.js +54 -0
  337. package/dist/server/modules/experiment/experiment.launcher.js.map +1 -0
  338. package/dist/server/modules/experiment/experiment.module.d.ts +3 -0
  339. package/dist/server/modules/experiment/experiment.module.d.ts.map +1 -0
  340. package/dist/server/modules/experiment/experiment.module.js +38 -0
  341. package/dist/server/modules/experiment/experiment.module.js.map +1 -0
  342. package/dist/server/modules/experiment/experiment.recovery.d.ts +15 -0
  343. package/dist/server/modules/experiment/experiment.recovery.d.ts.map +1 -0
  344. package/dist/server/modules/experiment/experiment.recovery.js +80 -0
  345. package/dist/server/modules/experiment/experiment.recovery.js.map +1 -0
  346. package/dist/server/modules/experiment/experiment.renderer.d.ts +2 -0
  347. package/dist/server/modules/experiment/experiment.renderer.d.ts.map +1 -0
  348. package/dist/server/modules/experiment/experiment.renderer.js +6 -0
  349. package/dist/server/modules/experiment/experiment.renderer.js.map +1 -0
  350. package/dist/server/modules/experiment/experiment.repository.d.ts +88 -0
  351. package/dist/server/modules/experiment/experiment.repository.d.ts.map +1 -0
  352. package/dist/server/modules/experiment/experiment.repository.js +173 -0
  353. package/dist/server/modules/experiment/experiment.repository.js.map +1 -0
  354. package/dist/server/modules/experiment/experiment.service.d.ts +57 -0
  355. package/dist/server/modules/experiment/experiment.service.d.ts.map +1 -0
  356. package/dist/server/modules/experiment/experiment.service.js +539 -0
  357. package/dist/server/modules/experiment/experiment.service.js.map +1 -0
  358. package/dist/server/modules/experiment/experiment.workflow.d.ts +51 -0
  359. package/dist/server/modules/experiment/experiment.workflow.d.ts.map +1 -0
  360. package/dist/server/modules/experiment/experiment.workflow.js +465 -0
  361. package/dist/server/modules/experiment/experiment.workflow.js.map +1 -0
  362. package/dist/server/modules/model/model.controller.d.ts +23 -0
  363. package/dist/server/modules/model/model.controller.d.ts.map +1 -0
  364. package/dist/server/modules/model/model.controller.js +76 -0
  365. package/dist/server/modules/model/model.controller.js.map +1 -0
  366. package/dist/server/modules/model/model.module.d.ts +3 -0
  367. package/dist/server/modules/model/model.module.d.ts.map +1 -0
  368. package/dist/server/modules/model/model.module.js +29 -0
  369. package/dist/server/modules/model/model.module.js.map +1 -0
  370. package/dist/server/modules/model/model.repository.d.ts +511 -0
  371. package/dist/server/modules/model/model.repository.d.ts.map +1 -0
  372. package/dist/server/modules/model/model.repository.js +181 -0
  373. package/dist/server/modules/model/model.repository.js.map +1 -0
  374. package/dist/server/modules/model/model.service.d.ts +79 -0
  375. package/dist/server/modules/model/model.service.d.ts.map +1 -0
  376. package/dist/server/modules/model/model.service.js +643 -0
  377. package/dist/server/modules/model/model.service.js.map +1 -0
  378. package/dist/server/modules/model/project-model.controller.d.ts +261 -0
  379. package/dist/server/modules/model/project-model.controller.d.ts.map +1 -0
  380. package/dist/server/modules/model/project-model.controller.js +198 -0
  381. package/dist/server/modules/model/project-model.controller.js.map +1 -0
  382. package/dist/server/modules/monitoring/monitoring.controller.d.ts +204 -0
  383. package/dist/server/modules/monitoring/monitoring.controller.d.ts.map +1 -0
  384. package/dist/server/modules/monitoring/monitoring.controller.js +129 -0
  385. package/dist/server/modules/monitoring/monitoring.controller.js.map +1 -0
  386. package/dist/server/modules/monitoring/monitoring.module.d.ts +3 -0
  387. package/dist/server/modules/monitoring/monitoring.module.d.ts.map +1 -0
  388. package/dist/server/modules/monitoring/monitoring.module.js +26 -0
  389. package/dist/server/modules/monitoring/monitoring.module.js.map +1 -0
  390. package/dist/server/modules/monitoring/monitoring.repository.d.ts +15 -0
  391. package/dist/server/modules/monitoring/monitoring.repository.d.ts.map +1 -0
  392. package/dist/server/modules/monitoring/monitoring.repository.js +618 -0
  393. package/dist/server/modules/monitoring/monitoring.repository.js.map +1 -0
  394. package/dist/server/modules/monitoring/monitoring.service.d.ts +15 -0
  395. package/dist/server/modules/monitoring/monitoring.service.d.ts.map +1 -0
  396. package/dist/server/modules/monitoring/monitoring.service.js +70 -0
  397. package/dist/server/modules/monitoring/monitoring.service.js.map +1 -0
  398. package/dist/server/modules/optimization/optimization.controller.d.ts +579 -0
  399. package/dist/server/modules/optimization/optimization.controller.d.ts.map +1 -0
  400. package/dist/server/modules/optimization/optimization.controller.js +119 -0
  401. package/dist/server/modules/optimization/optimization.controller.js.map +1 -0
  402. package/dist/server/modules/optimization/optimization.launcher.d.ts +14 -0
  403. package/dist/server/modules/optimization/optimization.launcher.d.ts.map +1 -0
  404. package/dist/server/modules/optimization/optimization.launcher.js +56 -0
  405. package/dist/server/modules/optimization/optimization.launcher.js.map +1 -0
  406. package/dist/server/modules/optimization/optimization.module.d.ts +3 -0
  407. package/dist/server/modules/optimization/optimization.module.d.ts.map +1 -0
  408. package/dist/server/modules/optimization/optimization.module.js +42 -0
  409. package/dist/server/modules/optimization/optimization.module.js.map +1 -0
  410. package/dist/server/modules/optimization/optimization.recovery.d.ts +15 -0
  411. package/dist/server/modules/optimization/optimization.recovery.d.ts.map +1 -0
  412. package/dist/server/modules/optimization/optimization.recovery.js +80 -0
  413. package/dist/server/modules/optimization/optimization.recovery.js.map +1 -0
  414. package/dist/server/modules/optimization/optimization.repository.d.ts +375 -0
  415. package/dist/server/modules/optimization/optimization.repository.d.ts.map +1 -0
  416. package/dist/server/modules/optimization/optimization.repository.js +849 -0
  417. package/dist/server/modules/optimization/optimization.repository.js.map +1 -0
  418. package/dist/server/modules/optimization/optimization.service.d.ts +74 -0
  419. package/dist/server/modules/optimization/optimization.service.d.ts.map +1 -0
  420. package/dist/server/modules/optimization/optimization.service.js +1753 -0
  421. package/dist/server/modules/optimization/optimization.service.js.map +1 -0
  422. package/dist/server/modules/optimization/optimization.workflow.d.ts +118 -0
  423. package/dist/server/modules/optimization/optimization.workflow.d.ts.map +1 -0
  424. package/dist/server/modules/optimization/optimization.workflow.js +2007 -0
  425. package/dist/server/modules/optimization/optimization.workflow.js.map +1 -0
  426. package/dist/server/modules/production-release/production-release.controller.d.ts +125 -0
  427. package/dist/server/modules/production-release/production-release.controller.d.ts.map +1 -0
  428. package/dist/server/modules/production-release/production-release.controller.js +107 -0
  429. package/dist/server/modules/production-release/production-release.controller.js.map +1 -0
  430. package/dist/server/modules/production-release/production-release.module.d.ts +3 -0
  431. package/dist/server/modules/production-release/production-release.module.d.ts.map +1 -0
  432. package/dist/server/modules/production-release/production-release.module.js +27 -0
  433. package/dist/server/modules/production-release/production-release.module.js.map +1 -0
  434. package/dist/server/modules/production-release/production-release.repository.d.ts +109 -0
  435. package/dist/server/modules/production-release/production-release.repository.d.ts.map +1 -0
  436. package/dist/server/modules/production-release/production-release.repository.js +372 -0
  437. package/dist/server/modules/production-release/production-release.repository.js.map +1 -0
  438. package/dist/server/modules/production-release/production-release.service.d.ts +33 -0
  439. package/dist/server/modules/production-release/production-release.service.d.ts.map +1 -0
  440. package/dist/server/modules/production-release/production-release.service.js +370 -0
  441. package/dist/server/modules/production-release/production-release.service.js.map +1 -0
  442. package/dist/server/modules/prompt/prompt-try-run.service.d.ts +26 -0
  443. package/dist/server/modules/prompt/prompt-try-run.service.d.ts.map +1 -0
  444. package/dist/server/modules/prompt/prompt-try-run.service.js +213 -0
  445. package/dist/server/modules/prompt/prompt-try-run.service.js.map +1 -0
  446. package/dist/server/modules/prompt/prompt.controller.d.ts +489 -0
  447. package/dist/server/modules/prompt/prompt.controller.d.ts.map +1 -0
  448. package/dist/server/modules/prompt/prompt.controller.js +236 -0
  449. package/dist/server/modules/prompt/prompt.controller.js.map +1 -0
  450. package/dist/server/modules/prompt/prompt.module.d.ts +3 -0
  451. package/dist/server/modules/prompt/prompt.module.d.ts.map +1 -0
  452. package/dist/server/modules/prompt/prompt.module.js +28 -0
  453. package/dist/server/modules/prompt/prompt.module.js.map +1 -0
  454. package/dist/server/modules/prompt/prompt.repository.d.ts +190 -0
  455. package/dist/server/modules/prompt/prompt.repository.d.ts.map +1 -0
  456. package/dist/server/modules/prompt/prompt.repository.js +522 -0
  457. package/dist/server/modules/prompt/prompt.repository.js.map +1 -0
  458. package/dist/server/modules/prompt/prompt.service.d.ts +46 -0
  459. package/dist/server/modules/prompt/prompt.service.d.ts.map +1 -0
  460. package/dist/server/modules/prompt/prompt.service.js +508 -0
  461. package/dist/server/modules/prompt/prompt.service.js.map +1 -0
  462. package/dist/server/modules/quick-start/quick-start.controller.d.ts +75 -0
  463. package/dist/server/modules/quick-start/quick-start.controller.d.ts.map +1 -0
  464. package/dist/server/modules/quick-start/quick-start.controller.js +86 -0
  465. package/dist/server/modules/quick-start/quick-start.controller.js.map +1 -0
  466. package/dist/server/modules/quick-start/quick-start.module.d.ts +3 -0
  467. package/dist/server/modules/quick-start/quick-start.module.d.ts.map +1 -0
  468. package/dist/server/modules/quick-start/quick-start.module.js +27 -0
  469. package/dist/server/modules/quick-start/quick-start.module.js.map +1 -0
  470. package/dist/server/modules/quick-start/quick-start.service.d.ts +77 -0
  471. package/dist/server/modules/quick-start/quick-start.service.d.ts.map +1 -0
  472. package/dist/server/modules/quick-start/quick-start.service.js +130 -0
  473. package/dist/server/modules/quick-start/quick-start.service.js.map +1 -0
  474. package/dist/server/modules/release-line/release-line.controller.d.ts +749 -0
  475. package/dist/server/modules/release-line/release-line.controller.d.ts.map +1 -0
  476. package/dist/server/modules/release-line/release-line.controller.js +108 -0
  477. package/dist/server/modules/release-line/release-line.controller.js.map +1 -0
  478. package/dist/server/modules/release-line/release-line.module.d.ts +3 -0
  479. package/dist/server/modules/release-line/release-line.module.d.ts.map +1 -0
  480. package/dist/server/modules/release-line/release-line.module.js +31 -0
  481. package/dist/server/modules/release-line/release-line.module.js.map +1 -0
  482. package/dist/server/modules/release-line/release-line.repository.d.ts +89 -0
  483. package/dist/server/modules/release-line/release-line.repository.d.ts.map +1 -0
  484. package/dist/server/modules/release-line/release-line.repository.js +834 -0
  485. package/dist/server/modules/release-line/release-line.repository.js.map +1 -0
  486. package/dist/server/modules/release-line/release-line.service.d.ts +109 -0
  487. package/dist/server/modules/release-line/release-line.service.d.ts.map +1 -0
  488. package/dist/server/modules/release-line/release-line.service.js +287 -0
  489. package/dist/server/modules/release-line/release-line.service.js.map +1 -0
  490. package/dist/server/modules/release-line/release-runner.repository.d.ts +89 -0
  491. package/dist/server/modules/release-line/release-runner.repository.d.ts.map +1 -0
  492. package/dist/server/modules/release-line/release-runner.repository.js +449 -0
  493. package/dist/server/modules/release-line/release-runner.repository.js.map +1 -0
  494. package/dist/server/modules/release-line/release-runner.service.d.ts +40 -0
  495. package/dist/server/modules/release-line/release-runner.service.d.ts.map +1 -0
  496. package/dist/server/modules/release-line/release-runner.service.js +417 -0
  497. package/dist/server/modules/release-line/release-runner.service.js.map +1 -0
  498. package/dist/server/modules/run-result/run-result.controller.d.ts +129 -0
  499. package/dist/server/modules/run-result/run-result.controller.d.ts.map +1 -0
  500. package/dist/server/modules/run-result/run-result.controller.js +103 -0
  501. package/dist/server/modules/run-result/run-result.controller.js.map +1 -0
  502. package/dist/server/modules/run-result/run-result.module.d.ts +3 -0
  503. package/dist/server/modules/run-result/run-result.module.d.ts.map +1 -0
  504. package/dist/server/modules/run-result/run-result.module.js +26 -0
  505. package/dist/server/modules/run-result/run-result.module.js.map +1 -0
  506. package/dist/server/modules/run-result/run-result.repository.d.ts +27 -0
  507. package/dist/server/modules/run-result/run-result.repository.d.ts.map +1 -0
  508. package/dist/server/modules/run-result/run-result.repository.js +521 -0
  509. package/dist/server/modules/run-result/run-result.repository.js.map +1 -0
  510. package/dist/server/modules/run-result/run-result.service.d.ts +22 -0
  511. package/dist/server/modules/run-result/run-result.service.d.ts.map +1 -0
  512. package/dist/server/modules/run-result/run-result.service.js +61 -0
  513. package/dist/server/modules/run-result/run-result.service.js.map +1 -0
  514. package/dist/server/modules/token/token.controller.d.ts +57 -0
  515. package/dist/server/modules/token/token.controller.d.ts.map +1 -0
  516. package/dist/server/modules/token/token.controller.js +99 -0
  517. package/dist/server/modules/token/token.controller.js.map +1 -0
  518. package/dist/server/modules/token/token.module.d.ts +3 -0
  519. package/dist/server/modules/token/token.module.d.ts.map +1 -0
  520. package/dist/server/modules/token/token.module.js +22 -0
  521. package/dist/server/modules/token/token.module.js.map +1 -0
  522. package/dist/server/modules/token/token.repository.d.ts +264 -0
  523. package/dist/server/modules/token/token.repository.d.ts.map +1 -0
  524. package/dist/server/modules/token/token.repository.js +97 -0
  525. package/dist/server/modules/token/token.repository.js.map +1 -0
  526. package/dist/server/modules/token/token.service.d.ts +23 -0
  527. package/dist/server/modules/token/token.service.d.ts.map +1 -0
  528. package/dist/server/modules/token/token.service.js +124 -0
  529. package/dist/server/modules/token/token.service.js.map +1 -0
  530. package/dist/server/proofhound-server.module.d.ts +7 -0
  531. package/dist/server/proofhound-server.module.d.ts.map +1 -0
  532. package/dist/server/proofhound-server.module.js +72 -0
  533. package/dist/server/proofhound-server.module.js.map +1 -0
  534. package/dist/shared/config/config.module.d.ts +3 -0
  535. package/dist/shared/config/config.module.d.ts.map +1 -0
  536. package/dist/shared/config/config.module.js +33 -0
  537. package/dist/shared/config/config.module.js.map +1 -0
  538. package/dist/shared/crypto/crypto.module.d.ts +3 -0
  539. package/dist/shared/crypto/crypto.module.d.ts.map +1 -0
  540. package/dist/shared/crypto/crypto.module.js +24 -0
  541. package/dist/shared/crypto/crypto.module.js.map +1 -0
  542. package/dist/shared/crypto/crypto.service.d.ts +9 -0
  543. package/dist/shared/crypto/crypto.service.d.ts.map +1 -0
  544. package/dist/shared/crypto/crypto.service.js +37 -0
  545. package/dist/shared/crypto/crypto.service.js.map +1 -0
  546. package/dist/shared/database/database.constants.d.ts +2 -0
  547. package/dist/shared/database/database.constants.d.ts.map +1 -0
  548. package/dist/shared/database/database.constants.js +5 -0
  549. package/dist/shared/database/database.constants.js.map +1 -0
  550. package/dist/shared/database/database.module.d.ts +3 -0
  551. package/dist/shared/database/database.module.d.ts.map +1 -0
  552. package/dist/shared/database/database.module.js +27 -0
  553. package/dist/shared/database/database.module.js.map +1 -0
  554. package/dist/shared/filters/pino-exception.filter.d.ts +9 -0
  555. package/dist/shared/filters/pino-exception.filter.d.ts.map +1 -0
  556. package/dist/shared/filters/pino-exception.filter.js +58 -0
  557. package/dist/shared/filters/pino-exception.filter.js.map +1 -0
  558. package/dist/shared/health/health.controller.d.ts +11 -0
  559. package/dist/shared/health/health.controller.d.ts.map +1 -0
  560. package/dist/shared/health/health.controller.js +51 -0
  561. package/dist/shared/health/health.controller.js.map +1 -0
  562. package/dist/shared/health/health.service.d.ts +25 -0
  563. package/dist/shared/health/health.service.d.ts.map +1 -0
  564. package/dist/shared/health/health.service.js +74 -0
  565. package/dist/shared/health/health.service.js.map +1 -0
  566. package/dist/shared/llm/runtime-limits.d.ts +4 -0
  567. package/dist/shared/llm/runtime-limits.d.ts.map +1 -0
  568. package/dist/shared/llm/runtime-limits.js +23 -0
  569. package/dist/shared/llm/runtime-limits.js.map +1 -0
  570. package/dist/shared/redis/redis-mutex.service.d.ts +20 -0
  571. package/dist/shared/redis/redis-mutex.service.d.ts.map +1 -0
  572. package/dist/shared/redis/redis-mutex.service.js +75 -0
  573. package/dist/shared/redis/redis-mutex.service.js.map +1 -0
  574. package/dist/shared/redis/redis.constants.d.ts +3 -0
  575. package/dist/shared/redis/redis.constants.d.ts.map +1 -0
  576. package/dist/shared/redis/redis.constants.js +6 -0
  577. package/dist/shared/redis/redis.constants.js.map +1 -0
  578. package/dist/shared/redis/redis.module.d.ts +8 -0
  579. package/dist/shared/redis/redis.module.d.ts.map +1 -0
  580. package/dist/shared/redis/redis.module.js +54 -0
  581. package/dist/shared/redis/redis.module.js.map +1 -0
  582. package/dist/shared/runtime-module-options.d.ts +5 -0
  583. package/dist/shared/runtime-module-options.d.ts.map +1 -0
  584. package/dist/shared/runtime-module-options.js +3 -0
  585. package/dist/shared/runtime-module-options.js.map +1 -0
  586. package/dist/webhook/channels/webhook/local-connector-context.resolver.d.ts +8 -0
  587. package/dist/webhook/channels/webhook/local-connector-context.resolver.d.ts.map +1 -0
  588. package/dist/webhook/channels/webhook/local-connector-context.resolver.js +63 -0
  589. package/dist/webhook/channels/webhook/local-connector-context.resolver.js.map +1 -0
  590. package/dist/webhook/channels/webhook/webhook-token.util.d.ts +4 -0
  591. package/dist/webhook/channels/webhook/webhook-token.util.d.ts.map +1 -0
  592. package/dist/webhook/channels/webhook/webhook-token.util.js +26 -0
  593. package/dist/webhook/channels/webhook/webhook-token.util.js.map +1 -0
  594. package/dist/webhook/channels/webhook/webhook.controller.d.ts +226 -0
  595. package/dist/webhook/channels/webhook/webhook.controller.d.ts.map +1 -0
  596. package/dist/webhook/channels/webhook/webhook.controller.js +121 -0
  597. package/dist/webhook/channels/webhook/webhook.controller.js.map +1 -0
  598. package/dist/webhook/channels/webhook/webhook.module.d.ts +3 -0
  599. package/dist/webhook/channels/webhook/webhook.module.d.ts.map +1 -0
  600. package/dist/webhook/channels/webhook/webhook.module.js +27 -0
  601. package/dist/webhook/channels/webhook/webhook.module.js.map +1 -0
  602. package/dist/webhook/channels/webhook/webhook.repository.d.ts +85 -0
  603. package/dist/webhook/channels/webhook/webhook.repository.d.ts.map +1 -0
  604. package/dist/webhook/channels/webhook/webhook.repository.js +268 -0
  605. package/dist/webhook/channels/webhook/webhook.repository.js.map +1 -0
  606. package/dist/webhook/channels/webhook/webhook.service.d.ts +144 -0
  607. package/dist/webhook/channels/webhook/webhook.service.d.ts.map +1 -0
  608. package/dist/webhook/channels/webhook/webhook.service.js +494 -0
  609. package/dist/webhook/channels/webhook/webhook.service.js.map +1 -0
  610. package/dist/webhook/index.d.ts +4 -0
  611. package/dist/webhook/index.d.ts.map +1 -0
  612. package/dist/webhook/index.js +8 -0
  613. package/dist/webhook/index.js.map +1 -0
  614. package/dist/webhook/infrastructure/orchestration/bullmq.module.d.ts +3 -0
  615. package/dist/webhook/infrastructure/orchestration/bullmq.module.d.ts.map +1 -0
  616. package/dist/webhook/infrastructure/orchestration/bullmq.module.js +34 -0
  617. package/dist/webhook/infrastructure/orchestration/bullmq.module.js.map +1 -0
  618. package/dist/webhook/infrastructure/orchestration/bullmq.service.d.ts +10 -0
  619. package/dist/webhook/infrastructure/orchestration/bullmq.service.d.ts.map +1 -0
  620. package/dist/webhook/infrastructure/orchestration/bullmq.service.js +42 -0
  621. package/dist/webhook/infrastructure/orchestration/bullmq.service.js.map +1 -0
  622. package/dist/webhook/proofhound-webhook.module.d.ts +7 -0
  623. package/dist/webhook/proofhound-webhook.module.d.ts.map +1 -0
  624. package/dist/webhook/proofhound-webhook.module.js +31 -0
  625. package/dist/webhook/proofhound-webhook.module.js.map +1 -0
  626. package/dist/worker/config/worker-concurrency.d.ts +3 -0
  627. package/dist/worker/config/worker-concurrency.d.ts.map +1 -0
  628. package/dist/worker/config/worker-concurrency.js +10 -0
  629. package/dist/worker/config/worker-concurrency.js.map +1 -0
  630. package/dist/worker/consumers/llm.consumer.d.ts +29 -0
  631. package/dist/worker/consumers/llm.consumer.d.ts.map +1 -0
  632. package/dist/worker/consumers/llm.consumer.js +234 -0
  633. package/dist/worker/consumers/llm.consumer.js.map +1 -0
  634. package/dist/worker/consumers/probe.consumer.d.ts +16 -0
  635. package/dist/worker/consumers/probe.consumer.d.ts.map +1 -0
  636. package/dist/worker/consumers/probe.consumer.js +76 -0
  637. package/dist/worker/consumers/probe.consumer.js.map +1 -0
  638. package/dist/worker/index.d.ts +4 -0
  639. package/dist/worker/index.d.ts.map +1 -0
  640. package/dist/worker/index.js +9 -0
  641. package/dist/worker/index.js.map +1 -0
  642. package/dist/worker/infrastructure/llm/model-secret.provider.d.ts +4 -0
  643. package/dist/worker/infrastructure/llm/model-secret.provider.d.ts.map +1 -0
  644. package/dist/worker/infrastructure/llm/model-secret.provider.js +14 -0
  645. package/dist/worker/infrastructure/llm/model-secret.provider.js.map +1 -0
  646. package/dist/worker/proofhound-worker.module.d.ts +7 -0
  647. package/dist/worker/proofhound-worker.module.d.ts.map +1 -0
  648. package/dist/worker/proofhound-worker.module.js +44 -0
  649. package/dist/worker/proofhound-worker.module.js.map +1 -0
  650. package/dist/worker/runners/llm-runner.d.ts +42 -0
  651. package/dist/worker/runners/llm-runner.d.ts.map +1 -0
  652. package/dist/worker/runners/llm-runner.js +178 -0
  653. package/dist/worker/runners/llm-runner.js.map +1 -0
  654. package/dist/worker/runners/model-secret.d.ts +11 -0
  655. package/dist/worker/runners/model-secret.d.ts.map +1 -0
  656. package/dist/worker/runners/model-secret.js +14 -0
  657. package/dist/worker/runners/model-secret.js.map +1 -0
  658. package/dist/worker/runners/probe-runner.d.ts +22 -0
  659. package/dist/worker/runners/probe-runner.d.ts.map +1 -0
  660. package/dist/worker/runners/probe-runner.js +52 -0
  661. package/dist/worker/runners/probe-runner.js.map +1 -0
  662. package/dist/worker/runners/run-result-writer.d.ts +10 -0
  663. package/dist/worker/runners/run-result-writer.d.ts.map +1 -0
  664. package/dist/worker/runners/run-result-writer.js +84 -0
  665. package/dist/worker/runners/run-result-writer.js.map +1 -0
  666. package/dist/worker/scripts/probe-model-from-env.d.ts +2 -0
  667. package/dist/worker/scripts/probe-model-from-env.d.ts.map +1 -0
  668. package/dist/worker/scripts/probe-model-from-env.js +130 -0
  669. package/dist/worker/scripts/probe-model-from-env.js.map +1 -0
  670. package/package.json +93 -0
@@ -0,0 +1,643 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ModelService = void 0;
16
+ const node_buffer_1 = require("node:buffer");
17
+ const node_crypto_1 = require("node:crypto");
18
+ const common_1 = require("@nestjs/common");
19
+ const limiter_1 = require("@proofhound/limiter");
20
+ const llm_client_1 = require("@proofhound/llm-client");
21
+ const logger_1 = require("@proofhound/logger");
22
+ const shared_1 = require("@proofhound/shared");
23
+ const access_control_1 = require("../../common/access-control");
24
+ const access_control_service_1 = require("../../common/contracts/access-control.service");
25
+ const limiter_key_strategy_1 = require("../../common/contracts/limiter-key.strategy");
26
+ const quota_policy_hook_1 = require("../../common/contracts/quota-policy.hook");
27
+ const runtime_limits_provider_1 = require("../../common/contracts/runtime-limits.provider");
28
+ const workflow_authorization_hook_1 = require("../../common/contracts/workflow-authorization.hook");
29
+ const db_error_1 = require("../../common/errors/db-error");
30
+ const crypto_service_1 = require("../../../shared/crypto/crypto.service");
31
+ const redis_constants_1 = require("../../../shared/redis/redis.constants");
32
+ const runtime_limits_1 = require("../../../shared/llm/runtime-limits");
33
+ const model_repository_1 = require("./model.repository");
34
+ const MODEL_USAGE_SNAPSHOT_TIMEOUT_MS = 1_000;
35
+ let ModelService = class ModelService {
36
+ constructor(repo, crypto, limiter, accessControl, limiterKeyStrategy, runtimeLimitsProvider, workflowAuth, quotaPolicy) {
37
+ this.repo = repo;
38
+ this.crypto = crypto;
39
+ this.limiter = limiter;
40
+ this.accessControl = accessControl;
41
+ this.limiterKeyStrategy = limiterKeyStrategy;
42
+ this.runtimeLimitsProvider = runtimeLimitsProvider;
43
+ this.workflowAuth = workflowAuth;
44
+ this.quotaPolicy = quotaPolicy;
45
+ this.logger = (0, logger_1.createLogger)('model.service', { service: 'server' });
46
+ }
47
+ // -------------------------------------------------------------------------
48
+ // Local in-process model
49
+ // -------------------------------------------------------------------------
50
+ // orgId on the project-scoped read methods (SaaS-only; undefined in OSS) is sourced from the resolved
51
+ // ProjectContext — the project's org is the rate-limit bucket (SPEC 08 §3.7). It is threaded into
52
+ // toProjectModelListItem → fetchUsageSnapshot so the usage-snapshot READ key matches the worker's WRITE
53
+ // key under a SaaS strategy; OSS leaves it undefined so the key stays `model:<id>`.
54
+ async listProjectModels(projectId, actor, orgId) {
55
+ await this.getAccessibleProject(projectId, actor);
56
+ const rows = await this.repo.listProjectModels(projectId);
57
+ const data = await Promise.all(rows.map((row) => this.toProjectModelListItem(row, orgId)));
58
+ return { data, total: data.length };
59
+ }
60
+ // Quick-start option listing is not project-scoped (no @CurrentProject at the endpoint), so no org is
61
+ // threaded — usage is read with undefined org (key stays project/model-scoped). OSS-identical.
62
+ async listQuickStartModelOptions(_actor) {
63
+ const rows = await this.repo.listQuickStartGlobalModels();
64
+ const data = await Promise.all(rows.map((row) => this.toProjectModelListItem(row)));
65
+ return { data, total: data.length };
66
+ }
67
+ async getQuickStartModelOption(modelId, _actor) {
68
+ const row = await this.repo.findModelById(modelId);
69
+ if (!row) {
70
+ throw new common_1.NotFoundException(`Model ${modelId} not found`);
71
+ }
72
+ return this.toProjectModelListItem(row);
73
+ }
74
+ async getProjectModelDetail(projectId, modelId, actor, orgId) {
75
+ await this.getAccessibleProject(projectId, actor);
76
+ const row = await this.repo.findModelAccessibleToProject(projectId, modelId);
77
+ if (!row)
78
+ throw new common_1.NotFoundException(`Model ${modelId} not found`);
79
+ return this.toProjectModelListItem(row, orgId);
80
+ }
81
+ // For sibling services that have already done project access checks (such as ExperimentService) to query model visibility directly,
82
+ // without re-running actor authorization; if authorization is needed, go through getProjectModelDetail
83
+ async findModelAccessibleToProject(projectId, modelId) {
84
+ return this.repo.findModelAccessibleToProject(projectId, modelId);
85
+ }
86
+ async createProjectModel(projectId, dto, actor, source = 'api', orgId) {
87
+ void source;
88
+ await this.getWritableProject(projectId, actor);
89
+ const modelId = (0, node_crypto_1.randomUUID)();
90
+ const insert = this.buildInsertRow(projectId, modelId, dto, actor.sub);
91
+ const created = await this.createModelOrThrowNameConflict(insert);
92
+ return this.getProjectModelDetail(projectId, created.id, actor, orgId);
93
+ }
94
+ async probeDraftProjectModel(projectId, dto, actor, source = 'api', orgId) {
95
+ void source;
96
+ await this.getWritableProject(projectId, actor);
97
+ await this.assertProbeWorkflowStart({ projectId, orgId, source: 'local' }, actor);
98
+ const modelId = (0, node_crypto_1.randomUUID)();
99
+ const model = {
100
+ id: modelId,
101
+ providerType: dto.providerType.trim(),
102
+ providerModelId: dto.providerModelId.trim(),
103
+ endpoint: dto.endpoint.trim(),
104
+ apiKey: dto.apiKey,
105
+ capabilities: dto.capabilities,
106
+ rpmLimit: dto.rpm.limit,
107
+ tpmLimit: dto.tpm.limit,
108
+ concurrencyLimit: dto.concurrency.limit,
109
+ autoConcurrency: dto.autoConcurrency,
110
+ inputTokenPricePerMillion: String(dto.pricing.inputPerMillion),
111
+ outputTokenPricePerMillion: String(dto.pricing.outputPerMillion),
112
+ extraBody: dto.extraBody ?? {},
113
+ };
114
+ const result = await this.runConnectivityProbe(
115
+ // orgId (SaaS-only; undefined in OSS) sourced from the resolved ProjectContext — the project's org
116
+ // is the rate-limit bucket (SPEC 08 §3.7), not the actor's org.
117
+ { projectId, orgId, source: 'local' }, model, `probe-draft-${modelId}`);
118
+ const probedAt = new Date(result.checkedAt);
119
+ const probeError = result.ok ? null : (result.errorMessage ?? result.errorClass ?? 'unknown');
120
+ return {
121
+ modelId,
122
+ status: result.ok ? 'success' : 'failed',
123
+ probedAt: probedAt.toISOString(),
124
+ durationMs: result.durationMs,
125
+ error: probeError,
126
+ };
127
+ }
128
+ async probeQuickStartDraftModel(dto, actor, source = 'api') {
129
+ void source;
130
+ await this.assertProbeWorkflowStart(shared_1.LOCAL_PROJECT_CONTEXT, actor);
131
+ const modelId = (0, node_crypto_1.randomUUID)();
132
+ const model = {
133
+ id: modelId,
134
+ providerType: dto.providerType.trim(),
135
+ providerModelId: dto.providerModelId.trim(),
136
+ endpoint: dto.endpoint.trim(),
137
+ apiKey: dto.apiKey,
138
+ capabilities: dto.capabilities,
139
+ rpmLimit: dto.rpm.limit,
140
+ tpmLimit: dto.tpm.limit,
141
+ concurrencyLimit: dto.concurrency.limit,
142
+ autoConcurrency: dto.autoConcurrency,
143
+ inputTokenPricePerMillion: String(dto.pricing.inputPerMillion),
144
+ outputTokenPricePerMillion: String(dto.pricing.outputPerMillion),
145
+ extraBody: dto.extraBody ?? {},
146
+ };
147
+ // Quick-start probe is not project-scoped (no @CurrentProject at the endpoint), so there is no project
148
+ // org to source — the rate-limit bucket is LOCAL_PROJECT_CONTEXT with undefined org. OSS-identical.
149
+ const result = await this.runConnectivityProbe(shared_1.LOCAL_PROJECT_CONTEXT, model, `probe-quick-start-draft-${modelId}`);
150
+ const probedAt = new Date(result.checkedAt);
151
+ const probeError = result.ok ? null : (result.errorMessage ?? result.errorClass ?? 'unknown');
152
+ return {
153
+ modelId,
154
+ status: result.ok ? 'success' : 'failed',
155
+ probedAt: probedAt.toISOString(),
156
+ durationMs: result.durationMs,
157
+ error: probeError,
158
+ };
159
+ }
160
+ async updateProjectModel(projectId, modelId, dto, actor, source = 'api', orgId) {
161
+ void source;
162
+ await this.getWritableProject(projectId, actor);
163
+ const existing = await this.repo.findModelById(modelId);
164
+ if (!existing) {
165
+ throw new common_1.NotFoundException(`Model ${modelId} not found`);
166
+ }
167
+ const patch = this.buildUpdateRow(dto, existing);
168
+ await this.updateModelOrThrowNameConflict(modelId, patch);
169
+ return this.getProjectModelDetail(projectId, modelId, actor, orgId);
170
+ }
171
+ async deleteProjectModel(projectId, modelId, query, actor, source = 'api') {
172
+ void query;
173
+ void source;
174
+ await this.getWritableProject(projectId, actor);
175
+ const existing = await this.repo.findModelById(modelId);
176
+ if (!existing) {
177
+ throw new common_1.NotFoundException(`Model ${modelId} not found`);
178
+ }
179
+ await this.assertNotActivelyReferenced(modelId);
180
+ await this.repo.softDeleteModel(modelId);
181
+ }
182
+ async duplicateProjectModel(projectId, sourceModelId, actor, source = 'api', orgId) {
183
+ void source;
184
+ await this.getWritableProject(projectId, actor);
185
+ const sourceRow = await this.repo.findModelAccessibleToProject(projectId, sourceModelId);
186
+ if (!sourceRow)
187
+ throw new common_1.NotFoundException(`Model ${sourceModelId} not found`);
188
+ const apiKeyPlain = this.crypto.decryptApiKey(sourceRow.apiKeyEncrypted);
189
+ const modelId = (0, node_crypto_1.randomUUID)();
190
+ const insert = {
191
+ id: modelId,
192
+ projectId,
193
+ name: `${sourceRow.name} 副本`,
194
+ providerType: sourceRow.providerType,
195
+ providerModelId: sourceRow.providerModelId,
196
+ endpoint: sourceRow.endpoint,
197
+ apiKeyEncrypted: this.crypto.encryptApiKey(apiKeyPlain),
198
+ contextWindowTokens: sourceRow.contextWindowTokens,
199
+ rpmLimit: sourceRow.rpmLimit,
200
+ tpmLimit: sourceRow.tpmLimit,
201
+ concurrencyLimit: sourceRow.concurrencyLimit,
202
+ autoConcurrency: sourceRow.autoConcurrency,
203
+ inputTokenPricePerMillion: sourceRow.inputTokenPricePerMillion,
204
+ outputTokenPricePerMillion: sourceRow.outputTokenPricePerMillion,
205
+ capabilities: sourceRow.capabilities,
206
+ extraBody: sourceRow.extraBody,
207
+ isActive: true,
208
+ lastProbedAt: null,
209
+ lastProbeError: null,
210
+ createdBy: actor.sub,
211
+ };
212
+ const created = await this.createModelOrThrowNameConflict(insert);
213
+ return this.getProjectModelDetail(projectId, created.id, actor, orgId);
214
+ }
215
+ async revealProjectApiKey(projectId, modelId, actor, source = 'api') {
216
+ void source;
217
+ await this.getAccessibleProject(projectId, actor);
218
+ const row = await this.repo.findModelAccessibleToProject(projectId, modelId);
219
+ if (!row)
220
+ throw new common_1.NotFoundException(`Model ${modelId} not found`);
221
+ const apiKey = this.crypto.decryptApiKey(row.apiKeyEncrypted);
222
+ return { modelId, apiKey };
223
+ }
224
+ async probeProjectModel(projectId, modelId, actor, source = 'api', orgId) {
225
+ await this.getAccessibleProject(projectId, actor);
226
+ const row = await this.repo.findModelAccessibleToProject(projectId, modelId);
227
+ if (!row)
228
+ throw new common_1.NotFoundException(`Model ${modelId} not found`);
229
+ await this.assertProbeWorkflowStart({ projectId, orgId, source: 'local' }, actor);
230
+ // orgId (SaaS-only; undefined in OSS) sourced from the resolved ProjectContext — the project's org
231
+ // is the rate-limit bucket (SPEC 08 §3.7), not the actor's org.
232
+ return this.probeAndRecord({ projectId, orgId, source: 'local' }, row, actor.sub, source, 'local');
233
+ }
234
+ async probeQuickStartExistingModel(modelId, actor, source = 'api') {
235
+ const row = await this.repo.findModelById(modelId);
236
+ if (!row) {
237
+ throw new common_1.NotFoundException(`Model ${modelId} not found`);
238
+ }
239
+ await this.assertProbeWorkflowStart(shared_1.LOCAL_PROJECT_CONTEXT, actor);
240
+ // Quick-start probe is not project-scoped (no @CurrentProject at the endpoint), so there is no project
241
+ // org to source — the rate-limit bucket is LOCAL_PROJECT_CONTEXT with undefined org. OSS-identical.
242
+ return this.probeAndRecord(shared_1.LOCAL_PROJECT_CONTEXT, row, actor.sub, source, 'quick_start');
243
+ }
244
+ async getProjectModelReferences(projectId, modelId, actor) {
245
+ await this.getAccessibleProject(projectId, actor);
246
+ const row = await this.repo.findModelAccessibleToProject(projectId, modelId);
247
+ if (!row)
248
+ throw new common_1.NotFoundException(`Model ${modelId} not found`);
249
+ return this.toReferencesDto(await this.repo.getActiveReferenceCounts(modelId));
250
+ }
251
+ async exportProjectModelsCsv(projectId, actor, orgId) {
252
+ const { data } = await this.listProjectModels(projectId, actor, orgId);
253
+ const content = this.toProjectCsv(data);
254
+ const buffer = node_buffer_1.Buffer.from(content, 'utf8');
255
+ return {
256
+ buffer,
257
+ byteLength: buffer.byteLength,
258
+ contentType: 'text/csv; charset=utf-8',
259
+ fileName: `models-${new Date().toISOString().slice(0, 10)}.csv`,
260
+ };
261
+ }
262
+ // -------------------------------------------------------------------------
263
+ // Model context dictionary (behavior preserved)
264
+ // -------------------------------------------------------------------------
265
+ async listContextWindows(query) {
266
+ const data = (await this.repo.findContextWindows(query)).map((row) => this.toContextWindowResponse(row));
267
+ return { data, total: data.length };
268
+ }
269
+ async lookupContextWindow(providerModelId) {
270
+ const row = await this.repo.findContextWindowByProviderModelId(providerModelId);
271
+ return row ? this.toContextWindowResponse(row) : null;
272
+ }
273
+ async upsertContextWindow(dto, actorUserId, source = 'api') {
274
+ void source;
275
+ const row = await this.repo.upsertContextWindow(dto, actorUserId);
276
+ return this.toContextWindowResponse(row);
277
+ }
278
+ // =========================================================================
279
+ // Private helpers
280
+ // =========================================================================
281
+ async getAccessibleProject(projectId, actor) {
282
+ await this.accessControl.assertCan((0, access_control_1.toActorContext)(actor), { projectId, source: 'local' }, 'project_read');
283
+ const project = await this.repo.findProjectAccess(actor.sub, projectId, actor.isSuperAdmin);
284
+ if (!project)
285
+ throw new common_1.NotFoundException(`Local workspace ${projectId} not found`);
286
+ return project;
287
+ }
288
+ async getWritableProject(projectId, actor) {
289
+ await this.accessControl.assertCan((0, access_control_1.toActorContext)(actor), { projectId, source: 'local' }, 'project_write');
290
+ return this.getAccessibleProject(projectId, actor);
291
+ }
292
+ async assertProbeWorkflowStart(project, actor) {
293
+ await this.workflowAuth.assertCanStart((0, access_control_1.toActorContext)(actor), project, 'probe');
294
+ }
295
+ async assertNotActivelyReferenced(modelId) {
296
+ const counts = await this.repo.getActiveReferenceCounts(modelId);
297
+ const total = counts.experiments + counts.optimizations + counts.canaryReleases + counts.productionReleases;
298
+ if (total > 0) {
299
+ throw new common_1.ConflictException(`model_referenced_active:${total}`);
300
+ }
301
+ }
302
+ buildInsertRow(projectId, modelId, dto, actorUserId) {
303
+ return {
304
+ id: modelId,
305
+ projectId,
306
+ name: dto.name.trim(),
307
+ providerType: dto.providerType.trim(),
308
+ providerModelId: dto.providerModelId.trim(),
309
+ endpoint: dto.endpoint.trim(),
310
+ apiKeyEncrypted: this.crypto.encryptApiKey(dto.apiKey),
311
+ contextWindowTokens: dto.contextWindowTokens ?? null,
312
+ rpmLimit: dto.rpm.limit,
313
+ tpmLimit: dto.tpm.limit,
314
+ concurrencyLimit: dto.concurrency.limit,
315
+ autoConcurrency: dto.autoConcurrency,
316
+ inputTokenPricePerMillion: String(dto.pricing.inputPerMillion),
317
+ outputTokenPricePerMillion: String(dto.pricing.outputPerMillion),
318
+ capabilities: dto.capabilities,
319
+ extraBody: dto.extraBody ?? {},
320
+ isActive: dto.status !== 'disabled',
321
+ lastProbedAt: dto.initialProbe ? new Date(dto.initialProbe.probedAt) : null,
322
+ lastProbeError: dto.initialProbe
323
+ ? dto.initialProbe.status === 'success'
324
+ ? null
325
+ : (dto.initialProbe.error ?? 'unknown')
326
+ : null,
327
+ createdBy: actorUserId,
328
+ };
329
+ }
330
+ buildUpdateRow(dto, existing) {
331
+ const patch = {};
332
+ if (dto.name !== undefined)
333
+ patch.name = dto.name.trim();
334
+ if (dto.providerType !== undefined)
335
+ patch.providerType = dto.providerType.trim();
336
+ if (dto.providerModelId !== undefined)
337
+ patch.providerModelId = dto.providerModelId.trim();
338
+ if (dto.endpoint !== undefined)
339
+ patch.endpoint = dto.endpoint.trim();
340
+ if (dto.apiKey !== undefined)
341
+ patch.apiKeyEncrypted = this.crypto.encryptApiKey(dto.apiKey);
342
+ if (dto.contextWindowTokens !== undefined)
343
+ patch.contextWindowTokens = dto.contextWindowTokens ?? null;
344
+ if (dto.rpm?.limit !== undefined)
345
+ patch.rpmLimit = dto.rpm.limit;
346
+ if (dto.tpm?.limit !== undefined)
347
+ patch.tpmLimit = dto.tpm.limit;
348
+ if (dto.concurrency?.limit !== undefined)
349
+ patch.concurrencyLimit = dto.concurrency.limit;
350
+ if (dto.autoConcurrency !== undefined)
351
+ patch.autoConcurrency = dto.autoConcurrency;
352
+ if (dto.pricing?.inputPerMillion !== undefined)
353
+ patch.inputTokenPricePerMillion = String(dto.pricing.inputPerMillion);
354
+ if (dto.pricing?.outputPerMillion !== undefined)
355
+ patch.outputTokenPricePerMillion = String(dto.pricing.outputPerMillion);
356
+ if (dto.capabilities !== undefined)
357
+ patch.capabilities = dto.capabilities;
358
+ if (dto.extraBody !== undefined)
359
+ patch.extraBody = dto.extraBody;
360
+ if (dto.status !== undefined)
361
+ patch.isActive = dto.status !== 'disabled';
362
+ void existing;
363
+ return patch;
364
+ }
365
+ async createModelOrThrowNameConflict(insert) {
366
+ try {
367
+ return await this.repo.createModel(insert);
368
+ }
369
+ catch (error) {
370
+ if (isModelNameUniqueViolation(error)) {
371
+ throw new common_1.ConflictException('model_name_taken');
372
+ }
373
+ throw error;
374
+ }
375
+ }
376
+ async updateModelOrThrowNameConflict(modelId, patch) {
377
+ try {
378
+ return await this.repo.updateModel(modelId, patch);
379
+ }
380
+ catch (error) {
381
+ if (isModelNameUniqueViolation(error)) {
382
+ throw new common_1.ConflictException('model_name_taken');
383
+ }
384
+ throw error;
385
+ }
386
+ }
387
+ async probeAndRecord(project, row, actorUserId, source, scope) {
388
+ void actorUserId;
389
+ void source;
390
+ void scope;
391
+ const apiKey = this.crypto.decryptApiKey(row.apiKeyEncrypted);
392
+ const model = {
393
+ id: row.id,
394
+ providerType: row.providerType,
395
+ providerModelId: row.providerModelId,
396
+ endpoint: row.endpoint,
397
+ apiKey,
398
+ capabilities: this.toModelCapabilities(row.capabilities),
399
+ rpmLimit: row.rpmLimit,
400
+ tpmLimit: row.tpmLimit,
401
+ concurrencyLimit: row.concurrencyLimit,
402
+ autoConcurrency: row.autoConcurrency,
403
+ inputTokenPricePerMillion: row.inputTokenPricePerMillion,
404
+ outputTokenPricePerMillion: row.outputTokenPricePerMillion,
405
+ extraBody: this.toExtraBody(row.extraBody),
406
+ };
407
+ const result = await this.runConnectivityProbe(project, model, `probe-${row.id}`);
408
+ const probedAt = new Date(result.checkedAt);
409
+ const probeError = result.ok ? null : (result.errorMessage ?? result.errorClass ?? 'unknown');
410
+ await this.repo.updateProbeOutcome(row.id, probedAt, probeError);
411
+ return {
412
+ modelId: row.id,
413
+ status: result.ok ? 'success' : 'failed',
414
+ probedAt: probedAt.toISOString(),
415
+ durationMs: result.durationMs,
416
+ error: probeError,
417
+ };
418
+ }
419
+ async runConnectivityProbe(project, model, requestId) {
420
+ const mergedLimits = await this.runtimeLimitsProvider.mergeLlmLimits({
421
+ project,
422
+ modelId: model.id,
423
+ source: 'probe',
424
+ });
425
+ const effectiveModel = (0, runtime_limits_1.applyRuntimeLimits)(model, mergedLimits);
426
+ return this.quotaPolicy.withExecutionSlot({ project, source: 'probe', modelId: model.id, requestId }, () => (0, llm_client_1.testModelConnectivity)({
427
+ model: effectiveModel,
428
+ limiterKey: this.limiterKeyStrategy.buildModelKey(project, model.id),
429
+ requestId,
430
+ timeoutMs: 30_000,
431
+ }, {
432
+ limiter: this.limiter,
433
+ logger: this.logger,
434
+ }));
435
+ }
436
+ // -------------------------------------------------------------------------
437
+ // Mapping: DB row → DTO
438
+ // -------------------------------------------------------------------------
439
+ // orgId (SaaS-only; undefined in OSS) is the resolved project's org — the rate-limit bucket (SPEC 08
440
+ // §3.7). It is carried into the usage-snapshot READ key so it matches the worker's WRITE key under a
441
+ // SaaS strategy; OSS leaves it undefined so the key stays `model:<id>`.
442
+ async toProjectModelListItem(row, orgId) {
443
+ const project = row.projectId
444
+ ? { projectId: row.projectId, source: 'local', orgId }
445
+ : shared_1.LOCAL_PROJECT_CONTEXT;
446
+ const usage = await this.fetchUsageSnapshot(row.id, project);
447
+ const refs = await this.repo.getTotalReferenceCounts(row.id);
448
+ return {
449
+ id: row.id,
450
+ projectId: row.projectId,
451
+ name: row.name,
452
+ providerType: row.providerType,
453
+ providerModelId: row.providerModelId,
454
+ endpoint: row.endpoint,
455
+ contextWindowTokens: row.contextWindowTokens,
456
+ credentialTail: this.crypto.getCredentialTail(this.crypto.decryptApiKey(row.apiKeyEncrypted)),
457
+ status: this.deriveStatus(row.isActive),
458
+ probeStatus: this.deriveProbeStatus(row.lastProbedAt, row.lastProbeError),
459
+ lastProbedAt: row.lastProbedAt?.toISOString() ?? null,
460
+ lastProbeError: row.lastProbeError ?? null,
461
+ rpm: this.toModelLimit(row.rpmLimit, 'rpm', usage),
462
+ tpm: this.toModelLimit(row.tpmLimit, 'tpm', usage),
463
+ concurrency: this.toConcurrencyLimit(row, usage),
464
+ autoConcurrency: row.autoConcurrency,
465
+ pricing: this.toModelPricing(row),
466
+ capabilities: this.toModelCapabilities(row.capabilities),
467
+ extraBody: this.toExtraBody(row.extraBody),
468
+ createdAt: row.createdAt.toISOString(),
469
+ updatedAt: row.updatedAt.toISOString(),
470
+ createdBy: row.createdBy,
471
+ createdByDisplayName: row.createdByDisplayName ?? null,
472
+ references: this.sumReferences(refs),
473
+ };
474
+ }
475
+ async fetchUsageSnapshot(modelId, project = shared_1.LOCAL_PROJECT_CONTEXT) {
476
+ if (!this.limiter.getUsage)
477
+ return null;
478
+ try {
479
+ // Query the same key the worker counts against (§3.7) so usage reflects real rate-limit state.
480
+ const key = this.limiterKeyStrategy.buildModelKey(project, modelId);
481
+ return await withTimeout(this.limiter.getUsage(key), MODEL_USAGE_SNAPSHOT_TIMEOUT_MS, `limiter_getUsage_timeout:${modelId}`);
482
+ }
483
+ catch (error) {
484
+ this.logger.warn({ msg: 'limiter_getUsage_failed', modelId, error: error.message });
485
+ return null;
486
+ }
487
+ }
488
+ deriveStatus(isActive) {
489
+ return isActive ? 'enabled' : 'disabled';
490
+ }
491
+ deriveProbeStatus(lastProbedAt, lastProbeError) {
492
+ if (!lastProbedAt)
493
+ return 'pending';
494
+ return lastProbeError ? 'failed' : 'success';
495
+ }
496
+ toModelLimit(limit, kind, usage) {
497
+ const current = usage
498
+ ? kind === 'rpm'
499
+ ? usage.rpmUsed
500
+ : kind === 'tpm'
501
+ ? usage.tpmUsed
502
+ : usage.concurrencyInUse
503
+ : 0;
504
+ const ratio = limit > 0 ? Math.min(100, Math.round((current / limit) * 100)) : 0;
505
+ return { limit, usage: ratio, current };
506
+ }
507
+ // Concurrency display: surface the system-derived effective cap when autoConcurrency is on and the
508
+ // model has accumulated autostate (latency EWMA). See docs/specs/21-models.md §6.1
509
+ toConcurrencyLimit(row, usage) {
510
+ const base = this.toModelLimit(row.concurrencyLimit, 'concurrency', usage);
511
+ if (!row.autoConcurrency || !usage || usage.latencyEwmaMs === undefined)
512
+ return base;
513
+ const effective = (0, limiter_1.deriveEffectiveConcurrency)({
514
+ rpmLimit: row.rpmLimit,
515
+ tpmLimit: row.tpmLimit,
516
+ ceiling: row.concurrencyLimit,
517
+ latencyEwmaMs: usage.latencyEwmaMs,
518
+ tokensEwma: usage.tokensEwma ?? 1,
519
+ backoffFactor: usage.backoffFactor ?? 1,
520
+ });
521
+ return { ...base, effective };
522
+ }
523
+ toModelPricing(row) {
524
+ return {
525
+ inputPerMillion: Number(row.inputTokenPricePerMillion ?? 0),
526
+ outputPerMillion: Number(row.outputTokenPricePerMillion ?? 0),
527
+ };
528
+ }
529
+ toModelCapabilities(raw) {
530
+ if (raw && typeof raw === 'object' && !Array.isArray(raw)) {
531
+ const image = raw.image;
532
+ if (typeof image === 'string' && ['none', 'url', 'base64', 'both'].includes(image)) {
533
+ return { image: image };
534
+ }
535
+ }
536
+ return { image: 'none' };
537
+ }
538
+ toExtraBody(raw) {
539
+ if (raw && typeof raw === 'object' && !Array.isArray(raw)) {
540
+ return { ...raw };
541
+ }
542
+ return {};
543
+ }
544
+ toActiveUsage(counts) {
545
+ return {
546
+ experiments: counts.experiments,
547
+ optimizations: counts.optimizations,
548
+ canaryReleases: counts.canaryReleases,
549
+ productionReleases: counts.productionReleases,
550
+ };
551
+ }
552
+ toReferencesDto(counts) {
553
+ return { ...this.toActiveUsage(counts), total: this.sumReferences(counts) };
554
+ }
555
+ sumReferences(counts) {
556
+ return counts.experiments + counts.optimizations + counts.canaryReleases + counts.productionReleases;
557
+ }
558
+ toContextWindowResponse(row) {
559
+ return {
560
+ providerModelId: row.providerModelId,
561
+ contextWindowTokens: row.contextWindowTokens,
562
+ updatedBy: row.updatedBy ?? null,
563
+ updatedAt: row.updatedAt.toISOString(),
564
+ };
565
+ }
566
+ // -------------------------------------------------------------------------
567
+ // CSV export
568
+ // -------------------------------------------------------------------------
569
+ toProjectCsv(rows) {
570
+ const header = [
571
+ 'id',
572
+ 'name',
573
+ 'providerType',
574
+ 'providerModelId',
575
+ 'endpoint',
576
+ 'status',
577
+ 'probeStatus',
578
+ 'rpmLimit',
579
+ 'tpmLimit',
580
+ 'concurrencyLimit',
581
+ 'autoConcurrency',
582
+ 'inputPerMillion',
583
+ 'outputPerMillion',
584
+ 'references',
585
+ 'lastProbedAt',
586
+ ];
587
+ const lines = rows.map((r) => [
588
+ r.id,
589
+ r.name,
590
+ r.providerType,
591
+ r.providerModelId,
592
+ r.endpoint,
593
+ r.status,
594
+ r.probeStatus,
595
+ r.rpm.limit,
596
+ r.tpm.limit,
597
+ r.concurrency.limit,
598
+ r.autoConcurrency,
599
+ r.pricing.inputPerMillion,
600
+ r.pricing.outputPerMillion,
601
+ r.references,
602
+ r.lastProbedAt ?? '',
603
+ ]
604
+ .map((v) => this.toCsvCell(v))
605
+ .join(','));
606
+ return `\uFEFF${[header.join(','), ...lines].join('\n')}\n`;
607
+ }
608
+ toCsvCell(value) {
609
+ const text = value === undefined || value === null
610
+ ? ''
611
+ : typeof value === 'object'
612
+ ? (JSON.stringify(value) ?? '')
613
+ : String(value);
614
+ if (!/[",\n\r]/u.test(text))
615
+ return text;
616
+ return `"${text.replaceAll('"', '""')}"`;
617
+ }
618
+ };
619
+ exports.ModelService = ModelService;
620
+ exports.ModelService = ModelService = __decorate([
621
+ (0, common_1.Injectable)(),
622
+ __param(2, (0, common_1.Inject)(redis_constants_1.REDIS_LIMITER)),
623
+ __metadata("design:paramtypes", [model_repository_1.ModelRepository,
624
+ crypto_service_1.CryptoService, Object, access_control_service_1.AccessControlService,
625
+ limiter_key_strategy_1.LimiterKeyStrategy,
626
+ runtime_limits_provider_1.RuntimeLimitsProvider,
627
+ workflow_authorization_hook_1.WorkflowAuthorizationHook,
628
+ quota_policy_hook_1.QuotaPolicyHook])
629
+ ], ModelService);
630
+ function withTimeout(promise, timeoutMs, message) {
631
+ let timer;
632
+ const timeout = new Promise((_resolve, reject) => {
633
+ timer = setTimeout(() => reject(new Error(message)), timeoutMs);
634
+ });
635
+ return Promise.race([promise, timeout]).finally(() => {
636
+ if (timer)
637
+ clearTimeout(timer);
638
+ });
639
+ }
640
+ function isModelNameUniqueViolation(error) {
641
+ return (0, db_error_1.isUniqueViolation)(error, /idx_models_project_name_active/);
642
+ }
643
+ //# sourceMappingURL=model.service.js.map