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,295 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toAnthropicRequest = toAnthropicRequest;
4
- exports.fromAnthropicResponse = fromAnthropicResponse;
5
- exports.createAnthropicStreamTransformer = createAnthropicStreamTransformer;
6
- exports.transformAnthropicStreamChunk = transformAnthropicStreamChunk;
7
- const crypto_1 = require("crypto");
8
- const CACHE = { type: 'ephemeral' };
9
- const SUBSCRIPTION_IDENTITY_BLOCK = {
10
- type: 'text',
11
- text: "You are a Claude agent, built on Anthropic's Claude Agent SDK.",
12
- cache_control: { type: 'ephemeral' },
13
- };
14
- function safeParseArgs(args) {
15
- try {
16
- return JSON.parse(args || '{}');
17
- }
18
- catch {
19
- return {};
20
- }
21
- }
22
- function extractSystemBlocks(messages) {
23
- const blocks = [];
24
- for (const msg of messages) {
25
- if (msg.role !== 'system' && msg.role !== 'developer')
26
- continue;
27
- if (typeof msg.content === 'string') {
28
- blocks.push({ type: 'text', text: msg.content });
29
- }
30
- else if (Array.isArray(msg.content)) {
31
- for (const part of msg.content) {
32
- if (part.type === 'text' && typeof part.text === 'string') {
33
- blocks.push({ type: 'text', text: part.text });
34
- }
35
- }
36
- }
37
- }
38
- return blocks;
39
- }
40
- function toContentBlocks(content) {
41
- if (typeof content === 'string')
42
- return content ? [{ type: 'text', text: content }] : [];
43
- if (Array.isArray(content)) {
44
- return content
45
- .filter((b) => b.type === 'text' && typeof b.text === 'string')
46
- .map((b) => ({ type: 'text', text: b.text }));
47
- }
48
- return [];
49
- }
50
- function convertMessage(msg) {
51
- if (msg.role === 'system' || msg.role === 'developer')
52
- return null;
53
- if (msg.role === 'tool') {
54
- const text = typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content ?? '');
55
- return {
56
- role: 'user',
57
- content: [
58
- {
59
- type: 'tool_result',
60
- tool_use_id: msg.tool_call_id || 'unknown',
61
- content: text,
62
- },
63
- ],
64
- };
65
- }
66
- if (msg.role === 'assistant') {
67
- const blocks = [...toContentBlocks(msg.content)];
68
- if (Array.isArray(msg.tool_calls)) {
69
- for (const tc of msg.tool_calls) {
70
- blocks.push({
71
- type: 'tool_use',
72
- id: tc.id,
73
- name: tc.function.name,
74
- input: safeParseArgs(tc.function.arguments),
75
- });
76
- }
77
- }
78
- return blocks.length > 0 ? { role: 'assistant', content: blocks } : null;
79
- }
80
- const blocks = toContentBlocks(msg.content);
81
- return blocks.length > 0 ? { role: 'user', content: blocks } : null;
82
- }
83
- function convertTools(tools) {
84
- if (!tools || tools.length === 0)
85
- return undefined;
86
- const out = [];
87
- for (const t of tools) {
88
- const fn = t.function;
89
- if (fn)
90
- out.push({ name: fn.name, description: fn.description, input_schema: fn.parameters });
91
- }
92
- return out.length > 0 ? out : undefined;
93
- }
94
- function toAnthropicRequest(body, _model, options) {
95
- const shouldCache = options?.injectCacheControl !== false;
96
- const messages = body.messages || [];
97
- const systemBlocks = extractSystemBlocks(messages);
98
- if (systemBlocks.length > 0 && shouldCache) {
99
- systemBlocks[systemBlocks.length - 1].cache_control = CACHE;
100
- }
101
- if (options?.injectSubscriptionIdentity) {
102
- systemBlocks.unshift({ ...SUBSCRIPTION_IDENTITY_BLOCK });
103
- }
104
- const converted = messages.map(convertMessage).filter(Boolean);
105
- const result = {
106
- messages: converted,
107
- max_tokens: body.max_tokens || 4096,
108
- };
109
- if (systemBlocks.length > 0)
110
- result.system = systemBlocks;
111
- const tools = convertTools(body.tools);
112
- if (tools) {
113
- if (shouldCache)
114
- tools[tools.length - 1].cache_control = CACHE;
115
- result.tools = tools;
116
- }
117
- if (body.temperature !== undefined)
118
- result.temperature = body.temperature;
119
- if (body.top_p !== undefined)
120
- result.top_p = body.top_p;
121
- return result;
122
- }
123
- function mapStopReason(reason) {
124
- if (!reason)
125
- return 'stop';
126
- const map = {
127
- end_turn: 'stop',
128
- max_tokens: 'length',
129
- tool_use: 'tool_calls',
130
- stop_sequence: 'stop',
131
- };
132
- return map[reason] ?? 'stop';
133
- }
134
- function fromAnthropicResponse(resp, model) {
135
- const content = resp.content || [];
136
- let textContent = '';
137
- const toolCalls = [];
138
- for (const block of content) {
139
- if (block.type === 'text' && typeof block.text === 'string')
140
- textContent += block.text;
141
- if (block.type === 'tool_use') {
142
- toolCalls.push({
143
- id: block.id,
144
- type: 'function',
145
- function: { name: block.name, arguments: JSON.stringify(block.input ?? {}) },
146
- });
147
- }
148
- }
149
- const message = { role: 'assistant', content: textContent || null };
150
- if (toolCalls.length > 0)
151
- message.tool_calls = toolCalls;
152
- const usage = resp.usage;
153
- const cacheRead = usage?.cache_read_input_tokens ?? 0;
154
- const cacheCreation = usage?.cache_creation_input_tokens ?? 0;
155
- const totalInput = (usage?.input_tokens ?? 0) + cacheRead + cacheCreation;
156
- const totalOutput = usage?.output_tokens ?? 0;
157
- return {
158
- id: `chatcmpl-${(0, crypto_1.randomUUID)()}`,
159
- object: 'chat.completion',
160
- created: Math.floor(Date.now() / 1000),
161
- model,
162
- choices: [
163
- { index: 0, message, finish_reason: mapStopReason(resp.stop_reason) },
164
- ],
165
- usage: usage
166
- ? {
167
- prompt_tokens: totalInput,
168
- completion_tokens: totalOutput,
169
- total_tokens: totalInput + totalOutput,
170
- prompt_tokens_details: { cached_tokens: cacheRead },
171
- cache_read_tokens: cacheRead,
172
- cache_creation_tokens: cacheCreation,
173
- }
174
- : undefined,
175
- };
176
- }
177
- function makeChunkSse(model, delta, finishReason) {
178
- return `data: ${JSON.stringify({
179
- id: `chatcmpl-${(0, crypto_1.randomUUID)()}`,
180
- object: 'chat.completion.chunk',
181
- created: Math.floor(Date.now() / 1000),
182
- model,
183
- choices: [{ index: 0, delta, finish_reason: finishReason }],
184
- })}\n\n`;
185
- }
186
- function parseStreamEvent(chunk) {
187
- if (!chunk.trim())
188
- return null;
189
- const lines = chunk.split('\n');
190
- let eventType = '';
191
- let jsonPayload = '';
192
- for (const line of lines) {
193
- const trimmed = line.trim();
194
- if (trimmed.startsWith('event:'))
195
- eventType = trimmed.slice(6).trim();
196
- else if (trimmed)
197
- jsonPayload = trimmed;
198
- }
199
- if (!jsonPayload)
200
- return null;
201
- try {
202
- return { eventType, data: JSON.parse(jsonPayload) };
203
- }
204
- catch {
205
- return null;
206
- }
207
- }
208
- function makeUsageSse(model, usage) {
209
- return `data: ${JSON.stringify({
210
- id: `chatcmpl-${(0, crypto_1.randomUUID)()}`,
211
- object: 'chat.completion.chunk',
212
- created: Math.floor(Date.now() / 1000),
213
- model,
214
- choices: [],
215
- usage,
216
- })}\n\n`;
217
- }
218
- function createAnthropicStreamTransformer(model) {
219
- let inputTokens = 0;
220
- let cacheReadTokens = 0;
221
- let cacheCreationTokens = 0;
222
- let toolCallIndex = 0;
223
- const blockToToolIndex = new Map();
224
- return (chunk) => {
225
- const parsed = parseStreamEvent(chunk);
226
- if (!parsed)
227
- return null;
228
- const { eventType, data } = parsed;
229
- if (eventType === 'message_start' || data.type === 'message_start') {
230
- const msg = data.message;
231
- const usage = msg?.usage;
232
- inputTokens = usage?.input_tokens ?? 0;
233
- cacheReadTokens = usage?.cache_read_input_tokens ?? 0;
234
- cacheCreationTokens = usage?.cache_creation_input_tokens ?? 0;
235
- return makeChunkSse(model, { role: 'assistant', content: '' }, null);
236
- }
237
- if (eventType === 'content_block_start' || data.type === 'content_block_start') {
238
- const block = data.content_block;
239
- if (block?.type === 'tool_use') {
240
- const idx = toolCallIndex++;
241
- blockToToolIndex.set(data.index, idx);
242
- return makeChunkSse(model, {
243
- tool_calls: [
244
- {
245
- index: idx,
246
- id: block.id,
247
- type: 'function',
248
- function: { name: block.name, arguments: '' },
249
- },
250
- ],
251
- }, null);
252
- }
253
- return null;
254
- }
255
- if (eventType === 'content_block_delta' || data.type === 'content_block_delta') {
256
- const delta = data.delta;
257
- if (!delta)
258
- return null;
259
- if (delta.type === 'text_delta' && typeof delta.text === 'string') {
260
- return makeChunkSse(model, { content: delta.text }, null);
261
- }
262
- if (delta.type === 'input_json_delta' && typeof delta.partial_json === 'string') {
263
- const idx = blockToToolIndex.get(data.index);
264
- if (idx !== undefined) {
265
- return makeChunkSse(model, {
266
- tool_calls: [{ index: idx, function: { arguments: delta.partial_json } }],
267
- }, null);
268
- }
269
- }
270
- return null;
271
- }
272
- if (eventType === 'message_delta' || data.type === 'message_delta') {
273
- const delta = data.delta;
274
- const usage = data.usage;
275
- const outputTokens = usage?.output_tokens ?? 0;
276
- const totalInput = inputTokens + cacheReadTokens + cacheCreationTokens;
277
- const total = totalInput + outputTokens;
278
- const finishChunk = makeChunkSse(model, {}, mapStopReason(delta?.stop_reason));
279
- const usageChunk = makeUsageSse(model, {
280
- prompt_tokens: totalInput,
281
- completion_tokens: outputTokens,
282
- total_tokens: total,
283
- prompt_tokens_details: { cached_tokens: cacheReadTokens },
284
- cache_read_tokens: cacheReadTokens,
285
- cache_creation_tokens: cacheCreationTokens,
286
- });
287
- return finishChunk + usageChunk;
288
- }
289
- return null;
290
- };
291
- }
292
- function transformAnthropicStreamChunk(chunk, model) {
293
- return createAnthropicStreamTransformer(model)(chunk);
294
- }
295
- //# sourceMappingURL=anthropic-adapter.js.map
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.injectOpenRouterCacheControl = injectOpenRouterCacheControl;
4
- const CACHE_CONTROL = { type: 'ephemeral' };
5
- function injectOpenRouterCacheControl(body) {
6
- const messages = body.messages;
7
- if (!messages)
8
- return;
9
- for (let i = messages.length - 1; i >= 0; i--) {
10
- const msg = messages[i];
11
- if (msg.role !== 'system' && msg.role !== 'developer')
12
- continue;
13
- if (typeof msg.content === 'string') {
14
- msg.content = [{
15
- type: 'text',
16
- text: msg.content,
17
- cache_control: CACHE_CONTROL,
18
- }];
19
- }
20
- else if (Array.isArray(msg.content)) {
21
- const blocks = msg.content;
22
- if (blocks.length > 0) {
23
- blocks[blocks.length - 1].cache_control = CACHE_CONTROL;
24
- }
25
- }
26
- break;
27
- }
28
- const tools = body.tools;
29
- if (tools && tools.length > 0) {
30
- tools[tools.length - 1].cache_control = CACHE_CONTROL;
31
- }
32
- }
33
- //# sourceMappingURL=cache-injection.js.map
@@ -1,272 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toResponsesRequest = toResponsesRequest;
4
- exports.fromResponsesResponse = fromResponsesResponse;
5
- exports.transformResponsesStreamChunk = transformResponsesStreamChunk;
6
- exports.collectChatGptSseResponse = collectChatGptSseResponse;
7
- const crypto_1 = require("crypto");
8
- const chatgpt_helpers_1 = require("./chatgpt-helpers");
9
- function toResponsesRequest(body, model) {
10
- const messages = (body.messages ?? []);
11
- const input = [];
12
- for (const message of messages) {
13
- if (message.role === 'system' || message.role === 'developer')
14
- continue;
15
- if (message.role === 'assistant' &&
16
- Array.isArray(message.tool_calls) &&
17
- message.tool_calls.length > 0) {
18
- const assistantText = (0, chatgpt_helpers_1.extractTextContent)(message.content);
19
- if (assistantText) {
20
- input.push({ role: 'assistant', content: (0, chatgpt_helpers_1.convertContent)(assistantText, 'assistant') });
21
- }
22
- input.push(...(0, chatgpt_helpers_1.convertAssistantToolCalls)(message.tool_calls));
23
- continue;
24
- }
25
- if (message.role === 'tool' || message.role === 'function') {
26
- input.push({
27
- type: 'function_call_output',
28
- call_id: typeof message.tool_call_id === 'string' ? message.tool_call_id : (0, crypto_1.randomUUID)(),
29
- output: (0, chatgpt_helpers_1.extractTextContent)(message.content) ?? JSON.stringify(message.content ?? ''),
30
- });
31
- continue;
32
- }
33
- input.push({ role: message.role, content: (0, chatgpt_helpers_1.convertContent)(message.content, message.role) });
34
- }
35
- const request = {
36
- model,
37
- input,
38
- stream: body.stream !== false,
39
- store: false,
40
- instructions: (0, chatgpt_helpers_1.extractInstructions)(messages),
41
- };
42
- if (Array.isArray(body.tools)) {
43
- request.tools = (0, chatgpt_helpers_1.convertTools)(body.tools);
44
- }
45
- return request;
46
- }
47
- function fromResponsesResponse(data, model) {
48
- const output = (data.output ?? []);
49
- let text = '';
50
- const toolCalls = [];
51
- for (const item of output) {
52
- if (item.type === 'message') {
53
- const content = item.content;
54
- if (!content)
55
- continue;
56
- for (const part of content) {
57
- if (part.type === 'output_text' && part.text)
58
- text += part.text;
59
- }
60
- continue;
61
- }
62
- if (item.type === 'function_call') {
63
- toolCalls.push({
64
- id: item.call_id ?? (0, crypto_1.randomUUID)(),
65
- type: 'function',
66
- function: {
67
- name: item.name ?? '',
68
- arguments: item.arguments ?? '{}',
69
- },
70
- });
71
- }
72
- }
73
- const usage = data.usage ?? {};
74
- const inputDetails = usage.input_tokens_details;
75
- const message = {
76
- role: 'assistant',
77
- content: text || null,
78
- };
79
- if (toolCalls.length > 0) {
80
- message.tool_calls = toolCalls;
81
- }
82
- return {
83
- id: `chatcmpl-${(0, crypto_1.randomUUID)().replace(/-/g, '').slice(0, 29)}`,
84
- object: 'chat.completion',
85
- created: Math.floor(Date.now() / 1000),
86
- model,
87
- choices: [
88
- {
89
- index: 0,
90
- message,
91
- finish_reason: toolCalls.length > 0 ? 'tool_calls' : 'stop',
92
- },
93
- ],
94
- usage: {
95
- prompt_tokens: usage.input_tokens ?? 0,
96
- completion_tokens: usage.output_tokens ?? 0,
97
- total_tokens: usage.total_tokens ?? 0,
98
- cache_read_tokens: inputDetails?.cached_tokens ?? 0,
99
- cache_creation_tokens: 0,
100
- },
101
- };
102
- }
103
- function transformResponsesStreamChunk(chunk, model) {
104
- const lines = chunk.split('\n');
105
- let eventType = '';
106
- let dataStr = '';
107
- for (const line of lines) {
108
- if (line.startsWith('event: ')) {
109
- eventType = line.slice(7).trim();
110
- }
111
- else if (line.startsWith('data: ')) {
112
- dataStr = line.slice(6);
113
- }
114
- else if (line.trim()) {
115
- dataStr = line.trim();
116
- }
117
- }
118
- if (!eventType && !dataStr)
119
- return null;
120
- if (eventType === 'response.output_text.delta') {
121
- const data = (0, chatgpt_helpers_1.safeParse)(dataStr);
122
- if (!data)
123
- return null;
124
- const delta = typeof data.delta === 'string' ? data.delta : '';
125
- return (0, chatgpt_helpers_1.formatSSE)({ delta: { content: delta }, finish_reason: null }, model);
126
- }
127
- if (eventType === 'response.function_call_arguments.delta') {
128
- const data = (0, chatgpt_helpers_1.safeParse)(dataStr);
129
- if (!data)
130
- return null;
131
- const delta = typeof data.delta === 'string' ? data.delta : '';
132
- return (0, chatgpt_helpers_1.formatSSE)({
133
- delta: {
134
- tool_calls: [
135
- {
136
- index: typeof data.output_index === 'number' ? data.output_index : 0,
137
- function: { arguments: delta },
138
- },
139
- ],
140
- },
141
- finish_reason: null,
142
- }, model);
143
- }
144
- if (eventType === 'response.output_item.added') {
145
- const data = (0, chatgpt_helpers_1.safeParse)(dataStr);
146
- if (!data)
147
- return null;
148
- const item = (0, chatgpt_helpers_1.isObjectRecord)(data.item) ? data.item : undefined;
149
- if (item?.type !== 'function_call')
150
- return null;
151
- return (0, chatgpt_helpers_1.formatSSE)({
152
- delta: {
153
- tool_calls: [
154
- {
155
- index: typeof data.output_index === 'number' ? data.output_index : 0,
156
- id: item.call_id ?? '',
157
- type: 'function',
158
- function: { name: item.name ?? '', arguments: '' },
159
- },
160
- ],
161
- },
162
- finish_reason: null,
163
- }, model);
164
- }
165
- if (eventType === 'response.completed') {
166
- return handleCompletedEvent(dataStr, model);
167
- }
168
- return null;
169
- }
170
- function handleCompletedEvent(dataStr, model) {
171
- const data = (0, chatgpt_helpers_1.safeParse)(dataStr);
172
- const response = (0, chatgpt_helpers_1.isObjectRecord)(data?.response) ? data.response : undefined;
173
- const responseUsage = response?.usage;
174
- const inputDetails = responseUsage?.input_tokens_details;
175
- const cachedTokens = inputDetails?.cached_tokens ?? 0;
176
- const usage = responseUsage
177
- ? {
178
- prompt_tokens: responseUsage.input_tokens ?? 0,
179
- completion_tokens: responseUsage.output_tokens ?? 0,
180
- total_tokens: responseUsage.total_tokens ?? 0,
181
- cache_read_tokens: cachedTokens,
182
- cache_creation_tokens: 0,
183
- }
184
- : undefined;
185
- const responseOutput = Array.isArray(response?.output)
186
- ? response.output
187
- : [];
188
- const hasFunctionCalls = responseOutput.some((item) => item.type === 'function_call');
189
- const finish = (0, chatgpt_helpers_1.formatSSE)({ delta: {}, finish_reason: hasFunctionCalls ? 'tool_calls' : 'stop' }, model, usage);
190
- return `${finish}\ndata: [DONE]\n\n`;
191
- }
192
- function collectChatGptSseResponse(sseText, model) {
193
- let text = '';
194
- const toolCallMap = new Map();
195
- let usage;
196
- let hasFunctionCalls = false;
197
- const events = sseText.split('\n\n');
198
- for (const event of events) {
199
- const lines = event.split('\n');
200
- let eventType = '';
201
- let dataStr = '';
202
- for (const line of lines) {
203
- if (line.startsWith('event: '))
204
- eventType = line.slice(7).trim();
205
- else if (line.startsWith('data: '))
206
- dataStr = line.slice(6);
207
- }
208
- if (!eventType || !dataStr)
209
- continue;
210
- const data = (0, chatgpt_helpers_1.safeParse)(dataStr);
211
- if (!data)
212
- continue;
213
- if (eventType === 'response.output_text.delta') {
214
- text += typeof data.delta === 'string' ? data.delta : '';
215
- }
216
- else if (eventType === 'response.output_item.added') {
217
- const item = (0, chatgpt_helpers_1.isObjectRecord)(data.item) ? data.item : undefined;
218
- if (item?.type === 'function_call') {
219
- const idx = typeof data.output_index === 'number' ? data.output_index : toolCallMap.size;
220
- toolCallMap.set(idx, {
221
- id: item.call_id ?? '',
222
- type: 'function',
223
- function: { name: item.name ?? '', arguments: '' },
224
- });
225
- }
226
- }
227
- else if (eventType === 'response.function_call_arguments.delta') {
228
- const idx = typeof data.output_index === 'number' ? data.output_index : 0;
229
- const tc = toolCallMap.get(idx);
230
- if (tc) {
231
- tc.function.arguments += typeof data.delta === 'string' ? data.delta : '';
232
- }
233
- }
234
- else if (eventType === 'response.completed') {
235
- const response = (0, chatgpt_helpers_1.isObjectRecord)(data.response) ? data.response : undefined;
236
- const respUsage = response?.usage;
237
- if (respUsage) {
238
- const inputDetails = respUsage.input_tokens_details;
239
- usage = {
240
- prompt_tokens: respUsage.input_tokens ?? 0,
241
- completion_tokens: respUsage.output_tokens ?? 0,
242
- total_tokens: respUsage.total_tokens ?? 0,
243
- cache_read_tokens: inputDetails?.cached_tokens ?? 0,
244
- cache_creation_tokens: 0,
245
- };
246
- }
247
- const output = Array.isArray(response?.output)
248
- ? response.output
249
- : [];
250
- hasFunctionCalls = output.some((item) => item.type === 'function_call');
251
- }
252
- }
253
- const toolCalls = [...toolCallMap.values()];
254
- const message = { role: 'assistant', content: text || null };
255
- if (toolCalls.length > 0)
256
- message.tool_calls = toolCalls;
257
- return {
258
- id: `chatcmpl-${(0, crypto_1.randomUUID)().replace(/-/g, '').slice(0, 29)}`,
259
- object: 'chat.completion',
260
- created: Math.floor(Date.now() / 1000),
261
- model,
262
- choices: [
263
- {
264
- index: 0,
265
- message,
266
- finish_reason: hasFunctionCalls || toolCalls.length > 0 ? 'tool_calls' : 'stop',
267
- },
268
- ],
269
- usage: usage ?? { prompt_tokens: 0, completion_tokens: 0, total_tokens: 0 },
270
- };
271
- }
272
- //# sourceMappingURL=chatgpt-adapter.js.map