@atomic-chat/core 0.18.4 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/app-daemon.js +5 -0
  2. package/dist/app-daemon.js.map +1 -1
  3. package/dist/cli/main.d.ts +1 -1
  4. package/dist/cli/main.js +5 -0
  5. package/dist/cli/main.js.map +1 -1
  6. package/dist/client/control-client.d.ts +18 -1
  7. package/dist/client/control-client.js +27 -0
  8. package/dist/client/control-client.js.map +1 -1
  9. package/dist/cloud/registry.js +1 -0
  10. package/dist/cloud/registry.js.map +1 -1
  11. package/dist/config/paths.d.ts +4 -0
  12. package/dist/config/paths.js +13 -0
  13. package/dist/config/paths.js.map +1 -1
  14. package/dist/contracts/control-api.d.ts +9 -0
  15. package/dist/contracts/diffusion.d.ts +17 -7
  16. package/dist/contracts/diffusion.js.map +1 -1
  17. package/dist/contracts/engine-builds.d.ts +1 -1
  18. package/dist/contracts/engine-builds.js +1 -1
  19. package/dist/contracts/engine-builds.js.map +1 -1
  20. package/dist/contracts/engines.d.ts +1 -1
  21. package/dist/contracts/engines.js +2 -0
  22. package/dist/contracts/engines.js.map +1 -1
  23. package/dist/contracts/errors.d.ts +9 -1
  24. package/dist/contracts/errors.js.map +1 -1
  25. package/dist/contracts/events.d.ts +3 -0
  26. package/dist/contracts/index.d.ts +1 -0
  27. package/dist/contracts/index.js +1 -0
  28. package/dist/contracts/index.js.map +1 -1
  29. package/dist/contracts/litert-lm.d.ts +97 -0
  30. package/dist/contracts/litert-lm.js +17 -0
  31. package/dist/contracts/litert-lm.js.map +1 -0
  32. package/dist/contracts/model-yml.d.ts +31 -0
  33. package/dist/contracts/model-yml.js +5 -0
  34. package/dist/contracts/model-yml.js.map +1 -1
  35. package/dist/contracts/session.d.ts +5 -1
  36. package/dist/contracts/session.js.map +1 -1
  37. package/dist/contracts/settings.d.ts +10 -1
  38. package/dist/contracts/settings.js.map +1 -1
  39. package/dist/core/atomic-core.d.ts +6 -1
  40. package/dist/core/atomic-core.js +6 -0
  41. package/dist/core/atomic-core.js.map +1 -1
  42. package/dist/core/create.js +141 -20
  43. package/dist/core/create.js.map +1 -1
  44. package/dist/diffusion/args.d.ts +8 -0
  45. package/dist/diffusion/args.js +10 -0
  46. package/dist/diffusion/args.js.map +1 -1
  47. package/dist/diffusion/compat.d.ts +3 -3
  48. package/dist/diffusion/compat.js +15 -10
  49. package/dist/diffusion/compat.js.map +1 -1
  50. package/dist/diffusion/recipe.d.ts +19 -2
  51. package/dist/diffusion/recipe.js +43 -20
  52. package/dist/diffusion/recipe.js.map +1 -1
  53. package/dist/diffusion/remote-job.js +6 -7
  54. package/dist/diffusion/remote-job.js.map +1 -1
  55. package/dist/diffusion/service.d.ts +1 -0
  56. package/dist/diffusion/service.js +4 -2
  57. package/dist/diffusion/service.js.map +1 -1
  58. package/dist/diffusion/video-history.js +3 -2
  59. package/dist/diffusion/video-history.js.map +1 -1
  60. package/dist/diffusion/video-recipe.d.ts +4 -1
  61. package/dist/diffusion/video-recipe.js +15 -11
  62. package/dist/diffusion/video-recipe.js.map +1 -1
  63. package/dist/diffusion/workflow.d.ts +2 -1
  64. package/dist/diffusion/workflow.js +3 -1
  65. package/dist/diffusion/workflow.js.map +1 -1
  66. package/dist/downloads/archive.d.ts +2 -1
  67. package/dist/downloads/archive.js +3 -2
  68. package/dist/downloads/archive.js.map +1 -1
  69. package/dist/engine-builds/engines.d.ts +22 -5
  70. package/dist/engine-builds/engines.js +44 -7
  71. package/dist/engine-builds/engines.js.map +1 -1
  72. package/dist/engine-builds/litert-lm.d.ts +29 -0
  73. package/dist/engine-builds/litert-lm.js +119 -0
  74. package/dist/engine-builds/litert-lm.js.map +1 -0
  75. package/dist/engine-builds/manifest.d.ts +55 -1
  76. package/dist/engine-builds/manifest.js +114 -1
  77. package/dist/engine-builds/manifest.js.map +1 -1
  78. package/dist/engine-builds/order.d.ts +2 -1
  79. package/dist/engine-builds/order.js +3 -1
  80. package/dist/engine-builds/order.js.map +1 -1
  81. package/dist/engine-builds/select.d.ts +19 -1
  82. package/dist/engine-builds/select.js +45 -0
  83. package/dist/engine-builds/select.js.map +1 -1
  84. package/dist/engine-builds/service.d.ts +8 -5
  85. package/dist/engine-builds/service.js +11 -4
  86. package/dist/engine-builds/service.js.map +1 -1
  87. package/dist/engines/service.d.ts +3 -1
  88. package/dist/engines/service.js +4 -1
  89. package/dist/engines/service.js.map +1 -1
  90. package/dist/host/recipes/executor-io-windows.d.ts +10 -1
  91. package/dist/host/recipes/executor-io-windows.js +9 -3
  92. package/dist/host/recipes/executor-io-windows.js.map +1 -1
  93. package/dist/router/resolve.d.ts +25 -4
  94. package/dist/router/resolve.js +34 -3
  95. package/dist/router/resolve.js.map +1 -1
  96. package/dist/runtime/environment/host-exec.d.ts +2 -0
  97. package/dist/runtime/environment/host-exec.js +15 -4
  98. package/dist/runtime/environment/host-exec.js.map +1 -1
  99. package/dist/runtime/litert-lm/accelerators.d.ts +54 -0
  100. package/dist/runtime/litert-lm/accelerators.js +176 -0
  101. package/dist/runtime/litert-lm/accelerators.js.map +1 -0
  102. package/dist/runtime/litert-lm/check.d.ts +44 -0
  103. package/dist/runtime/litert-lm/check.js +113 -0
  104. package/dist/runtime/litert-lm/check.js.map +1 -0
  105. package/dist/runtime/litert-lm/host/args.d.ts +47 -0
  106. package/dist/runtime/litert-lm/host/args.js +108 -0
  107. package/dist/runtime/litert-lm/host/args.js.map +1 -0
  108. package/dist/runtime/litert-lm/host/ffi-bun.d.ts +16 -0
  109. package/dist/runtime/litert-lm/host/ffi-bun.js +535 -0
  110. package/dist/runtime/litert-lm/host/ffi-bun.js.map +1 -0
  111. package/dist/runtime/litert-lm/host/library.d.ts +113 -0
  112. package/dist/runtime/litert-lm/host/library.js +38 -0
  113. package/dist/runtime/litert-lm/host/library.js.map +1 -0
  114. package/dist/runtime/litert-lm/host/openai.d.ts +97 -0
  115. package/dist/runtime/litert-lm/host/openai.js +355 -0
  116. package/dist/runtime/litert-lm/host/openai.js.map +1 -0
  117. package/dist/runtime/litert-lm/host/pool.d.ts +51 -0
  118. package/dist/runtime/litert-lm/host/pool.js +114 -0
  119. package/dist/runtime/litert-lm/host/pool.js.map +1 -0
  120. package/dist/runtime/litert-lm/host/run.d.ts +48 -0
  121. package/dist/runtime/litert-lm/host/run.js +169 -0
  122. package/dist/runtime/litert-lm/host/run.js.map +1 -0
  123. package/dist/runtime/litert-lm/host/server.d.ts +28 -0
  124. package/dist/runtime/litert-lm/host/server.js +242 -0
  125. package/dist/runtime/litert-lm/host/server.js.map +1 -0
  126. package/dist/runtime/litert-lm/host-process.d.ts +44 -0
  127. package/dist/runtime/litert-lm/host-process.js +99 -0
  128. package/dist/runtime/litert-lm/host-process.js.map +1 -0
  129. package/dist/runtime/litert-lm/index.d.ts +10 -0
  130. package/dist/runtime/litert-lm/index.js +11 -0
  131. package/dist/runtime/litert-lm/index.js.map +1 -0
  132. package/dist/runtime/litert-lm/litert-host.d.ts +17 -0
  133. package/dist/runtime/litert-lm/litert-host.js +22 -0
  134. package/dist/runtime/litert-lm/litert-host.js.map +1 -0
  135. package/dist/runtime/litert-lm/model-yml.d.ts +8 -0
  136. package/dist/runtime/litert-lm/model-yml.js +67 -0
  137. package/dist/runtime/litert-lm/model-yml.js.map +1 -0
  138. package/dist/runtime/litert-lm/npu.d.ts +11 -0
  139. package/dist/runtime/litert-lm/npu.js +24 -0
  140. package/dist/runtime/litert-lm/npu.js.map +1 -0
  141. package/dist/runtime/litert-lm/runtime.d.ts +99 -0
  142. package/dist/runtime/litert-lm/runtime.js +354 -0
  143. package/dist/runtime/litert-lm/runtime.js.map +1 -0
  144. package/dist/runtime/shared/external-sessions.js +1 -0
  145. package/dist/runtime/shared/external-sessions.js.map +1 -1
  146. package/dist/server/control/router.js +2 -0
  147. package/dist/server/control/router.js.map +1 -1
  148. package/dist/server/control/routes/litert-lm.d.ts +11 -0
  149. package/dist/server/control/routes/litert-lm.js +33 -0
  150. package/dist/server/control/routes/litert-lm.js.map +1 -0
  151. package/dist/server/control/routes/public-server.js +22 -0
  152. package/dist/server/control/routes/public-server.js.map +1 -1
  153. package/dist/server/control/types.d.ts +16 -1
  154. package/dist/server/control/types.js.map +1 -1
  155. package/dist/server/http.js +3 -0
  156. package/dist/server/http.js.map +1 -1
  157. package/dist/server/public/errors.d.ts +17 -0
  158. package/dist/server/public/errors.js +28 -0
  159. package/dist/server/public/errors.js.map +1 -1
  160. package/dist/server/public/forward.d.ts +20 -1
  161. package/dist/server/public/forward.js +64 -14
  162. package/dist/server/public/forward.js.map +1 -1
  163. package/dist/server/public/listing.d.ts +6 -0
  164. package/dist/server/public/listing.js +25 -3
  165. package/dist/server/public/listing.js.map +1 -1
  166. package/dist/server/public/responses.js +21 -10
  167. package/dist/server/public/responses.js.map +1 -1
  168. package/dist/server/public/subscription.js +2 -2
  169. package/dist/server/public/subscription.js.map +1 -1
  170. package/dist/server/public/types.d.ts +5 -0
  171. package/dist/server/public/videos-params.js +6 -1
  172. package/dist/server/public/videos-params.js.map +1 -1
  173. package/dist/settings/schema/litert-lm.json +37 -0
  174. package/dist/settings/schema.js +9 -0
  175. package/dist/settings/schema.js.map +1 -1
  176. package/dist/version.d.ts +1 -1
  177. package/dist/version.js +1 -1
  178. package/package.json +6 -1
