manifest 5.17.0 → 5.19.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 (396) hide show
  1. package/README.md +105 -124
  2. package/dist/backend/analytics/services/aggregation.service.js +5 -1
  3. package/dist/backend/analytics/services/timeseries-queries.service.js +1 -0
  4. package/dist/backend/auth/auth.instance.js +5 -2
  5. package/dist/backend/common/guards/api-key.guard.js +3 -2
  6. package/dist/backend/common/utils/crypto.util.js +3 -10
  7. package/dist/backend/common/utils/hash.util.js +2 -2
  8. package/dist/backend/common/utils/sql-dialect.js +1 -1
  9. package/dist/backend/config/app.config.js +2 -2
  10. package/dist/backend/database/database-seeder.service.js +130 -15
  11. package/dist/backend/database/database.module.js +28 -8
  12. package/dist/backend/database/local-bootstrap.service.js +38 -3
  13. package/dist/backend/database/pricing-sync.service.js +5 -3
  14. package/dist/backend/database/quality-score.util.js +1 -0
  15. package/dist/backend/database/seed-messages.js +54 -0
  16. package/dist/backend/model-prices/model-name-normalizer.js +10 -0
  17. package/dist/backend/notifications/dto/notification-rule.dto.js +2 -2
  18. package/dist/backend/notifications/notifications.controller.js +1 -1
  19. package/dist/backend/notifications/services/notification-rules.service.js +2 -2
  20. package/dist/backend/otlp/guards/otlp-auth.guard.js +5 -7
  21. package/dist/backend/otlp/services/api-key.service.js +2 -2
  22. package/dist/backend/otlp/services/trace-ingest.service.js +14 -0
  23. package/dist/backend/routing/provider-aliases.js +3 -0
  24. package/dist/backend/routing/proxy/anthropic-adapter.js +234 -0
  25. package/dist/backend/routing/proxy/cache-injection.js +33 -0
  26. package/dist/backend/routing/proxy/google-adapter.js +6 -1
  27. package/dist/backend/routing/proxy/provider-client.js +28 -2
  28. package/dist/backend/routing/proxy/provider-endpoints.js +21 -3
  29. package/dist/backend/routing/proxy/proxy.controller.js +19 -3
  30. package/dist/backend/routing/proxy/proxy.service.js +5 -1
  31. package/dist/index.js +3 -3
  32. package/dist/openclaw.plugin.json +1 -0
  33. package/dist/server.d.ts +0 -1
  34. package/dist/server.js +2 -1
  35. package/openclaw.plugin.json +1 -0
  36. package/package.json +2 -2
  37. package/public/assets/index-CTglHtZk.css +1 -0
  38. package/public/assets/index-Lt9Tg-Oh.js +7 -0
  39. package/public/index.html +2 -2
  40. package/dist/backend/analytics/analytics.module.d.ts +0 -2
  41. package/dist/backend/analytics/analytics.module.js.map +0 -1
  42. package/dist/backend/analytics/controllers/agent-analytics.controller.d.ts +0 -14
  43. package/dist/backend/analytics/controllers/agent-analytics.controller.js.map +0 -1
  44. package/dist/backend/analytics/controllers/agents.controller.d.ts +0 -49
  45. package/dist/backend/analytics/controllers/agents.controller.js.map +0 -1
  46. package/dist/backend/analytics/controllers/costs.controller.d.ts +0 -28
  47. package/dist/backend/analytics/controllers/costs.controller.js.map +0 -1
  48. package/dist/backend/analytics/controllers/messages.controller.d.ts +0 -13
  49. package/dist/backend/analytics/controllers/messages.controller.js.map +0 -1
  50. package/dist/backend/analytics/controllers/overview.controller.d.ts +0 -59
  51. package/dist/backend/analytics/controllers/overview.controller.js.map +0 -1
  52. package/dist/backend/analytics/controllers/tokens.controller.d.ts +0 -26
  53. package/dist/backend/analytics/controllers/tokens.controller.js.map +0 -1
  54. package/dist/backend/analytics/dto/messages-query.dto.d.ts +0 -11
  55. package/dist/backend/analytics/dto/messages-query.dto.js.map +0 -1
  56. package/dist/backend/analytics/services/agent-analytics.service.d.ts +0 -33
  57. package/dist/backend/analytics/services/agent-analytics.service.js.map +0 -1
  58. package/dist/backend/analytics/services/aggregation.service.d.ts +0 -39
  59. package/dist/backend/analytics/services/aggregation.service.js.map +0 -1
  60. package/dist/backend/analytics/services/query-helpers.d.ts +0 -10
  61. package/dist/backend/analytics/services/query-helpers.js.map +0 -1
  62. package/dist/backend/analytics/services/timeseries-queries.service.d.ts +0 -59
  63. package/dist/backend/analytics/services/timeseries-queries.service.js.map +0 -1
  64. package/dist/backend/app.module.d.ts +0 -2
  65. package/dist/backend/app.module.js.map +0 -1
  66. package/dist/backend/auth/auth.instance.d.ts +0 -6
  67. package/dist/backend/auth/auth.instance.js.map +0 -1
  68. package/dist/backend/auth/auth.module.d.ts +0 -2
  69. package/dist/backend/auth/auth.module.js.map +0 -1
  70. package/dist/backend/auth/current-user.decorator.d.ts +0 -1
  71. package/dist/backend/auth/current-user.decorator.js.map +0 -1
  72. package/dist/backend/auth/local-auth.guard.d.ts +0 -7
  73. package/dist/backend/auth/local-auth.guard.js.map +0 -1
  74. package/dist/backend/auth/session.guard.d.ts +0 -7
  75. package/dist/backend/auth/session.guard.js.map +0 -1
  76. package/dist/backend/common/common.module.d.ts +0 -2
  77. package/dist/backend/common/common.module.js.map +0 -1
  78. package/dist/backend/common/constants/api-key.constants.d.ts +0 -1
  79. package/dist/backend/common/constants/api-key.constants.js.map +0 -1
  80. package/dist/backend/common/constants/cache.constants.d.ts +0 -2
  81. package/dist/backend/common/constants/cache.constants.js.map +0 -1
  82. package/dist/backend/common/constants/local-mode.constants.d.ts +0 -15
  83. package/dist/backend/common/constants/local-mode.constants.js.map +0 -1
  84. package/dist/backend/common/constants/ollama.d.ts +0 -1
  85. package/dist/backend/common/constants/ollama.js.map +0 -1
  86. package/dist/backend/common/decorators/public.decorator.d.ts +0 -2
  87. package/dist/backend/common/decorators/public.decorator.js.map +0 -1
  88. package/dist/backend/common/dto/create-agent.dto.d.ts +0 -3
  89. package/dist/backend/common/dto/create-agent.dto.js.map +0 -1
  90. package/dist/backend/common/dto/range-query.dto.d.ts +0 -4
  91. package/dist/backend/common/dto/range-query.dto.js.map +0 -1
  92. package/dist/backend/common/dto/rename-agent.dto.d.ts +0 -3
  93. package/dist/backend/common/dto/rename-agent.dto.js.map +0 -1
  94. package/dist/backend/common/filters/spa-fallback.filter.d.ts +0 -6
  95. package/dist/backend/common/filters/spa-fallback.filter.js.map +0 -1
  96. package/dist/backend/common/guards/api-key.guard.d.ts +0 -14
  97. package/dist/backend/common/guards/api-key.guard.js.map +0 -1
  98. package/dist/backend/common/interceptors/user-cache.interceptor.d.ts +0 -9
  99. package/dist/backend/common/interceptors/user-cache.interceptor.js.map +0 -1
  100. package/dist/backend/common/services/cache-invalidation.service.d.ts +0 -16
  101. package/dist/backend/common/services/cache-invalidation.service.js.map +0 -1
  102. package/dist/backend/common/services/ingest-event-bus.service.d.ts +0 -11
  103. package/dist/backend/common/services/ingest-event-bus.service.js.map +0 -1
  104. package/dist/backend/common/utils/crypto.util.d.ts +0 -4
  105. package/dist/backend/common/utils/crypto.util.js.map +0 -1
  106. package/dist/backend/common/utils/hash.util.d.ts +0 -2
  107. package/dist/backend/common/utils/hash.util.js.map +0 -1
  108. package/dist/backend/common/utils/period.util.d.ts +0 -5
  109. package/dist/backend/common/utils/period.util.js.map +0 -1
  110. package/dist/backend/common/utils/posthog-sender.d.ts +0 -1
  111. package/dist/backend/common/utils/posthog-sender.js.map +0 -1
  112. package/dist/backend/common/utils/product-telemetry.d.ts +0 -3
  113. package/dist/backend/common/utils/product-telemetry.js.map +0 -1
  114. package/dist/backend/common/utils/range.util.d.ts +0 -3
  115. package/dist/backend/common/utils/range.util.js.map +0 -1
  116. package/dist/backend/common/utils/slugify.d.ts +0 -1
  117. package/dist/backend/common/utils/slugify.js.map +0 -1
  118. package/dist/backend/common/utils/sql-dialect.d.ts +0 -12
  119. package/dist/backend/common/utils/sql-dialect.js.map +0 -1
  120. package/dist/backend/config/app.config.d.ts +0 -31
  121. package/dist/backend/config/app.config.js.map +0 -1
  122. package/dist/backend/database/database-seeder.service.d.ts +0 -32
  123. package/dist/backend/database/database-seeder.service.js.map +0 -1
  124. package/dist/backend/database/database.module.d.ts +0 -2
  125. package/dist/backend/database/database.module.js.map +0 -1
  126. package/dist/backend/database/datasource.d.ts +0 -4
  127. package/dist/backend/database/datasource.js.map +0 -1
  128. package/dist/backend/database/local-bootstrap.service.d.ts +0 -23
  129. package/dist/backend/database/local-bootstrap.service.js.map +0 -1
  130. package/dist/backend/database/migrations/1771464895790-InitialSchema.d.ts +0 -6
  131. package/dist/backend/database/migrations/1771464895790-InitialSchema.js.map +0 -1
  132. package/dist/backend/database/migrations/1771500000000-HashApiKeys.d.ts +0 -6
  133. package/dist/backend/database/migrations/1771500000000-HashApiKeys.js.map +0 -1
  134. package/dist/backend/database/migrations/1771600000000-AddModelCapabilities.d.ts +0 -5
  135. package/dist/backend/database/migrations/1771600000000-AddModelCapabilities.js.map +0 -1
  136. package/dist/backend/database/migrations/1771600000000-ModelPricingImprovements.d.ts +0 -9
  137. package/dist/backend/database/migrations/1771600000000-ModelPricingImprovements.js.map +0 -1
  138. package/dist/backend/database/migrations/1771700000000-AddRoutingTables.d.ts +0 -5
  139. package/dist/backend/database/migrations/1771700000000-AddRoutingTables.js.map +0 -1
  140. package/dist/backend/database/migrations/1771700000000-EmailProviderConfigs.d.ts +0 -6
  141. package/dist/backend/database/migrations/1771700000000-EmailProviderConfigs.js.map +0 -1
  142. package/dist/backend/database/migrations/1771800000000-AddNotificationEmailAndOptionalDomain.d.ts +0 -6
  143. package/dist/backend/database/migrations/1771800000000-AddNotificationEmailAndOptionalDomain.js.map +0 -1
  144. package/dist/backend/database/migrations/1771800000000-AddQualityScore.d.ts +0 -5
  145. package/dist/backend/database/migrations/1771800000000-AddQualityScore.js.map +0 -1
  146. package/dist/backend/database/migrations/1771800100000-SeedQualityScores.d.ts +0 -5
  147. package/dist/backend/database/migrations/1771800100000-SeedQualityScores.js.map +0 -1
  148. package/dist/backend/database/migrations/1771900000000-EncryptApiKeys.d.ts +0 -6
  149. package/dist/backend/database/migrations/1771900000000-EncryptApiKeys.js.map +0 -1
  150. package/dist/backend/database/migrations/1772000000000-MakeApiKeyNullable.d.ts +0 -5
  151. package/dist/backend/database/migrations/1772000000000-MakeApiKeyNullable.js.map +0 -1
  152. package/dist/backend/database/migrations/1772100000000-AddRoutingTier.d.ts +0 -6
  153. package/dist/backend/database/migrations/1772100000000-AddRoutingTier.js.map +0 -1
  154. package/dist/backend/database/migrations/1772200000000-AddLimitAction.d.ts +0 -6
  155. package/dist/backend/database/migrations/1772200000000-AddLimitAction.js.map +0 -1
  156. package/dist/backend/database/migrations/1772300000000-AddRoutingReason.d.ts +0 -6
  157. package/dist/backend/database/migrations/1772300000000-AddRoutingReason.js.map +0 -1
  158. package/dist/backend/database/migrations/1772400000000-AddAgentDisplayName.d.ts +0 -5
  159. package/dist/backend/database/migrations/1772400000000-AddAgentDisplayName.js.map +0 -1
  160. package/dist/backend/database/ollama-sync.service.d.ts +0 -12
  161. package/dist/backend/database/ollama-sync.service.js.map +0 -1
  162. package/dist/backend/database/pricing-history.service.d.ts +0 -19
  163. package/dist/backend/database/pricing-history.service.js.map +0 -1
  164. package/dist/backend/database/pricing-sync.service.d.ts +0 -28
  165. package/dist/backend/database/pricing-sync.service.js.map +0 -1
  166. package/dist/backend/database/quality-score.util.d.ts +0 -3
  167. package/dist/backend/database/quality-score.util.js.map +0 -1
  168. package/dist/backend/entities/agent-api-key.entity.d.ts +0 -17
  169. package/dist/backend/entities/agent-api-key.entity.js.map +0 -1
  170. package/dist/backend/entities/agent-log.entity.d.ts +0 -12
  171. package/dist/backend/entities/agent-log.entity.js.map +0 -1
  172. package/dist/backend/entities/agent-message.entity.d.ts +0 -25
  173. package/dist/backend/entities/agent-message.entity.js.map +0 -1
  174. package/dist/backend/entities/agent.entity.d.ts +0 -14
  175. package/dist/backend/entities/agent.entity.js.map +0 -1
  176. package/dist/backend/entities/api-key.entity.d.ts +0 -10
  177. package/dist/backend/entities/api-key.entity.js.map +0 -1
  178. package/dist/backend/entities/cost-snapshot.entity.d.ts +0 -9
  179. package/dist/backend/entities/cost-snapshot.entity.js.map +0 -1
  180. package/dist/backend/entities/email-provider-config.entity.d.ts +0 -11
  181. package/dist/backend/entities/email-provider-config.entity.js.map +0 -1
  182. package/dist/backend/entities/llm-call.entity.d.ts +0 -19
  183. package/dist/backend/entities/llm-call.entity.js.map +0 -1
  184. package/dist/backend/entities/model-pricing-history.entity.d.ts +0 -10
  185. package/dist/backend/entities/model-pricing-history.entity.js.map +0 -1
  186. package/dist/backend/entities/model-pricing.entity.d.ts +0 -11
  187. package/dist/backend/entities/model-pricing.entity.js.map +0 -1
  188. package/dist/backend/entities/notification-log.entity.d.ts +0 -11
  189. package/dist/backend/entities/notification-log.entity.js.map +0 -1
  190. package/dist/backend/entities/notification-rule.entity.d.ts +0 -14
  191. package/dist/backend/entities/notification-rule.entity.js.map +0 -1
  192. package/dist/backend/entities/security-event.entity.d.ts +0 -9
  193. package/dist/backend/entities/security-event.entity.js.map +0 -1
  194. package/dist/backend/entities/tenant.entity.d.ts +0 -11
  195. package/dist/backend/entities/tenant.entity.js.map +0 -1
  196. package/dist/backend/entities/tier-assignment.entity.d.ts +0 -8
  197. package/dist/backend/entities/tier-assignment.entity.js.map +0 -1
  198. package/dist/backend/entities/token-usage-snapshot.entity.d.ts +0 -12
  199. package/dist/backend/entities/token-usage-snapshot.entity.js.map +0 -1
  200. package/dist/backend/entities/tool-execution.entity.d.ts +0 -10
  201. package/dist/backend/entities/tool-execution.entity.js.map +0 -1
  202. package/dist/backend/entities/unresolved-model.entity.d.ts +0 -9
  203. package/dist/backend/entities/unresolved-model.entity.js.map +0 -1
  204. package/dist/backend/entities/user-provider.entity.d.ts +0 -9
  205. package/dist/backend/entities/user-provider.entity.js.map +0 -1
  206. package/dist/backend/github/github.controller.d.ts +0 -5
  207. package/dist/backend/github/github.controller.js.map +0 -1
  208. package/dist/backend/github/github.module.d.ts +0 -2
  209. package/dist/backend/github/github.module.js.map +0 -1
  210. package/dist/backend/health/health.controller.d.ts +0 -15
  211. package/dist/backend/health/health.controller.js.map +0 -1
  212. package/dist/backend/health/health.module.d.ts +0 -2
  213. package/dist/backend/health/health.module.js.map +0 -1
  214. package/dist/backend/health/version-check.service.d.ts +0 -23
  215. package/dist/backend/health/version-check.service.js.map +0 -1
  216. package/dist/backend/main.d.ts +0 -1
  217. package/dist/backend/main.js.map +0 -1
  218. package/dist/backend/model-prices/model-name-normalizer.d.ts +0 -4
  219. package/dist/backend/model-prices/model-name-normalizer.js.map +0 -1
  220. package/dist/backend/model-prices/model-prices.controller.d.ts +0 -30
  221. package/dist/backend/model-prices/model-prices.controller.js.map +0 -1
  222. package/dist/backend/model-prices/model-prices.module.d.ts +0 -2
  223. package/dist/backend/model-prices/model-prices.module.js.map +0 -1
  224. package/dist/backend/model-prices/model-prices.service.d.ts +0 -36
  225. package/dist/backend/model-prices/model-prices.service.js.map +0 -1
  226. package/dist/backend/model-prices/model-pricing-cache.service.d.ts +0 -16
  227. package/dist/backend/model-prices/model-pricing-cache.service.js.map +0 -1
  228. package/dist/backend/model-prices/unresolved-model-tracker.service.d.ts +0 -16
  229. package/dist/backend/model-prices/unresolved-model-tracker.service.js.map +0 -1
  230. package/dist/backend/notifications/dto/email-config.dto.d.ts +0 -13
  231. package/dist/backend/notifications/dto/email-config.dto.js.map +0 -1
  232. package/dist/backend/notifications/dto/notification-email.dto.d.ts +0 -3
  233. package/dist/backend/notifications/dto/notification-email.dto.js.map +0 -1
  234. package/dist/backend/notifications/dto/notification-rule.dto.d.ts +0 -14
  235. package/dist/backend/notifications/dto/notification-rule.dto.js.map +0 -1
  236. package/dist/backend/notifications/dto/set-email-provider.dto.d.ts +0 -12
  237. package/dist/backend/notifications/dto/set-email-provider.dto.js.map +0 -1
  238. package/dist/backend/notifications/email-config.controller.d.ts +0 -32
  239. package/dist/backend/notifications/email-config.controller.js.map +0 -1
  240. package/dist/backend/notifications/emails/reset-password.d.ts +0 -5
  241. package/dist/backend/notifications/emails/reset-password.js.map +0 -1
  242. package/dist/backend/notifications/emails/test-email.d.ts +0 -1
  243. package/dist/backend/notifications/emails/test-email.js.map +0 -1
  244. package/dist/backend/notifications/emails/threshold-alert.d.ts +0 -9
  245. package/dist/backend/notifications/emails/threshold-alert.js.map +0 -1
  246. package/dist/backend/notifications/emails/verify-email.d.ts +0 -5
  247. package/dist/backend/notifications/emails/verify-email.js.map +0 -1
  248. package/dist/backend/notifications/notifications.controller.d.ts +0 -50
  249. package/dist/backend/notifications/notifications.controller.js.map +0 -1
  250. package/dist/backend/notifications/notifications.module.d.ts +0 -2
  251. package/dist/backend/notifications/notifications.module.js.map +0 -1
  252. package/dist/backend/notifications/services/email-config.service.d.ts +0 -25
  253. package/dist/backend/notifications/services/email-config.service.js.map +0 -1
  254. package/dist/backend/notifications/services/email-provider-config.service.d.ts +0 -43
  255. package/dist/backend/notifications/services/email-provider-config.service.js.map +0 -1
  256. package/dist/backend/notifications/services/email-provider-validation.d.ts +0 -10
  257. package/dist/backend/notifications/services/email-provider-validation.js.map +0 -1
  258. package/dist/backend/notifications/services/email-providers/email-provider.interface.d.ts +0 -18
  259. package/dist/backend/notifications/services/email-providers/email-provider.interface.js.map +0 -1
  260. package/dist/backend/notifications/services/email-providers/mailgun.provider.d.ts +0 -9
  261. package/dist/backend/notifications/services/email-providers/mailgun.provider.js.map +0 -1
  262. package/dist/backend/notifications/services/email-providers/resend.provider.d.ts +0 -8
  263. package/dist/backend/notifications/services/email-providers/resend.provider.js.map +0 -1
  264. package/dist/backend/notifications/services/email-providers/resolve-provider.d.ts +0 -2
  265. package/dist/backend/notifications/services/email-providers/resolve-provider.js.map +0 -1
  266. package/dist/backend/notifications/services/email-providers/send-email.d.ts +0 -2
  267. package/dist/backend/notifications/services/email-providers/send-email.js.map +0 -1
  268. package/dist/backend/notifications/services/email-providers/sendgrid.provider.d.ts +0 -9
  269. package/dist/backend/notifications/services/email-providers/sendgrid.provider.js.map +0 -1
  270. package/dist/backend/notifications/services/limit-check.service.d.ts +0 -36
  271. package/dist/backend/notifications/services/limit-check.service.js.map +0 -1
  272. package/dist/backend/notifications/services/notification-cron.service.d.ts +0 -19
  273. package/dist/backend/notifications/services/notification-cron.service.js.map +0 -1
  274. package/dist/backend/notifications/services/notification-email-address.service.d.ts +0 -8
  275. package/dist/backend/notifications/services/notification-email-address.service.js.map +0 -1
  276. package/dist/backend/notifications/services/notification-email.service.d.ts +0 -9
  277. package/dist/backend/notifications/services/notification-email.service.js.map +0 -1
  278. package/dist/backend/notifications/services/notification-rules.service.d.ts +0 -18
  279. package/dist/backend/notifications/services/notification-rules.service.js.map +0 -1
  280. package/dist/backend/otlp/guards/otlp-auth.guard.d.ts +0 -15
  281. package/dist/backend/otlp/guards/otlp-auth.guard.js.map +0 -1
  282. package/dist/backend/otlp/interfaces/index.d.ts +0 -4
  283. package/dist/backend/otlp/interfaces/index.js.map +0 -1
  284. package/dist/backend/otlp/interfaces/ingestion-context.interface.d.ts +0 -6
  285. package/dist/backend/otlp/interfaces/ingestion-context.interface.js.map +0 -1
  286. package/dist/backend/otlp/interfaces/otlp-common.d.ts +0 -26
  287. package/dist/backend/otlp/interfaces/otlp-common.js.map +0 -1
  288. package/dist/backend/otlp/interfaces/otlp-log.d.ts +0 -22
  289. package/dist/backend/otlp/interfaces/otlp-log.js.map +0 -1
  290. package/dist/backend/otlp/interfaces/otlp-metric.d.ts +0 -34
  291. package/dist/backend/otlp/interfaces/otlp-metric.js.map +0 -1
  292. package/dist/backend/otlp/interfaces/otlp-trace.d.ts +0 -33
  293. package/dist/backend/otlp/interfaces/otlp-trace.js.map +0 -1
  294. package/dist/backend/otlp/otlp.controller.d.ts +0 -38
  295. package/dist/backend/otlp/otlp.controller.js.map +0 -1
  296. package/dist/backend/otlp/otlp.module.d.ts +0 -2
  297. package/dist/backend/otlp/otlp.module.js.map +0 -1
  298. package/dist/backend/otlp/proto/otlp-proto-defs.d.ts +0 -1
  299. package/dist/backend/otlp/proto/otlp-proto-defs.js.map +0 -1
  300. package/dist/backend/otlp/services/api-key.service.d.ts +0 -29
  301. package/dist/backend/otlp/services/api-key.service.js.map +0 -1
  302. package/dist/backend/otlp/services/log-ingest.service.d.ts +0 -11
  303. package/dist/backend/otlp/services/log-ingest.service.js.map +0 -1
  304. package/dist/backend/otlp/services/metric-ingest.service.d.ts +0 -16
  305. package/dist/backend/otlp/services/metric-ingest.service.js.map +0 -1
  306. package/dist/backend/otlp/services/otlp-decoder.service.d.ts +0 -14
  307. package/dist/backend/otlp/services/otlp-decoder.service.js.map +0 -1
  308. package/dist/backend/otlp/services/otlp-helpers.d.ts +0 -14
  309. package/dist/backend/otlp/services/otlp-helpers.js.map +0 -1
  310. package/dist/backend/otlp/services/trace-ingest.service.d.ts +0 -27
  311. package/dist/backend/otlp/services/trace-ingest.service.js.map +0 -1
  312. package/dist/backend/routing/dto/resolve-request.dto.d.ts +0 -13
  313. package/dist/backend/routing/dto/resolve-request.dto.js.map +0 -1
  314. package/dist/backend/routing/dto/resolve-response.d.ts +0 -9
  315. package/dist/backend/routing/dto/resolve-response.js.map +0 -1
  316. package/dist/backend/routing/dto/routing.dto.d.ts +0 -13
  317. package/dist/backend/routing/dto/routing.dto.js.map +0 -1
  318. package/dist/backend/routing/provider-aliases.d.ts +0 -1
  319. package/dist/backend/routing/provider-aliases.js.map +0 -1
  320. package/dist/backend/routing/proxy/google-adapter.d.ts +0 -3
  321. package/dist/backend/routing/proxy/google-adapter.js.map +0 -1
  322. package/dist/backend/routing/proxy/provider-client.d.ts +0 -10
  323. package/dist/backend/routing/proxy/provider-client.js.map +0 -1
  324. package/dist/backend/routing/proxy/provider-endpoints.d.ts +0 -8
  325. package/dist/backend/routing/proxy/provider-endpoints.js.map +0 -1
  326. package/dist/backend/routing/proxy/proxy-rate-limiter.d.ts +0 -13
  327. package/dist/backend/routing/proxy/proxy-rate-limiter.js.map +0 -1
  328. package/dist/backend/routing/proxy/proxy.controller.d.ts +0 -24
  329. package/dist/backend/routing/proxy/proxy.controller.js.map +0 -1
  330. package/dist/backend/routing/proxy/proxy.service.d.ts +0 -27
  331. package/dist/backend/routing/proxy/proxy.service.js.map +0 -1
  332. package/dist/backend/routing/proxy/session-momentum.service.d.ts +0 -11
  333. package/dist/backend/routing/proxy/session-momentum.service.js.map +0 -1
  334. package/dist/backend/routing/proxy/stream-writer.d.ts +0 -7
  335. package/dist/backend/routing/proxy/stream-writer.js.map +0 -1
  336. package/dist/backend/routing/resolve.controller.d.ts +0 -12
  337. package/dist/backend/routing/resolve.controller.js.map +0 -1
  338. package/dist/backend/routing/resolve.service.d.ts +0 -13
  339. package/dist/backend/routing/resolve.service.js.map +0 -1
  340. package/dist/backend/routing/routing.controller.d.ts +0 -55
  341. package/dist/backend/routing/routing.controller.js.map +0 -1
  342. package/dist/backend/routing/routing.module.d.ts +0 -2
  343. package/dist/backend/routing/routing.module.js.map +0 -1
  344. package/dist/backend/routing/routing.service.d.ts +0 -30
  345. package/dist/backend/routing/routing.service.js.map +0 -1
  346. package/dist/backend/routing/scorer/__tests__/fixtures.d.ts +0 -8
  347. package/dist/backend/routing/scorer/__tests__/fixtures.js.map +0 -1
  348. package/dist/backend/routing/scorer/config.d.ts +0 -3
  349. package/dist/backend/routing/scorer/config.js.map +0 -1
  350. package/dist/backend/routing/scorer/dimensions/contextual-dimensions.d.ts +0 -5
  351. package/dist/backend/routing/scorer/dimensions/contextual-dimensions.js.map +0 -1
  352. package/dist/backend/routing/scorer/dimensions/index.d.ts +0 -3
  353. package/dist/backend/routing/scorer/dimensions/index.js.map +0 -1
  354. package/dist/backend/routing/scorer/dimensions/keyword-dimensions.d.ts +0 -7
  355. package/dist/backend/routing/scorer/dimensions/keyword-dimensions.js.map +0 -1
  356. package/dist/backend/routing/scorer/dimensions/structural-dimensions.d.ts +0 -5
  357. package/dist/backend/routing/scorer/dimensions/structural-dimensions.js.map +0 -1
  358. package/dist/backend/routing/scorer/index.d.ts +0 -6
  359. package/dist/backend/routing/scorer/index.js.map +0 -1
  360. package/dist/backend/routing/scorer/keyword-trie.d.ts +0 -18
  361. package/dist/backend/routing/scorer/keyword-trie.js.map +0 -1
  362. package/dist/backend/routing/scorer/momentum.d.ts +0 -8
  363. package/dist/backend/routing/scorer/momentum.js.map +0 -1
  364. package/dist/backend/routing/scorer/overrides.d.ts +0 -4
  365. package/dist/backend/routing/scorer/overrides.js.map +0 -1
  366. package/dist/backend/routing/scorer/sigmoid.d.ts +0 -3
  367. package/dist/backend/routing/scorer/sigmoid.js.map +0 -1
  368. package/dist/backend/routing/scorer/text-extractor.d.ts +0 -9
  369. package/dist/backend/routing/scorer/text-extractor.js.map +0 -1
  370. package/dist/backend/routing/scorer/types.d.ts +0 -56
  371. package/dist/backend/routing/scorer/types.js.map +0 -1
  372. package/dist/backend/routing/tier-auto-assign.service.d.ts +0 -20
  373. package/dist/backend/routing/tier-auto-assign.service.js.map +0 -1
  374. package/dist/backend/security/security.controller.d.ts +0 -16
  375. package/dist/backend/security/security.controller.js.map +0 -1
  376. package/dist/backend/security/security.module.d.ts +0 -2
  377. package/dist/backend/security/security.module.js.map +0 -1
  378. package/dist/backend/security/security.service.d.ts +0 -22
  379. package/dist/backend/security/security.service.js.map +0 -1
  380. package/dist/backend/sse/sse.controller.d.ts +0 -13
  381. package/dist/backend/sse/sse.controller.js.map +0 -1
  382. package/dist/backend/sse/sse.module.d.ts +0 -2
  383. package/dist/backend/sse/sse.module.js.map +0 -1
  384. package/dist/backend/telemetry/dto/create-telemetry.dto.d.ts +0 -20
  385. package/dist/backend/telemetry/dto/create-telemetry.dto.js.map +0 -1
  386. package/dist/backend/telemetry/telemetry.controller.d.ts +0 -13
  387. package/dist/backend/telemetry/telemetry.controller.js.map +0 -1
  388. package/dist/backend/telemetry/telemetry.module.d.ts +0 -2
  389. package/dist/backend/telemetry/telemetry.module.js.map +0 -1
  390. package/dist/backend/telemetry/telemetry.service.d.ts +0 -26
  391. package/dist/backend/telemetry/telemetry.service.js.map +0 -1
  392. package/public/assets/index-BuT7UE_1.css +0 -1
  393. package/public/assets/index-CQkPcBNT.js +0 -7
  394. package/public/fonts/bricolage-grotesque-latin-ext.woff2 +0 -0
  395. package/public/fonts/dm-sans-latin-ext.woff2 +0 -0
  396. package/public/og-image.png +0 -0
