@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,182 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import test from "node:test";
3
- import { parseRouterConfig } from "@velum-labs/routekit-config";
4
- import { RouteKitFailure, runRouteKitEffect } from "@velum-labs/routekit-runtime/effect";
5
- import { Effect } from "effect";
6
- import { createDaemonLifecycle } from "../daemon-lifecycle.js";
7
- import { DaemonRuntimeState } from "../daemon-runtime-state.js";
8
- test("normal close removes SIGHUP listener and shuts resources down in dependency order", async () => {
9
- const order = [];
10
- const listenersBefore = process.listenerCount("SIGHUP");
11
- const runtimeState = new DaemonRuntimeState({
12
- config: parseRouterConfig({ providers: {} }),
13
- document: "providers: {}\n",
14
- revisions: { config: 0, accounts: 0, daemon: 0 }
15
- });
16
- const lifecycle = createDaemonLifecycle({
17
- runtimeState,
18
- handlers: {},
19
- drainGraceMs: 0,
20
- packageVersion: "test",
21
- supervisor: "unknown",
22
- getControl: () => ({
23
- close: Effect.sync(() => {
24
- order.push("control");
25
- })
26
- }),
27
- getProxy: () => ({
28
- drain: () => Effect.sync(() => {
29
- order.push("proxy");
30
- })
31
- }),
32
- getActiveRouter: () => ({
33
- close: Effect.sync(() => {
34
- order.push("router");
35
- })
36
- }),
37
- closeSidecar: () => Effect.sync(() => {
38
- order.push("sidecar");
39
- }),
40
- daemonTelemetry: {
41
- capture: () => undefined,
42
- shutdown: async () => {
43
- order.push("daemon-telemetry");
44
- }
45
- },
46
- gatewayTelemetry: {
47
- close: () => {
48
- order.push("gateway-telemetry");
49
- }
50
- },
51
- cleanupRegistration: () => {
52
- order.push("registration");
53
- }
54
- });
55
- assert.equal(process.listenerCount("SIGHUP"), listenersBefore + 1);
56
- await runRouteKitEffect(lifecycle.close());
57
- assert.equal(process.listenerCount("SIGHUP"), listenersBefore);
58
- assert.deepEqual(order, [
59
- "control",
60
- "proxy",
61
- "router",
62
- "sidecar",
63
- "daemon-telemetry",
64
- "gateway-telemetry",
65
- "registration"
66
- ]);
67
- assert.equal(runtimeState.lifecycle, "closed");
68
- await runRouteKitEffect(lifecycle.close());
69
- assert.equal(process.listenerCount("SIGHUP"), listenersBefore);
70
- });
71
- test("normal close removes SIGHUP listener even when a finalizer fails", async () => {
72
- const listenersBefore = process.listenerCount("SIGHUP");
73
- const attempted = [];
74
- const lifecycle = createDaemonLifecycle({
75
- runtimeState: new DaemonRuntimeState({
76
- config: parseRouterConfig({ providers: {} }),
77
- document: "providers: {}\n",
78
- revisions: { config: 0, accounts: 0, daemon: 0 }
79
- }),
80
- handlers: {},
81
- drainGraceMs: 0,
82
- packageVersion: "test",
83
- supervisor: "unknown",
84
- getControl: () => undefined,
85
- getProxy: () => ({
86
- drain: () => Effect.sync(() => attempted.push("proxy")).pipe(Effect.andThen(Effect.fail(new RouteKitFailure({ message: "drain failed" }))))
87
- }),
88
- getActiveRouter: () => ({
89
- close: Effect.sync(() => {
90
- attempted.push("router");
91
- })
92
- }),
93
- closeSidecar: () => Effect.sync(() => {
94
- attempted.push("sidecar");
95
- }),
96
- cleanupRegistration: () => {
97
- attempted.push("registration");
98
- }
99
- });
100
- assert.equal(process.listenerCount("SIGHUP"), listenersBefore + 1);
101
- await assert.rejects(runRouteKitEffect(lifecycle.close()), AggregateError);
102
- assert.deepEqual(attempted, ["proxy", "router", "sidecar", "registration"]);
103
- assert.equal(process.listenerCount("SIGHUP"), listenersBefore);
104
- });
105
- test("close and retire share one globally idempotent disposal", async () => {
106
- const calls = new Map();
107
- const record = (name) => {
108
- calls.set(name, (calls.get(name) ?? 0) + 1);
109
- };
110
- const runtimeState = new DaemonRuntimeState({
111
- config: parseRouterConfig({ providers: {} }),
112
- document: "providers: {}\n",
113
- revisions: { config: 0, accounts: 0, daemon: 0 }
114
- });
115
- const lifecycle = createDaemonLifecycle({
116
- runtimeState,
117
- handlers: {},
118
- drainGraceMs: 0,
119
- packageVersion: "test",
120
- supervisor: "unknown",
121
- getControl: () => ({
122
- close: Effect.sync(() => record("control-close")),
123
- retire: () => Effect.sync(() => record("control-retire"))
124
- }),
125
- getProxy: () => ({
126
- drain: () => Effect.sync(() => record("proxy-drain")),
127
- retire: () => Effect.sync(() => record("proxy-retire"))
128
- }),
129
- getActiveRouter: () => ({
130
- close: Effect.sync(() => record("router"))
131
- }),
132
- closeSidecar: () => Effect.sync(() => record("sidecar")),
133
- cleanupRegistration: () => record("registration")
134
- });
135
- const closeRun = runRouteKitEffect(lifecycle.close());
136
- const retireRun = runRouteKitEffect(lifecycle.retire());
137
- await Promise.all([
138
- closeRun,
139
- retireRun,
140
- runRouteKitEffect(lifecycle.close()),
141
- runRouteKitEffect(lifecycle.retire())
142
- ]);
143
- assert.deepEqual(Object.fromEntries(calls), {
144
- "control-close": 1,
145
- "proxy-drain": 1,
146
- router: 1,
147
- sidecar: 1,
148
- registration: 1
149
- });
150
- assert.equal(runtimeState.lifecycle, "closed");
151
- });
152
- test("retire owns disposal when it wins the shutdown race", async () => {
153
- const order = [];
154
- const lifecycle = createDaemonLifecycle({
155
- runtimeState: new DaemonRuntimeState({
156
- config: parseRouterConfig({ providers: {} }),
157
- document: "providers: {}\n",
158
- revisions: { config: 0, accounts: 0, daemon: 0 }
159
- }),
160
- handlers: {},
161
- drainGraceMs: 0,
162
- packageVersion: "test",
163
- supervisor: "unknown",
164
- getControl: () => ({
165
- close: Effect.sync(() => order.push("control-close")),
166
- retire: () => Effect.sync(() => order.push("control-retire"))
167
- }),
168
- getProxy: () => ({
169
- drain: () => Effect.sync(() => order.push("proxy-drain")),
170
- retire: () => Effect.sync(() => order.push("proxy-retire"))
171
- }),
172
- getActiveRouter: () => undefined,
173
- closeSidecar: () => Effect.void,
174
- cleanupRegistration: () => undefined
175
- });
176
- await Promise.all([
177
- runRouteKitEffect(lifecycle.retire()),
178
- runRouteKitEffect(lifecycle.close()),
179
- runRouteKitEffect(lifecycle.retire())
180
- ]);
181
- assert.deepEqual(order, ["control-retire", "proxy-retire"]);
182
- });