@@ -0,0 +1,99 @@
1
+ /**
2
+ * The `litert-lm` provider's sessions (openspec change `add-litert-lm-runtime`, task 6.3, design D5):
3
+ * one `litert-host serve` process per model — this very binary in its hidden mode — on the sidecar
4
+ * table Foundry Local uses, behind the session gateway the managed engines use.
5
+ *
6
+ * load = model.yml → the variant runs on this platform (NPU: this machine's generation) → NPU: the
7
+ * OpenVINO accelerator is prepared → the active build → the file's facts (`inspect`, cached
8
+ * by path and mtime): newer engine needed? backend in the file? context cut to the file →
9
+ * [GPU claim, for gpu] → host on a random loopback port → readiness line → gateway (key + Host)
10
+ * → session on the gateway's port
11
+ *
12
+ * The host's server has no authentication; the gateway holds the key and lets through only
13
+ * `/v1/chat/completions` and `/v1/models`. The host serves the model under core's id (`--id`).
14
+ */
15
+ import type { LiteRtLmNpu, ModelYmlLiteRtLm, SessionInfo, UnloadResult } from '../../contracts/index.js';
16
+ import type { DataLayout } from '../../config/index.js';
17
+ import type { EngineHost } from '../../engine-builds/service.js';
18
+ import type { LiteRtLmPlatform } from '../../engine-builds/manifest.js';
19
+ import type { ProcessJournal } from '../../lock/index.js';
20
+ import type { ModelRegistry } from '../../models/index.js';
21
+ import type { ManagedRoute } from '../managed-text/index.js';
22
+ import type { CtxIncreaseResult, EmitFn, GpuClaimHook, GpuOccupancy, LocalLoadOptions, LocalRuntime, RecreateResult, SessionRoutePolicy } from '../shared/index.js';
23
+ import { spawnAndAwaitReady } from '../shared/index.js';
24
+ import type { BackendOutputSink } from '../shared/index.js';
25
+ import type { LiteRtFileInfo } from './host/library.js';
26
+ import type { LiteRtHostCommand } from './host-process.js';
27
+ /** The settings' `timeout` default, in seconds: opening the file, compiling GPU shaders, the server. */
28
+ export declare const LITERT_LM_DEFAULT_TIMEOUT_SECS = 600;
29
+ /** The context when neither the settings, `model.yml` nor the file name one. */
30
+ export declare const LITERT_LM_DEFAULT_CONTEXT = 4096;
31
+ /** What a LiteRT-LM session serves (design D5); anything else is refused before it reaches the host. */
32
+ export declare const LITERT_LM_ROUTES: readonly ManagedRoute[];
33
+ /** Whether a variant's backend runs here: `cpu` and `gpu` on every platform, `npu` on Windows only. */
34
+ export declare function backendRunsOn(platform: LiteRtLmPlatform, backend: ModelYmlLiteRtLm['backend']): boolean;
35
+ /** `ctx_len` of the settings (0: the model's own), else `model.yml`'s, cut to the file's maximum. */
36
+ export declare function engineContext(settingCtx: unknown, block: ModelYmlLiteRtLm, fileMax: number | null): number;
37
+ export interface LiteRtLmRuntimeOptions {
38
+ layout: DataLayout;
39
+ registry: ModelRegistry;
40
+ instanceId: string;
41
+ /** Which wheel this host runs (`liteRtLmHostPlatform`); the runtime exists only where there is one. */
42
+ hostPlatform: LiteRtLmPlatform;
43
+ /** This binary in its `litert-host` mode (`liteRtHostCommand`). */
44
+ hostCommand: LiteRtHostCommand;
45
+ /** The active build (engine-builds): its directory and LiteRT-LM version; nothing installed. */
46
+ resolveBuild: () => Promise<{
47
+ dir: string;
48
+ version: string;
49
+ } | undefined>;
50
+ /** The prepared OpenVINO libraries (task 6.4); `undefined` while not prepared. */
51
+ openVinoLibs: () => Promise<string | undefined>;
52
+ /** This machine's Intel NPU generation (task 6.4); `null` without one LiteRT-LM files target. */
53
+ npuGeneration: () => Promise<LiteRtLmNpu | null>;
54
+ /** The same live trusted-hosts list `:1337` and the managed gateways use. */
55
+ trustedHosts: string[];
56
+ /** The `litert-lm` provider settings, re-read per load. */
57
+ readSettings: () => Promise<Record<string, unknown>>;
58
+ journal?: ProcessJournal | undefined;
59
+ emit?: EmitFn;
60
+ baseEnv?: NodeJS.ProcessEnv;
61
+ backendOutput?: BackendOutputSink;
62
+ log?: (level: 'debug' | 'info' | 'warn' | 'error', message: string) => void;
63
+ /** GPU residency (spec `gpu-residency`): a `gpu` variant holds every card. */
64
+ claimGpu?: GpuClaimHook | undefined;
65
+ /** Test seams. */
66
+ spawn?: typeof spawnAndAwaitReady;
67
+ inspectFile?: (buildDir: string, file: string) => Promise<LiteRtFileInfo>;
68
+ }
69
+ export declare class LiteRtLmRuntime implements LocalRuntime {
70
+ private readonly options;
71
+ private readonly table;
72
+ private readonly emit;
73
+ /** Loads past their GPU claim and not yet a session. */
74
+ private readonly claimed;
75
+ /** `inspect` answers by `<path>|<mtime>|<build>`: a file that changed is read again. */
76
+ private readonly facts;
77
+ get registry(): ModelRegistry;
78
+ constructor(options: LiteRtLmRuntimeOptions);
79
+ list(): SessionInfo[];
80
+ findSession(modelId: string): SessionInfo | undefined;
81
+ getLoadedModels(): string[];
82
+ isLoading(modelId: string): boolean;
83
+ /** A `gpu` session holds every card (the library picks one we cannot name); `cpu` and `npu` none. */
84
+ gpuOccupancy(): GpuOccupancy[];
85
+ /** What the engine-builds module needs: the load queue, and the builds sessions run from (design D2). */
86
+ engineHost(): EngineHost;
87
+ routePolicy(modelId: string): SessionRoutePolicy | undefined;
88
+ /** The file's facts, read by the build's own host once per path, modification time and build. */
89
+ inspect(buildDir: string, file: string): Promise<LiteRtFileInfo>;
90
+ load(modelId: string, opts?: LocalLoadOptions): Promise<SessionInfo>;
91
+ private start;
92
+ private startHost;
93
+ /** Waits for the host to exit; the gateway goes with it. */
94
+ unload(modelId: string): Promise<UnloadResult>;
95
+ /** The context is fixed when the engine is created: nothing to grow. */
96
+ autoIncreaseCtx(modelId: string): Promise<CtxIncreaseResult>;
97
+ recreateSession(modelId: string): Promise<RecreateResult>;
98
+ shutdown(): Promise<void>;
99
+ }
@@ -0,0 +1,354 @@
1
+ /**
2
+ * The `litert-lm` provider's sessions (openspec change `add-litert-lm-runtime`, task 6.3, design D5):
3
+ * one `litert-host serve` process per model — this very binary in its hidden mode — on the sidecar
4
+ * table Foundry Local uses, behind the session gateway the managed engines use.
5
+ *
6
+ * load = model.yml → the variant runs on this platform (NPU: this machine's generation) → NPU: the
7
+ * OpenVINO accelerator is prepared → the active build → the file's facts (`inspect`, cached
8
+ * by path and mtime): newer engine needed? backend in the file? context cut to the file →
9
+ * [GPU claim, for gpu] → host on a random loopback port → readiness line → gateway (key + Host)
10
+ * → session on the gateway's port
11
+ *
12
+ * The host's server has no authentication; the gateway holds the key and lets through only
13
+ * `/v1/chat/completions` and `/v1/models`. The host serves the model under core's id (`--id`).
14
+ */
15
+ import { stat } from 'node:fs/promises';
16
+ import { join } from 'node:path';
17
+ import { AtomicCoreError } from '../../contracts/index.js';
18
+ import { generateGatewayKey, startManagedGateway } from '../managed-text/index.js';
19
+ import { backendOutputReporter, randomFreePort, SidecarTable, spawnAndAwaitReady, throwIfLoadCancelled, } from '../shared/index.js';
20
+ import { compareVersions } from '../../backend/index.js';
21
+ import { runLiteRtHostInspect } from './host-process.js';
22
+ import { readLiteRtLmBlock } from './model-yml.js';
23
+ /** The settings' `timeout` default, in seconds: opening the file, compiling GPU shaders, the server. */
24
+ export const LITERT_LM_DEFAULT_TIMEOUT_SECS = 600;
25
+ /** The context when neither the settings, `model.yml` nor the file name one. */
26
+ export const LITERT_LM_DEFAULT_CONTEXT = 4096;
27
+ /** What a LiteRT-LM session serves (design D5); anything else is refused before it reaches the host. */
28
+ export const LITERT_LM_ROUTES = [
29
+ { method: 'POST', path: '/v1/chat/completions' },
30
+ { method: 'GET', path: '/v1/models' },
31
+ ];
32
+ /** Whether a variant's backend runs here: `cpu` and `gpu` on every platform, `npu` on Windows only. */
33
+ export function backendRunsOn(platform, backend) {
34
+ return backend !== 'npu' || platform === 'win-x64';
35
+ }
36
+ /** `ctx_len` of the settings (0: the model's own), else `model.yml`'s, cut to the file's maximum. */
37
+ export function engineContext(settingCtx, block, fileMax) {
38
+ const asked = Number(settingCtx) > 0
39
+ ? Math.round(Number(settingCtx))
40
+ : (block.context_length ?? fileMax ?? LITERT_LM_DEFAULT_CONTEXT);
41
+ return fileMax !== null ? Math.min(asked, fileMax) : asked;
42
+ }
43
+ /** The host's exit codes (`host/run.ts` `EXIT`) as the core's errors. */
44
+ function hostError(exitCode, stderr) {
45
+ const said = stderr.trim().split('\n').slice(-5).join('\n');
46
+ const last = stderr.trim().split('\n').at(-1) ?? '';
47
+ let line = {};
48
+ try {
49
+ line = JSON.parse(last);
50
+ }
51
+ catch {
52
+ // Not one of the host's JSON error lines.
53
+ }
54
+ if (exitCode === 6)
55
+ return new AtomicCoreError('LITERT_LM_MODEL_REQUIRES_NEWER_ENGINE', `This model needs LiteRT-LM ${String(line['required'] ?? 'newer')}; update LiteRT-LM first.`, said);
56
+ if (exitCode === 7)
57
+ return new AtomicCoreError('LITERT_LM_VARIANT_UNSUPPORTED', 'This model file does not run on its backend here.', said);
58
+ return new AtomicCoreError('LITERT_LM_HOST_ERROR', exitCode === 3
59
+ ? 'The LiteRT-LM library does not load on this computer.'
60
+ : 'The LiteRT-LM host stopped before the model was ready.', said || `exit code ${String(exitCode)}`);
61
+ }
62
+ export class LiteRtLmRuntime {
63
+ options;
64
+ table;
65
+ emit;
66
+ /** Loads past their GPU claim and not yet a session. */
67
+ claimed = new Map();
68
+ /** `inspect` answers by `<path>|<mtime>|<build>`: a file that changed is read again. */
69
+ facts = new Map();
70
+ get registry() {
71
+ return this.options.registry;
72
+ }
73
+ constructor(options) {
74
+ this.options = options;
75
+ this.emit = options.emit ?? (() => { });
76
+ this.table = new SidecarTable({
77
+ provider: 'litert-lm',
78
+ instanceId: options.instanceId,
79
+ journal: options.journal,
80
+ emit: this.emit,
81
+ engine: 'LiteRT-LM',
82
+ unloadGraceMs: 15_000,
83
+ shutdownGraceMs: 5_000,
84
+ describeExit: (exit, stderr) => `The LiteRT-LM host exited (${exit.code !== null ? `code ${exit.code}` : `signal ${String(exit.signal)}`})${stderr.trim() ? `: ${stderr.trim().split('\n').slice(-3).join(' ')}` : ''}`,
85
+ });
86
+ }
87
+ list() {
88
+ return this.table.list();
89
+ }
90
+ findSession(modelId) {
91
+ return this.table.findSession(modelId);
92
+ }
93
+ getLoadedModels() {
94
+ return this.table.getLoadedModels();
95
+ }
96
+ isLoading(modelId) {
97
+ return this.table.isLoading(modelId);
98
+ }
99
+ /** A `gpu` session holds every card (the library picks one we cannot name); `cpu` and `npu` none. */
100
+ gpuOccupancy() {
101
+ const ready = this.table.getLoadedModels().flatMap((modelId) => {
102
+ const session = this.table.get(modelId);
103
+ return session
104
+ ? [
105
+ {
106
+ model_id: modelId,
107
+ cards: session.extra.block.backend === 'gpu' ? 'all' : [],
108
+ auxiliary: false,
109
+ state: 'ready',
110
+ },
111
+ ]
112
+ : [];
113
+ });
114
+ const loading = [...this.claimed.values()].filter((claim) => !this.table.findSession(claim.model_id));
115
+ return [...ready, ...loading];
116
+ }
117
+ /** What the engine-builds module needs: the load queue, and the builds sessions run from (design D2). */
118
+ engineHost() {
119
+ return {
120
+ exclusive: (fn) => this.table.exclusive(fn),
121
+ inUse: async () => [
122
+ ...new Set(this.table.getLoadedModels().flatMap((modelId) => {
123
+ const build = this.table.get(modelId)?.extra.build;
124
+ return build ? [build] : [];
125
+ })),
126
+ ],
127
+ activate: async (dir) => {
128
+ for (const modelId of this.table.getLoadedModels())
129
+ if (this.table.get(modelId)?.extra.build !== dir)
130
+ await this.unload(modelId);
131
+ },
132
+ };
133
+ }
134
+ routePolicy(modelId) {
135
+ const session = this.table.get(modelId);
136
+ if (!session)
137
+ return undefined;
138
+ return {
139
+ routes: LITERT_LM_ROUTES,
140
+ tools: session.extra.block.tools,
141
+ structuredOutput: true,
142
+ mapError: () => null,
143
+ contextLength: session.extra.context,
144
+ };
145
+ }
146
+ /** The file's facts, read by the build's own host once per path, modification time and build. */
147
+ async inspect(buildDir, file) {
148
+ const mtime = await stat(file).then((s) => s.mtimeMs, () => {
149
+ throw new AtomicCoreError('MODEL_NOT_FOUND', `The model file ${file} is missing.`);
150
+ });
151
+ const key = `${file}|${mtime}|${buildDir}`;
152
+ const known = this.facts.get(key);
153
+ if (known)
154
+ return known;
155
+ const read = this.options.inspectFile
156
+ ? await this.options.inspectFile(buildDir, file)
157
+ : await runLiteRtHostInspect(this.options.hostCommand, buildDir, file, {
158
+ env: this.options.baseEnv ?? process.env,
159
+ });
160
+ this.facts.set(key, read);
161
+ return read;
162
+ }
163
+ async load(modelId, opts = {}) {
164
+ this.table.assertRunning();
165
+ return this.table.load(modelId, () => this.start(modelId, opts), opts.signal);
166
+ }
167
+ async start(modelId, opts) {
168
+ throwIfLoadCancelled(opts.signal);
169
+ const registry = this.options.registry;
170
+ const yml = await registry.read(modelId);
171
+ const block = readLiteRtLmBlock(yml);
172
+ if (!backendRunsOn(this.options.hostPlatform, block.backend))
173
+ throw new AtomicCoreError('LITERT_LM_VARIANT_UNSUPPORTED', `LiteRT-LM runs ${block.backend.toUpperCase()} variants on Windows x64 only, not on ${this.options.hostPlatform}.`);
174
+ let ovLibs;
175
+ if (block.backend === 'npu') {
176
+ const generation = await this.options.npuGeneration();
177
+ if (generation !== block.npu)
178
+ throw new AtomicCoreError('LITERT_LM_VARIANT_UNSUPPORTED', `This variant is built for the ${block.npu ?? 'unknown'} NPU; this computer has ${generation ?? 'no Intel NPU LiteRT-LM supports'}.`);
179
+ ovLibs = await this.options.openVinoLibs();
180
+ if (!ovLibs)
181
+ throw new AtomicCoreError('LITERT_LM_ACCELERATOR_NOT_PREPARED', 'OpenVINO is not prepared; prepare it on the LiteRT-LM page before loading an NPU model.');
182
+ }
183
+ const build = await this.options.resolveBuild();
184
+ if (!build)
185
+ throw new AtomicCoreError('BINARY_NOT_FOUND', 'LiteRT-LM is not installed; install it before loading a model.');
186
+ const { modelPath } = registry.resolvePaths(yml);
187
+ const info = await this.inspect(build.dir, modelPath);
188
+ if (info.min_runtime_version && compareVersions(info.min_runtime_version, build.version) > 0)
189
+ throw new AtomicCoreError('LITERT_LM_MODEL_REQUIRES_NEWER_ENGINE', `This model needs LiteRT-LM ${info.min_runtime_version}; the active build is ${build.version}. Update LiteRT-LM first.`, info.min_runtime_version);
190
+ if (!info.backends.includes(block.backend))
191
+ throw new AtomicCoreError('LITERT_LM_VARIANT_UNSUPPORTED', `This file runs on ${info.backends.join(', ') || 'no backend'}, not ${block.backend}.`);
192
+ const settings = await this.options.readSettings();
193
+ const context = engineContext(settings['ctx_len'], block, info.max_context_tokens);
194
+ const timeoutSecs = opts.timeoutSecs ??
195
+ (Number(settings['timeout']) > 0 ? Number(settings['timeout']) : LITERT_LM_DEFAULT_TIMEOUT_SECS);
196
+ const speculative = settings['speculative_decoding'] !== false && info.speculative_decoding;
197
+ if (!(opts.bypassAutoUnload ?? false))
198
+ for (const loaded of this.table.getLoadedModels()) {
199
+ throwIfLoadCancelled(opts.signal);
200
+ await this.unload(loaded);
201
+ }
202
+ this.table.assertRunning();
203
+ throwIfLoadCancelled(opts.signal);
204
+ // GPU residency (design D6): a gpu variant holds every card; NPU and CPU claim nothing.
205
+ const holdsGpu = block.backend === 'gpu';
206
+ const occupancy = {
207
+ model_id: modelId,
208
+ cards: holdsGpu ? 'all' : [],
209
+ auxiliary: false,
210
+ state: 'loading',
211
+ };
212
+ const hold = () => void this.claimed.set(modelId, occupancy);
213
+ try {
214
+ if (holdsGpu && this.options.claimGpu) {
215
+ await this.options.claimGpu({ model_id: modelId, cards: 'all', auxiliary: false }, opts.signal, hold);
216
+ this.table.assertRunning();
217
+ throwIfLoadCancelled(opts.signal);
218
+ }
219
+ hold();
220
+ return await this.startHost(modelId, opts, {
221
+ block,
222
+ build,
223
+ modelPath,
224
+ context,
225
+ timeoutSecs,
226
+ speculative,
227
+ ovLibs,
228
+ });
229
+ }
230
+ finally {
231
+ if (this.claimed.get(modelId) === occupancy)
232
+ this.claimed.delete(modelId);
233
+ }
234
+ }
235
+ async startHost(modelId, opts, launch) {
236
+ const { block, build, modelPath, context, timeoutSecs, speculative, ovLibs } = launch;
237
+ const paths = this.options.layout.provider('litert-lm');
238
+ const hostPort = await randomFreePort(this.table.usedPorts());
239
+ const args = [
240
+ ...this.options.hostCommand.args,
241
+ 'serve',
242
+ '--lib',
243
+ build.dir,
244
+ '--engine-version',
245
+ build.version,
246
+ '--model',
247
+ modelPath,
248
+ '--backend',
249
+ block.backend,
250
+ '--max-tokens',
251
+ String(context),
252
+ '--port',
253
+ String(hostPort),
254
+ '--cache',
255
+ paths.cacheDir,
256
+ '--id',
257
+ modelId,
258
+ ...(ovLibs
259
+ ? ['--dispatch', join(build.dir, 'lib', 'vendors', 'intel_openvino', 'dispatch'), '--ov-libs', ovLibs]
260
+ : []),
261
+ ...(speculative ? ['--speculative'] : []),
262
+ ...(block.reasoning ? ['--reasoning'] : []),
263
+ ];
264
+ const env = {};
265
+ for (const [key, value] of Object.entries(this.options.baseEnv ?? process.env))
266
+ if (value !== undefined)
267
+ env[key] = value;
268
+ const exe = this.options.hostCommand.exe;
269
+ const reportOutput = backendOutputReporter(this.options.backendOutput, this.options.log);
270
+ this.options.log?.('info', `starting the LiteRT-LM host for ${modelId} (${block.backend}) from ${build.dir}`);
271
+ const started = await (this.options.spawn ?? spawnAndAwaitReady)({ exe, args, env, stdin: 'pipe', platform: process.platform }, {
272
+ timeoutMs: timeoutSecs * 1000,
273
+ signal: this.table.signal,
274
+ ...(opts.signal ? { cancelSignal: opts.signal } : {}),
275
+ streamReadyMarkers: { stdout: ['"ready":true'], stderr: [] },
276
+ timeoutError: (stderr) => new AtomicCoreError('MODEL_LOAD_TIMED_OUT', `The LiteRT-LM model did not load within ${timeoutSecs} seconds.`, stderr.trim().split('\n').slice(-5).join('\n')),
277
+ classifyExit: (exit, stderr) => hostError(exit.code, stderr),
278
+ onLine: (stream, line) => {
279
+ if (opts.verbose)
280
+ this.emit('core:log', { level: 'debug', msg: `[litert-lm/${modelId}][${stream}] ${line}` });
281
+ reportOutput({ provider: 'litert-lm', model: modelId, stream, line });
282
+ },
283
+ });
284
+ let gateway;
285
+ const apiKey = generateGatewayKey();
286
+ try {
287
+ gateway = await startManagedGateway({
288
+ upstream: { host: '127.0.0.1', port: hostPort },
289
+ apiKey,
290
+ allowedHosts: this.options.trustedHosts,
291
+ routes: LITERT_LM_ROUTES,
292
+ });
293
+ }
294
+ catch (error) {
295
+ await started.process.terminate(this.table.isClosing ? 0 : 5_000).catch(() => { });
296
+ throw error;
297
+ }
298
+ void started.process.exited.then(() => gateway.close().catch(() => { }));
299
+ try {
300
+ return await this.table.adopt({
301
+ info: {
302
+ pid: started.process.pid,
303
+ port: gateway.port,
304
+ model_id: modelId,
305
+ model_path: modelPath,
306
+ is_embedding: false,
307
+ api_key: apiKey,
308
+ },
309
+ process: started.process,
310
+ exe,
311
+ extra: { build: build.dir, block, gateway, context },
312
+ }, opts.signal);
313
+ }
314
+ catch (error) {
315
+ await gateway.close().catch(() => { });
316
+ throw error;
317
+ }
318
+ }
319
+ /** Waits for the host to exit; the gateway goes with it. */
320
+ async unload(modelId) {
321
+ this.table.assertRunning();
322
+ const gateway = this.table.get(modelId)?.extra.gateway;
323
+ const result = await this.table.unload(modelId);
324
+ if (result.success)
325
+ await gateway?.close().catch(() => { });
326
+ return result;
327
+ }
328
+ /** The context is fixed when the engine is created: nothing to grow. */
329
+ async autoIncreaseCtx(modelId) {
330
+ return this.table.get(modelId)
331
+ ? { ok: false, reason: 'unsupported' }
332
+ : { ok: false, reason: 'not-loaded' };
333
+ }
334
+ async recreateSession(modelId) {
335
+ this.table.assertRunning();
336
+ if (!this.table.get(modelId))
337
+ return { ok: false, reason: 'not-loaded' };
338
+ await this.unload(modelId);
339
+ return { ok: true, session: await this.load(modelId, { bypassAutoUnload: true }) };
340
+ }
341
+ async shutdown() {
342
+ const gateways = this.table.getLoadedModels().flatMap((id) => {
343
+ const gateway = this.table.get(id)?.extra.gateway;
344
+ return gateway ? [gateway] : [];
345
+ });
346
+ try {
347
+ await this.table.shutdown();
348
+ }
349
+ finally {
350
+ await Promise.all(gateways.map((gateway) => gateway.close().catch(() => { })));
351
+ }
352
+ }
353
+ }
354
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/runtime/litert-lm/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAO1D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAYlF,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD,wGAAwG;AACxG,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAA;AACjD,gFAAgF;AAChF,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAA;AAE7C,wGAAwG;AACxG,MAAM,CAAC,MAAM,gBAAgB,GAA4B;IACvD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE;IAChD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;CACtC,CAAA;AAED,uGAAuG;AACvG,MAAM,UAAU,aAAa,CAAC,QAA0B,EAAE,OAAoC;IAC5F,OAAO,OAAO,KAAK,KAAK,IAAI,QAAQ,KAAK,SAAS,CAAA;AACpD,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,aAAa,CAAC,UAAmB,EAAE,KAAuB,EAAE,OAAsB;IAChG,MAAM,KAAK,GACT,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QACpB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,OAAO,IAAI,yBAAyB,CAAC,CAAA;IACpE,OAAO,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AAC5D,CAAC;AAuCD,yEAAyE;AACzE,SAAS,SAAS,CAAC,QAAuB,EAAE,MAAc;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IACnD,IAAI,IAAI,GAA4B,EAAE,CAAA;IACtC,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAA;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;IACD,IAAI,QAAQ,KAAK,CAAC;QAChB,OAAO,IAAI,eAAe,CACxB,uCAAuC,EACvC,8BAA8B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,2BAA2B,EAC5F,IAAI,CACL,CAAA;IACH,IAAI,QAAQ,KAAK,CAAC;QAChB,OAAO,IAAI,eAAe,CACxB,+BAA+B,EAC/B,mDAAmD,EACnD,IAAI,CACL,CAAA;IACH,OAAO,IAAI,eAAe,CACxB,sBAAsB,EACtB,QAAQ,KAAK,CAAC;QACZ,CAAC,CAAC,uDAAuD;QACzD,CAAC,CAAC,wDAAwD,EAC5D,IAAI,IAAI,aAAa,MAAM,CAAC,QAAQ,CAAC,EAAE,CACxC,CAAA;AACH,CAAC;AAED,MAAM,OAAO,eAAe;IAYG;IAXZ,KAAK,CAAkC;IACvC,IAAI,CAAQ;IAC7B,wDAAwD;IACvC,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAA;IAC1D,wFAAwF;IACvE,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAA;IAE1D,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;IAC9B,CAAC;IAED,YAA6B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;QAC1D,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAqB;YAChD,QAAQ,EAAE,WAAW;YACrB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,WAAW;YACnB,aAAa,EAAE,MAAM;YACrB,eAAe,EAAE,KAAK;YACtB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAC7B,8BAA8B,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IACtG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EACzE,EAAE;SACL,CAAC,CAAA;IACJ,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IAC1B,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAA;IACrC,CAAC;IAED,SAAS,CAAC,OAAe;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC;IAED,qGAAqG;IACrG,YAAY;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAkB,EAAE;YAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACvC,OAAO,OAAO;gBACZ,CAAC,CAAC;oBACE;wBACE,QAAQ,EAAE,OAAO;wBACjB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBACzD,SAAS,EAAE,KAAK;wBAChB,KAAK,EAAE,OAAO;qBACf;iBACF;gBACH,CAAC,CAAC,EAAE,CAAA;QACR,CAAC,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACrG,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAA;IAC/B,CAAC;IAED,yGAAyG;IACzG,UAAU;QACR,OAAO;YACL,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3C,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;gBACjB,GAAG,IAAI,GAAG,CACR,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,CAAA;oBAClD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC7B,CAAC,CAAC,CACH;aACF;YACD,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBACtB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;oBAChD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,KAAK,GAAG;wBAAE,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAChF,CAAC;SACF,CAAA;IACH,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAA;QAC9B,OAAO;YACL,MAAM,EAAE,gBAAgB;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;YAChC,gBAAgB,EAAE,IAAI;YACtB,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;YACpB,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;SACrC,CAAA;IACH,CAAC;IAED,iGAAiG;IACjG,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,IAAY;QAC1C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAChB,GAAG,EAAE;YACH,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,kBAAkB,IAAI,cAAc,CAAC,CAAA;QACpF,CAAC,CACF,CAAA;QACD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAA;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;YACnC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC;YAChD,CAAC,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACnE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG;aACzC,CAAC,CAAA;QACN,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,OAAyB,EAAE;QACrD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC/E,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,IAAsB;QACzD,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;QACtC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1D,MAAM,IAAI,eAAe,CACvB,+BAA+B,EAC/B,kBAAkB,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,yCAAyC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CACnH,CAAA;QACH,IAAI,MAA0B,CAAA;QAC9B,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAA;YACrD,IAAI,UAAU,KAAK,KAAK,CAAC,GAAG;gBAC1B,MAAM,IAAI,eAAe,CACvB,+BAA+B,EAC/B,iCAAiC,KAAK,CAAC,GAAG,IAAI,SAAS,2BAA2B,UAAU,IAAI,iCAAiC,GAAG,CACrI,CAAA;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAA;YAC1C,IAAI,CAAC,MAAM;gBACT,MAAM,IAAI,eAAe,CACvB,oCAAoC,EACpC,yFAAyF,CAC1F,CAAA;QACL,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAA;QAC/C,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,gEAAgE,CACjE,CAAA;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QACrD,IAAI,IAAI,CAAC,mBAAmB,IAAI,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAC1F,MAAM,IAAI,eAAe,CACvB,uCAAuC,EACvC,8BAA8B,IAAI,CAAC,mBAAmB,yBAAyB,KAAK,CAAC,OAAO,2BAA2B,EACvH,IAAI,CAAC,mBAAmB,CACzB,CAAA;QACH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;YACxC,MAAM,IAAI,eAAe,CACvB,+BAA+B,EAC/B,qBAAqB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,SAAS,KAAK,CAAC,OAAO,GAAG,CACvF,CAAA;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAA;QAClD,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAClF,MAAM,WAAW,GACf,IAAI,CAAC,WAAW;YAChB,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAA;QAClG,MAAM,WAAW,GAAG,QAAQ,CAAC,sBAAsB,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAA;QAE3F,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;YACnC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;gBAClD,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACjC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC3B,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;QAC1B,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEjC,wFAAwF;QACxF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAA;QACxC,MAAM,SAAS,GAAiB;YAC9B,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC5B,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,SAAS;SACjB,CAAA;QACD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5D,IAAI,CAAC;YACH,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;gBACrG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;gBAC1B,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACnC,CAAC;YACD,IAAI,EAAE,CAAA;YACN,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;gBACzC,KAAK;gBACL,KAAK;gBACL,SAAS;gBACT,OAAO;gBACP,WAAW;gBACX,WAAW;gBACX,MAAM;aACP,CAAC,CAAA;QACJ,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CACrB,OAAe,EACf,IAAsB,EACtB,MAQC;QAED,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;QACrF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QACvD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;QAC7D,MAAM,IAAI,GAAG;YACX,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;YAChC,OAAO;YACP,OAAO;YACP,KAAK,CAAC,GAAG;YACT,kBAAkB;YAClB,KAAK,CAAC,OAAO;YACb,SAAS;YACT,SAAS;YACT,WAAW;YACX,KAAK,CAAC,OAAO;YACb,cAAc;YACd,MAAM,CAAC,OAAO,CAAC;YACf,QAAQ;YACR,MAAM,CAAC,QAAQ,CAAC;YAChB,SAAS;YACT,KAAK,CAAC,QAAkB;YACxB,MAAM;YACN,OAAO;YACP,GAAG,CAAC,MAAM;gBACR,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC;gBACtG,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAA;QACD,MAAM,GAAG,GAA2B,EAAE,CAAA;QACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;YAC5E,IAAI,KAAK,KAAK,SAAS;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAA;QACxC,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACxF,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAChB,MAAM,EACN,mCAAmC,OAAO,KAAK,KAAK,CAAC,OAAO,UAAU,KAAK,CAAC,GAAG,EAAE,CAClF,CAAA;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,kBAAkB,CAAC,CAC9D,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAC7D;YACE,SAAS,EAAE,WAAW,GAAG,IAAI;YAC7B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,kBAAkB,EAAE,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;YAC5D,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CACvB,IAAI,eAAe,CACjB,sBAAsB,EACtB,2CAA2C,WAAW,WAAW,EACjE,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/C;YACH,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;YAC5D,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBACvB,IAAI,IAAI,CAAC,OAAO;oBACd,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,OAAO,KAAK,MAAM,KAAK,IAAI,EAAE,EAAE,CAAC,CAAA;gBAC7F,YAAY,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YACvE,CAAC;SACF,CACF,CAAA;QACD,IAAI,OAAuB,CAAA;QAC3B,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAA;QACnC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,mBAAmB,CAAC;gBAClC,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC/C,MAAM;gBACN,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;gBACvC,MAAM,EAAE,gBAAgB;aACzB,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACjF,MAAM,KAAK,CAAA;QACb,CAAC;QACD,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAA;QACvE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAC3B;gBACE,IAAI,EAAE;oBACJ,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG;oBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,QAAQ,EAAE,OAAO;oBACjB,UAAU,EAAE,SAAS;oBACrB,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,MAAM;iBAChB;gBACD,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG;gBACH,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;aACrD,EACD,IAAI,CAAC,MAAM,CACZ,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACrC,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC/C,IAAI,MAAM,CAAC,OAAO;YAAE,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC1D,OAAO,MAAM,CAAA;IACf,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;YAC5B,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE;YACtC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA;QACxE,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC1B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;IACpF,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAA;YACjD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACjC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC7B,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/E,CAAC;IACH,CAAC;CACF"}
@@ -27,6 +27,7 @@ const PROVIDERS = new Set([
27
27
  'vllm',
28
28
  'sglang',
29
29
  'foundry-local',
30
+ 'litert-lm',
30
31
  ]);
