manifest 5.45.1 → 7.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 (414) hide show
  1. package/CONTRACT.md +50 -0
  2. package/README.md +47 -101
  3. package/dist/chunk-DP2C4E42.js +720 -0
  4. package/dist/index.cjs +757 -0
  5. package/dist/index.d.cts +20 -0
  6. package/dist/index.d.ts +20 -0
  7. package/dist/index.js +8 -18
  8. package/dist/register.cjs +742 -0
  9. package/dist/register.d.cts +2 -0
  10. package/dist/register.d.ts +2 -0
  11. package/dist/register.js +6 -0
  12. package/docs/guide.md +94 -0
  13. package/docs/healing-diagram.svg +549 -0
  14. package/package.json +50 -79
  15. package/dist/backend/analytics/analytics.module.js +0 -60
  16. package/dist/backend/analytics/controllers/agent-analytics.controller.js +0 -69
  17. package/dist/backend/analytics/controllers/agents.controller.js +0 -176
  18. package/dist/backend/analytics/controllers/costs.controller.js +0 -71
  19. package/dist/backend/analytics/controllers/messages.controller.js +0 -67
  20. package/dist/backend/analytics/controllers/overview.controller.js +0 -104
  21. package/dist/backend/analytics/controllers/tokens.controller.js +0 -74
  22. package/dist/backend/analytics/dto/messages-query.dto.js +0 -73
  23. package/dist/backend/analytics/services/agent-analytics.service.js +0 -125
  24. package/dist/backend/analytics/services/agent-lifecycle.service.js +0 -102
  25. package/dist/backend/analytics/services/aggregation.service.js +0 -205
  26. package/dist/backend/analytics/services/message-details.service.js +0 -147
  27. package/dist/backend/analytics/services/messages-query.service.js +0 -197
  28. package/dist/backend/analytics/services/query-helpers.js +0 -45
  29. package/dist/backend/analytics/services/timeseries-queries.service.js +0 -237
  30. package/dist/backend/app.module.js +0 -94
  31. package/dist/backend/auth/auth.instance.js +0 -121
  32. package/dist/backend/auth/auth.module.js +0 -17
  33. package/dist/backend/auth/current-user.decorator.js +0 -9
  34. package/dist/backend/auth/local-auth.guard.js +0 -51
  35. package/dist/backend/auth/session.guard.js +0 -57
  36. package/dist/backend/common/common.module.js +0 -41
  37. package/dist/backend/common/constants/api-key.constants.js +0 -6
  38. package/dist/backend/common/constants/cache.constants.js +0 -8
  39. package/dist/backend/common/constants/local-mode.constants.js +0 -102
  40. package/dist/backend/common/constants/ollama.js +0 -5
  41. package/dist/backend/common/constants/providers.js +0 -134
  42. package/dist/backend/common/decorators/public.decorator.js +0 -8
  43. package/dist/backend/common/dto/create-agent.dto.js +0 -26
  44. package/dist/backend/common/dto/range-query.dto.js +0 -29
  45. package/dist/backend/common/dto/rename-agent.dto.js +0 -26
  46. package/dist/backend/common/filters/spa-fallback.filter.js +0 -46
  47. package/dist/backend/common/guards/api-key.guard.js +0 -89
  48. package/dist/backend/common/interceptors/agent-cache.interceptor.js +0 -39
  49. package/dist/backend/common/interceptors/user-cache.interceptor.js +0 -39
  50. package/dist/backend/common/middleware/http-error-logger.middleware.js +0 -19
  51. package/dist/backend/common/services/ingest-event-bus.service.js +0 -44
  52. package/dist/backend/common/services/manifest-runtime.service.js +0 -39
  53. package/dist/backend/common/services/tenant-cache.service.js +0 -56
  54. package/dist/backend/common/utils/anthropic-model-id.js +0 -36
  55. package/dist/backend/common/utils/cost-calculator.js +0 -19
  56. package/dist/backend/common/utils/crypto.util.js +0 -72
  57. package/dist/backend/common/utils/frontend-path.js +0 -21
  58. package/dist/backend/common/utils/hash.util.js +0 -32
  59. package/dist/backend/common/utils/local-ip.js +0 -33
  60. package/dist/backend/common/utils/period.util.js +0 -55
  61. package/dist/backend/common/utils/provider-aliases.js +0 -13
  62. package/dist/backend/common/utils/provider-inference.js +0 -7
  63. package/dist/backend/common/utils/range.util.js +0 -29
  64. package/dist/backend/common/utils/slugify.js +0 -13
  65. package/dist/backend/common/utils/sql-dialect.js +0 -71
  66. package/dist/backend/common/utils/subscription-support.js +0 -12
  67. package/dist/backend/common/utils/ttl-cache.js +0 -59
  68. package/dist/backend/common/utils/url-validation.js +0 -107
  69. package/dist/backend/config/app.config.js +0 -48
  70. package/dist/backend/database/database-seeder.service.js +0 -180
  71. package/dist/backend/database/database.module.js +0 -201
  72. package/dist/backend/database/datasource.js +0 -28
  73. package/dist/backend/database/local-bootstrap.service.js +0 -161
  74. package/dist/backend/database/migrations/1771464895790-InitialSchema.js +0 -91
  75. package/dist/backend/database/migrations/1771500000000-HashApiKeys.js +0 -67
  76. package/dist/backend/database/migrations/1771600000000-AddModelCapabilities.js +0 -27
  77. package/dist/backend/database/migrations/1771600000000-ModelPricingImprovements.js +0 -60
  78. package/dist/backend/database/migrations/1771700000000-AddRoutingTables.js +0 -50
  79. package/dist/backend/database/migrations/1771700000000-EmailProviderConfigs.js +0 -31
  80. package/dist/backend/database/migrations/1771800000000-AddNotificationEmailAndOptionalDomain.js +0 -16
  81. package/dist/backend/database/migrations/1771800000000-AddQualityScore.js +0 -50
  82. package/dist/backend/database/migrations/1771800100000-SeedQualityScores.js +0 -45
  83. package/dist/backend/database/migrations/1771900000000-EncryptApiKeys.js +0 -34
  84. package/dist/backend/database/migrations/1772000000000-MakeApiKeyNullable.js +0 -16
  85. package/dist/backend/database/migrations/1772100000000-AddRoutingTier.js +0 -17
  86. package/dist/backend/database/migrations/1772200000000-AddLimitAction.js +0 -17
  87. package/dist/backend/database/migrations/1772300000000-AddRoutingReason.js +0 -17
  88. package/dist/backend/database/migrations/1772400000000-AddAgentDisplayName.js +0 -13
  89. package/dist/backend/database/migrations/1772500000000-PerAgentRouting.js +0 -82
  90. package/dist/backend/database/migrations/1772668898071-AddCustomProviders.js +0 -31
  91. package/dist/backend/database/migrations/1772682112419-NullablePricing.js +0 -17
  92. package/dist/backend/database/migrations/1772843035514-AddPerformanceIndexes.js +0 -56
  93. package/dist/backend/database/migrations/1772900000000-AddProviderAuthType.js +0 -13
  94. package/dist/backend/database/migrations/1772905146384-AddDashboardIndexes.js +0 -24
  95. package/dist/backend/database/migrations/1772905260464-AddFallbacks.js +0 -18
  96. package/dist/backend/database/migrations/1772920000000-AddModelDisplayName.js +0 -14
  97. package/dist/backend/database/migrations/1772940000000-DropRedundantIndexes.js +0 -39
  98. package/dist/backend/database/migrations/1772948502780-BackfillTenantId.js +0 -20
  99. package/dist/backend/database/migrations/1772960000000-DropUnusedIndexes.js +0 -19
  100. package/dist/backend/database/migrations/1772960000000-PurgeNonCuratedModels.js +0 -86
  101. package/dist/backend/database/migrations/1773000000000-ExpandProviderUniqueKey.js +0 -19
  102. package/dist/backend/database/migrations/1773100000000-AddOverrideAuthType.js +0 -18
  103. package/dist/backend/database/migrations/1773200000000-AddMessageAuthType.js +0 -18
  104. package/dist/backend/database/migrations/1773202787708-AddModelsAgentIndex.js +0 -16
  105. package/dist/backend/database/migrations/1773300000000-AddEmailProviderKeyPrefix.js +0 -13
  106. package/dist/backend/database/migrations/1773400000000-AddProviderModelCache.js +0 -15
  107. package/dist/backend/database/migrations/1773500000000-DropModelPricingTables.js +0 -51
  108. package/dist/backend/database/migrations/1773600000000-AddOverrideProvider.js +0 -18
  109. package/dist/backend/database/migrations/1773650000000-AddProviderRegion.js +0 -13
  110. package/dist/backend/database/migrations/1773700000000-DropSecurityEventTable.js +0 -24
  111. package/dist/backend/database/migrations/1773800000000-FixNegativeCosts.js +0 -12
  112. package/dist/backend/database/migrations/1773900000000-AddKeyPrefixIndex.js +0 -15
  113. package/dist/backend/database/migrations/1774000000000-WidenKeyHashColumn.js +0 -15
  114. package/dist/backend/database/migrations/1774896789000-WidenApiKeyColumn.js +0 -14
  115. package/dist/backend/database/migrations/1775000000000-AddErrorHttpStatus.js +0 -18
  116. package/dist/backend/database/models-dev-sync.service.js +0 -238
  117. package/dist/backend/database/ollama-sync.service.js +0 -70
  118. package/dist/backend/database/pricing-sync.service.js +0 -116
  119. package/dist/backend/database/quality-score.util.js +0 -76
  120. package/dist/backend/database/seed-messages.js +0 -66
  121. package/dist/backend/entities/agent-api-key.entity.js +0 -91
  122. package/dist/backend/entities/agent-log.entity.js +0 -71
  123. package/dist/backend/entities/agent-message.entity.js +0 -163
  124. package/dist/backend/entities/agent.entity.js +0 -75
  125. package/dist/backend/entities/api-key.entity.js +0 -62
  126. package/dist/backend/entities/cost-snapshot.entity.js +0 -56
  127. package/dist/backend/entities/custom-provider.entity.js +0 -64
  128. package/dist/backend/entities/email-provider-config.entity.js +0 -72
  129. package/dist/backend/entities/llm-call.entity.js +0 -106
  130. package/dist/backend/entities/notification-log.entity.js +0 -67
  131. package/dist/backend/entities/notification-rule.entity.js +0 -84
  132. package/dist/backend/entities/tenant.entity.js +0 -62
  133. package/dist/backend/entities/tier-assignment.entity.js +0 -72
  134. package/dist/backend/entities/token-usage-snapshot.entity.js +0 -71
  135. package/dist/backend/entities/tool-execution.entity.js +0 -60
  136. package/dist/backend/entities/user-provider.entity.js +0 -87
  137. package/dist/backend/github/github.controller.js +0 -53
  138. package/dist/backend/github/github.module.js +0 -20
  139. package/dist/backend/health/health.controller.js +0 -51
  140. package/dist/backend/health/health.module.js +0 -22
  141. package/dist/backend/health/version-check.service.js +0 -95
  142. package/dist/backend/main.js +0 -154
  143. package/dist/backend/model-discovery/anthropic-subscription-probe.js +0 -87
  144. package/dist/backend/model-discovery/known-model-prices.js +0 -18
  145. package/dist/backend/model-discovery/model-discovery.module.js +0 -28
  146. package/dist/backend/model-discovery/model-discovery.service.js +0 -309
  147. package/dist/backend/model-discovery/model-fallback.js +0 -234
  148. package/dist/backend/model-discovery/model-fetcher.js +0 -3
  149. package/dist/backend/model-discovery/provider-model-fetcher.service.js +0 -376
  150. package/dist/backend/model-discovery/provider-model-registry.service.js +0 -84
  151. package/dist/backend/model-prices/model-name-normalizer.js +0 -129
  152. package/dist/backend/model-prices/model-prices.controller.js +0 -39
  153. package/dist/backend/model-prices/model-prices.module.js +0 -41
  154. package/dist/backend/model-prices/model-prices.service.js +0 -45
  155. package/dist/backend/model-prices/model-pricing-cache.service.js +0 -171
  156. package/dist/backend/notifications/dto/notification-rule.dto.js +0 -82
  157. package/dist/backend/notifications/dto/set-email-provider.dto.js +0 -86
  158. package/dist/backend/notifications/dto/set-notification-email.dto.js +0 -24
  159. package/dist/backend/notifications/emails/reset-password.js +0 -108
  160. package/dist/backend/notifications/emails/test-email.js +0 -91
  161. package/dist/backend/notifications/emails/threshold-alert.js +0 -187
  162. package/dist/backend/notifications/emails/verify-email.js +0 -108
  163. package/dist/backend/notifications/notifications.controller.js +0 -208
  164. package/dist/backend/notifications/notifications.module.js +0 -35
  165. package/dist/backend/notifications/services/email-provider-config.service.js +0 -184
  166. package/dist/backend/notifications/services/email-provider-validation.js +0 -47
  167. package/dist/backend/notifications/services/email-providers/email-provider.interface.js +0 -3
  168. package/dist/backend/notifications/services/email-providers/mailgun.provider.js +0 -62
  169. package/dist/backend/notifications/services/email-providers/resend.provider.js +0 -51
  170. package/dist/backend/notifications/services/email-providers/resolve-provider.js +0 -19
  171. package/dist/backend/notifications/services/email-providers/send-email.js +0 -34
  172. package/dist/backend/notifications/services/email-providers/sendgrid.provider.js +0 -59
  173. package/dist/backend/notifications/services/limit-check.service.js +0 -160
  174. package/dist/backend/notifications/services/notification-cron.service.js +0 -151
  175. package/dist/backend/notifications/services/notification-email.service.js +0 -65
  176. package/dist/backend/notifications/services/notification-log.service.js +0 -84
  177. package/dist/backend/notifications/services/notification-rules.service.js +0 -156
  178. package/dist/backend/otlp/guards/agent-key-auth.guard.js +0 -226
  179. package/dist/backend/otlp/interfaces/ingestion-context.interface.js +0 -3
  180. package/dist/backend/otlp/otlp-deprecated.controller.js +0 -61
  181. package/dist/backend/otlp/otlp.module.js +0 -30
  182. package/dist/backend/otlp/services/api-key.service.js +0 -143
  183. package/dist/backend/public-stats/public-stats.controller.js +0 -141
  184. package/dist/backend/public-stats/public-stats.module.js +0 -26
  185. package/dist/backend/public-stats/public-stats.service.js +0 -226
  186. package/dist/backend/routing/copilot.controller.js +0 -79
  187. package/dist/backend/routing/custom-provider/custom-provider.controller.js +0 -131
  188. package/dist/backend/routing/custom-provider/custom-provider.module.js +0 -27
  189. package/dist/backend/routing/custom-provider/custom-provider.service.js +0 -161
  190. package/dist/backend/routing/dto/custom-provider.dto.js +0 -124
  191. package/dist/backend/routing/dto/resolve-request.dto.js +0 -63
  192. package/dist/backend/routing/dto/resolve-response.js +0 -3
  193. package/dist/backend/routing/dto/routing.dto.js +0 -136
  194. package/dist/backend/routing/model.controller.js +0 -105
  195. package/dist/backend/routing/oauth/copilot-device-auth.service.js +0 -77
  196. package/dist/backend/routing/oauth/minimax-oauth-helpers.js +0 -70
  197. package/dist/backend/routing/oauth/minimax-oauth.controller.js +0 -80
  198. package/dist/backend/routing/oauth/minimax-oauth.service.js +0 -252
  199. package/dist/backend/routing/oauth/oauth.module.js +0 -29
  200. package/dist/backend/routing/oauth/openai-oauth.controller.js +0 -138
  201. package/dist/backend/routing/oauth/openai-oauth.service.js +0 -273
  202. package/dist/backend/routing/oauth/openai-oauth.types.js +0 -45
  203. package/dist/backend/routing/provider-base-url.js +0 -25
  204. package/dist/backend/routing/provider.controller.js +0 -152
  205. package/dist/backend/routing/proxy/anthropic-adapter.js +0 -295
  206. package/dist/backend/routing/proxy/cache-injection.js +0 -33
  207. package/dist/backend/routing/proxy/chatgpt-adapter.js +0 -272
  208. package/dist/backend/routing/proxy/chatgpt-helpers.js +0 -108
  209. package/dist/backend/routing/proxy/copilot-token.service.js +0 -63
  210. package/dist/backend/routing/proxy/fallback-status-codes.js +0 -7
  211. package/dist/backend/routing/proxy/google-adapter.js +0 -314
  212. package/dist/backend/routing/proxy/provider-client-converters.js +0 -190
  213. package/dist/backend/routing/proxy/provider-client.js +0 -130
  214. package/dist/backend/routing/proxy/provider-endpoints.js +0 -182
  215. package/dist/backend/routing/proxy/proxy-error-sanitizer.js +0 -40
  216. package/dist/backend/routing/proxy/proxy-exception.filter.js +0 -67
  217. package/dist/backend/routing/proxy/proxy-fallback.service.js +0 -227
  218. package/dist/backend/routing/proxy/proxy-friendly-response.js +0 -115
  219. package/dist/backend/routing/proxy/proxy-message-dedup.js +0 -121
  220. package/dist/backend/routing/proxy/proxy-message-recorder.js +0 -264
  221. package/dist/backend/routing/proxy/proxy-rate-limiter.js +0 -81
  222. package/dist/backend/routing/proxy/proxy-response-handler.js +0 -202
  223. package/dist/backend/routing/proxy/proxy-transport.js +0 -90
  224. package/dist/backend/routing/proxy/proxy-types.js +0 -3
  225. package/dist/backend/routing/proxy/proxy.controller.js +0 -174
  226. package/dist/backend/routing/proxy/proxy.module.js +0 -62
  227. package/dist/backend/routing/proxy/proxy.service.js +0 -227
  228. package/dist/backend/routing/proxy/session-momentum.service.js +0 -66
  229. package/dist/backend/routing/proxy/stream-writer.js +0 -147
  230. package/dist/backend/routing/proxy/thought-signature-cache.js +0 -45
  231. package/dist/backend/routing/qwen-region.js +0 -51
  232. package/dist/backend/routing/resolve/resolve.controller.js +0 -106
  233. package/dist/backend/routing/resolve/resolve.module.js +0 -28
  234. package/dist/backend/routing/resolve/resolve.service.js +0 -126
  235. package/dist/backend/routing/routing-core/provider-key.service.js +0 -190
  236. package/dist/backend/routing/routing-core/provider.service.js +0 -305
  237. package/dist/backend/routing/routing-core/resolve-agent.service.js +0 -62
  238. package/dist/backend/routing/routing-core/routing-cache.service.js +0 -73
  239. package/dist/backend/routing/routing-core/routing-core.module.js +0 -56
  240. package/dist/backend/routing/routing-core/routing-invalidation.service.js +0 -90
  241. package/dist/backend/routing/routing-core/tier-auto-assign.service.js +0 -138
  242. package/dist/backend/routing/routing-core/tier.service.js +0 -179
  243. package/dist/backend/routing/routing.module.js +0 -46
  244. package/dist/backend/routing/tier.controller.js +0 -129
  245. package/dist/backend/scoring/__tests__/fixtures.js +0 -191
  246. package/dist/backend/scoring/config.js +0 -383
  247. package/dist/backend/scoring/dimensions/contextual-dimensions.js +0 -85
  248. package/dist/backend/scoring/dimensions/index.js +0 -17
  249. package/dist/backend/scoring/dimensions/keyword-dimensions.js +0 -47
  250. package/dist/backend/scoring/dimensions/structural-dimensions.js +0 -118
  251. package/dist/backend/scoring/index.js +0 -186
  252. package/dist/backend/scoring/keyword-trie.js +0 -75
  253. package/dist/backend/scoring/momentum.js +0 -50
  254. package/dist/backend/scoring/overrides.js +0 -55
  255. package/dist/backend/scoring/sigmoid.js +0 -24
  256. package/dist/backend/scoring/text-extractor.js +0 -67
  257. package/dist/backend/scoring/types.js +0 -6
  258. package/dist/backend/sse/sse.controller.js +0 -45
  259. package/dist/backend/sse/sse.module.js +0 -20
  260. package/dist/node_modules/manifest-shared/dist/cjs/api-key.d.ts +0 -2
  261. package/dist/node_modules/manifest-shared/dist/cjs/api-key.d.ts.map +0 -1
  262. package/dist/node_modules/manifest-shared/dist/cjs/api-key.js +0 -5
  263. package/dist/node_modules/manifest-shared/dist/cjs/api-key.js.map +0 -1
  264. package/dist/node_modules/manifest-shared/dist/cjs/auth-types.d.ts +0 -3
  265. package/dist/node_modules/manifest-shared/dist/cjs/auth-types.d.ts.map +0 -1
  266. package/dist/node_modules/manifest-shared/dist/cjs/auth-types.js +0 -5
  267. package/dist/node_modules/manifest-shared/dist/cjs/auth-types.js.map +0 -1
  268. package/dist/node_modules/manifest-shared/dist/cjs/index.d.ts +0 -10
  269. package/dist/node_modules/manifest-shared/dist/cjs/index.d.ts.map +0 -1
  270. package/dist/node_modules/manifest-shared/dist/cjs/index.js +0 -22
  271. package/dist/node_modules/manifest-shared/dist/cjs/index.js.map +0 -1
  272. package/dist/node_modules/manifest-shared/dist/cjs/provider-inference.d.ts +0 -8
  273. package/dist/node_modules/manifest-shared/dist/cjs/provider-inference.d.ts.map +0 -1
  274. package/dist/node_modules/manifest-shared/dist/cjs/provider-inference.js +0 -37
  275. package/dist/node_modules/manifest-shared/dist/cjs/provider-inference.js.map +0 -1
  276. package/dist/node_modules/manifest-shared/dist/cjs/resolve-response.d.ts +0 -12
  277. package/dist/node_modules/manifest-shared/dist/cjs/resolve-response.d.ts.map +0 -1
  278. package/dist/node_modules/manifest-shared/dist/cjs/resolve-response.js +0 -3
  279. package/dist/node_modules/manifest-shared/dist/cjs/resolve-response.js.map +0 -1
  280. package/dist/node_modules/manifest-shared/dist/cjs/subscription/configs.d.ts +0 -4
  281. package/dist/node_modules/manifest-shared/dist/cjs/subscription/configs.d.ts.map +0 -1
  282. package/dist/node_modules/manifest-shared/dist/cjs/subscription/configs.js +0 -80
  283. package/dist/node_modules/manifest-shared/dist/cjs/subscription/configs.js.map +0 -1
  284. package/dist/node_modules/manifest-shared/dist/cjs/subscription/helpers.d.ts +0 -6
  285. package/dist/node_modules/manifest-shared/dist/cjs/subscription/helpers.d.ts.map +0 -1
  286. package/dist/node_modules/manifest-shared/dist/cjs/subscription/helpers.js +0 -25
  287. package/dist/node_modules/manifest-shared/dist/cjs/subscription/helpers.js.map +0 -1
  288. package/dist/node_modules/manifest-shared/dist/cjs/subscription/index.d.ts +0 -4
  289. package/dist/node_modules/manifest-shared/dist/cjs/subscription/index.d.ts.map +0 -1
  290. package/dist/node_modules/manifest-shared/dist/cjs/subscription/index.js +0 -12
  291. package/dist/node_modules/manifest-shared/dist/cjs/subscription/index.js.map +0 -1
  292. package/dist/node_modules/manifest-shared/dist/cjs/subscription/types.d.ts +0 -17
  293. package/dist/node_modules/manifest-shared/dist/cjs/subscription/types.d.ts.map +0 -1
  294. package/dist/node_modules/manifest-shared/dist/cjs/subscription/types.js +0 -3
  295. package/dist/node_modules/manifest-shared/dist/cjs/subscription/types.js.map +0 -1
  296. package/dist/node_modules/manifest-shared/dist/cjs/tiers.d.ts +0 -5
  297. package/dist/node_modules/manifest-shared/dist/cjs/tiers.d.ts.map +0 -1
  298. package/dist/node_modules/manifest-shared/dist/cjs/tiers.js +0 -17
  299. package/dist/node_modules/manifest-shared/dist/cjs/tiers.js.map +0 -1
  300. package/dist/node_modules/manifest-shared/dist/esm/api-key.d.ts +0 -2
  301. package/dist/node_modules/manifest-shared/dist/esm/api-key.d.ts.map +0 -1
  302. package/dist/node_modules/manifest-shared/dist/esm/api-key.js +0 -2
  303. package/dist/node_modules/manifest-shared/dist/esm/api-key.js.map +0 -1
  304. package/dist/node_modules/manifest-shared/dist/esm/auth-types.d.ts +0 -3
  305. package/dist/node_modules/manifest-shared/dist/esm/auth-types.d.ts.map +0 -1
  306. package/dist/node_modules/manifest-shared/dist/esm/auth-types.js +0 -2
  307. package/dist/node_modules/manifest-shared/dist/esm/auth-types.js.map +0 -1
  308. package/dist/node_modules/manifest-shared/dist/esm/index.d.ts +0 -10
  309. package/dist/node_modules/manifest-shared/dist/esm/index.d.ts.map +0 -1
  310. package/dist/node_modules/manifest-shared/dist/esm/index.js +0 -6
  311. package/dist/node_modules/manifest-shared/dist/esm/index.js.map +0 -1
  312. package/dist/node_modules/manifest-shared/dist/esm/provider-inference.d.ts +0 -8
  313. package/dist/node_modules/manifest-shared/dist/esm/provider-inference.d.ts.map +0 -1
  314. package/dist/node_modules/manifest-shared/dist/esm/provider-inference.js +0 -33
  315. package/dist/node_modules/manifest-shared/dist/esm/provider-inference.js.map +0 -1
  316. package/dist/node_modules/manifest-shared/dist/esm/resolve-response.d.ts +0 -12
  317. package/dist/node_modules/manifest-shared/dist/esm/resolve-response.d.ts.map +0 -1
  318. package/dist/node_modules/manifest-shared/dist/esm/resolve-response.js +0 -2
  319. package/dist/node_modules/manifest-shared/dist/esm/resolve-response.js.map +0 -1
  320. package/dist/node_modules/manifest-shared/dist/esm/subscription/configs.d.ts +0 -4
  321. package/dist/node_modules/manifest-shared/dist/esm/subscription/configs.d.ts.map +0 -1
  322. package/dist/node_modules/manifest-shared/dist/esm/subscription/configs.js +0 -77
  323. package/dist/node_modules/manifest-shared/dist/esm/subscription/configs.js.map +0 -1
  324. package/dist/node_modules/manifest-shared/dist/esm/subscription/helpers.d.ts +0 -6
  325. package/dist/node_modules/manifest-shared/dist/esm/subscription/helpers.d.ts.map +0 -1
  326. package/dist/node_modules/manifest-shared/dist/esm/subscription/helpers.js +0 -19
  327. package/dist/node_modules/manifest-shared/dist/esm/subscription/helpers.js.map +0 -1
  328. package/dist/node_modules/manifest-shared/dist/esm/subscription/index.d.ts +0 -4
  329. package/dist/node_modules/manifest-shared/dist/esm/subscription/index.d.ts.map +0 -1
  330. package/dist/node_modules/manifest-shared/dist/esm/subscription/index.js +0 -3
  331. package/dist/node_modules/manifest-shared/dist/esm/subscription/index.js.map +0 -1
  332. package/dist/node_modules/manifest-shared/dist/esm/subscription/types.d.ts +0 -17
  333. package/dist/node_modules/manifest-shared/dist/esm/subscription/types.d.ts.map +0 -1
  334. package/dist/node_modules/manifest-shared/dist/esm/subscription/types.js +0 -2
  335. package/dist/node_modules/manifest-shared/dist/esm/subscription/types.js.map +0 -1
  336. package/dist/node_modules/manifest-shared/dist/esm/tiers.d.ts +0 -5
  337. package/dist/node_modules/manifest-shared/dist/esm/tiers.d.ts.map +0 -1
  338. package/dist/node_modules/manifest-shared/dist/esm/tiers.js +0 -14
  339. package/dist/node_modules/manifest-shared/dist/esm/tiers.js.map +0 -1
  340. package/dist/node_modules/manifest-shared/package.json +0 -26
  341. package/dist/openclaw.plugin.json +0 -37
  342. package/dist/package.json +0 -94
  343. package/dist/server.d.ts +0 -9
  344. package/dist/server.js +0 -69
  345. package/openclaw.plugin.json +0 -37
  346. package/public/assets/Account-C5g6WhPe.js +0 -1
  347. package/public/assets/AuthBadge-Dj2KkXRW.js +0 -1
  348. package/public/assets/ConnectProvider-axzk92LC.js +0 -1
  349. package/public/assets/CopyButton-BWMVlK2w.js +0 -1
  350. package/public/assets/FreeModels-D14GhDL_.js +0 -1
  351. package/public/assets/Help-ifWIlcDo.js +0 -1
  352. package/public/assets/Limits-Xgc4xTl5.js +0 -1
  353. package/public/assets/Login-DMXD4PMZ.js +0 -1
  354. package/public/assets/MessageLog-DoriYlHo.js +0 -1
  355. package/public/assets/ModelPrices-MhBT_7Zb.js +0 -1
  356. package/public/assets/Overview-Bi9FuoLx.js +0 -1
  357. package/public/assets/Pagination-D8BOkffh.js +0 -1
  358. package/public/assets/ProviderTokens-Cu2RUqQG.js +0 -1
  359. package/public/assets/Register-CrovWG_d.js +0 -1
  360. package/public/assets/ResetPassword-C6B1ubhL.js +0 -1
  361. package/public/assets/Routing-B-On2pvv.js +0 -6
  362. package/public/assets/Settings-BH-xNoID.js +0 -1
  363. package/public/assets/SetupStepAddProvider-CSNkQmoC.js +0 -3
  364. package/public/assets/SocialButtons-DudwEJ6b.js +0 -1
  365. package/public/assets/auth-CU91cd7V.js +0 -1
  366. package/public/assets/chart-utils-DTt1NOye.js +0 -1
  367. package/public/assets/charts-Cty976qB.js +0 -3
  368. package/public/assets/charts-Saz_VHki.css +0 -1
  369. package/public/assets/index-C4Qw7vZo.js +0 -2
  370. package/public/assets/index-DhaXpWfr.css +0 -1
  371. package/public/assets/model-display-DHwvDtl4.js +0 -1
  372. package/public/assets/overview-DKLGwfLs.js +0 -1
  373. package/public/assets/overview-vZEzTjBP.css +0 -1
  374. package/public/assets/provider-api-key-urls-1G6okUJ7.js +0 -1
  375. package/public/assets/routing-CLLAl6kl.js +0 -1
  376. package/public/assets/routing-utils-CHapjwyd.js +0 -1
  377. package/public/assets/vendor-C-Y5oNOq.js +0 -1
  378. package/public/example-messages.svg +0 -1
  379. package/public/example-overview.svg +0 -1
  380. package/public/favicon.ico +0 -0
  381. package/public/fonts/boxicons/boxicons-duotone.min.css +0 -37
  382. package/public/fonts/boxicons/boxicons-duotone.woff2 +0 -0
  383. package/public/fonts/bricolage-grotesque-latin.woff2 +0 -0
  384. package/public/fonts/dm-sans-latin.woff2 +0 -0
  385. package/public/fonts/jetbrains-mono-latin.woff2 +0 -0
  386. package/public/icons/caret-down.svg +0 -1
  387. package/public/icons/cohere.svg +0 -30
  388. package/public/icons/free.svg +0 -91
  389. package/public/icons/gemini.svg +0 -25
  390. package/public/icons/kilocode.jpg +0 -0
  391. package/public/icons/nvidia.svg +0 -1
  392. package/public/icons/providers/alibaba.svg +0 -1
  393. package/public/icons/providers/amazon.svg +0 -1
  394. package/public/icons/providers/anthropic.svg +0 -1
  395. package/public/icons/providers/cohere.svg +0 -1
  396. package/public/icons/providers/deepseek.svg +0 -1
  397. package/public/icons/providers/google.svg +0 -1
  398. package/public/icons/providers/meta.svg +0 -1
  399. package/public/icons/providers/mistral.svg +0 -1
  400. package/public/icons/providers/moonshot.svg +0 -1
  401. package/public/icons/providers/openai.svg +0 -1
  402. package/public/icons/providers/xai.svg +0 -1
  403. package/public/icons/providers/zhipu.svg +0 -1
  404. package/public/icons/qwen.svg +0 -1
  405. package/public/images/oauth-callback-example.mp4 +0 -0
  406. package/public/images/oauth-callback-example.png +0 -0
  407. package/public/index.html +0 -41
  408. package/public/logo-white.svg +0 -93
  409. package/public/logo.svg +0 -93
  410. package/public/logos/mailgun.svg +0 -13
  411. package/public/logos/resend.svg +0 -4
  412. package/public/logos/sendgrid.svg +0 -18
  413. package/public/manifest-logo.png +0 -0
  414. package/public/theme-init.js +0 -6
