@cat-factory/server 0.166.2 → 0.167.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 (33) hide show
  1. package/dist/agents/ContainerAgentExecutor.d.ts.map +1 -1
  2. package/dist/agents/ContainerAgentExecutor.js +15 -1
  3. package/dist/agents/ContainerAgentExecutor.js.map +1 -1
  4. package/dist/agents/ContainerEnvConfigRepairer.d.ts.map +1 -1
  5. package/dist/agents/ContainerEnvConfigRepairer.js +3 -0
  6. package/dist/agents/ContainerEnvConfigRepairer.js.map +1 -1
  7. package/dist/agents/ContainerRepoBootstrapper.d.ts.map +1 -1
  8. package/dist/agents/ContainerRepoBootstrapper.js +3 -0
  9. package/dist/agents/ContainerRepoBootstrapper.js.map +1 -1
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/modules/llmProxy/LlmProxyController.d.ts.map +1 -1
  15. package/dist/modules/llmProxy/LlmProxyController.js +273 -215
  16. package/dist/modules/llmProxy/LlmProxyController.js.map +1 -1
  17. package/dist/persistence/remoteRepositories.d.ts +9 -1
  18. package/dist/persistence/remoteRepositories.d.ts.map +1 -1
  19. package/dist/persistence/remoteRepositories.js +13 -1
  20. package/dist/persistence/remoteRepositories.js.map +1 -1
  21. package/dist/persistence/rpc-allowlist.d.ts +23 -0
  22. package/dist/persistence/rpc-allowlist.d.ts.map +1 -1
  23. package/dist/persistence/rpc-allowlist.js +50 -10
  24. package/dist/persistence/rpc-allowlist.js.map +1 -1
  25. package/dist/persistence/rpc-scope.logic.d.ts +15 -0
  26. package/dist/persistence/rpc-scope.logic.d.ts.map +1 -1
  27. package/dist/persistence/rpc-scope.logic.js +29 -0
  28. package/dist/persistence/rpc-scope.logic.js.map +1 -1
  29. package/dist/persistence/rpc.d.ts +11 -0
  30. package/dist/persistence/rpc.d.ts.map +1 -1
  31. package/dist/persistence/rpc.js +7 -1
  32. package/dist/persistence/rpc.js.map +1 -1
  33. package/package.json +8 -8
@@ -3,7 +3,7 @@ import { bodyLimit } from 'hono/body-limit';
3
3
  import { promptCacheParams, readInputTokenClasses } from '@cat-factory/agents';
4
4
  import { isLocalRunner } from '@cat-factory/contracts';
5
5
  import { fetchLocalRunner } from '@cat-factory/integrations';
6
- import { contextWindowFor, runBestEffort } from '@cat-factory/kernel';
6
+ import { contextWindowFor, normalizeCallPhase, runBestEffort, } from '@cat-factory/kernel';
7
7
  import { openAiCompatibleBaseUrlError } from '../../agents/providerErrors.js';
8
8
  import { ContainerSessionService, } from '../../containers/ContainerSessionService.js';
9
9
  import { makeWaitUntil } from '../../http/waitUntil.js';