31
32
  export class ExternalSessions {
32
33
  options;
@@ -1 +1 @@
1
- {"version":3,"file":"external-sessions.js","sourceRoot":"","sources":["../../../src/runtime/shared/external-sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external-sessions.js","sourceRoot":"","sources":["../../../src/runtime/shared/external-sessions.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ import { registerDiffusionVideoRoutes } from './routes/diffusion-video.js';
16
16
  import { registerDiskRoutes } from './routes/disk.js';
17
17
  import { registerEngineBuildRoutes } from './routes/engine-builds.js';
18
18
  import { registerFoundryLocalRoutes } from './routes/foundry-local.js';
19
+ import { registerLiteRtLmRoutes } from './routes/litert-lm.js';
19
20
  import { registerEngineRoutes } from './routes/engines.js';
20
21
  import { registerEnvironmentRoutes } from './routes/environments.js';
21
22
  import { registerExternalSessionRoutes } from './routes/external-sessions.js';
@@ -58,6 +59,7 @@ export function buildRouter(deps, self) {
58
59
  registerBackendRoutes(router, deps, ctx);
59
60
  registerEngineBuildRoutes(router, deps, ctx);
60
61
  registerFoundryLocalRoutes(router, deps, ctx);
62
+ registerLiteRtLmRoutes(router, deps, ctx);
61
63
  registerEngineRoutes(router, deps, ctx);
62
64
  registerHardwareRoutes(router, deps, ctx);
63
65
  registerDiskRoutes(router, deps, ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/server/control/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/server/control/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * LiteRT-LM's accelerator (openspec change `add-litert-lm-runtime`, task 6.4, design D3): what this
3
+ * machine is offered, and the explicit `prepare` a client orders. The same shape as Foundry Local's
4
+ * routes; progress goes out as `litert-lm:accelerators`, the answer to `prepare` is its summary.
5
+ */
6
+ import type { LiteRtLmPrepareRequest } from '../../../contracts/index.js';
7
+ import type { Router } from '../../http.js';
8
+ import type { ControlRouteContext, ControlServerDeps } from '../types.js';
9
+ /** Foundry Local's prepare body plus the `proxy` an engine install takes. */
10
+ export declare function parseLiteRtLmPrepareBody(raw: unknown): LiteRtLmPrepareRequest;
11
+ export declare function registerLiteRtLmRoutes(router: Router, deps: ControlServerDeps, ctx: ControlRouteContext): void;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * LiteRT-LM's accelerator (openspec change `add-litert-lm-runtime`, task 6.4, design D3): what this
3
+ * machine is offered, and the explicit `prepare` a client orders. The same shape as Foundry Local's
4
+ * routes; progress goes out as `litert-lm:accelerators`, the answer to `prepare` is its summary.
5
+ */
6
+ import { AtomicCoreError } from '../../../contracts/index.js';
7
+ import { readJsonBody, sendError, sendJson } from '../../http.js';
8
+ import { parsePrepareBody } from './foundry-local.js';
9
+ /** Foundry Local's prepare body plus the `proxy` an engine install takes. */
10
+ export function parseLiteRtLmPrepareBody(raw) {
11
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
12
+ throw new AtomicCoreError('INVALID_ARGUMENT', 'The request body must be a JSON object.');
13
+ const { proxy, ...rest } = raw;
14
+ if (proxy !== undefined && proxy !== null && (typeof proxy !== 'object' || Array.isArray(proxy)))
15
+ throw new AtomicCoreError('INVALID_ARGUMENT', 'proxy must be an object or null.');
16
+ return { ...parsePrepareBody(rest), ...(proxy !== undefined ? { proxy: proxy } : {}) };
17
+ }
18
+ export function registerLiteRtLmRoutes(router, deps, ctx) {
19
+ const { p } = ctx;
20
+ const absent = () => new AtomicCoreError('PROVIDER_NOT_FOUND', 'LiteRT-LM does not run on this computer.', 'litert-lm');
21
+ router.get(p('/runtimes/litert-lm/accelerators'), async (_req, res) => {
22
+ if (!deps.liteRtLm)
23
+ return sendError(res, absent());
24
+ sendJson(res, 200, await deps.liteRtLm.accelerators());
25
+ });
26
+ // Synchronous like an engine install: the answer is the summary, the steps go out as events.
27
+ router.post(p('/runtimes/litert-lm/accelerators/prepare'), async (req, res) => {
28
+ if (!deps.liteRtLm)
29
+ return sendError(res, absent());
30
+ sendJson(res, 200, await deps.liteRtLm.prepare(parseLiteRtLmPrepareBody(await readJsonBody(req))));
31
+ });
32
+ }
33
+ //# sourceMappingURL=litert-lm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"litert-lm.js","sourceRoot":"","sources":["../../../../src/server/control/routes/litert-lm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,6EAA6E;AAC7E,MAAM,UAAU,wBAAwB,CAAC,GAAY;IACnD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAC/D,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,yCAAyC,CAAC,CAAA;IAC1F,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,GAA8B,CAAA;IACzD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9F,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,kCAAkC,CAAC,CAAA;IACnF,OAAO,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAA2B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AAC9G,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAc,EACd,IAAuB,EACvB,GAAwB;IAExB,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAA;IACjB,MAAM,MAAM,GAAG,GAAG,EAAE,CAClB,IAAI,eAAe,CAAC,oBAAoB,EAAE,0CAA0C,EAAE,WAAW,CAAC,CAAA;IAEpG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,kCAAkC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACpE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;QACnD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,6FAA6F;IAC7F,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,0CAA0C,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5E,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;QACnD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACpG,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -26,5 +26,27 @@ export function registerPublicServerRoutes(router, deps, ctx) {
26
26
  deps.publicServer.setInspecting(body.enabled);
27
27
  sendJson(res, 200, { enabled: body.enabled });
28
28
  });
29
+ router.get(p('/server/selection'), (_req, res) => sendJson(res, 200, { models: deps.publicServer.selection() }));
30
+ // The whole selection, replaced: the app sends what its server page shows after every change.
31
+ router.put(p('/server/selection'), async (req, res) => {
32
+ const models = parseSelection(await readJsonBody(req));
33
+ if (!models)
34
+ return sendError(res, new AtomicCoreError('INVALID_ARGUMENT', 'selection needs {"models": [{"model": "<id>", "provider": "<provider>"}]} with non-empty strings'));
35
+ deps.publicServer.setSelection(models);
36
+ sendJson(res, 200, { models: deps.publicServer.selection() });
37
+ });
38
+ }
39
+ function parseSelection(body) {
40
+ const models = typeof body === 'object' && body !== null ? body.models : undefined;
41
+ if (!Array.isArray(models))
42
+ return undefined;
43
+ const parsed = [];
44
+ for (const entry of models) {
45
+ const { model, provider } = (typeof entry === 'object' && entry !== null ? entry : {});
46
+ if (typeof model !== 'string' || typeof provider !== 'string' || model === '' || provider === '')
47
+ return undefined;
48
+ parsed.push({ model, provider });
49
+ }
50
+ return parsed;
29
51
  }
30
52
  //# sourceMappingURL=public-server.js.map