package/README.md CHANGED
@@ -1,171 +1,152 @@
1
- # Manifest
1
+ <p align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/mnfst/manifest/HEAD/.github/assets/logo-white.svg" />
4
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/mnfst/manifest/HEAD/.github/assets/logo-dark.svg" />
5
+ <img src="https://raw.githubusercontent.com/mnfst/manifest/HEAD/.github/assets/logo-dark.svg" alt="Manifest" height="53" title="Manifest"/>
6
+ </picture>
7
+ </p>
8
+ <p align="center">
9
+ 🦞 Take control of your
10
+ OpenClaw costs
11
+ </p>
2
12
 
3
- Cut your AI agent costs by up to 70%. Manifest is an open-source [OpenClaw](https://github.com/open-claw/open-claw) plugin that combines **intelligent LLM routing** with **real-time cost observability**.
13
+ ![manifest-gh](https://github.com/user-attachments/assets/7dd74fc2-f7d6-4558-a95a-014ed754a125)
4
14
 
5
- Instead of sending every request to the most expensive model, Manifest scores each query in under 2ms and routes it to the most cost-effective model that can handle it. Simple lookups go to fast, cheap models. Complex reasoning goes to frontier models. You see exactly where every dollar goes in a local dashboard.
15
+ <p align="center">
16
+ <a href="https://github.com/mnfst/manifest/stargazers"><img src="https://img.shields.io/github/stars/mnfst/manifest?style=flat" alt="GitHub stars" /></a>
17
+ &nbsp;
18
+ <a href="https://www.npmjs.com/package/manifest"><img src="https://img.shields.io/npm/v/manifest?color=cb3837&label=npm" alt="npm version" /></a>
19
+ &nbsp;
20
+ <a href="https://www.npmjs.com/package/manifest"><img src="https://img.shields.io/npm/dw/manifest?color=cb3837" alt="npm downloads" /></a>
21
+ &nbsp;
22
+ <a href="https://github.com/mnfst/manifest/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/mnfst/manifest/ci.yml?branch=main&label=CI" alt="CI status" /></a>
23
+ &nbsp;
24
+ <a href="https://app.codecov.io/gh/mnfst/manifest"><img src="https://img.shields.io/codecov/c/github/mnfst/manifest?label=coverage" alt="Codecov" /></a>
25
+ &nbsp;
26
+ <a href="LICENSE"><img src="https://img.shields.io/github/license/mnfst/manifest?color=blue" alt="license" /></a>
27
+ &nbsp;
28
+ <a href="https://discord.gg/FepAked3W7"><img src="https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white" alt="Discord" /></a>
29
+ </p>
6
30
 
7
- ## Quick start
31
+ ## What do you get?
8
32
 
9
- ### Cloud (default)
33
+ - 🔀 **Routes every request to the right model** — and cuts costs up to 70%
34
+ - 📊 **Track your expenses** — real-time dashboard that shows tokens and costs per model
35
+ - 🔔 **Set limits** — set up alerts (soft or hard) if your consumption exceeds a certain volume
10
36
 
11
- ```bash
12
- openclaw plugins install manifest
13
- openclaw config set plugins.entries.manifest.config.apiKey "mnfst_YOUR_KEY"
14
- openclaw gateway restart
15
- ```
37
+ ## Why Manifest
16
38
 
17
- Sign up at [app.manifest.build](https://app.manifest.build) to get your API key.
39
+ OpenClaw sends all your requests to the same model, which is not cost-effective since you summon big models for tiny tasks. Manifest solves it by redirecting queries to the most cost-effective model.
18
40
 
19
- ### Local (zero config)
41
+ Manifest is an OpenClaw plugin that intercepts your query, passes it through a 23-dimension scoring algorithm in <2ms and sends it to the most suitable model.
20
42
 
21
- ```bash
22
- openclaw plugins install manifest
23
- openclaw config set plugins.entries.manifest.config.mode local
24
- openclaw gateway restart
25
- ```
43
+ Unlike almost all alternatives, everything stays on your machine. No suspicious installer, no black box, no third party, no crypto.
26
44
 
27
- Open `http://127.0.0.1:2099` — your dashboard is live with sql.js storage, no accounts or external services needed.
45
+ ## Quick Start
28
46
 
29
- ## How the LLM router works
47
+ ### Cloud vs Local
30
48
 
31
- Manifest registers as an OpenAI-compatible provider in OpenClaw under the model name `auto`. When a request comes in:
49
+ Manifest is available in cloud and local versions. While both versions install the same OpenClaw Plugin, the local version stores the telemetry data on your computer and the cloud version uses our secure platform.
32
50
 
33
- 1. **Score** The plugin analyzes the conversation locally (last 10 user/assistant messages, excluding system prompts) and assigns a complexity tier.
34
- 2. **Route** The tier maps to the cheapest model that meets the quality bar: simple tasks go to small models, complex tasks go to frontier models.
35
- 3. **Momentum** — Recent tier history (last 5 turns, 30-min window) is factored in so mid-conversation complexity shifts are handled smoothly.
36
- 4. **Observe** Every routed request is traced with the resolved model, provider, tier, token counts, and cost — visible in your dashboard.
51
+ #### Use cloud if
52
+ - You want a quick install
53
+ - You want to access the dashboard from different devices
54
+ - You want to connect multiple agents
37
55
 
38
- The entire scoring step adds < 2ms of latency. If the resolve call fails, the request falls through to the default model with no interruption.
56
+ #### Use local if
57
+ - You don't want the telemetry data to move from your computer
58
+ - You don’t need multi-device access
59
+ - You don't want to subscribe to a cloud service
39
60
 
40
- ### Enable routing
61
+ If you don't know which version to choose, start with the **cloud version**.
41
62
 
42
- Routing activates automatically when the plugin is enabled. Point your OpenClaw config to use the `manifest` provider with model `auto`:
63
+ ### Cloud (default)
43
64
 
44
- ```yaml
45
- # openclaw.config.yaml
46
- models:
47
- - provider: manifest
48
- model: auto
65
+ ```bash
66
+ openclaw plugins install manifest
67
+ openclaw config set plugins.entries.manifest.config.apiKey "mnfst_YOUR_KEY"
68
+ openclaw gateway restart
49
69
  ```
50
70
 
51
- ## Cost observability
52
-
53
- The dashboard tracks every LLM call in real time:
54
-
55
- - **Token usage** — input, output, and cache-read tokens broken down by model and provider
56
- - **Cost breakdown** — per-model spend in USD with trend indicators
57
- - **Message log** — paginated history with latency, tokens, and tool calls per request
58
- - **Agent overview** — aggregated metrics across all your agents
59
-
60
- ### Agent self-query tools
61
-
62
- The plugin registers three tools your agent can call to query its own telemetry:
71
+ Sign up at [app.manifest.build](https://app.manifest.build) to get your API key.
63
72
 
64
- | Tool | Returns |
65
- |------|---------|
66
- | `manifest_usage` | Token consumption (input, output, cache, trend %) |
67
- | `manifest_costs` | Cost breakdown by model in USD |
68
- | `manifest_health` | Connectivity check |
73
+ ### Local
69
74
 
70
- ```
71
- User: "How much have I spent today?"
72
- manifest_costs({ period: "today" })
73
- { total_usd: 0.42, by_model: { "gpt-4o": 0.38, "gpt-4o-mini": 0.04 } }
75
+ ```bash
76
+ openclaw plugins install manifest
77
+ openclaw config set plugins.entries.manifest.config.mode local
78
+ openclaw gateway restart
74
79
  ```
75
80
 
76
- ## Data privacy
81
+ Dashboard opens at **http://127.0.0.1:2099**. Telemetry from your agents flows in automatically.
77
82
 
78
- - **Local mode**: Everything stays on your machine. sql.js database, no network calls.
79
- - **Cloud mode**: Only OpenTelemetry metadata (model, tokens, latency) is sent. Message content is never collected.
83
+ ## Features
80
84
 
81
- ## Configuration
85
+ - **LLM Router** — scores each query and calls the most suitable model
86
+ - **Real-time dashboard** — tokens, costs, messages, and model usage at a glance
87
+ - **No coding required** — Simple install as OpenClaw plugin
88
+ - **OTLP-native** — standard OpenTelemetry ingestion (traces, metrics, logs)
82
89
 
83
- Cloud mode is the default. For local mode (zero config), set `mode` to `local`.
90
+ ## Privacy by architecture
84
91
 
85
- | Setting | Type | Default | Description |
86
- |---------|------|---------|-------------|
87
- | `mode` | string | `cloud` | `cloud` sends telemetry to app.manifest.build (default). `local` runs an embedded server on your machine. `dev` connects to a local backend without API key management. |
88
- | `apiKey` | string | env `MANIFEST_API_KEY` | Agent API key (must start with `mnfst_`). Required for cloud mode, auto-generated in local mode. |
89
- | `endpoint` | string | `https://app.manifest.build/otlp` | OTLP endpoint URL. Only relevant for cloud and dev modes. |
90
- | `port` | number | `2099` | Port for the embedded dashboard server (local mode only). |
91
- | `host` | string | `127.0.0.1` | Bind address for the embedded server (local mode only). |
92
+ **In local mode, your data stays on your machine.** All agent messages, token counts, costs, and telemetry are stored locally. In cloud mode, only OpenTelemetry metadata (model, tokens, latency) is sent — message content is never collected.
92
93
 
93
- ### Local mode
94
+ **In cloud mode, the blind proxy physically cannot read your prompts** This is fundamentally different from services saying "trust us."
94
95
 
95
- ```bash
96
- openclaw config set plugins.entries.manifest.config.mode local
97
- openclaw gateway restart
98
- ```
99
-
100
- ### Self-hosted
96
+ The only thing Manifest collects is anonymous product analytics (hashed machine ID, OS platform, package version, event names) to help improve the project. No personally identifiable information or agent data is included.
101
97
 
102
- Point to your own Manifest instance:
98
+ **Opting out:**
103
99
 
104
100
  ```bash
105
- openclaw config set plugins.entries.manifest.config.endpoint "http://localhost:3001/otlp/v1"
101
+ MANIFEST_TELEMETRY_OPTOUT=1
106
102
  ```
107
103
 
108
- ## OpenTelemetry trace structure
109
-
110
- The plugin hooks into four OpenClaw lifecycle events and produces standard OpenTelemetry traces:
111
-
112
- | Event | What happens |
113
- |-------|-------------|
114
- | `message_received` | Root span created, message counter incremented |
115
- | `before_agent_start` | Child span for the agent turn |
116
- | `tool_result_persist` | Tool span with duration, success/error tracking |
117
- | `agent_end` | Spans closed, token/cost metrics recorded, routing resolved |
104
+ Or add `"telemetryOptOut": true` to `~/.openclaw/manifest/config.json`.
118
105
 
119
- ```
120
- openclaw.request (SERVER)
121
- └── openclaw.agent.turn (INTERNAL) model=gpt-4o-mini, tier=simple
122
- ├── tool.web_search duration=320ms
123
- └── tool.summarize duration=45ms
124
- ```
125
106
 
126
- ## Architecture
107
+ ## Manifest vs OpenRouter
127
108
 
128
- The plugin bundles all OpenTelemetry dependencies into a single file via esbuild. This avoids the dual-registry problem when OpenClaw's own `@opentelemetry/api` and the plugin's copy coexist. Zero runtime dependencies.
109
+ | | Manifest | OpenRouter |
110
+ | ------------ | ---------------------------------------------------------- | ------------------------------------------------------------- |
111
+ | Architecture | Runs locally — data stays on your machine | Cloud proxy — all traffic routes through their servers |
112
+ | Cost | Free | 5% fee on every API call |
113
+ | Source code | MIT licensed, fully open | Proprietary |
114
+ | Data privacy | 100% local routing and logging | Your prompts and responses pass through a third party |
115
+ | Transparency | Open scoring algorithm — see exactly why a model is chosen | Black box routing, no visibility into how models are selected |
129
116
 
130
- ```
131
- Published package:
132
- dist/index.js Single-file bundle (~1.4 MB)
133
- dist/server.js Embedded NestJS server (local mode)
134
- dist/backend/ Backend compiled output
135
- public/ Frontend dashboard assets
136
- openclaw.plugin.json Plugin manifest + config schema
137
- skills/ Bundled agent skills
138
- ```
117
+ ## Supported Providers
139
118
 
140
- ## Development
119
+ Manifest supports **300+ models** across all major LLM providers. Every provider supports smart routing, real-time cost tracking, and OTLP telemetry.
141
120
 
142
- ```bash
143
- npm run build # Build the bundle
144
- npm run dev # Watch mode
145
- npm test # Run tests
146
- npm run typecheck # Type-check
147
- ```
121
+ | Provider | Models |
122
+ |----------|--------|
123
+ | [OpenAI](https://platform.openai.com/) | `gpt-5.3`, `gpt-4.1`, `o3`, `o4-mini` + 54 more |
124
+ | [Anthropic](https://www.anthropic.com/) | `claude-opus-4-6`, `claude-sonnet-4.5`, `claude-haiku-4.5` + 14 more |
125
+ | [Google Gemini](https://ai.google.dev/) | `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-3-pro` + 19 more |
126
+ | [DeepSeek](https://www.deepseek.com/) | `deepseek-v3`, `deepseek-r1` + 11 more |
127
+ | [xAI](https://x.ai/) | `grok-4`, `grok-3`, `grok-3-mini` + 8 more |
128
+ | [Mistral AI](https://mistral.ai/) | `mistral-large`, `codestral`, `devstral` + 26 more |
129
+ | [Qwen (Alibaba)](https://www.alibabacloud.com/en/solutions/generative-ai/qwen) | `qwen3-235b`, `qwen3-coder`, `qwq-32b` + 42 more |
130
+ | [MiniMax](https://www.minimax.io/) | `minimax-m2.5`, `minimax-m1`, `minimax-m2` + 5 more |
131
+ | [Kimi (Moonshot)](https://kimi.ai/) | `kimi-k2`, `kimi-k2.5` + 3 more |
132
+ | [Amazon Nova](https://aws.amazon.com/ai/nova/) | `nova-pro`, `nova-lite`, `nova-micro` + 5 more |
133
+ | [Z.ai (Zhipu)](https://z.ai/) | `glm-5`, `glm-4.7`, `glm-4.5` + 5 more |
134
+ | [OpenRouter](https://openrouter.ai/) | 300+ models from all providers |
135
+ | [Ollama](https://ollama.com/) | Run any model locally (Llama, Gemma, Mistral, …) |
148
136
 
149
- Local testing against OpenClaw:
137
+ ## Contributing
150
138
 
151
- ```bash
152
- openclaw plugins install -l ./packages/openclaw-plugin
153
- openclaw gateway restart
154
- # Dashboard at http://127.0.0.1:2099
155
- ```
139
+ Manifest is open source under the [MIT license](LICENSE). See [CONTRIBUTING.md](CONTRIBUTING.md) for the development setup, architecture notes, and workflow. Join the conversation on [Discord](https://discord.gg/FepAked3W7).
156
140
 
157
- ## Troubleshooting
141
+ > **Want a hosted version instead?** Check out [app.manifest.build](https://app.manifest.build)
158
142
 
159
- **No spans appearing?**
160
- - In cloud mode, check your API key starts with `mnfst_`
161
- - Verify the endpoint is reachable: `curl -I http://your-endpoint/v1/traces`
162
- - Disable `diagnostics-otel` if enabled: `openclaw plugins disable diagnostics-otel`
143
+ ## Quick Links
163
144
 
164
- **Stale code after update?**
165
- ```bash
166
- rm -rf /tmp/jiti && openclaw gateway restart
167
- ```
145
+ - [GitHub](https://github.com/mnfst/manifest)
146
+ - [Docs](https://manifest.build/docs)
147
+ - [Discord](https://discord.com/invite/FepAked3W7)
148
+ - [Discussions](https://github.com/mnfst/manifest/discussions)
168
149
 
169
150
  ## License
170
151
 
171
- [MIT](LICENSE.md)
152
+ [MIT](LICENSE)
@@ -223,7 +223,11 @@ let AggregationService = class AggregationService {
223
223
  .addSelect('at.input_tokens + at.output_tokens', 'total_tokens')
224
224
  .addSelect(costExpr, 'cost')
225
225
  .addSelect('at.routing_tier', 'routing_tier')
226
- .addSelect('at.routing_reason', 'routing_reason');
226
+ .addSelect('at.routing_reason', 'routing_reason')
227
+ .addSelect('at.cache_read_tokens', 'cache_read_tokens')
228
+ .addSelect('at.cache_creation_tokens', 'cache_creation_tokens')
229
+ .addSelect('at.duration_ms', 'duration_ms')
230
+ .addSelect('at.error_message', 'error_message');
227
231
  if (params.cursor) {
228
232
  const sepIdx = params.cursor.indexOf('|');
229
233
  if (sepIdx !== -1) {
@@ -170,6 +170,7 @@ let TimeseriesQueriesService = class TimeseriesQueriesService {
170
170
  .addSelect(costExpr, 'cost')
171
171
  .addSelect('at.routing_tier', 'routing_tier')
172
172
  .addSelect('at.routing_reason', 'routing_reason')
173
+ .addSelect('at.error_message', 'error_message')
173
174
  .where('at.timestamp >= :cutoff', { cutoff });
174
175
  (0, query_helpers_1.addTenantFilter)(qb, userId, agentName);
175
176
  return qb.orderBy('at.timestamp', 'DESC').limit(limit).getRawMany();
@@ -24,6 +24,7 @@ const nodeEnv = process.env['NODE_ENV'] ?? '';
24
24
  if (!isLocalMode && nodeEnv !== 'test' && (!betterAuthSecret || betterAuthSecret.length < 32)) {
25
25
  throw new Error('BETTER_AUTH_SECRET must be set to a value of at least 32 characters');
26
26
  }
27
+ const local_mode_constants_1 = require("../common/constants/local-mode.constants");
27
28
  function buildTrustedOrigins() {
28
29
  const origins = [];
29
30
  if (process.env['BETTER_AUTH_URL']) {
@@ -32,7 +33,9 @@ function buildTrustedOrigins() {
32
33
  if (process.env['CORS_ORIGIN']) {
33
34
  origins.push(process.env['CORS_ORIGIN']);
34
35
  }
35
- origins.push(`http://localhost:3000`, `http://localhost:${port}`);
36
+ if (isDev || isLocalMode) {
37
+ origins.push(`http://localhost:3000`, `http://localhost:${port}`);
38
+ }
36
39
  if (isLocalMode) {
37
40
  origins.push(`http://127.0.0.1:${port}`, `http://127.0.0.1:3000`);
38
41
  }
@@ -47,7 +50,7 @@ exports.auth = isLocalMode
47
50
  database: database,
48
51
  baseURL: process.env['BETTER_AUTH_URL'] ?? `http://localhost:${port}`,
49
52
  basePath: '/api/auth',
50
- secret: betterAuthSecret || 'test-only-fallback-secret-not-for-production',
53
+ secret: betterAuthSecret || (0, local_mode_constants_1.getLocalAuthSecret)(),
51
54
  logger: { level: 'debug' },
52
55
  telemetry: { enabled: false },
53
56
  account: {
@@ -48,11 +48,12 @@ let ApiKeyGuard = ApiKeyGuard_1 = class ApiKeyGuard {
48
48
  this.logger.warn(`Rejected request without API key from ${request.ip}`);
49
49
  throw new common_1.UnauthorizedException('X-API-Key header required');
50
50
  }
51
- const hash = (0, hash_util_1.sha256)(apiKey);
51
+ const hash = (0, hash_util_1.hashKey)(apiKey);
52
52
  const found = await this.apiKeyRepo.findOne({ where: { key_hash: hash } });
53
53
  if (found) {
54
54
  request.apiKeyUserId = String(found.user_id);
55
- this.apiKeyRepo.update({ key_hash: hash }, { last_used_at: () => 'CURRENT_TIMESTAMP' })
55
+ this.apiKeyRepo
56
+ .update({ key_hash: hash }, { last_used_at: () => 'CURRENT_TIMESTAMP' })
56
57
  .catch(() => { });
57
58
  return true;
58
59
  }
@@ -13,8 +13,7 @@ function deriveKey(secret, salt) {
13
13
  return (0, crypto_1.scryptSync)(secret, salt, KEY_LENGTH);
14
14
  }
15
15
  function getEncryptionSecret() {
16
- const key = process.env['MANIFEST_ENCRYPTION_KEY'] ||
17
- process.env['BETTER_AUTH_SECRET'];
16
+ const key = process.env['MANIFEST_ENCRYPTION_KEY'] || process.env['BETTER_AUTH_SECRET'];
18
17
  if (key && key.length >= 32) {
19
18
  return key;
20
19
  }
@@ -29,10 +28,7 @@ function encrypt(plaintext, secret) {
29
28
  const key = deriveKey(secret, salt);
30
29
  const iv = (0, crypto_1.randomBytes)(IV_LENGTH);
31
30
  const cipher = (0, crypto_1.createCipheriv)(ALGORITHM, key, iv);
32
- const encrypted = Buffer.concat([
33
- cipher.update(plaintext, 'utf8'),
34
- cipher.final(),
35
- ]);
31
+ const encrypted = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);
36
32
  const tag = cipher.getAuthTag();
37
33
  return [
38
34
  salt.toString('base64'),
@@ -54,10 +50,7 @@ function decrypt(ciphertext, secret) {
54
50
  const key = deriveKey(secret, salt);
55
51
  const decipher = (0, crypto_1.createDecipheriv)(ALGORITHM, key, iv);
56
52
  decipher.setAuthTag(tag);
57
- const decrypted = Buffer.concat([
58
- decipher.update(encrypted),
59
- decipher.final(),
60
- ]);
53
+ const decrypted = Buffer.concat([decipher.update(encrypted), decipher.final()]);
61
54
  return decrypted.toString('utf8');
62
55
  }
63
56
  function isEncrypted(value) {
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sha256 = sha256;
3
+ exports.hashKey = hashKey;
4
4
  exports.keyPrefix = keyPrefix;
5
5
  const crypto_1 = require("crypto");
6
6
  const HASH_SALT = 'manifest-api-key-salt';
7
7
  const KEY_LENGTH = 32;
8
- function sha256(input) {
8
+ function hashKey(input) {
9
9
  return (0, crypto_1.scryptSync)(input, HASH_SALT, KEY_LENGTH).toString('hex');
10
10
  }
11
11
  function keyPrefix(key) {
@@ -12,7 +12,7 @@ exports.sqlSanitizeCost = sqlSanitizeCost;
12
12
  exports.portableSql = portableSql;
13
13
  exports.sqlCastInterval = sqlCastInterval;
14
14
  function detectDialect(dsType) {
15
- return (dsType === 'better-sqlite3' || dsType === 'sqljs') ? 'sqlite' : 'postgres';
15
+ return dsType === 'sqljs' ? 'sqlite' : 'postgres';
16
16
  }
17
17
  function timestampType() {
18
18
  return process.env['MANIFEST_MODE'] === 'local' ? 'datetime' : 'timestamp';
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.appConfig = void 0;
4
4
  const config_1 = require("@nestjs/config");
5
5
  const path_1 = require("path");
6
- function sanitizeSqlitePath(raw) {
6
+ function sanitizeDbPath(raw) {
7
7
  if (!raw)
8
8
  return '';
9
9
  return (0, path_1.resolve)(raw);
@@ -13,7 +13,7 @@ exports.appConfig = (0, config_1.registerAs)('app', () => ({
13
13
  nodeEnv: process.env['NODE_ENV'] ?? 'development',
14
14
  databaseUrl: process.env['DATABASE_URL'] ?? 'postgresql://myuser:mypassword@localhost:5432/mydatabase',
15
15
  manifestMode: process.env['MANIFEST_MODE'] ?? 'cloud',
16
- sqlitePath: sanitizeSqlitePath(process.env['MANIFEST_DB_PATH'] ?? ''),
16
+ dbPath: sanitizeDbPath(process.env['MANIFEST_DB_PATH'] ?? ''),
17
17
  corsOrigin: process.env['CORS_ORIGIN'] ?? 'http://localhost:3000',
18
18
  throttleTtl: Number(process.env['THROTTLE_TTL'] ?? 60000),
19
19
  throttleLimit: Number(process.env['THROTTLE_LIMIT'] ?? 100),