@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.
- package/dist/app-daemon.js +5 -0
- package/dist/app-daemon.js.map +1 -1
- package/dist/cli/main.d.ts +1 -1
- package/dist/cli/main.js +5 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/client/control-client.d.ts +18 -1
- package/dist/client/control-client.js +27 -0
- package/dist/client/control-client.js.map +1 -1
- package/dist/cloud/registry.js +1 -0
- package/dist/cloud/registry.js.map +1 -1
- package/dist/config/paths.d.ts +4 -0
- package/dist/config/paths.js +13 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/contracts/control-api.d.ts +9 -0
- package/dist/contracts/diffusion.d.ts +17 -7
- package/dist/contracts/diffusion.js.map +1 -1
- package/dist/contracts/engine-builds.d.ts +1 -1
- package/dist/contracts/engine-builds.js +1 -1
- package/dist/contracts/engine-builds.js.map +1 -1
- package/dist/contracts/engines.d.ts +1 -1
- package/dist/contracts/engines.js +2 -0
- package/dist/contracts/engines.js.map +1 -1
- package/dist/contracts/errors.d.ts +9 -1
- package/dist/contracts/errors.js.map +1 -1
- package/dist/contracts/events.d.ts +3 -0
- package/dist/contracts/index.d.ts +1 -0
- package/dist/contracts/index.js +1 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/litert-lm.d.ts +97 -0
- package/dist/contracts/litert-lm.js +17 -0
- package/dist/contracts/litert-lm.js.map +1 -0
- package/dist/contracts/model-yml.d.ts +31 -0
- package/dist/contracts/model-yml.js +5 -0
- package/dist/contracts/model-yml.js.map +1 -1
- package/dist/contracts/session.d.ts +5 -1
- package/dist/contracts/session.js.map +1 -1
- package/dist/contracts/settings.d.ts +10 -1
- package/dist/contracts/settings.js.map +1 -1
- package/dist/core/atomic-core.d.ts +6 -1
- package/dist/core/atomic-core.js +6 -0
- package/dist/core/atomic-core.js.map +1 -1
- package/dist/core/create.js +141 -20
- package/dist/core/create.js.map +1 -1
- package/dist/diffusion/args.d.ts +8 -0
- package/dist/diffusion/args.js +10 -0
- package/dist/diffusion/args.js.map +1 -1
- package/dist/diffusion/compat.d.ts +3 -3
- package/dist/diffusion/compat.js +15 -10
- package/dist/diffusion/compat.js.map +1 -1
- package/dist/diffusion/recipe.d.ts +19 -2
- package/dist/diffusion/recipe.js +43 -20
- package/dist/diffusion/recipe.js.map +1 -1
- package/dist/diffusion/remote-job.js +6 -7
- package/dist/diffusion/remote-job.js.map +1 -1
- package/dist/diffusion/service.d.ts +1 -0
- package/dist/diffusion/service.js +4 -2
- package/dist/diffusion/service.js.map +1 -1
- package/dist/diffusion/video-history.js +3 -2
- package/dist/diffusion/video-history.js.map +1 -1
- package/dist/diffusion/video-recipe.d.ts +4 -1
- package/dist/diffusion/video-recipe.js +15 -11
- package/dist/diffusion/video-recipe.js.map +1 -1
- package/dist/diffusion/workflow.d.ts +2 -1
- package/dist/diffusion/workflow.js +3 -1
- package/dist/diffusion/workflow.js.map +1 -1
- package/dist/downloads/archive.d.ts +2 -1
- package/dist/downloads/archive.js +3 -2
- package/dist/downloads/archive.js.map +1 -1
- package/dist/engine-builds/engines.d.ts +22 -5
- package/dist/engine-builds/engines.js +44 -7
- package/dist/engine-builds/engines.js.map +1 -1
- package/dist/engine-builds/litert-lm.d.ts +29 -0
- package/dist/engine-builds/litert-lm.js +119 -0
- package/dist/engine-builds/litert-lm.js.map +1 -0
- package/dist/engine-builds/manifest.d.ts +55 -1
- package/dist/engine-builds/manifest.js +114 -1
- package/dist/engine-builds/manifest.js.map +1 -1
- package/dist/engine-builds/order.d.ts +2 -1
- package/dist/engine-builds/order.js +3 -1
- package/dist/engine-builds/order.js.map +1 -1
- package/dist/engine-builds/select.d.ts +19 -1
- package/dist/engine-builds/select.js +45 -0
- package/dist/engine-builds/select.js.map +1 -1
- package/dist/engine-builds/service.d.ts +8 -5
- package/dist/engine-builds/service.js +11 -4
- package/dist/engine-builds/service.js.map +1 -1
- package/dist/engines/service.d.ts +3 -1
- package/dist/engines/service.js +4 -1
- package/dist/engines/service.js.map +1 -1
- package/dist/host/recipes/executor-io-windows.d.ts +10 -1
- package/dist/host/recipes/executor-io-windows.js +9 -3
- package/dist/host/recipes/executor-io-windows.js.map +1 -1
- package/dist/router/resolve.d.ts +25 -4
- package/dist/router/resolve.js +34 -3
- package/dist/router/resolve.js.map +1 -1
- package/dist/runtime/environment/host-exec.d.ts +2 -0
- package/dist/runtime/environment/host-exec.js +15 -4
- package/dist/runtime/environment/host-exec.js.map +1 -1
- package/dist/runtime/litert-lm/accelerators.d.ts +54 -0
- package/dist/runtime/litert-lm/accelerators.js +176 -0
- package/dist/runtime/litert-lm/accelerators.js.map +1 -0
- package/dist/runtime/litert-lm/check.d.ts +44 -0
- package/dist/runtime/litert-lm/check.js +113 -0
- package/dist/runtime/litert-lm/check.js.map +1 -0
- package/dist/runtime/litert-lm/host/args.d.ts +47 -0
- package/dist/runtime/litert-lm/host/args.js +108 -0
- package/dist/runtime/litert-lm/host/args.js.map +1 -0
- package/dist/runtime/litert-lm/host/ffi-bun.d.ts +16 -0
- package/dist/runtime/litert-lm/host/ffi-bun.js +535 -0
- package/dist/runtime/litert-lm/host/ffi-bun.js.map +1 -0
- package/dist/runtime/litert-lm/host/library.d.ts +113 -0
- package/dist/runtime/litert-lm/host/library.js +38 -0
- package/dist/runtime/litert-lm/host/library.js.map +1 -0
- package/dist/runtime/litert-lm/host/openai.d.ts +97 -0
- package/dist/runtime/litert-lm/host/openai.js +355 -0
- package/dist/runtime/litert-lm/host/openai.js.map +1 -0
- package/dist/runtime/litert-lm/host/pool.d.ts +51 -0
- package/dist/runtime/litert-lm/host/pool.js +114 -0
- package/dist/runtime/litert-lm/host/pool.js.map +1 -0
- package/dist/runtime/litert-lm/host/run.d.ts +48 -0
- package/dist/runtime/litert-lm/host/run.js +169 -0
- package/dist/runtime/litert-lm/host/run.js.map +1 -0
- package/dist/runtime/litert-lm/host/server.d.ts +28 -0
- package/dist/runtime/litert-lm/host/server.js +242 -0
- package/dist/runtime/litert-lm/host/server.js.map +1 -0
- package/dist/runtime/litert-lm/host-process.d.ts +44 -0
- package/dist/runtime/litert-lm/host-process.js +99 -0
- package/dist/runtime/litert-lm/host-process.js.map +1 -0
- package/dist/runtime/litert-lm/index.d.ts +10 -0
- package/dist/runtime/litert-lm/index.js +11 -0
- package/dist/runtime/litert-lm/index.js.map +1 -0
- package/dist/runtime/litert-lm/litert-host.d.ts +17 -0
- package/dist/runtime/litert-lm/litert-host.js +22 -0
- package/dist/runtime/litert-lm/litert-host.js.map +1 -0
- package/dist/runtime/litert-lm/model-yml.d.ts +8 -0
- package/dist/runtime/litert-lm/model-yml.js +67 -0
- package/dist/runtime/litert-lm/model-yml.js.map +1 -0
- package/dist/runtime/litert-lm/npu.d.ts +11 -0
- package/dist/runtime/litert-lm/npu.js +24 -0
- package/dist/runtime/litert-lm/npu.js.map +1 -0
- package/dist/runtime/litert-lm/runtime.d.ts +99 -0
- package/dist/runtime/litert-lm/runtime.js +354 -0
- package/dist/runtime/litert-lm/runtime.js.map +1 -0
- package/dist/runtime/shared/external-sessions.js +1 -0
- package/dist/runtime/shared/external-sessions.js.map +1 -1
- package/dist/server/control/router.js +2 -0
- package/dist/server/control/router.js.map +1 -1
- package/dist/server/control/routes/litert-lm.d.ts +11 -0
- package/dist/server/control/routes/litert-lm.js +33 -0
- package/dist/server/control/routes/litert-lm.js.map +1 -0
- package/dist/server/control/routes/public-server.js +22 -0
- package/dist/server/control/routes/public-server.js.map +1 -1
- package/dist/server/control/types.d.ts +16 -1
- package/dist/server/control/types.js.map +1 -1
- package/dist/server/http.js +3 -0
- package/dist/server/http.js.map +1 -1
- package/dist/server/public/errors.d.ts +17 -0
- package/dist/server/public/errors.js +28 -0
- package/dist/server/public/errors.js.map +1 -1
- package/dist/server/public/forward.d.ts +20 -1
- package/dist/server/public/forward.js +64 -14
- package/dist/server/public/forward.js.map +1 -1
- package/dist/server/public/listing.d.ts +6 -0
- package/dist/server/public/listing.js +25 -3
- package/dist/server/public/listing.js.map +1 -1
- package/dist/server/public/responses.js +21 -10
- package/dist/server/public/responses.js.map +1 -1
- package/dist/server/public/subscription.js +2 -2
- package/dist/server/public/subscription.js.map +1 -1
- package/dist/server/public/types.d.ts +5 -0
- package/dist/server/public/videos-params.js +6 -1
- package/dist/server/public/videos-params.js.map +1 -1
- package/dist/settings/schema/litert-lm.json +37 -0
- package/dist/settings/schema.js +9 -0
- package/dist/settings/schema.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiteRT-LM's accelerator and compatibility check (openspec change `add-litert-lm-runtime`, tasks
|
|
3
|
+
* 6.4–6.5): the same routes, event and answer shapes as Foundry Local's, so the clients reuse their UI.
|
|
4
|
+
* The one accelerator is `openvino` — Intel's libraries an NPU variant needs on Windows (design D3);
|
|
5
|
+
* nothing downloads it on its own: not the start, not an install, not a load.
|
|
6
|
+
*
|
|
7
|
+
* Browser-safe: types and constants only. snake_case on the wire.
|
|
8
|
+
*/
|
|
9
|
+
import type { ProxyConfig } from './backend-advisor.js';
|
|
10
|
+
import type { FoundryLocalPrepareStage } from './foundry-local.js';
|
|
11
|
+
import type { LiteRtLmBackendId, LiteRtLmNpu } from './model-yml.js';
|
|
12
|
+
export interface LiteRtLmAccelerator {
|
|
13
|
+
/** `openvino`. */
|
|
14
|
+
name: string;
|
|
15
|
+
/** `npu`: the only device it serves. */
|
|
16
|
+
device: string;
|
|
17
|
+
/** The OpenVINO version the active release pins. */
|
|
18
|
+
version: string;
|
|
19
|
+
/** What a prepare downloads. */
|
|
20
|
+
size_bytes: number;
|
|
21
|
+
/** Downloaded, checked and unpacked on this machine. */
|
|
22
|
+
prepared: boolean;
|
|
23
|
+
/** Why the last prepare failed. */
|
|
24
|
+
reason?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface LiteRtLmAccelerators {
|
|
27
|
+
/** `false`: no LiteRT-LM build is installed; the list is empty. */
|
|
28
|
+
installed: boolean;
|
|
29
|
+
/** The active build, `<version>/<platform>`. */
|
|
30
|
+
build: string | null;
|
|
31
|
+
/** This machine's Intel NPU generation LiteRT-LM files target; `null` without one (the list is empty). */
|
|
32
|
+
npu: LiteRtLmNpu | null;
|
|
33
|
+
accelerators: LiteRtLmAccelerator[];
|
|
34
|
+
/** Why the list could not be made (no manifest for the active release, …). */
|
|
35
|
+
error: string | null;
|
|
36
|
+
}
|
|
37
|
+
export interface LiteRtLmPrepareRequest {
|
|
38
|
+
/** Names to prepare; absent or empty: every accelerator offered here. */
|
|
39
|
+
accelerators?: string[];
|
|
40
|
+
/** The proxy the wheel downloads through, as an engine install takes it. */
|
|
41
|
+
proxy?: ProxyConfig | null;
|
|
42
|
+
}
|
|
43
|
+
export interface LiteRtLmPrepareResult {
|
|
44
|
+
accelerators: Array<{
|
|
45
|
+
name: string;
|
|
46
|
+
prepared: boolean;
|
|
47
|
+
reason?: string;
|
|
48
|
+
}>;
|
|
49
|
+
}
|
|
50
|
+
/** `litert-lm:accelerators`: one step of a prepare; `fraction` 0…1 while it downloads, `null` when failed. */
|
|
51
|
+
export interface LiteRtLmAcceleratorsEvent {
|
|
52
|
+
accelerator: string;
|
|
53
|
+
stage: FoundryLocalPrepareStage;
|
|
54
|
+
fraction: number | null;
|
|
55
|
+
reason?: string;
|
|
56
|
+
}
|
|
57
|
+
/** What `litert-host inspect` reads from a `.litertlm` file without an engine (spec "Сведения о файле"). */
|
|
58
|
+
export interface LiteRtLmFileMetadata {
|
|
59
|
+
model_type: 'llm' | 'embedding' | 'unknown';
|
|
60
|
+
/** `null` when the file does not declare one. */
|
|
61
|
+
max_context_tokens: number | null;
|
|
62
|
+
dynamic_context: boolean;
|
|
63
|
+
/** As the file declares it; Gemma 4 files say `false` and call tools anyway. */
|
|
64
|
+
function_calling: boolean;
|
|
65
|
+
thinking: boolean;
|
|
66
|
+
modalities: Array<'text' | 'vision' | 'audio' | 'video'>;
|
|
67
|
+
/** Backends of the text modality, the default first. */
|
|
68
|
+
backends: LiteRtLmBackendId[];
|
|
69
|
+
vision_backends: LiteRtLmBackendId[];
|
|
70
|
+
npu: {
|
|
71
|
+
brand: 'unknown' | 'qualcomm' | 'google-tensor' | 'mediatek' | 'intel' | 'samsung';
|
|
72
|
+
soc: string | null;
|
|
73
|
+
} | null;
|
|
74
|
+
speculative_decoding: boolean;
|
|
75
|
+
min_runtime_version: string | null;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* `POST /models/litert-lm/check`: a variant before it is downloaded (`backend`, `npu`,
|
|
79
|
+
* `min_runtime_version` from conf), a downloaded file by `path` inside `<data>/litert-lm/models` with
|
|
80
|
+
* the variant's `backend`/`npu`, or an installed model by `model_id`.
|
|
81
|
+
*/
|
|
82
|
+
export interface LiteRtLmCheckRequest {
|
|
83
|
+
backend?: string;
|
|
84
|
+
npu?: string;
|
|
85
|
+
min_runtime_version?: string;
|
|
86
|
+
path?: string;
|
|
87
|
+
model_id?: string;
|
|
88
|
+
}
|
|
89
|
+
export declare const LITERT_LM_CHECK_VERDICTS: readonly ["ok", "engine-not-installed", "platform-unsupported", "accelerator-unavailable", "accelerator-not-prepared", "requires-newer-engine"];
|
|
90
|
+
export type LiteRtLmCheckVerdict = (typeof LITERT_LM_CHECK_VERDICTS)[number];
|
|
91
|
+
export interface LiteRtLmCheckResult {
|
|
92
|
+
verdict: LiteRtLmCheckVerdict;
|
|
93
|
+
/** Why, in words a card can show; `null` for `ok`. */
|
|
94
|
+
reason: string | null;
|
|
95
|
+
/** The file's facts, for a file on disk: what a client writes into `model.yml`. */
|
|
96
|
+
metadata?: LiteRtLmFileMetadata;
|
|
97
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiteRT-LM's accelerator and compatibility check (openspec change `add-litert-lm-runtime`, tasks
|
|
3
|
+
* 6.4–6.5): the same routes, event and answer shapes as Foundry Local's, so the clients reuse their UI.
|
|
4
|
+
* The one accelerator is `openvino` — Intel's libraries an NPU variant needs on Windows (design D3);
|
|
5
|
+
* nothing downloads it on its own: not the start, not an install, not a load.
|
|
6
|
+
*
|
|
7
|
+
* Browser-safe: types and constants only. snake_case on the wire.
|
|
8
|
+
*/
|
|
9
|
+
export const LITERT_LM_CHECK_VERDICTS = [
|
|
10
|
+
'ok',
|
|
11
|
+
'engine-not-installed',
|
|
12
|
+
'platform-unsupported',
|
|
13
|
+
'accelerator-unavailable',
|
|
14
|
+
'accelerator-not-prepared',
|
|
15
|
+
'requires-newer-engine',
|
|
16
|
+
];
|
|
17
|
+
//# sourceMappingURL=litert-lm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"litert-lm.js","sourceRoot":"","sources":["../../src/contracts/litert-lm.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsFH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI;IACJ,sBAAsB;IACtB,sBAAsB;IACtB,yBAAyB;IACzB,0BAA0B;IAC1B,uBAAuB;CACf,CAAA"}
|
|
@@ -30,6 +30,8 @@ export interface ModelYml {
|
|
|
30
30
|
atomic_runtime?: ModelYmlAtomicRuntime;
|
|
31
31
|
/** A Foundry Local variant (`<data>/foundry-local/models/<variant_id>/`), written by the app's installer. */
|
|
32
32
|
foundry_local?: ModelYmlFoundryLocal;
|
|
33
|
+
/** A LiteRT-LM variant (`<data>/litert-lm/models/<variant_id>/`), written by the app or `atc`. */
|
|
34
|
+
litert_lm?: ModelYmlLiteRtLm;
|
|
33
35
|
}
|
|
34
36
|
export interface ModelYmlAtomicRuntime {
|
|
35
37
|
provider: 'atomic-prism';
|
|
@@ -66,5 +68,34 @@ export interface ModelYmlFoundryLocal {
|
|
|
66
68
|
reasoning_start?: string;
|
|
67
69
|
reasoning_end?: string;
|
|
68
70
|
}
|
|
71
|
+
/** The backends a LiteRT-LM variant runs on (change `add-litert-lm-runtime`). */
|
|
72
|
+
export declare const LITERT_LM_BACKENDS: readonly ["cpu", "gpu", "npu"];
|
|
73
|
+
export type LiteRtLmBackendId = (typeof LITERT_LM_BACKENDS)[number];
|
|
74
|
+
/** The Intel NPU generations LiteRT-LM files are compiled for: Lunar Lake and Panther Lake (design D3). */
|
|
75
|
+
export declare const LITERT_LM_NPUS: readonly ["intel-lnl", "intel-ptl"];
|
|
76
|
+
export type LiteRtLmNpu = (typeof LITERT_LM_NPUS)[number];
|
|
77
|
+
/**
|
|
78
|
+
* The `litert_lm` block (spec `litert-lm-models`, task 6.2): which variant the folder holds and what it
|
|
79
|
+
* can do. `tools`, `reasoning` and `vision` come from conf's list, or for a Hugging Face model from
|
|
80
|
+
* core's check of the downloaded file.
|
|
81
|
+
*/
|
|
82
|
+
export interface ModelYmlLiteRtLm {
|
|
83
|
+
model_id: string;
|
|
84
|
+
variant_id: string;
|
|
85
|
+
backend: LiteRtLmBackendId;
|
|
86
|
+
/** Present exactly when `backend` is `npu`. */
|
|
87
|
+
npu?: LiteRtLmNpu;
|
|
88
|
+
/** `<org>/<name>` on Hugging Face. */
|
|
89
|
+
repo: string;
|
|
90
|
+
revision: string;
|
|
91
|
+
/** The file's path in the repository; its name in the variant folder. */
|
|
92
|
+
file: string;
|
|
93
|
+
/** Absent when neither conf nor the file declares one. */
|
|
94
|
+
context_length?: number;
|
|
95
|
+
tools: boolean;
|
|
96
|
+
reasoning: boolean;
|
|
97
|
+
vision: boolean;
|
|
98
|
+
source: 'curated' | 'huggingface';
|
|
99
|
+
}
|
|
69
100
|
/** Key order the app's serde_yaml writer produces; `writeModelYml` must emit keys in this order. */
|
|
70
101
|
export declare const MODEL_YML_KEY_ORDER: readonly (keyof ModelYml)[];
|
|
@@ -12,6 +12,10 @@ export const FOUNDRY_LOCAL_EXECUTION_PROVIDERS = [
|
|
|
12
12
|
'vitisai',
|
|
13
13
|
];
|
|
14
14
|
export const FOUNDRY_LOCAL_DEVICES = ['cpu', 'gpu', 'npu'];
|
|
15
|
+
/** The backends a LiteRT-LM variant runs on (change `add-litert-lm-runtime`). */
|
|
16
|
+
export const LITERT_LM_BACKENDS = ['cpu', 'gpu', 'npu'];
|
|
17
|
+
/** The Intel NPU generations LiteRT-LM files are compiled for: Lunar Lake and Panther Lake (design D3). */
|
|
18
|
+
export const LITERT_LM_NPUS = ['intel-lnl', 'intel-ptl'];
|
|
15
19
|
/** Key order the app's serde_yaml writer produces; `writeModelYml` must emit keys in this order. */
|
|
16
20
|
export const MODEL_YML_KEY_ORDER = [
|
|
17
21
|
'model_path',
|
|
@@ -31,5 +35,6 @@ export const MODEL_YML_KEY_ORDER = [
|
|
|
31
35
|
'capabilities',
|
|
32
36
|
'atomic_runtime',
|
|
33
37
|
'foundry_local',
|
|
38
|
+
'litert_lm',
|
|
34
39
|
];
|
|
35
40
|
//# sourceMappingURL=model-yml.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-yml.js","sourceRoot":"","sources":["../../src/contracts/model-yml.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"model-yml.js","sourceRoot":"","sources":["../../src/contracts/model-yml.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsDH,2FAA2F;AAC3F,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,KAAK;IACL,MAAM;IACN,QAAQ;IACR,UAAU;IACV,KAAK;IACL,SAAS;CACD,CAAA;AAGV,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAA;AAyBnE,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAA;AAGhE,2GAA2G;AAC3G,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,WAAW,CAAU,CAAA;AA2BjE,oGAAoG;AACpG,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC9D,YAAY;IACZ,aAAa;IACb,MAAM;IACN,YAAY;IACZ,cAAc;IACd,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,WAAW;IACX,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,QAAQ;IACR,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,WAAW;CACZ,CAAA"}
|
|
@@ -14,8 +14,12 @@
|
|
|
14
14
|
* `foundry-local` is Microsoft Foundry Local (ONNX Runtime GenAI: NPU, CUDA, WebGPU, CPU), run by a
|
|
15
15
|
* host process of this binary per model (openspec change `add-foundry-local`); registered only on
|
|
16
16
|
* the platforms its archives support.
|
|
17
|
+
*
|
|
18
|
+
* `litert-lm` is Google's LiteRT-LM (`.litertlm` models on CPU, GPU and an Intel NPU), run by a host
|
|
19
|
+
* process of this binary per model with its own OpenAI server (openspec change
|
|
20
|
+
* `add-litert-lm-runtime`); registered only on macOS arm64, Linux x64/arm64 and Windows x64.
|
|
17
21
|
*/
|
|
18
|
-
export type LocalProviderId = 'llamacpp-upstream' | 'llamacpp' | 'atomic-prism' | 'mlx' | 'foundation-models' | 'foundry-local' | ManagedProviderId;
|
|
22
|
+
export type LocalProviderId = 'llamacpp-upstream' | 'llamacpp' | 'atomic-prism' | 'mlx' | 'foundation-models' | 'foundry-local' | 'litert-lm' | ManagedProviderId;
|
|
19
23
|
/**
|
|
20
24
|
* The managed engines — each one a container core runs from a model of the managed model store — in
|
|
21
25
|
* the order their registry lists them (change `add-sglang-runtime`, D1). The one list every place
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/contracts/session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/contracts/session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4BH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAA;AAG/E,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,OAAQ,oBAA0C,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AACvE,CAAC;AA8CD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,mBAAmB;IACnB,oBAAoB;IACpB,qBAAqB;IACrB,OAAO;CACC,CAAA"}
|
|
@@ -84,6 +84,15 @@ export interface FoundationModelsConfig {
|
|
|
84
84
|
export interface FoundryLocalConfig {
|
|
85
85
|
timeout: number;
|
|
86
86
|
}
|
|
87
|
+
/** `litert-lm` (change `add-litert-lm-runtime`, design D6). */
|
|
88
|
+
export interface LiteRtLmConfig {
|
|
89
|
+
/** Tokens; `0` takes `model.yml`'s length. Always cut to the file's maximum. */
|
|
90
|
+
ctx_len: number;
|
|
91
|
+
/** On when the file carries a draft model. */
|
|
92
|
+
speculative_decoding: boolean;
|
|
93
|
+
/** Seconds a model may take to load in its host. */
|
|
94
|
+
timeout: number;
|
|
95
|
+
}
|
|
87
96
|
/**
|
|
88
97
|
* `tensorrt-llm` as the settings store holds it (`src/settings/schema/tensorrt-llm.json`). `gpu_id: ''`
|
|
89
98
|
* lets a load pick the card with the most free memory and `load_timeout_seconds: 0` keeps the engine's own
|
|
@@ -162,7 +171,7 @@ export interface SglangProviderConfig {
|
|
|
162
171
|
default_min_p: string;
|
|
163
172
|
default_repetition_penalty: string;
|
|
164
173
|
}
|
|
165
|
-
export type ProviderSettings<P extends LocalProviderId> = P extends 'mlx' ? MlxConfig : P extends 'foundation-models' ? FoundationModelsConfig : P extends 'tensorrt-llm' ? TensorrtLlmProviderConfig : P extends 'vllm' ? VllmProviderConfig : P extends 'sglang' ? SglangProviderConfig : P extends 'foundry-local' ? FoundryLocalConfig : LlamacppConfig;
|
|
174
|
+
export type ProviderSettings<P extends LocalProviderId> = P extends 'mlx' ? MlxConfig : P extends 'foundation-models' ? FoundationModelsConfig : P extends 'tensorrt-llm' ? TensorrtLlmProviderConfig : P extends 'vllm' ? VllmProviderConfig : P extends 'sglang' ? SglangProviderConfig : P extends 'foundry-local' ? FoundryLocalConfig : P extends 'litert-lm' ? LiteRtLmConfig : LlamacppConfig;
|
|
166
175
|
/** UI descriptor of one setting (mirrors the app's SettingComponentProps). */
|
|
167
176
|
export interface SettingDescriptor {
|
|
168
177
|
key: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/contracts/settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/contracts/settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuOH,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;IACX,aAAa,EAAE,EAAE;IACjB,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,OAAO;IACzB,iBAAiB,EAAE,KAAK;IACxB,YAAY,EAAE,KAAK;CACpB,CAAA"}
|
|
@@ -77,11 +77,16 @@ export interface AtomicCoreParts {
|
|
|
77
77
|
telemetry?: TelemetryControl | undefined;
|
|
78
78
|
}
|
|
79
79
|
export declare class AtomicCore {
|
|
80
|
-
readonly version = "0.
|
|
80
|
+
readonly version = "0.19.0";
|
|
81
81
|
private lifecycle;
|
|
82
82
|
private shutdownPromise;
|
|
83
83
|
/** Whether the app's API screen is watching; previews are collected only then. */
|
|
84
84
|
inspecting: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* The provider the app selected to serve each model id on the public server, read per request;
|
|
87
|
+
* kept across server restarts, not across core restarts (the app hands it over again).
|
|
88
|
+
*/
|
|
89
|
+
servedSelection: ReadonlyMap<string, string>;
|
|
85
90
|
private resolveStopped;
|
|
86
91
|
/** Resolves once this core has stopped, however that was triggered (API, signal, or in-process). */
|
|
87
92
|
readonly stopped: Promise<void>;
|
package/dist/core/atomic-core.js
CHANGED
|
@@ -27,6 +27,11 @@ export class AtomicCore {
|
|
|
27
27
|
shutdownPromise;
|
|
28
28
|
/** Whether the app's API screen is watching; previews are collected only then. */
|
|
29
29
|
inspecting = false;
|
|
30
|
+
/**
|
|
31
|
+
* The provider the app selected to serve each model id on the public server, read per request;
|
|
32
|
+
* kept across server restarts, not across core restarts (the app hands it over again).
|
|
33
|
+
*/
|
|
34
|
+
servedSelection = new Map();
|
|
30
35
|
resolveStopped;
|
|
31
36
|
/** Resolves once this core has stopped, however that was triggered (API, signal, or in-process). */
|
|
32
37
|
stopped = new Promise((resolve) => {
|
|
@@ -129,6 +134,7 @@ export class AtomicCore {
|
|
|
129
134
|
findLocal: (provider, modelId) => this.localSessions.localTarget(provider, modelId),
|
|
130
135
|
listLocal: () => this.localSessions.listLocalTargets(),
|
|
131
136
|
providers: () => this.cloud.routing(),
|
|
137
|
+
selection: () => this.servedSelection,
|
|
132
138
|
chatgpt: parts.chatgptBackend,
|
|
133
139
|
increaseCtx: (provider, modelId, trigger) => this.localSessions.serverCtxRequest(provider, modelId, trigger),
|
|
134
140
|
emit: (name, payload) => this.events.emit(name, payload),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atomic-core.js","sourceRoot":"","sources":["../../src/core/atomic-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAiBjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAG1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AAIjE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAIxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAkD3C,MAAM,OAAO,UAAU;IACZ,OAAO,GAAG,YAAY,CAAA;IACvB,SAAS,GAAuC,SAAS,CAAA;IACzD,eAAe,CAA2B;IAClD,kFAAkF;IAClF,UAAU,GAAG,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"atomic-core.js","sourceRoot":"","sources":["../../src/core/atomic-core.ts"],"names":[],"mappings":"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"}
|
package/dist/core/create.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { randomUUID } from 'node:crypto';
|
|
7
7
|
import { homedir, release as osRelease } from 'node:os';
|
|
8
|
-
import { join } from 'node:path';
|
|
8
|
+
import { basename, dirname, join } from 'node:path';
|
|
9
9
|
import { AtomicCoreError, ENGINE_KINDS } from '../contracts/index.js';
|
|
10
10
|
import { dataLayout, nodeDataFolderEnv, resolveCliDataFolder, resolveDataFolder } from '../config/index.js';
|
|
11
11
|
import { CoreEmitter } from '../events/index.js';
|
|
@@ -16,6 +16,7 @@ import { ExternalSessions } from '../runtime/index.js';
|
|
|
16
16
|
import { FoundationModelsRuntime } from '../runtime/foundation-models/index.js';
|
|
17
17
|
import { MlxRuntime } from '../runtime/mlx/index.js';
|
|
18
18
|
import { FoundryLocalAcceleratorService, FoundryLocalRuntime, foundryHostCommand, foundryLocalVerdict, parseFoundryLocalCheckRequest, runFoundryHostProbe, } from '../runtime/foundry-local/index.js';
|
|
19
|
+
import { LiteRtLmAcceleratorService, LiteRtLmCheckService, LiteRtLmRuntime, liteRtHostCommand, liteRtNpuGeneration, parseLiteRtLmCheckRequest, liteRtHostProber, } from '../runtime/litert-lm/index.js';
|
|
19
20
|
import { SettingsStore } from '../settings/index.js';
|
|
20
21
|
import { TRANSCRIPTION_MODEL_ID } from '../speculative/index.js';
|
|
21
22
|
import { ApiKeyStore, ChatGptAuth } from '../credentials/index.js';
|
|
@@ -28,7 +29,7 @@ import { DEFAULT_ENVIRONMENT_ID } from '../runtime/environment/index.js';
|
|
|
28
29
|
import { noticeEmbeddingEngineInstall, wireEmbedding } from '../embedding/index.js';
|
|
29
30
|
import { wireDiffusion } from '../diffusion/index.js';
|
|
30
31
|
import { MEDIA_ADAPTERS, MediaCatalogService, MediaService } from '../media/index.js';
|
|
31
|
-
import { EngineBuildsService, EngineManifestSource, IDLE_ENGINE_HOST, manifestKinds, foundryLocalHostPlatform, } from '../engine-builds/index.js';
|
|
32
|
+
import { EngineBuildsService, EngineManifestSource, IDLE_ENGINE_HOST, manifestKinds, foundryLocalHostPlatform, liteRtLmHostPlatform, } from '../engine-builds/index.js';
|
|
32
33
|
import { Downloader, availableDiskSpace, defaultAvailableSpace, policyFetchFor } from '../downloads/index.js';
|
|
33
34
|
import { lanAddresses, reapTunnelOrphan, wireRemoteAccess } from '../remote-access/index.js';
|
|
34
35
|
import { ClientRegistry, CLIENT_EXPIRY_MS, ControlServer } from '../server/index.js';
|
|
@@ -239,8 +240,10 @@ export async function createAtomicCore(options, construct) {
|
|
|
239
240
|
// Foundry Local (change `add-foundry-local`, design D7): which archive this host runs. glibc comes
|
|
240
241
|
// from the process report, which Bun's compiled binaries fill in as Node does; musl has none. The
|
|
241
242
|
// report is a whole diagnostic snapshot, so it is built on Linux only, where glibc decides.
|
|
243
|
+
// LiteRT-LM (change `add-litert-lm-runtime`, design D7) decides on the same facts with its own
|
|
244
|
+
// thresholds: macOS 12, glibc 2.27, no Windows arm64.
|
|
242
245
|
const foundryLocalArch = options.foundryLocalHost?.arch ?? process.arch;
|
|
243
|
-
const
|
|
246
|
+
const nativeHostFacts = {
|
|
244
247
|
platform,
|
|
245
248
|
arch: foundryLocalArch,
|
|
246
249
|
osRelease: options.foundryLocalHost?.osRelease ?? osRelease(),
|
|
@@ -249,7 +252,10 @@ export async function createAtomicCore(options, construct) {
|
|
|
249
252
|
? process.report?.getReport()?.header
|
|
250
253
|
?.glibcVersionRuntime
|
|
251
254
|
: undefined),
|
|
252
|
-
}
|
|
255
|
+
};
|
|
256
|
+
const foundryLocalHost = foundryLocalHostPlatform(nativeHostFacts);
|
|
257
|
+
const liteRtLmHost = liteRtLmHostPlatform(nativeHostFacts);
|
|
258
|
+
const liteRtHost = liteRtHostCommand(env);
|
|
253
259
|
const foundryLocalPaths = layout.provider('foundry-local');
|
|
254
260
|
const foundryHost = foundryHostCommand(env);
|
|
255
261
|
// The provider itself (task 6.6): one foundry-host per model, where the platform rule holds. The
|
|
@@ -278,6 +284,87 @@ export async function createAtomicCore(options, construct) {
|
|
|
278
284
|
registries.set('foundry-local', foundryLocalRuntime.registry);
|
|
279
285
|
runtimes.set('foundry-local', foundryLocalRuntime);
|
|
280
286
|
}
|
|
287
|
+
// LiteRT-LM (change `add-litert-lm-runtime`, task 6.6): one litert-host per model, where the
|
|
288
|
+
// platform rule of design D7 holds. The active build, OpenVINO and the NPU generation are read per
|
|
289
|
+
// load, from services wired below.
|
|
290
|
+
const liteRtLmPaths = layout.provider('litert-lm');
|
|
291
|
+
const liteRtActiveBuild = async () => {
|
|
292
|
+
const dir = await engineBuilds.activeDir('litert-lm');
|
|
293
|
+
return dir ? { dir, version: basename(dirname(dir)) } : undefined;
|
|
294
|
+
};
|
|
295
|
+
// The proxy policy of one request decides that request's fetch; nothing about it is kept.
|
|
296
|
+
const fetchFor = (proxy) => policyFetchFor({ proxy: proxy ?? null }, options.fetch ?? fetch);
|
|
297
|
+
const liteRtManifest = new EngineManifestSource(manifestKinds(layout)['litert-lm'], {
|
|
298
|
+
env,
|
|
299
|
+
fetchFor,
|
|
300
|
+
log,
|
|
301
|
+
});
|
|
302
|
+
// Whether this machine has an NPU (task 6.5): asked once, on the first check that needs it.
|
|
303
|
+
let npuAnswer;
|
|
304
|
+
const foundryLocalNpu = () => (npuAnswer ??= probeNpu(nodeProbeDeps({ platform, arch: process.arch, env: options.env ?? process.env })));
|
|
305
|
+
// LiteRT-LM's NPU generation (change `add-litert-lm-runtime`, design D3): an NPU device on Windows,
|
|
306
|
+
// then the CPU model string; asked once. `ATOMIC_LITERT_LM_TEST_NPU` stands in for the machine in
|
|
307
|
+
// the e2e tests, where no Intel NPU is.
|
|
308
|
+
let liteRtNpuAnswer;
|
|
309
|
+
const liteRtNpu = () => (liteRtNpuAnswer ??= (async () => {
|
|
310
|
+
const standIn = env['ATOMIC_LITERT_LM_TEST_NPU'];
|
|
311
|
+
if (standIn === 'intel-lnl' || standIn === 'intel-ptl')
|
|
312
|
+
return standIn;
|
|
313
|
+
if (liteRtLmHost.platform !== 'win-x64' || (await foundryLocalNpu()).present === false)
|
|
314
|
+
return null;
|
|
315
|
+
return liteRtNpuGeneration((await hardware.info()).info.cpu.name);
|
|
316
|
+
})());
|
|
317
|
+
// LiteRT-LM's OpenVINO (task 6.4): offered on an Intel NPU LiteRT-LM targets, prepared on order.
|
|
318
|
+
const liteRtLmAccelerators = liteRtLmHost.platform === null
|
|
319
|
+
? undefined
|
|
320
|
+
: new LiteRtLmAcceleratorService({
|
|
321
|
+
acceleratorsDir: liteRtLmPaths.acceleratorsDir,
|
|
322
|
+
tmpDir: liteRtLmPaths.tmpDir,
|
|
323
|
+
resolveBuild: liteRtActiveBuild,
|
|
324
|
+
// The cached manifest first: a published release never changes (conf's rule), and a load
|
|
325
|
+
// must not wait on the network for it.
|
|
326
|
+
release: async (version) => (await liteRtManifest.cached())?.releases.find((release) => release.version === version) ??
|
|
327
|
+
(await liteRtManifest.read()).manifest?.releases.find((release) => release.version === version) ??
|
|
328
|
+
null,
|
|
329
|
+
npuGeneration: liteRtNpu,
|
|
330
|
+
download: async (taskId, item, onFraction) => {
|
|
331
|
+
const off = emitter.on('download:progress', (progress) => {
|
|
332
|
+
if (progress.taskId === taskId && progress.total > 0)
|
|
333
|
+
onFraction(Math.min(1, progress.transferred / progress.total));
|
|
334
|
+
});
|
|
335
|
+
try {
|
|
336
|
+
await downloader.download(taskId, [{ ...item, model_id: taskId }]);
|
|
337
|
+
}
|
|
338
|
+
finally {
|
|
339
|
+
off();
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
emit: (name, payload) => emitter.emit(name, payload),
|
|
343
|
+
});
|
|
344
|
+
const liteRtLmRuntime = liteRtLmHost.platform === null || !liteRtLmAccelerators
|
|
345
|
+
? undefined
|
|
346
|
+
: new LiteRtLmRuntime({
|
|
347
|
+
layout,
|
|
348
|
+
registry: new ModelRegistry(layout, 'litert-lm'),
|
|
349
|
+
instanceId: lock.instanceId,
|
|
350
|
+
hostPlatform: liteRtLmHost.platform,
|
|
351
|
+
hostCommand: liteRtHost,
|
|
352
|
+
resolveBuild: liteRtActiveBuild,
|
|
353
|
+
openVinoLibs: liteRtLmAccelerators.libsDir.bind(liteRtLmAccelerators),
|
|
354
|
+
npuGeneration: liteRtNpu,
|
|
355
|
+
trustedHosts: managedTrustedHosts,
|
|
356
|
+
readSettings: async () => settings.get('litert-lm'),
|
|
357
|
+
journal,
|
|
358
|
+
emit: (name, payload) => emitter.emit(name, payload),
|
|
359
|
+
claimGpu: gpuResidency.hook('litert-lm'),
|
|
360
|
+
baseEnv: env,
|
|
361
|
+
log: runtimeLog,
|
|
362
|
+
...(options.backendOutput ? { backendOutput: options.backendOutput } : {}),
|
|
363
|
+
});
|
|
364
|
+
if (liteRtLmRuntime) {
|
|
365
|
+
registries.set('litert-lm', liteRtLmRuntime.registry);
|
|
366
|
+
runtimes.set('litert-lm', liteRtLmRuntime);
|
|
367
|
+
}
|
|
281
368
|
const optimalStore = await OptimalBackendStore.open(layout.core.optimalBackend, (provider, state) => {
|
|
282
369
|
emitter.emit('backend:optimal-changed', { provider, ...state });
|
|
283
370
|
});
|
|
@@ -291,8 +378,6 @@ export async function createAtomicCore(options, construct) {
|
|
|
291
378
|
unload: (provider, modelId) => core.unload(provider, modelId),
|
|
292
379
|
fetch: options.fetch ?? fetch,
|
|
293
380
|
});
|
|
294
|
-
// The proxy policy of one request decides that request's fetch; nothing about it is kept.
|
|
295
|
-
const fetchFor = (proxy) => policyFetchFor({ proxy: proxy ?? null }, options.fetch ?? fetch);
|
|
296
381
|
// One release-index service for the fork: its memory TTL and in-flight coalescing only help
|
|
297
382
|
// when every caller shares them.
|
|
298
383
|
const turboquantCatalog = new TurboquantCatalogService({
|
|
@@ -452,6 +537,7 @@ export async function createAtomicCore(options, construct) {
|
|
|
452
537
|
'sd-cpp': layout.diffusion.backendsDir,
|
|
453
538
|
'mlx': layout.provider('mlx').backendsDir,
|
|
454
539
|
'foundry-local': foundryLocalPaths.backendsDir,
|
|
540
|
+
'litert-lm': layout.provider('litert-lm').backendsDir,
|
|
455
541
|
},
|
|
456
542
|
failedBackendsFile: join(layout.diffusion.root, 'failed-backends.json'),
|
|
457
543
|
resourcesDir: options.resourcesDir,
|
|
@@ -465,14 +551,18 @@ export async function createAtomicCore(options, construct) {
|
|
|
465
551
|
fetchFor,
|
|
466
552
|
log,
|
|
467
553
|
}),
|
|
554
|
+
'litert-lm': liteRtManifest,
|
|
468
555
|
},
|
|
469
|
-
foundryLocalHost,
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
556
|
+
hostPlatforms: { 'foundry-local': foundryLocalHost, 'litert-lm': liteRtLmHost },
|
|
557
|
+
hostProbes: {
|
|
558
|
+
'foundry-local': async (libDir) => {
|
|
559
|
+
await runFoundryHostProbe(foundryHost, {
|
|
560
|
+
libDir,
|
|
561
|
+
appDataDir: foundryLocalPaths.runtimeDir,
|
|
562
|
+
logsDir: foundryLocalPaths.logsDir,
|
|
563
|
+
}, { env });
|
|
564
|
+
},
|
|
565
|
+
'litert-lm': liteRtHostProber(liteRtHost, env),
|
|
476
566
|
},
|
|
477
567
|
hardware: () => hardware.facts(),
|
|
478
568
|
hosts: {
|
|
@@ -481,14 +571,23 @@ export async function createAtomicCore(options, construct) {
|
|
|
481
571
|
'mlx': mlxRuntime instanceof MlxRuntime ? mlxRuntime.engineHost() : IDLE_ENGINE_HOST,
|
|
482
572
|
// Where the provider is not registered nothing runs from a build.
|
|
483
573
|
'foundry-local': foundryLocalRuntime ? foundryLocalRuntime.engineHost() : IDLE_ENGINE_HOST,
|
|
574
|
+
'litert-lm': liteRtLmRuntime ? liteRtLmRuntime.engineHost() : IDLE_ENGINE_HOST,
|
|
484
575
|
},
|
|
485
576
|
availableSpace: defaultAvailableSpace,
|
|
486
577
|
emit: (name, payload) => emitter.emit(name, payload),
|
|
487
578
|
log,
|
|
488
579
|
});
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
580
|
+
const liteRtLmCheck = liteRtLmRuntime && liteRtLmAccelerators && liteRtLmHost.platform !== null
|
|
581
|
+
? new LiteRtLmCheckService({
|
|
582
|
+
platform: liteRtLmHost.platform,
|
|
583
|
+
modelsDir: liteRtLmPaths.modelsDir,
|
|
584
|
+
registry: liteRtLmRuntime.registry,
|
|
585
|
+
resolveBuild: liteRtActiveBuild,
|
|
586
|
+
npuGeneration: liteRtNpu,
|
|
587
|
+
openVinoLibs: liteRtLmAccelerators.libsDir.bind(liteRtLmAccelerators),
|
|
588
|
+
inspect: (buildDir, file) => liteRtLmRuntime.inspect(buildDir, file),
|
|
589
|
+
})
|
|
590
|
+
: undefined;
|
|
492
591
|
// Foundry Local's accelerators (task 6.4, design D3): probed from the active build when a client
|
|
493
592
|
// asks, prepared only when one orders it. Only where the platform rule registers the provider.
|
|
494
593
|
const foundryLocalAccelerators = foundryLocalHost.platform === null
|
|
@@ -655,6 +754,7 @@ export async function createAtomicCore(options, construct) {
|
|
|
655
754
|
const engineHandles = [];
|
|
656
755
|
for (const engine of hostEngines(platform, [...managedRuntimes.keys()], {
|
|
657
756
|
foundryLocal: foundryLocalHost.platform !== null,
|
|
757
|
+
liteRtLm: liteRtLmHost.platform !== null,
|
|
658
758
|
})) {
|
|
659
759
|
const kind = ENGINE_KINDS[engine];
|
|
660
760
|
if (kind === 'llamacpp') {
|
|
@@ -719,9 +819,9 @@ export async function createAtomicCore(options, construct) {
|
|
|
719
819
|
increaseCtx: (provider, modelId, reason) => core.increaseCtx(provider, modelId, reason),
|
|
720
820
|
recreateSession: (provider, modelId) => core.recreateSession(provider, modelId),
|
|
721
821
|
hardware,
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
822
|
+
nativeModelChecks: {
|
|
823
|
+
...(foundryLocalAccelerators
|
|
824
|
+
? {
|
|
725
825
|
// Task 6.5: the platform, the active build, the last probe, the NPU — no network.
|
|
726
826
|
'foundry-local': async (body) => {
|
|
727
827
|
const request = parseFoundryLocalCheckRequest(body);
|
|
@@ -734,13 +834,29 @@ export async function createAtomicCore(options, construct) {
|
|
|
734
834
|
npu: (await foundryLocalNpu()).present,
|
|
735
835
|
}, request);
|
|
736
836
|
},
|
|
737
|
-
}
|
|
837
|
+
}
|
|
838
|
+
: {}),
|
|
839
|
+
// LiteRT-LM (task 6.5): the variant without the network, a file with its own facts.
|
|
840
|
+
...(liteRtLmCheck
|
|
841
|
+
? { 'litert-lm': async (body) => liteRtLmCheck.check(parseLiteRtLmCheckRequest(body)) }
|
|
842
|
+
: {}),
|
|
843
|
+
},
|
|
844
|
+
...(foundryLocalAccelerators
|
|
845
|
+
? {
|
|
738
846
|
foundryLocal: {
|
|
739
847
|
accelerators: (force) => foundryLocalAccelerators.list({ force }),
|
|
740
848
|
prepare: (request) => foundryLocalAccelerators.prepare(request),
|
|
741
849
|
},
|
|
742
850
|
}
|
|
743
851
|
: {}),
|
|
852
|
+
...(liteRtLmAccelerators
|
|
853
|
+
? {
|
|
854
|
+
liteRtLm: {
|
|
855
|
+
accelerators: () => liteRtLmAccelerators.list(),
|
|
856
|
+
prepare: (request) => liteRtLmAccelerators.prepare(request),
|
|
857
|
+
},
|
|
858
|
+
}
|
|
859
|
+
: {}),
|
|
744
860
|
foundationModelsAvailability: (force) => {
|
|
745
861
|
const runtime = runtimes.get('foundation-models');
|
|
746
862
|
return runtime instanceof FoundationModelsRuntime
|
|
@@ -872,6 +988,11 @@ export async function createAtomicCore(options, construct) {
|
|
|
872
988
|
;
|
|
873
989
|
core.inspecting = enabled;
|
|
874
990
|
},
|
|
991
|
+
selection: () => [...core.servedSelection].map(([model, provider]) => ({ model, provider })),
|
|
992
|
+
setSelection: (models) => {
|
|
993
|
+
;
|
|
994
|
+
core.servedSelection = new Map(models.map((m) => [m.model, m.provider]));
|
|
995
|
+
},
|
|
875
996
|
status: () => core.publicState(),
|
|
876
997
|
start: (opts) => core.startPublicServer(opts),
|
|
877
998
|
stop: () => core.stopPublicServer(),
|