@@ -348,229 +348,287 @@ async function relayUpstream(c, ctx, target) {
348
348
  * upload routes' explicit `bodyLimit`.
349
349
  */
350
350
  const MAX_PROXY_BODY_BYTES = 32 * 1024 * 1024;
351
- export function llmProxyController() {
352
- const app = new Hono();
353
- app.post('/v1/chat/completions', bodyLimit({
354
- maxSize: MAX_PROXY_BODY_BYTES,
355
- onError: (c) => c.json({ error: { message: 'Request body exceeds size limit' } }, 413),
356
- }), async (c) => {
357
- // Proxy-entry clock: everything from here to the upstream dispatch (and after the
358
- // response) is transport overhead; the slice spent waiting on the model is the
359
- // actual execution. The two are split in the observability sink.
360
- const t0 = Date.now();
361
- const { config, spendService, gateways, llmObservability, executionEventPublisher, apiKeys, localModelEndpoints, } = c.get('container');
362
- const secret = config.auth.sessionSecret;
363
- if (!secret) {
364
- logger.error('llm proxy: session secret not configured', { scope: 'llmProxy' });
365
- return c.json({ error: { message: 'LLM proxy is not configured' } }, 503);
366
- }
367
- const sessions = new ContainerSessionService({ secret });
368
- const session = await sessions.verify(bearer(c.req.header('authorization')));
369
- if (!session) {
370
- logger.warn('llm proxy: invalid or expired session token', { scope: 'llmProxy' });
371
- return c.json({ error: { message: 'Invalid or expired session token' } }, 401);
372
- }
373
- // Parse + harden the request: lock the model to the session's, and ask for
374
- // usage on the final streamed chunk so we can always meter. Parsed before the
375
- // spend gate so a refusal is still recorded with its prompt/shape for analysis.
376
- let payload;
377
- try {
378
- payload = (await c.req.json());
379
- }
380
- catch {
381
- return c.json({ error: { message: 'Invalid JSON body' } }, 400);
382
- }
383
- payload.model = session.model;
384
- // Prompt caching: route this conversation's calls to the same cached prefix on
385
- // providers that support it (keyed on the execution id, stable across the run's
386
- // turns). A no-op for providers that cache automatically on the prefix or not at
387
- // all see `promptCacheParams`.
388
- Object.assign(payload, promptCacheParams(session.provider, session.executionId));
389
- const streaming = payload.stream === true;
390
- const toolCount = Array.isArray(payload.tools) ? payload.tools.length : 0;
391
- const messageCount = Array.isArray(payload.messages) ? payload.messages.length : 0;
392
- // The EFFECTIVE output ceiling: updated below if the proxy overrides max_tokens
393
- // (e.g. the Workers AI floor), so the recorded metric reflects what actually
394
- // applied, not just what the client asked for.
395
- let requestMaxTokens = typeof payload.max_tokens === 'number' ? payload.max_tokens : null;
396
- const promptText = JSON.stringify(payload.messages ?? []);
397
- // Correlate every proxied call with its run so a bootstrap/execution can be
398
- // traced end to end. We log the tool count explicitly: an agent (Pi) that gets
399
- // no tools back can't edit files, so a toolless call is the signature of a no-op.
400
- const log = logger.child({
401
- scope: 'llmProxy',
351
+ /**
352
+ * The completions paths this proxy serves. The second carries the RUN PHASE the caller was in
353
+ * when it made the call (`agent`, `validation-repair`, `reproduction-repair`, …): the harness
354
+ * points Pi's provider config at `${proxyBaseUrl}/phase/<phase>` for the pass it is about to
355
+ * run, so the phase axis on `llm_call_metrics` is stamped by the component that OWNS the phase
356
+ * boundary rather than inferred downstream from timestamps
357
+ * (`docs/initiatives/token-burn-instrumentation.md`).
358
+ *
359
+ * A URL segment rather than a header because the harness does not make these requests — Pi
360
+ * does, from a config file whose only per-run knobs are the base URL and the token. The
361
+ * unphased path stays the canonical one: an image that predates the phase axis keeps working,
362
+ * and its calls land in the unattributed `''` slice.
363
+ */
364
+ const COMPLETIONS_PATHS = ['/v1/chat/completions', '/v1/phase/:phase/chat/completions'];
365
+ /**
366
+ * Build the per-call observation handler: (1) push a COMPACT live activity event (no
367
+ * prompt/response bodies) so an open "Model activity" panel updates in real time, independent
368
+ * of the durable driver — the proxy records calls even while the run's poll loop is evicted;
369
+ * (2) persist the full metric to the observability sink when it is wired.
370
+ *
371
+ * `upstreamMs` is supplied by whichever path made the call; `totalMs` is the proxy's end-to-end
372
+ * time. Both halves are best-effort and must never break the proxy. Extracted from
373
+ * {@link handleChatCompletion} because it is a cohesive collaborator (everything the metering
374
+ * boundary needs is in {@link CallMeterContext}) and the handler had no headroom left under the
375
+ * 300-line function budget.
376
+ */
377
+ function makeCallObserver(meter, deps) {
378
+ const { session, callId, startedAt, streaming, phase, messageCount, toolCount, promptText } = meter;
379
+ const { waitUntil, log, executionEventPublisher, llmObservability } = deps;
380
+ return (obs) => {
381
+ const completionTokens = obs.usage?.completion_tokens ?? 0;
382
+ // The three input classes are recorded ORTHOGONALLY, so total input is their sum. An
383
+ // upstream path that already knows the split (a gateway whose own shape carries it)
384
+ // hands all three over together; otherwise they are read off the usage payload, which
385
+ // is where the inclusive-vs-exclusive reconciliation lives.
386
+ const input = obs.inputTokens ?? readInputTokenClasses(obs.usage);
387
+ const totalMs = Date.now() - startedAt;
388
+ const requestMaxTokens = meter.requestMaxTokens();
389
+ const totalTokens = input.fresh + input.cacheRead + input.cacheWrite + completionTokens;
390
+ // Emitted regardless of whether the persistence sink is wired, so the live view works
391
+ // even on a deployment that does not retain metrics. This fires on EVERY observed
392
+ // outcome, including refusals/errors (spend exhausted, unavailable provider, upstream
393
+ // non-2xx) where no model work ran: surfacing those live (with `ok:false`) is intentional
394
+ // and matches what the sink persists. Best-effort: a publish failure (no subscribers,
395
+ // transient hub error) must not break metering.
396
+ waitUntil(runBestEffort(log, 'llmProxy.publishCallObserved', () =>
397
+ // `?.` on the publisher itself, not just the method: a minimal container
398
+ // (e.g. the harness's real-proxy acceptance test) may omit it, and the live
399
+ // emit is best-effort a missing publisher must never break metering.
400
+ executionEventPublisher?.llmCallObserved?.(session.workspaceId, {
401
+ id: callId,
402
+ workspaceId: session.workspaceId,
403
+ executionId: session.executionId,
404
+ agentKind: session.agentKind,
405
+ provider: session.provider,
406
+ model: session.model,
407
+ createdAt: Date.now(),
408
+ streaming,
409
+ phase,
410
+ messageCount,
411
+ toolCount,
412
+ requestMaxTokens,
413
+ promptTokens: input.fresh,
414
+ cacheReadTokens: input.cacheRead,
415
+ cacheWriteTokens: input.cacheWrite,
416
+ completionTokens,
417
+ totalTokens,
418
+ finishReason: obs.finishReason,
419
+ upstreamMs: obs.upstreamMs,
420
+ overheadMs: Math.max(0, totalMs - obs.upstreamMs),
421
+ totalMs,
422
+ ok: obs.ok,
423
+ httpStatus: obs.httpStatus,
424
+ errorMessage: obs.errorMessage,
425
+ })));
426
+ if (!llmObservability)
427
+ return;
428
+ waitUntil(llmObservability
429
+ .record({
430
+ id: callId,
402
431
  workspaceId: session.workspaceId,
403
432
  executionId: session.executionId,
404
433
  agentKind: session.agentKind,
405
434
  provider: session.provider,
406
435
  model: session.model,
436
+ streaming,
437
+ phase,
438
+ // A proxied call carries no job-scoped turn counter — the proxy sees one HTTP
439
+ // request at a time — so its rows order by `createdAt`, never by a faked turn.
440
+ turnIndex: null,
441
+ messageCount,
442
+ toolCount,
443
+ requestMaxTokens,
444
+ promptTokens: input.fresh,
445
+ cacheReadTokens: input.cacheRead,
446
+ cacheWriteTokens: input.cacheWrite,
447
+ completionTokens,
448
+ totalTokens,
449
+ finishReason: obs.finishReason,
450
+ totalMs,
451
+ upstreamMs: obs.upstreamMs,
452
+ ok: obs.ok,
453
+ httpStatus: obs.httpStatus,
454
+ errorMessage: obs.errorMessage,
455
+ promptText,
456
+ responseText: obs.responseText,
457
+ reasoningText: obs.reasoningText ?? '',
458
+ })
459
+ // Observability must never break the proxy.
460
+ .catch((err) => log.warn('llm proxy: failed to record metric', {
461
+ err: err instanceof Error ? err.message : String(err),
462
+ })));
463
+ };
464
+ }
465
+ /**
466
+ * Serve one proxied chat completion: verify the container session, harden the payload, gate on
467
+ * spend, forward to the resolved upstream and meter the call. Registered on BOTH completions
468
+ * paths (see {@link COMPLETIONS_PATHS}), which differ only in whether the caller tagged its run
469
+ * phase — hence a named handler rather than an inline one.
470
+ */
471
+ async function handleChatCompletion(c) {
472
+ // Proxy-entry clock: everything from here to the upstream dispatch (and after the
473
+ // response) is transport overhead; the slice spent waiting on the model is the
474
+ // actual execution. The two are split in the observability sink.
475
+ const t0 = Date.now();
476
+ const { config, spendService, gateways, llmObservability, executionEventPublisher, apiKeys, localModelEndpoints, } = c.get('container');
477
+ const secret = config.auth.sessionSecret;
478
+ if (!secret) {
479
+ logger.error('llm proxy: session secret not configured', { scope: 'llmProxy' });
480
+ return c.json({ error: { message: 'LLM proxy is not configured' } }, 503);
481
+ }
482
+ const sessions = new ContainerSessionService({ secret });
483
+ const session = await sessions.verify(bearer(c.req.header('authorization')));
484
+ if (!session) {
485
+ logger.warn('llm proxy: invalid or expired session token', { scope: 'llmProxy' });
486
+ return c.json({ error: { message: 'Invalid or expired session token' } }, 401);
487
+ }
488
+ // Parse + harden the request: lock the model to the session's, and ask for
489
+ // usage on the final streamed chunk so we can always meter. Parsed before the
490
+ // spend gate so a refusal is still recorded with its prompt/shape for analysis.
491
+ let payload;
492
+ try {
493
+ payload = (await c.req.json());
494
+ }
495
+ catch {
496
+ return c.json({ error: { message: 'Invalid JSON body' } }, 400);
497
+ }
498
+ payload.model = session.model;
499
+ // Prompt caching: route this conversation's calls to the same cached prefix on
500
+ // providers that support it (keyed on the execution id, stable across the run's
501
+ // turns). A no-op for providers that cache automatically on the prefix or not at
502
+ // all — see `promptCacheParams`.
503
+ Object.assign(payload, promptCacheParams(session.provider, session.executionId));
504
+ // The run phase this call belongs to, off the (optional) path segment the caller was
505
+ // pointed at. Read through the untyped `param()` map because the SAME handler serves the
506
+ // unphased path too. Untrusted like any request path — a session token is all it takes to
507
+ // write here — so it is normalised to the phase alphabet before it becomes a grouping
508
+ // key; anything else lands in the unattributed `''` slice.
509
+ const phase = normalizeCallPhase(c.req.param().phase);
510
+ const streaming = payload.stream === true;
511
+ const toolCount = Array.isArray(payload.tools) ? payload.tools.length : 0;
512
+ const messageCount = Array.isArray(payload.messages) ? payload.messages.length : 0;
513
+ // The EFFECTIVE output ceiling: updated below if the proxy overrides max_tokens
514
+ // (e.g. the Workers AI floor), so the recorded metric reflects what actually
515
+ // applied, not just what the client asked for.
516
+ let requestMaxTokens = typeof payload.max_tokens === 'number' ? payload.max_tokens : null;
517
+ const promptText = JSON.stringify(payload.messages ?? []);
518
+ // Correlate every proxied call with its run so a bootstrap/execution can be
519
+ // traced end to end. We log the tool count explicitly: an agent (Pi) that gets
520
+ // no tools back can't edit files, so a toolless call is the signature of a no-op.
521
+ const log = logger.child({
522
+ scope: 'llmProxy',
523
+ workspaceId: session.workspaceId,
524
+ executionId: session.executionId,
525
+ agentKind: session.agentKind,
526
+ provider: session.provider,
527
+ model: session.model,
528
+ });
529
+ log.info('llm proxy: forwarding chat completion', { streaming, toolCount });
530
+ const waitUntil = makeWaitUntil(c);
531
+ // One id per proxied call, minted here so the SAME id rides both the live
532
+ // `llmCall` activity event and the persisted metric row — the drill-down panel
533
+ // keys its lazy body-load by it, and a live-appended summary row reconciles with
534
+ // the stored row on reload instead of duplicating.
535
+ const callId = `llm_${crypto.randomUUID()}`;
536
+ // Per-call observation handling, off the response path — see `makeCallObserver`.
537
+ const observe = makeCallObserver({
538
+ session,
539
+ callId,
540
+ startedAt: t0,
541
+ streaming,
542
+ phase,
543
+ messageCount,
544
+ toolCount,
545
+ promptText,
546
+ // Read lazily: the proxy may still raise `max_tokens` below (the Workers AI floor),
547
+ // and the metric must report the ceiling that actually applied, not the one asked for.
548
+ requestMaxTokens: () => requestMaxTokens,
549
+ }, { waitUntil, log, executionEventPublisher, llmObservability });
550
+ // Spend gate: refuse once the monthly budget is exhausted, mirroring the
551
+ // engine's pre-step check so a container can't keep spending.
552
+ if (await spendService.isOverBudget(session.workspaceId, {
553
+ accountId: session.accountId,
554
+ userId: session.userId,
555
+ })) {
556
+ logger.warn('llm proxy: spend budget exhausted — refusing call', {
557
+ scope: 'llmProxy',
558
+ workspaceId: session.workspaceId,
559
+ executionId: session.executionId,
407
560
  });
408
- log.info('llm proxy: forwarding chat completion', { streaming, toolCount });
409
- const waitUntil = makeWaitUntil(c);
410
- // One id per proxied call, minted here so the SAME id rides both the live
411
- // `llmCall` activity event and the persisted metric row — the drill-down panel
412
- // keys its lazy body-load by it, and a live-appended summary row reconciles with
413
- // the stored row on reload instead of duplicating.
414
- const callId = `llm_${crypto.randomUUID()}`;
415
- // Per-call observation handling, off the response path: (1) push a COMPACT live
416
- // activity event (no prompt/response bodies) so an open "Model activity" panel
417
- // updates in real time, independent of the durable driver — the proxy records
418
- // calls even while the run's poll loop is evicted; (2) persist the full metric to
419
- // the observability sink when it is wired. `upstreamMs` is supplied by whichever
420
- // path made the call; `totalMs` is the proxy's end-to-end time. Both are
421
- // best-effort and must never break the proxy.
422
- const observe = (obs) => {
423
- const completionTokens = obs.usage?.completion_tokens ?? 0;
424
- // The three input classes are recorded ORTHOGONALLY, so total input is their sum. An
425
- // upstream path that already knows the split (a gateway whose own shape carries it)
426
- // hands all three over together; otherwise they are read off the usage payload, which
427
- // is where the inclusive-vs-exclusive reconciliation lives.
428
- const input = obs.inputTokens ?? readInputTokenClasses(obs.usage);
429
- const totalMs = Date.now() - t0;
430
- // Live activity event emitted regardless of whether the persistence sink is
431
- // wired, so the live view works even on a deployment that does not retain
432
- // metrics. This fires on EVERY observed outcome, including refusals/errors (spend
433
- // exhausted, unavailable provider, upstream non-2xx) where no model work ran:
434
- // surfacing those live (with `ok:false`) is intentional and matches what the sink
435
- // persists. Best-effort: a publish failure (no subscribers, transient hub error)
436
- // must not break metering.
437
- waitUntil(runBestEffort(log, 'llmProxy.publishCallObserved', () =>
438
- // `?.` on the publisher itself, not just the method: a minimal container
439
- // (e.g. the harness's real-proxy acceptance test) may omit it, and the live
440
- // emit is best-effort — a missing publisher must never break metering.
441
- executionEventPublisher?.llmCallObserved?.(session.workspaceId, {
442
- id: callId,
443
- workspaceId: session.workspaceId,
444
- executionId: session.executionId,
445
- agentKind: session.agentKind,
446
- provider: session.provider,
447
- model: session.model,
448
- createdAt: Date.now(),
449
- streaming,
450
- messageCount,
451
- toolCount,
452
- requestMaxTokens,
453
- promptTokens: input.fresh,
454
- cacheReadTokens: input.cacheRead,
455
- cacheWriteTokens: input.cacheWrite,
456
- completionTokens,
457
- totalTokens: input.fresh + input.cacheRead + input.cacheWrite + completionTokens,
458
- finishReason: obs.finishReason,
459
- upstreamMs: obs.upstreamMs,
460
- overheadMs: Math.max(0, totalMs - obs.upstreamMs),
461
- totalMs,
462
- ok: obs.ok,
463
- httpStatus: obs.httpStatus,
464
- errorMessage: obs.errorMessage,
465
- })));
466
- if (!llmObservability)
467
- return;
468
- waitUntil(llmObservability
469
- .record({
470
- id: callId,
471
- workspaceId: session.workspaceId,
472
- executionId: session.executionId,
473
- agentKind: session.agentKind,
474
- provider: session.provider,
475
- model: session.model,
476
- streaming,
477
- messageCount,
478
- toolCount,
479
- requestMaxTokens,
480
- promptTokens: input.fresh,
481
- cacheReadTokens: input.cacheRead,
482
- cacheWriteTokens: input.cacheWrite,
483
- completionTokens,
484
- totalTokens: input.fresh + input.cacheRead + input.cacheWrite + completionTokens,
485
- finishReason: obs.finishReason,
486
- totalMs,
487
- upstreamMs: obs.upstreamMs,
488
- ok: obs.ok,
489
- httpStatus: obs.httpStatus,
490
- errorMessage: obs.errorMessage,
491
- promptText,
492
- responseText: obs.responseText,
493
- reasoningText: obs.reasoningText ?? '',
494
- })
495
- // Observability must never break the proxy.
496
- .catch((err) => log.warn('llm proxy: failed to record metric', {
497
- err: err instanceof Error ? err.message : String(err),
498
- })));
499
- };
500
- // Spend gate: refuse once the monthly budget is exhausted, mirroring the
501
- // engine's pre-step check so a container can't keep spending.
502
- if (await spendService.isOverBudget(session.workspaceId, {
561
+ observe({
562
+ usage: null,
563
+ finishReason: null,
564
+ responseText: '',
565
+ ok: false,
566
+ httpStatus: 402,
567
+ errorMessage: 'Spend budget exhausted',
568
+ upstreamMs: 0,
569
+ });
570
+ return c.json({ error: { message: 'Spend budget exhausted' } }, 402);
571
+ }
572
+ // Give container agents generous output room for in-process Workers AI models (a no-op
573
+ // for other providers); records the ceiling actually applied so the metric is accurate.
574
+ requestMaxTokens = applyWorkersAiCeiling(session, payload, promptText, requestMaxTokens);
575
+ // The pooled API key leased for this call (non-binding providers), so usage can be
576
+ // folded back into its rolling-window rotation counters when the call completes.
577
+ let leasedApiKeyId = null;
578
+ const record = (usage) => {
579
+ if (!usage)
580
+ return Promise.resolve(0);
581
+ const inputTokens = usage.prompt_tokens ?? 0;
582
+ const outputTokens = usage.completion_tokens ?? 0;
583
+ // Fold usage into the leased key's rotation counters (best-effort, off the meter).
584
+ if (leasedApiKeyId && apiKeys) {
585
+ void runBestEffort(log, 'apiKeys.recordUsage', () => apiKeys.recordUsage(leasedApiKeyId, { inputTokens, outputTokens }), { apiKeyId: leasedApiKeyId });
586
+ }
587
+ return spendService.record({
588
+ workspaceId: session.workspaceId,
503
589
  accountId: session.accountId,
504
590
  userId: session.userId,
505
- })) {
506
- logger.warn('llm proxy: spend budget exhausted — refusing call', {
507
- scope: 'llmProxy',
508
- workspaceId: session.workspaceId,
509
- executionId: session.executionId,
510
- });
511
- observe({
512
- usage: null,
513
- finishReason: null,
514
- responseText: '',
515
- ok: false,
516
- httpStatus: 402,
517
- errorMessage: 'Spend budget exhausted',
518
- upstreamMs: 0,
519
- });
520
- return c.json({ error: { message: 'Spend budget exhausted' } }, 402);
521
- }
522
- // Give container agents generous output room for in-process Workers AI models (a no-op
523
- // for other providers); records the ceiling actually applied so the metric is accurate.
524
- requestMaxTokens = applyWorkersAiCeiling(session, payload, promptText, requestMaxTokens);
525
- // The pooled API key leased for this call (non-binding providers), so usage can be
526
- // folded back into its rolling-window rotation counters when the call completes.
527
- let leasedApiKeyId = null;
528
- const record = (usage) => {
529
- if (!usage)
530
- return Promise.resolve(0);
531
- const inputTokens = usage.prompt_tokens ?? 0;
532
- const outputTokens = usage.completion_tokens ?? 0;
533
- // Fold usage into the leased key's rotation counters (best-effort, off the meter).
534
- if (leasedApiKeyId && apiKeys) {
535
- void runBestEffort(log, 'apiKeys.recordUsage', () => apiKeys.recordUsage(leasedApiKeyId, { inputTokens, outputTokens }), { apiKeyId: leasedApiKeyId });
536
- }
537
- return spendService.record({
538
- workspaceId: session.workspaceId,
539
- accountId: session.accountId,
540
- userId: session.userId,
541
- executionId: session.executionId,
542
- agentKind: session.agentKind,
543
- model: `${session.provider}:${session.model}`,
544
- usage: { inputTokens, outputTokens },
545
- });
546
- };
547
- // The per-call state the dispatch helpers below thread through; `observe` / `record` stay
548
- // bound to this handler's mutable `requestMaxTokens` / `leasedApiKeyId`.
549
- const ctx = {
550
- session,
551
- payload,
552
- streaming,
553
- promptText,
554
- log,
555
- gateways,
556
- apiKeys,
557
- localModelEndpoints,
558
- waitUntil,
559
- observe,
560
- record,
561
- };
562
- // Workers AI (and any binding-reached provider) has no external upstream: run it in-process
563
- // via the facade's gateway. Null-provider (e.g. Node can't) surfaces as unavailable.
564
- if (session.provider === 'workers-ai')
565
- return dispatchInProcess(c, ctx);
566
- // Resolve the upstream base URL + bearer key (local runner vs the DB-backed key pool), then
567
- // forward + meter. A failure is already observed and returned ready-to-send.
568
- const target = await resolveUpstreamTarget(c, ctx);
569
- if ('failure' in target)
570
- return target.failure;
571
- leasedApiKeyId = target.leasedApiKeyId;
572
- return relayUpstream(c, ctx, target);
591
+ executionId: session.executionId,
592
+ agentKind: session.agentKind,
593
+ model: `${session.provider}:${session.model}`,
594
+ usage: { inputTokens, outputTokens },
595
+ });
596
+ };
597
+ // The per-call state the dispatch helpers below thread through; `observe` / `record` stay
598
+ // bound to this handler's mutable `requestMaxTokens` / `leasedApiKeyId`.
599
+ const ctx = {
600
+ session,
601
+ payload,
602
+ streaming,
603
+ promptText,
604
+ log,
605
+ gateways,
606
+ apiKeys,
607
+ localModelEndpoints,
608
+ waitUntil,
609
+ observe,
610
+ record,
611
+ };
612
+ // Workers AI (and any binding-reached provider) has no external upstream: run it in-process
613
+ // via the facade's gateway. Null-provider (e.g. Node can't) surfaces as unavailable.
614
+ if (session.provider === 'workers-ai')
615
+ return dispatchInProcess(c, ctx);
616
+ // Resolve the upstream base URL + bearer key (local runner vs the DB-backed key pool), then
617
+ // forward + meter. A failure is already observed and returned ready-to-send.
618
+ const target = await resolveUpstreamTarget(c, ctx);
619
+ if ('failure' in target)
620
+ return target.failure;
621
+ leasedApiKeyId = target.leasedApiKeyId;
622
+ return relayUpstream(c, ctx, target);
623
+ }
624
+ export function llmProxyController() {
625
+ const app = new Hono();
626
+ const limit = bodyLimit({
627
+ maxSize: MAX_PROXY_BODY_BYTES,
628
+ onError: (c) => c.json({ error: { message: 'Request body exceeds size limit' } }, 413),
573
629
  });
630
+ for (const path of COMPLETIONS_PATHS)
631
+ app.post(path, limit, handleChatCompletion);
574
632
  return app;
575
633
  }
576
634
  /** Pull the assistant text out of a buffered completion (empty when tool-only). */
@@ -1 +1 @@
1
- {"version":3,"file":"LlmProxyController.js","sourceRoot":"","sources":["../../../src/modules/llmProxy/LlmProxyController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LlmProxyController.js","sourceRoot":"","sources":["../../../src/modules/llmProxy/LlmProxyController.ts"],"names":[],"mappings":"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"}