@@ -1,62 +0,0 @@
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.ResolveAgentService = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const typeorm_1 = require("@nestjs/typeorm");
18
- const typeorm_2 = require("typeorm");
19
- const agent_entity_1 = require("../../entities/agent.entity");
20
- const tenant_cache_service_1 = require("../../common/services/tenant-cache.service");
21
- const TTL_MS = 120_000;
22
- const MAX_ENTRIES = 5_000;
23
- let ResolveAgentService = class ResolveAgentService {
24
- agentRepo;
25
- tenantCache;
26
- cache = new Map();
27
- constructor(agentRepo, tenantCache) {
28
- this.agentRepo = agentRepo;
29
- this.tenantCache = tenantCache;
30
- }
31
- async resolve(userId, agentName) {
32
- const tenantId = await this.tenantCache.resolve(userId);
33
- if (!tenantId)
34
- throw new common_1.NotFoundException('Tenant not found');
35
- const cacheKey = `${tenantId}:${agentName}`;
36
- const cached = this.cache.get(cacheKey);
37
- if (cached && cached.expiresAt > Date.now())
38
- return cached.agent;
39
- if (cached)
40
- this.cache.delete(cacheKey);
41
- const agent = await this.agentRepo.findOne({
42
- where: { tenant_id: tenantId, name: agentName },
43
- });
44
- if (!agent)
45
- throw new common_1.NotFoundException(`Agent "${agentName}" not found`);
46
- if (this.cache.size >= MAX_ENTRIES && !this.cache.has(cacheKey)) {
47
- const firstKey = this.cache.keys().next().value;
48
- if (firstKey !== undefined)
49
- this.cache.delete(firstKey);
50
- }
51
- this.cache.set(cacheKey, { agent, expiresAt: Date.now() + TTL_MS });
52
- return agent;
53
- }
54
- };
55
- exports.ResolveAgentService = ResolveAgentService;
56
- exports.ResolveAgentService = ResolveAgentService = __decorate([
57
- (0, common_1.Injectable)(),
58
- __param(0, (0, typeorm_1.InjectRepository)(agent_entity_1.Agent)),
59
- __metadata("design:paramtypes", [typeorm_2.Repository,
60
- tenant_cache_service_1.TenantCacheService])
61
- ], ResolveAgentService);
62
- //# sourceMappingURL=resolve-agent.service.js.map
@@ -1,73 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.RoutingCacheService = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const TTL_MS = 120_000;
12
- const MAX_ENTRIES = 5_000;
13
- function getOrExpire(map, key) {
14
- const cached = map.get(key);
15
- if (!cached)
16
- return undefined;
17
- if (cached.expiresAt > Date.now())
18
- return cached.data;
19
- map.delete(key);
20
- return undefined;
21
- }
22
- function setWithEviction(map, key, data) {
23
- if (map.size >= MAX_ENTRIES && !map.has(key)) {
24
- const firstKey = map.keys().next().value;
25
- if (firstKey !== undefined)
26
- map.delete(firstKey);
27
- }
28
- map.set(key, { data, expiresAt: Date.now() + TTL_MS });
29
- }
30
- let RoutingCacheService = class RoutingCacheService {
31
- tiers = new Map();
32
- providers = new Map();
33
- customProviders = new Map();
34
- apiKeys = new Map();
35
- getTiers(agentId) {
36
- return getOrExpire(this.tiers, agentId) ?? null;
37
- }
38
- setTiers(agentId, data) {
39
- setWithEviction(this.tiers, agentId, data);
40
- }
41
- getProviders(agentId) {
42
- return getOrExpire(this.providers, agentId) ?? null;
43
- }
44
- setProviders(agentId, data) {
45
- setWithEviction(this.providers, agentId, data);
46
- }
47
- getCustomProviders(agentId) {
48
- return getOrExpire(this.customProviders, agentId) ?? null;
49
- }
50
- setCustomProviders(agentId, data) {
51
- setWithEviction(this.customProviders, agentId, data);
52
- }
53
- getApiKey(agentId, provider, authType) {
54
- return getOrExpire(this.apiKeys, `${agentId}:${provider}:${authType ?? 'default'}`);
55
- }
56
- setApiKey(agentId, provider, apiKey, authType) {
57
- setWithEviction(this.apiKeys, `${agentId}:${provider}:${authType ?? 'default'}`, apiKey);
58
- }
59
- invalidateAgent(agentId) {
60
- this.tiers.delete(agentId);
61
- this.providers.delete(agentId);
62
- this.customProviders.delete(agentId);
63
- const prefix = `${agentId}:`;
64
- const toDelete = [...this.apiKeys.keys()].filter((k) => k.startsWith(prefix));
65
- for (const k of toDelete)
66
- this.apiKeys.delete(k);
67
- }
68
- };
69
- exports.RoutingCacheService = RoutingCacheService;
70
- exports.RoutingCacheService = RoutingCacheService = __decorate([
71
- (0, common_1.Injectable)()
72
- ], RoutingCacheService);
73
- //# sourceMappingURL=routing-cache.service.js.map
@@ -1,56 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.RoutingCoreModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const typeorm_1 = require("@nestjs/typeorm");
12
- const user_provider_entity_1 = require("../../entities/user-provider.entity");
13
- const tier_assignment_entity_1 = require("../../entities/tier-assignment.entity");
14
- const agent_entity_1 = require("../../entities/agent.entity");
15
- const tenant_entity_1 = require("../../entities/tenant.entity");
16
- const model_prices_module_1 = require("../../model-prices/model-prices.module");
17
- const model_discovery_module_1 = require("../../model-discovery/model-discovery.module");
18
- const provider_service_1 = require("./provider.service");
19
- const tier_service_1 = require("./tier.service");
20
- const provider_key_service_1 = require("./provider-key.service");
21
- const routing_cache_service_1 = require("./routing-cache.service");
22
- const routing_invalidation_service_1 = require("./routing-invalidation.service");
23
- const tier_auto_assign_service_1 = require("./tier-auto-assign.service");
24
- const resolve_agent_service_1 = require("./resolve-agent.service");
25
- let RoutingCoreModule = class RoutingCoreModule {
26
- };
27
- exports.RoutingCoreModule = RoutingCoreModule;
28
- exports.RoutingCoreModule = RoutingCoreModule = __decorate([
29
- (0, common_1.Module)({
30
- imports: [
31
- typeorm_1.TypeOrmModule.forFeature([user_provider_entity_1.UserProvider, tier_assignment_entity_1.TierAssignment, agent_entity_1.Agent, tenant_entity_1.Tenant]),
32
- model_prices_module_1.ModelPricesModule,
33
- model_discovery_module_1.ModelDiscoveryModule,
34
- ],
35
- providers: [
36
- provider_service_1.ProviderService,
37
- tier_service_1.TierService,
38
- provider_key_service_1.ProviderKeyService,
39
- routing_cache_service_1.RoutingCacheService,
40
- routing_invalidation_service_1.RoutingInvalidationService,
41
- tier_auto_assign_service_1.TierAutoAssignService,
42
- resolve_agent_service_1.ResolveAgentService,
43
- ],
44
- exports: [
45
- typeorm_1.TypeOrmModule,
46
- provider_service_1.ProviderService,
47
- tier_service_1.TierService,
48
- provider_key_service_1.ProviderKeyService,
49
- routing_cache_service_1.RoutingCacheService,
50
- routing_invalidation_service_1.RoutingInvalidationService,
51
- tier_auto_assign_service_1.TierAutoAssignService,
52
- resolve_agent_service_1.ResolveAgentService,
53
- ],
54
- })
55
- ], RoutingCoreModule);
56
- //# sourceMappingURL=routing-core.module.js.map
@@ -1,90 +0,0 @@
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
- var RoutingInvalidationService_1;
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.RoutingInvalidationService = void 0;
17
- const common_1 = require("@nestjs/common");
18
- const typeorm_1 = require("@nestjs/typeorm");
19
- const typeorm_2 = require("typeorm");
20
- const tier_assignment_entity_1 = require("../../entities/tier-assignment.entity");
21
- const model_pricing_cache_service_1 = require("../../model-prices/model-pricing-cache.service");
22
- const tier_auto_assign_service_1 = require("./tier-auto-assign.service");
23
- const routing_cache_service_1 = require("./routing-cache.service");
24
- let RoutingInvalidationService = RoutingInvalidationService_1 = class RoutingInvalidationService {
25
- tierRepo;
26
- pricingCache;
27
- autoAssign;
28
- routingCache;
29
- logger = new common_1.Logger(RoutingInvalidationService_1.name);
30
- constructor(tierRepo, pricingCache, autoAssign, routingCache) {
31
- this.tierRepo = tierRepo;
32
- this.pricingCache = pricingCache;
33
- this.autoAssign = autoAssign;
34
- this.routingCache = routingCache;
35
- }
36
- async invalidateOverridesForRemovedModels(removedModels) {
37
- if (removedModels.length === 0)
38
- return;
39
- const removedSet = new Set(removedModels);
40
- const affected = await this.tierRepo.find({
41
- where: { override_model: (0, typeorm_2.In)(removedModels) },
42
- });
43
- const agentIds = new Set();
44
- const tiersToSave = [];
45
- for (const tier of affected) {
46
- this.logger.warn(`Clearing override ${tier.override_model} for agent ${tier.agent_id} tier ${tier.tier} (model removed)`);
47
- tier.override_model = null;
48
- tier.override_provider = null;
49
- tier.override_auth_type = null;
50
- tier.updated_at = new Date().toISOString();
51
- tiersToSave.push(tier);
52
- agentIds.add(tier.agent_id);
53
- }
54
- const fallbackTiers = agentIds.size > 0
55
- ? await this.tierRepo.find({ where: { agent_id: (0, typeorm_2.In)([...agentIds]) } })
56
- : await this.tierRepo.find();
57
- const savedIds = new Set(tiersToSave.map((t) => t.id));
58
- for (const tier of fallbackTiers) {
59
- if (!tier.fallback_models || tier.fallback_models.length === 0)
60
- continue;
61
- const filtered = tier.fallback_models.filter((m) => !removedSet.has(m));
62
- if (filtered.length !== tier.fallback_models.length) {
63
- tier.fallback_models = filtered.length > 0 ? filtered : null;
64
- tier.updated_at = new Date().toISOString();
65
- if (!savedIds.has(tier.id))
66
- tiersToSave.push(tier);
67
- agentIds.add(tier.agent_id);
68
- }
69
- }
70
- if (tiersToSave.length > 0)
71
- await this.tierRepo.save(tiersToSave);
72
- if (agentIds.size === 0)
73
- return;
74
- await Promise.all([...agentIds].map((agentId) => {
75
- this.routingCache.invalidateAgent(agentId);
76
- return this.autoAssign.recalculate(agentId);
77
- }));
78
- this.logger.log(`Invalidated ${affected.length} overrides for ${agentIds.size} agents (removed models: ${removedModels.join(', ')})`);
79
- }
80
- };
81
- exports.RoutingInvalidationService = RoutingInvalidationService;
82
- exports.RoutingInvalidationService = RoutingInvalidationService = RoutingInvalidationService_1 = __decorate([
83
- (0, common_1.Injectable)(),
84
- __param(0, (0, typeorm_1.InjectRepository)(tier_assignment_entity_1.TierAssignment)),
85
- __metadata("design:paramtypes", [typeorm_2.Repository,
86
- model_pricing_cache_service_1.ModelPricingCacheService,
87
- tier_auto_assign_service_1.TierAutoAssignService,
88
- routing_cache_service_1.RoutingCacheService])
89
- ], RoutingInvalidationService);
90
- //# sourceMappingURL=routing-invalidation.service.js.map
@@ -1,138 +0,0 @@
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
- var TierAutoAssignService_1;
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.TierAutoAssignService = void 0;
17
- const common_1 = require("@nestjs/common");
18
- const typeorm_1 = require("@nestjs/typeorm");
19
- const typeorm_2 = require("typeorm");
20
- const tier_assignment_entity_1 = require("../../entities/tier-assignment.entity");
21
- const model_discovery_service_1 = require("../../model-discovery/model-discovery.service");
22
- const crypto_1 = require("crypto");
23
- const types_1 = require("../../scoring/types");
24
- function filterSubModels(models) {
25
- const byProvider = new Map();
26
- for (const m of models) {
27
- const key = m.provider.toLowerCase();
28
- const arr = byProvider.get(key) ?? [];
29
- arr.push(m);
30
- byProvider.set(key, arr);
31
- }
32
- const result = [];
33
- for (const providerModels of byProvider.values()) {
34
- const zeroCost = providerModels.filter((m) => m.inputPricePerToken != null &&
35
- m.outputPricePerToken != null &&
36
- m.inputPricePerToken === 0 &&
37
- m.outputPricePerToken === 0);
38
- result.push(...(zeroCost.length > 0 ? zeroCost : providerModels));
39
- }
40
- return result;
41
- }
42
- let TierAutoAssignService = TierAutoAssignService_1 = class TierAutoAssignService {
43
- discoveryService;
44
- tierRepo;
45
- logger = new common_1.Logger(TierAutoAssignService_1.name);
46
- constructor(discoveryService, tierRepo) {
47
- this.discoveryService = discoveryService;
48
- this.tierRepo = tierRepo;
49
- }
50
- async recalculate(agentId) {
51
- const allModels = await this.discoveryService.getModelsForAgent(agentId);
52
- const subModels = filterSubModels(allModels.filter((m) => m.authType === 'subscription'));
53
- const keyModels = allModels.filter((m) => m.authType !== 'subscription');
54
- const allTiers = await this.tierRepo.find({ where: { agent_id: agentId } });
55
- const tierMap = new Map(allTiers.map((t) => [t.tier, t]));
56
- const toSave = [];
57
- const toInsert = [];
58
- for (const tier of types_1.TIERS) {
59
- const best = this.pickBest(subModels, tier) ?? this.pickBest(keyModels, tier);
60
- const existing = tierMap.get(tier);
61
- if (existing) {
62
- existing.auto_assigned_model = best?.model_name ?? null;
63
- existing.updated_at = new Date().toISOString();
64
- toSave.push(existing);
65
- }
66
- else {
67
- toInsert.push({
68
- id: (0, crypto_1.randomUUID)(),
69
- user_id: '',
70
- agent_id: agentId,
71
- tier,
72
- override_model: null,
73
- override_provider: null,
74
- auto_assigned_model: best?.model_name ?? null,
75
- });
76
- }
77
- }
78
- if (toSave.length > 0)
79
- await this.tierRepo.save(toSave);
80
- if (toInsert.length > 0)
81
- await this.tierRepo.insert(toInsert);
82
- this.logger.log(`Recalculated tier assignments for agent ${agentId}`);
83
- }
84
- pickBest(models, tier) {
85
- if (models.length === 0)
86
- return null;
87
- const totalPrice = (m) => {
88
- if (m.inputPricePerToken == null || m.outputPricePerToken == null)
89
- return Infinity;
90
- return Number(m.inputPricePerToken) + Number(m.outputPricePerToken);
91
- };
92
- const quality = (m) => m.qualityScore ?? 3;
93
- const byPrice = [...models].sort((a, b) => totalPrice(a) - totalPrice(b));
94
- let picked = byPrice[0];
95
- switch (tier) {
96
- case 'simple': {
97
- picked = byPrice[0];
98
- break;
99
- }
100
- case 'standard': {
101
- const eligible = byPrice.filter((m) => quality(m) >= 2);
102
- const pool = eligible.length > 0 ? eligible : byPrice;
103
- const toolCapable = pool.filter((m) => m.capabilityCode);
104
- picked = toolCapable.length > 0 ? toolCapable[0] : pool[0];
105
- break;
106
- }
107
- case 'complex': {
108
- const byQuality = [...byPrice].sort((a, b) => quality(b) - quality(a));
109
- const toolCapable = byQuality.filter((m) => m.capabilityCode);
110
- picked = toolCapable.length > 0 ? toolCapable[0] : byQuality[0];
111
- break;
112
- }
113
- case 'reasoning': {
114
- const reasoningModels = byPrice.filter((m) => m.capabilityReasoning);
115
- if (reasoningModels.length > 0) {
116
- const byQuality = [...reasoningModels].sort((a, b) => quality(b) - quality(a));
117
- const toolCapable = byQuality.filter((m) => m.capabilityCode);
118
- picked = toolCapable.length > 0 ? toolCapable[0] : byQuality[0];
119
- }
120
- else {
121
- const byQuality = [...byPrice].sort((a, b) => quality(b) - quality(a));
122
- const toolCapable = byQuality.filter((m) => m.capabilityCode);
123
- picked = toolCapable.length > 0 ? toolCapable[0] : byQuality[0];
124
- }
125
- break;
126
- }
127
- }
128
- return { model_name: picked.id, score: quality(picked) };
129
- }
130
- };
131
- exports.TierAutoAssignService = TierAutoAssignService;
132
- exports.TierAutoAssignService = TierAutoAssignService = TierAutoAssignService_1 = __decorate([
133
- (0, common_1.Injectable)(),
134
- __param(1, (0, typeorm_1.InjectRepository)(tier_assignment_entity_1.TierAssignment)),
135
- __metadata("design:paramtypes", [model_discovery_service_1.ModelDiscoveryService,
136
- typeorm_2.Repository])
137
- ], TierAutoAssignService);
138
- //# sourceMappingURL=tier-auto-assign.service.js.map
@@ -1,179 +0,0 @@
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.TierService = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const typeorm_1 = require("@nestjs/typeorm");
18
- const typeorm_2 = require("typeorm");
19
- const user_provider_entity_1 = require("../../entities/user-provider.entity");
20
- const tier_assignment_entity_1 = require("../../entities/tier-assignment.entity");
21
- const tier_auto_assign_service_1 = require("./tier-auto-assign.service");
22
- const routing_cache_service_1 = require("./routing-cache.service");
23
- const provider_service_1 = require("./provider.service");
24
- const crypto_1 = require("crypto");
25
- const types_1 = require("../../scoring/types");
26
- const subscription_support_1 = require("../../common/utils/subscription-support");
27
- let TierService = class TierService {
28
- providerRepo;
29
- tierRepo;
30
- autoAssign;
31
- routingCache;
32
- providerService;
33
- constructor(providerRepo, tierRepo, autoAssign, routingCache, providerService) {
34
- this.providerRepo = providerRepo;
35
- this.tierRepo = tierRepo;
36
- this.autoAssign = autoAssign;
37
- this.routingCache = routingCache;
38
- this.providerService = providerService;
39
- }
40
- async getTiers(agentId, userId) {
41
- const cached = this.routingCache.getTiers(agentId);
42
- if (cached)
43
- return cached;
44
- await this.providerService.getProviders(agentId);
45
- const rows = await this.tierRepo.find({ where: { agent_id: agentId } });
46
- if (rows.length === 0) {
47
- const created = types_1.TIERS.map((tier) => Object.assign(new tier_assignment_entity_1.TierAssignment(), {
48
- id: (0, crypto_1.randomUUID)(),
49
- user_id: userId ?? '',
50
- agent_id: agentId,
51
- tier,
52
- override_model: null,
53
- override_provider: null,
54
- override_auth_type: null,
55
- auto_assigned_model: null,
56
- }));
57
- try {
58
- await this.tierRepo.insert(created);
59
- }
60
- catch {
61
- const existing = await this.tierRepo.find({ where: { agent_id: agentId } });
62
- if (existing.length > 0) {
63
- this.routingCache.setTiers(agentId, existing);
64
- return existing;
65
- }
66
- }
67
- const providers = await this.providerRepo.find({
68
- where: { agent_id: agentId, is_active: true },
69
- });
70
- const usableProviders = providers.filter(subscription_support_1.isManifestUsableProvider);
71
- if (usableProviders.length > 0) {
72
- await this.autoAssign.recalculate(agentId);
73
- const result = await this.tierRepo.find({ where: { agent_id: agentId } });
74
- this.routingCache.setTiers(agentId, result);
75
- return result;
76
- }
77
- this.routingCache.setTiers(agentId, created);
78
- return created;
79
- }
80
- this.routingCache.setTiers(agentId, rows);
81
- return rows;
82
- }
83
- async setOverride(agentId, userId, tier, model, provider, authType) {
84
- const existing = await this.tierRepo.findOne({
85
- where: { agent_id: agentId, tier },
86
- });
87
- if (existing) {
88
- existing.override_model = model;
89
- existing.override_provider = provider ?? null;
90
- existing.override_auth_type = authType ?? null;
91
- if (existing.fallback_models?.includes(model)) {
92
- const filtered = existing.fallback_models.filter((m) => m !== model);
93
- existing.fallback_models = filtered.length > 0 ? filtered : null;
94
- }
95
- existing.updated_at = new Date().toISOString();
96
- await this.tierRepo.save(existing);
97
- this.routingCache.invalidateAgent(agentId);
98
- return existing;
99
- }
100
- const record = Object.assign(new tier_assignment_entity_1.TierAssignment(), {
101
- id: (0, crypto_1.randomUUID)(),
102
- user_id: userId,
103
- agent_id: agentId,
104
- tier,
105
- override_model: model,
106
- override_provider: provider ?? null,
107
- override_auth_type: authType ?? null,
108
- auto_assigned_model: null,
109
- });
110
- try {
111
- await this.tierRepo.insert(record);
112
- }
113
- catch {
114
- const retry = await this.tierRepo.findOne({ where: { agent_id: agentId, tier } });
115
- if (retry)
116
- return this.setOverride(agentId, userId, tier, model, provider, authType);
117
- }
118
- this.routingCache.invalidateAgent(agentId);
119
- return record;
120
- }
121
- async clearOverride(agentId, tier) {
122
- const existing = await this.tierRepo.findOne({
123
- where: { agent_id: agentId, tier },
124
- });
125
- if (!existing)
126
- return;
127
- existing.override_model = null;
128
- existing.override_provider = null;
129
- existing.override_auth_type = null;
130
- existing.updated_at = new Date().toISOString();
131
- await this.tierRepo.save(existing);
132
- this.routingCache.invalidateAgent(agentId);
133
- }
134
- async resetAllOverrides(agentId) {
135
- await this.tierRepo.update({ agent_id: agentId }, {
136
- override_model: null,
137
- override_provider: null,
138
- override_auth_type: null,
139
- fallback_models: null,
140
- updated_at: new Date().toISOString(),
141
- });
142
- this.routingCache.invalidateAgent(agentId);
143
- }
144
- async getFallbacks(agentId, tier) {
145
- const existing = await this.tierRepo.findOne({ where: { agent_id: agentId, tier } });
146
- return existing?.fallback_models ?? [];
147
- }
148
- async setFallbacks(agentId, tier, models) {
149
- const existing = await this.tierRepo.findOne({ where: { agent_id: agentId, tier } });
150
- if (!existing)
151
- return [];
152
- existing.fallback_models = models.length > 0 ? models : null;
153
- existing.updated_at = new Date().toISOString();
154
- await this.tierRepo.save(existing);
155
- this.routingCache.invalidateAgent(agentId);
156
- return models;
157
- }
158
- async clearFallbacks(agentId, tier) {
159
- const existing = await this.tierRepo.findOne({ where: { agent_id: agentId, tier } });
160
- if (!existing)
161
- return;
162
- existing.fallback_models = null;
163
- existing.updated_at = new Date().toISOString();
164
- await this.tierRepo.save(existing);
165
- this.routingCache.invalidateAgent(agentId);
166
- }
167
- };
168
- exports.TierService = TierService;
169
- exports.TierService = TierService = __decorate([
170
- (0, common_1.Injectable)(),
171
- __param(0, (0, typeorm_1.InjectRepository)(user_provider_entity_1.UserProvider)),
172
- __param(1, (0, typeorm_1.InjectRepository)(tier_assignment_entity_1.TierAssignment)),
173
- __metadata("design:paramtypes", [typeorm_2.Repository,
174
- typeorm_2.Repository,
175
- tier_auto_assign_service_1.TierAutoAssignService,
176
- routing_cache_service_1.RoutingCacheService,
177
- provider_service_1.ProviderService])
178
- ], TierService);
179
- //# sourceMappingURL=tier.service.js.map
@@ -1,46 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.RoutingModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const model_prices_module_1 = require("../model-prices/model-prices.module");
12
- const model_discovery_module_1 = require("../model-discovery/model-discovery.module");
13
- const otlp_module_1 = require("../otlp/otlp.module");
14
- const routing_core_module_1 = require("./routing-core/routing-core.module");
15
- const proxy_module_1 = require("./proxy/proxy.module");
16
- const oauth_module_1 = require("./oauth/oauth.module");
17
- const custom_provider_module_1 = require("./custom-provider/custom-provider.module");
18
- const resolve_module_1 = require("./resolve/resolve.module");
19
- const provider_controller_1 = require("./provider.controller");
20
- const tier_controller_1 = require("./tier.controller");
21
- const model_controller_1 = require("./model.controller");
22
- const copilot_controller_1 = require("./copilot.controller");
23
- const ollama_sync_service_1 = require("../database/ollama-sync.service");
24
- const notifications_module_1 = require("../notifications/notifications.module");
25
- let RoutingModule = class RoutingModule {
26
- };
27
- exports.RoutingModule = RoutingModule;
28
- exports.RoutingModule = RoutingModule = __decorate([
29
- (0, common_1.Module)({
30
- imports: [
31
- routing_core_module_1.RoutingCoreModule,
32
- model_prices_module_1.ModelPricesModule,
33
- model_discovery_module_1.ModelDiscoveryModule,
34
- notifications_module_1.NotificationsModule,
35
- otlp_module_1.OtlpModule,
36
- proxy_module_1.ProxyModule,
37
- oauth_module_1.OAuthModule,
38
- custom_provider_module_1.CustomProviderModule,
39
- resolve_module_1.ResolveModule,
40
- ],
41
- controllers: [provider_controller_1.ProviderController, tier_controller_1.TierController, model_controller_1.ModelController, copilot_controller_1.CopilotController],
42
- providers: [ollama_sync_service_1.OllamaSyncService],
43
- exports: [routing_core_module_1.RoutingCoreModule, custom_provider_module_1.CustomProviderModule, oauth_module_1.OAuthModule],
44
- })
45
- ], RoutingModule);
46
- //# sourceMappingURL=routing.module.js.map