@velum-labs/routekit-daemon 1.3.2 → 1.5.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 (172) hide show
  1. package/dist/account-enroll-service.d.ts +1 -3
  2. package/dist/account-enroll-service.js +262 -262
  3. package/dist/account-mutation-service.d.ts +1 -3
  4. package/dist/account-mutation-service.js +302 -283
  5. package/dist/account-query-service.d.ts +1 -3
  6. package/dist/account-query-service.js +88 -86
  7. package/dist/call-attribution-store.js +544 -1
  8. package/dist/control-dispatch.js +9 -15
  9. package/dist/daemon-bootstrap-preflight.js +1 -1
  10. package/dist/daemon-control-handlers.d.ts +1 -1
  11. package/dist/daemon-control-handlers.js +24 -27
  12. package/dist/daemon-generations.d.ts +14 -28
  13. package/dist/daemon-generations.js +114 -53
  14. package/dist/daemon-lifecycle-service.d.ts +1 -3
  15. package/dist/daemon-lifecycle-service.js +88 -94
  16. package/dist/daemon-maintenance.d.ts +27 -49
  17. package/dist/daemon-maintenance.js +5 -1
  18. package/dist/daemon-options.d.ts +3 -2
  19. package/dist/daemon-policy-context.d.ts +1 -0
  20. package/dist/daemon-policy-context.js +1 -0
  21. package/dist/daemon-runtime-state.d.ts +1 -1
  22. package/dist/daemon-runtime-state.js +2 -3
  23. package/dist/daemon-state-context.d.ts +1 -1
  24. package/dist/daemon-state-context.js +1 -38
  25. package/dist/doctor-service.d.ts +1 -3
  26. package/dist/doctor-service.js +87 -91
  27. package/dist/effect/daemon-live.d.ts +7 -6
  28. package/dist/effect/daemon-live.js +57 -135
  29. package/dist/eval-routing-service.d.ts +1 -3
  30. package/dist/eval-routing-service.js +45 -69
  31. package/dist/eval-session-execution-store.d.ts +24 -0
  32. package/dist/eval-session-execution-store.js +253 -0
  33. package/dist/host-protocol.d.ts +1 -0
  34. package/dist/host.js +3 -0
  35. package/dist/internal-providers/provider-anthropic/index.d.ts +23 -0
  36. package/dist/internal-providers/provider-anthropic/index.js +42 -0
  37. package/dist/internal-providers/provider-anthropic/test/provider.test.js +33 -0
  38. package/dist/internal-providers/provider-azure/index.d.ts +25 -0
  39. package/dist/internal-providers/provider-azure/index.js +101 -0
  40. package/dist/internal-providers/provider-azure/test/provider.test.js +83 -0
  41. package/dist/internal-providers/provider-bedrock/codec.d.ts +11 -0
  42. package/dist/internal-providers/provider-bedrock/codec.js +484 -0
  43. package/dist/internal-providers/provider-bedrock/connection-settings.d.ts +6 -0
  44. package/dist/internal-providers/provider-bedrock/connection-settings.js +41 -0
  45. package/dist/internal-providers/provider-bedrock/connection.d.ts +17 -0
  46. package/dist/internal-providers/provider-bedrock/connection.js +143 -0
  47. package/dist/internal-providers/provider-bedrock/index.d.ts +27 -0
  48. package/dist/internal-providers/provider-bedrock/index.js +47 -0
  49. package/dist/internal-providers/provider-bedrock/source.d.ts +39 -0
  50. package/dist/internal-providers/provider-bedrock/source.js +454 -0
  51. package/dist/internal-providers/provider-bedrock/test/bedrock-source.test.d.ts +1 -0
  52. package/dist/internal-providers/provider-bedrock/test/bedrock-source.test.js +786 -0
  53. package/dist/internal-providers/provider-bedrock/test/connection.test.d.ts +1 -0
  54. package/dist/internal-providers/provider-bedrock/test/connection.test.js +249 -0
  55. package/dist/internal-providers/provider-bedrock/test/workload-credentials.test.d.ts +1 -0
  56. package/dist/internal-providers/provider-bedrock/test/workload-credentials.test.js +29 -0
  57. package/dist/internal-providers/provider-bedrock/workload-credentials.d.ts +5 -0
  58. package/dist/internal-providers/provider-bedrock/workload-credentials.js +14 -0
  59. package/dist/internal-providers/provider-claude-code/index.d.ts +6 -0
  60. package/dist/internal-providers/provider-claude-code/index.js +4 -0
  61. package/dist/internal-providers/provider-claude-code/module-api.d.ts +25 -0
  62. package/dist/internal-providers/provider-claude-code/module-api.js +31 -0
  63. package/dist/internal-providers/provider-claude-code/relay.d.ts +20 -0
  64. package/dist/internal-providers/provider-claude-code/relay.js +115 -0
  65. package/dist/internal-providers/provider-claude-code/subscription.d.ts +2 -0
  66. package/dist/internal-providers/provider-claude-code/subscription.js +194 -0
  67. package/dist/internal-providers/provider-claude-code/test/http-submission.test.d.ts +1 -0
  68. package/dist/internal-providers/provider-claude-code/test/http-submission.test.js +140 -0
  69. package/dist/internal-providers/provider-claude-code/test/relay.test.d.ts +1 -0
  70. package/dist/internal-providers/provider-claude-code/test/relay.test.js +379 -0
  71. package/dist/internal-providers/provider-claude-code/test/subscription.test.d.ts +1 -0
  72. package/dist/internal-providers/provider-claude-code/test/subscription.test.js +256 -0
  73. package/dist/internal-providers/provider-cliproxy/index.d.ts +9 -0
  74. package/dist/internal-providers/provider-cliproxy/index.js +15 -0
  75. package/dist/internal-providers/provider-codex/index.d.ts +6 -0
  76. package/dist/internal-providers/provider-codex/index.js +7 -0
  77. package/dist/internal-providers/provider-codex/module-api.d.ts +25 -0
  78. package/dist/internal-providers/provider-codex/module-api.js +31 -0
  79. package/dist/internal-providers/provider-codex/relay.d.ts +123 -0
  80. package/dist/internal-providers/provider-codex/relay.js +261 -0
  81. package/dist/internal-providers/provider-codex/subscription.d.ts +2 -0
  82. package/dist/internal-providers/provider-codex/subscription.js +555 -0
  83. package/dist/internal-providers/provider-codex/test/http-submission.test.d.ts +1 -0
  84. package/dist/internal-providers/provider-codex/test/http-submission.test.js +142 -0
  85. package/dist/internal-providers/provider-codex/test/relay.test.d.ts +1 -0
  86. package/dist/internal-providers/provider-codex/test/relay.test.js +600 -0
  87. package/dist/internal-providers/provider-codex/test/subscription.test.d.ts +1 -0
  88. package/dist/internal-providers/provider-codex/test/subscription.test.js +70 -0
  89. package/dist/internal-providers/provider-codex/test/translated-content.test.d.ts +1 -0
  90. package/dist/internal-providers/provider-codex/test/translated-content.test.js +91 -0
  91. package/dist/internal-providers/provider-custom/index.d.ts +9 -0
  92. package/dist/internal-providers/provider-custom/index.js +15 -0
  93. package/dist/internal-providers/provider-google/index.d.ts +23 -0
  94. package/dist/internal-providers/provider-google/index.js +43 -0
  95. package/dist/internal-providers/provider-google/test/provider.test.d.ts +1 -0
  96. package/dist/internal-providers/provider-google/test/provider.test.js +34 -0
  97. package/dist/internal-providers/provider-google-vertex/index.d.ts +28 -0
  98. package/dist/internal-providers/provider-google-vertex/index.js +137 -0
  99. package/dist/internal-providers/provider-google-vertex/test/provider.test.d.ts +1 -0
  100. package/dist/internal-providers/provider-google-vertex/test/provider.test.js +85 -0
  101. package/dist/internal-providers/provider-openai/documented-reasoning.d.ts +9 -0
  102. package/dist/internal-providers/provider-openai/documented-reasoning.js +26 -0
  103. package/dist/internal-providers/provider-openai/index.d.ts +23 -0
  104. package/dist/internal-providers/provider-openai/index.js +74 -0
  105. package/dist/internal-providers/provider-openai/test/provider.test.d.ts +1 -0
  106. package/dist/internal-providers/provider-openai/test/provider.test.js +268 -0
  107. package/dist/internal-providers/provider-openai-compatible/index.d.ts +9 -0
  108. package/dist/internal-providers/provider-openai-compatible/index.js +15 -0
  109. package/dist/internal-providers/provider-openai-compatible/test/provider.test.d.ts +1 -0
  110. package/dist/internal-providers/provider-openai-compatible/test/provider.test.js +40 -0
  111. package/dist/internal-providers/provider-openrouter/connection.d.ts +5 -0
  112. package/dist/internal-providers/provider-openrouter/connection.js +143 -0
  113. package/dist/internal-providers/provider-openrouter/index.d.ts +28 -0
  114. package/dist/internal-providers/provider-openrouter/index.js +42 -0
  115. package/dist/internal-providers/provider-openrouter/pricing.d.ts +4 -0
  116. package/dist/internal-providers/provider-openrouter/pricing.js +108 -0
  117. package/dist/internal-providers/provider-openrouter/test/connection.test.d.ts +1 -0
  118. package/dist/internal-providers/provider-openrouter/test/connection.test.js +71 -0
  119. package/dist/internal-providers/provider-openrouter/test/pricing.test.d.ts +1 -0
  120. package/dist/internal-providers/provider-openrouter/test/pricing.test.js +45 -0
  121. package/dist/internal-providers/provider-openrouter/test/provider.test.d.ts +1 -0
  122. package/dist/internal-providers/provider-openrouter/test/provider.test.js +141 -0
  123. package/dist/internal-providers/provider-openrouter/test/validation.test.d.ts +1 -0
  124. package/dist/internal-providers/provider-openrouter/test/validation.test.js +225 -0
  125. package/dist/launcher-service.d.ts +3 -7
  126. package/dist/launcher-service.js +144 -133
  127. package/dist/provider-modules.d.ts +6 -0
  128. package/dist/provider-modules.js +55 -0
  129. package/dist/provider-query-service.d.ts +1 -3
  130. package/dist/provider-query-service.js +140 -143
  131. package/dist/router-generation-service.d.ts +1 -3
  132. package/dist/router-generation-service.js +83 -78
  133. package/dist/services/eval-session/service.d.ts +20 -8
  134. package/dist/services/eval-session/service.js +410 -40
  135. package/dist/services/gateway-generation/service.d.ts +7 -3
  136. package/dist/services/gateway-generation/service.js +126 -63
  137. package/dist/services/generations/service.d.ts +3 -3
  138. package/dist/services/generations/service.js +5 -1
  139. package/dist/telemetry-application-service.d.ts +1 -3
  140. package/dist/telemetry-application-service.js +41 -45
  141. package/dist/test/call-attribution-store.test.js +186 -0
  142. package/dist/test/daemon-accounts.test.js +2 -2
  143. package/dist/test/daemon-data-plane.test.js +24 -45
  144. package/dist/test/daemon-fixtures.js +1 -1
  145. package/dist/test/daemon-generation-transaction.test.js +66 -2
  146. package/dist/test/daemon-runtime-state.test.js +28 -1
  147. package/dist/test/effect-daemon.test.js +38 -0
  148. package/dist/test/eval-routing-application-service.test.js +6 -6
  149. package/dist/test/eval-session-execution.test.d.ts +1 -0
  150. package/dist/test/eval-session-execution.test.js +356 -0
  151. package/dist/test/eval-session-service.test.js +70 -1
  152. package/dist/test/host-worker-session.test.js +1 -0
  153. package/dist/test/launcher-session.test.d.ts +1 -0
  154. package/dist/test/launcher-session.test.js +87 -0
  155. package/dist/test/leaderboard.test.js +25 -1
  156. package/dist/test/provider-modules.test.d.ts +1 -0
  157. package/dist/test/provider-modules.test.js +65 -0
  158. package/dist/test/routekit-upstream-sources.test.d.ts +1 -0
  159. package/dist/test/routekit-upstream-sources.test.js +40 -0
  160. package/dist/test/runtime-composition-types.test.js +11 -0
  161. package/dist/token-application-service.d.ts +1 -3
  162. package/dist/token-application-service.js +38 -44
  163. package/dist/worker.js +5 -3
  164. package/package.json +35 -11
  165. package/dist/application-services.d.ts +0 -10
  166. package/dist/application-services.js +0 -22
  167. package/dist/daemon-lifecycle.d.ts +0 -54
  168. package/dist/daemon-lifecycle.js +0 -177
  169. package/dist/test/application-services.test.js +0 -135
  170. package/dist/test/daemon-lifecycle.test.js +0 -182
  171. /package/dist/{test/application-services.test.d.ts → internal-providers/provider-anthropic/test/provider.test.d.ts} +0 -0
  172. /package/dist/{test/daemon-lifecycle.test.d.ts → internal-providers/provider-azure/test/provider.test.d.ts} +0 -0
@@ -1,96 +1,98 @@
1
1
  import { Effect } from "effect";
2
2
  import { AccountRecovery } from "./account-recovery-context.js";
3
- import { daemonAccountServices } from "./account-services.js";
3
+ import { DaemonEnv } from "./daemon-env-context.js";
4
4
  import { accountEntries } from "./daemon-maintenance.js";
5
+ import { DaemonState } from "./daemon-state-context.js";
6
+ import { ActiveGateway } from "./services/active-gateway/service.js";
7
+ import { Sidecar } from "./sidecar-context.js";
5
8
  /** Owns account inventory, live status, and usage queries. */
6
- export class AccountQueryService {
7
- handlers() {
9
+ export const accountQueryHandlers = {
10
+ "accounts.list": () => Effect.gen(function* () {
11
+ const daemonEnv = yield* DaemonEnv;
12
+ const runtimeState = yield* DaemonState;
8
13
  return {
9
- "accounts.list": () => Effect.gen(function* () {
10
- const { env: daemonEnv, state: runtimeState } = yield* daemonAccountServices;
11
- return {
12
- accounts: accountEntries(daemonEnv.env).map((entry) => {
13
- if (entry.connector === "native")
14
- return entry;
15
- const { credentialValid: _credentialValid, ...listed } = entry;
16
- return listed;
17
- }),
18
- revision: runtimeState.revisions.accounts
19
- };
14
+ accounts: accountEntries(daemonEnv.env).map((entry) => {
15
+ if (entry.connector === "native")
16
+ return entry;
17
+ const { credentialValid: _credentialValid, ...listed } = entry;
18
+ return listed;
20
19
  }),
21
- "accounts.status": () => Effect.gen(function* () {
22
- const { env: daemonEnv, state: runtimeState, sidecar, gateway } = yield* daemonAccountServices;
23
- const recovery = yield* AccountRecovery;
24
- const env = daemonEnv.env;
25
- const entries = accountEntries(env);
26
- const cliproxyConfigured = runtimeState.config.providers.cliproxy !== undefined;
27
- const cliproxyReachable = entries.some((entry) => entry.connector === "cliproxy") && cliproxyConfigured
28
- ? yield* sidecar.reachable()
29
- : false;
20
+ revision: runtimeState.revisions.accounts
21
+ };
22
+ }),
23
+ "accounts.status": () => Effect.gen(function* () {
24
+ const daemonEnv = yield* DaemonEnv;
25
+ const runtimeState = yield* DaemonState;
26
+ const sidecar = yield* Sidecar;
27
+ const gateway = yield* ActiveGateway;
28
+ const recovery = yield* AccountRecovery;
29
+ const entries = accountEntries(daemonEnv.env);
30
+ const configuredModules = new Set(Object.values(runtimeState.config.sources).map((source) => source.use));
31
+ const cliproxyConfigured = configuredModules.has("cliproxy");
32
+ const cliproxyReachable = entries.some((entry) => entry.connector === "cliproxy") && cliproxyConfigured
33
+ ? yield* sidecar.reachable()
34
+ : false;
35
+ return {
36
+ accounts: entries.map((entry) => {
37
+ if (entry.connector === "cliproxy") {
38
+ const ready = entry.credentialValid && cliproxyConfigured && cliproxyReachable;
39
+ return {
40
+ subscriptionKind: entry.subscriptionKind,
41
+ label: entry.label,
42
+ connector: entry.connector,
43
+ ...(entry.localOnly === true ? { localOnly: true } : {}),
44
+ credentialValid: entry.credentialValid,
45
+ configured: cliproxyConfigured,
46
+ relayOpen: ready,
47
+ serving: false,
48
+ inFlight: 0,
49
+ lastSelected: false,
50
+ ...(entry.credentialValid
51
+ ? {}
52
+ : { readinessReasons: [{ code: "credential_invalid" }] }),
53
+ models: []
54
+ };
55
+ }
56
+ const member = gateway
57
+ .router()
58
+ .accountSnapshots()
59
+ .find((snapshot) => snapshot.mode === entry.subscriptionKind)
60
+ ?.members.find((candidate) => candidate.label === entry.label);
30
61
  return {
31
- accounts: entries.map((entry) => {
32
- if (entry.connector === "cliproxy") {
33
- const ready = entry.credentialValid && cliproxyConfigured && cliproxyReachable;
34
- return {
35
- subscriptionKind: entry.subscriptionKind,
36
- label: entry.label,
37
- connector: entry.connector,
38
- ...(entry.localOnly === true ? { localOnly: true } : {}),
39
- credentialValid: entry.credentialValid,
40
- configured: cliproxyConfigured,
41
- relayOpen: ready,
42
- serving: false,
43
- inFlight: 0,
44
- lastSelected: false,
45
- ...(entry.credentialValid
46
- ? {}
47
- : { readinessReasons: [{ code: "credential_invalid" }] }),
48
- models: []
49
- };
50
- }
51
- const member = gateway
52
- .router()
53
- .accountSnapshots()
54
- .find((snapshot) => snapshot.mode === entry.subscriptionKind)
55
- ?.members.find((candidate) => candidate.label === entry.label);
56
- return {
57
- subscriptionKind: entry.subscriptionKind,
58
- label: entry.label,
59
- connector: entry.connector,
60
- credentialValid: member?.credentialValid ?? false,
61
- ...(member?.upstreamAuthState !== undefined
62
- ? { upstreamAuthState: member.upstreamAuthState }
63
- : {}),
64
- configured: runtimeState.config.providers[entry.subscriptionKind] !== undefined,
65
- relayOpen: member?.relayReady === true &&
66
- runtimeState.config.providers[entry.subscriptionKind] !== undefined,
67
- serving: member?.serving ?? false,
68
- inFlight: member?.inFlight ?? 0,
69
- ...(member?.lastSelectedAt !== undefined
70
- ? { lastSelectedAt: member.lastSelectedAt }
71
- : {}),
72
- lastSelected: member?.lastSelected ?? false,
73
- ...(member?.readinessReasons !== undefined
74
- ? { readinessReasons: member.readinessReasons }
75
- : member === undefined
76
- ? { readinessReasons: [{ code: "credential_invalid" }] }
77
- : {}),
78
- models: member?.models ?? [],
79
- ...(member?.limits !== undefined ? { limits: member.limits } : {})
80
- };
81
- }),
82
- revision: runtimeState.revisions.accounts,
83
- recovery: {
84
- state: recovery.recovered > 0 ? "recovered" : "clean",
85
- recovered: recovery.recovered,
86
- cleaned: recovery.cleaned
87
- }
62
+ subscriptionKind: entry.subscriptionKind,
63
+ label: entry.label,
64
+ connector: entry.connector,
65
+ credentialValid: member?.credentialValid ?? false,
66
+ ...(member?.upstreamAuthState !== undefined
67
+ ? { upstreamAuthState: member.upstreamAuthState }
68
+ : {}),
69
+ configured: configuredModules.has(entry.subscriptionKind),
70
+ relayOpen: member?.relayReady === true && configuredModules.has(entry.subscriptionKind),
71
+ serving: member?.serving ?? false,
72
+ inFlight: member?.inFlight ?? 0,
73
+ ...(member?.lastSelectedAt !== undefined
74
+ ? { lastSelectedAt: member.lastSelectedAt }
75
+ : {}),
76
+ lastSelected: member?.lastSelected ?? false,
77
+ ...(member?.readinessReasons !== undefined
78
+ ? { readinessReasons: member.readinessReasons }
79
+ : member === undefined
80
+ ? { readinessReasons: [{ code: "credential_invalid" }] }
81
+ : {}),
82
+ models: member?.models ?? [],
83
+ ...(member?.limits !== undefined ? { limits: member.limits } : {})
88
84
  };
89
85
  }),
90
- "accounts.usage": (_params, context) => Effect.gen(function* () {
91
- const { gateway } = yield* daemonAccountServices;
92
- return yield* gateway.router().usage(context.signal);
93
- })
86
+ revision: runtimeState.revisions.accounts,
87
+ recovery: {
88
+ state: recovery.recovered > 0 ? "recovered" : "clean",
89
+ recovered: recovery.recovered,
90
+ cleaned: recovery.cleaned
91
+ }
94
92
  };
95
- }
96
- }
93
+ }),
94
+ "accounts.usage": (_params, context) => Effect.gen(function* () {
95
+ const gateway = yield* ActiveGateway;
96
+ return yield* gateway.router().usage(context.signal);
97
+ })
98
+ };