@ai-matrx/desktop-protocol 0.21.93 → 0.21.95

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/client.d.cts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { BackoffOptions } from '@ai-matrx/data/realtime';
2
2
  export { RECONNECT_ALARM_ATTEMPTS } from '@ai-matrx/data/realtime';
3
3
  import { z } from 'zod';
4
- import { D as DesktopProtocolError, O as OpName, a as OpParams, b as OpResult } from './models-BpWoHvNe.cjs';
4
+ import { D as DesktopProtocolError, O as OpName, a as OpParams, b as OpResult } from './models-BfCwxx-G.cjs';
5
5
  import { Welcome, CloseOutcome, OPS, StreamMeta, EndReason, EVENTS, ClientType, ModelsTranscribeResult, TranscriptionModelId, MlProgress } from './index.cjs';
6
- export { i as isDesktopProtocolError } from './models-BpWoHvNe.cjs';
6
+ export { i as isDesktopProtocolError } from './models-BfCwxx-G.cjs';
7
7
  import { FrameHeader } from './frame.cjs';
8
8
 
9
9
  /** The subset of the WHATWG WebSocket the client uses — browser, React Native, `ws` and Workers all fit. */
package/dist/client.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { BackoffOptions } from '@ai-matrx/data/realtime';
2
2
  export { RECONNECT_ALARM_ATTEMPTS } from '@ai-matrx/data/realtime';
3
3
  import { z } from 'zod';
4
- import { D as DesktopProtocolError, O as OpName, a as OpParams, b as OpResult } from './models-BpWoHvNe.js';
4
+ import { D as DesktopProtocolError, O as OpName, a as OpParams, b as OpResult } from './models-BfCwxx-G.js';
5
5
  import { Welcome, CloseOutcome, OPS, StreamMeta, EndReason, EVENTS, ClientType, ModelsTranscribeResult, TranscriptionModelId, MlProgress } from './index.js';
6
- export { i as isDesktopProtocolError } from './models-BpWoHvNe.js';
6
+ export { i as isDesktopProtocolError } from './models-BfCwxx-G.js';
7
7
  import { FrameHeader } from './frame.js';
8
8
 
9
9
  /** The subset of the WHATWG WebSocket the client uses — browser, React Native, `ws` and Workers all fit. */
package/dist/client.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  closeRule,
3
3
  knows
4
- } from "./chunk-server-MCBYY6QK.js";
4
+ } from "./chunk-server-46JNNDT7.js";
5
5
  import {
6
6
  CloseCode,
7
7
  CoreToClientMsg,
@@ -12,7 +12,7 @@ import {
12
12
  PROTOCOL_MAJOR,
13
13
  PROTOCOL_MINOR,
14
14
  Welcome
15
- } from "./chunk-server-HBZSBBGI.js";
15
+ } from "./chunk-server-IHK7SYRO.js";
16
16
  import {
17
17
  DesktopProtocolError,
18
18
  FRAME_VERSION,
@@ -28,7 +28,7 @@ var registry = null;
28
28
  var registryLoad = null;
29
29
  function loadRegistry() {
30
30
  if (registry) return Promise.resolve(registry);
31
- registryLoad ??= import("./chunk-server-FJWACRBP.js").then((m) => registry = m);
31
+ registryLoad ??= import("./chunk-server-ESQX6XVP.js").then((m) => registry = m);
32
32
  return registryLoad;
33
33
  }
34
34
  var WS_OPEN = 1;
package/dist/index.cjs CHANGED
@@ -449,6 +449,7 @@ __export(src_exports, {
449
449
  EVENTS: () => EVENTS,
450
450
  EXCLUDED_TOOLS: () => EXCLUDED_TOOLS,
451
451
  ElsewhereInstance: () => ElsewhereInstance,
452
+ EmbeddingVector: () => EmbeddingVector,
452
453
  EndMsg: () => EndMsg,
453
454
  EndReason: () => EndReason,
454
455
  EntitiesNerParams: () => EntitiesNerParams,
@@ -584,8 +585,10 @@ __export(src_exports, {
584
585
  LEGACY_DISPATCHERS: () => LEGACY_DISPATCHERS,
585
586
  Limits: () => Limits,
586
587
  LlamaServerBuild: () => LlamaServerBuild,
588
+ LlmEmbeddingSlot: () => LlmEmbeddingSlot,
587
589
  LlmRunning: () => LlmRunning,
588
590
  LlmServerState: () => LlmServerState,
591
+ LlmSlot: () => LlmSlot,
589
592
  LocalModelKind: () => LocalModelKind,
590
593
  LocalModelRow: () => LocalModelRow,
591
594
  LocationGetParams: () => LocationGetParams,
@@ -624,6 +627,8 @@ __export(src_exports, {
624
627
  ModelsDownloadsCancelResult: () => ModelsDownloadsCancelResult,
625
628
  ModelsDownloadsListParams: () => ModelsDownloadsListParams,
626
629
  ModelsDownloadsListResult: () => ModelsDownloadsListResult,
630
+ ModelsEmbedParams: () => ModelsEmbedParams,
631
+ ModelsEmbedResult: () => ModelsEmbedResult,
627
632
  ModelsInstallParams: () => ModelsInstallParams,
628
633
  ModelsInstallResult: () => ModelsInstallResult,
629
634
  ModelsLlmChatParams: () => ModelsLlmChatParams,
@@ -655,6 +660,14 @@ __export(src_exports, {
655
660
  ModelsTtsVoiceRemoveResult: () => ModelsTtsVoiceRemoveResult,
656
661
  ModelsTtsVoiceSaveParams: () => ModelsTtsVoiceSaveParams,
657
662
  ModelsTtsVoiceSaveResult: () => ModelsTtsVoiceSaveResult,
663
+ ModelsWakeCloseParams: () => ModelsWakeCloseParams,
664
+ ModelsWakeCloseResult: () => ModelsWakeCloseResult,
665
+ ModelsWakeDetectParams: () => ModelsWakeDetectParams,
666
+ ModelsWakeDetectResult: () => ModelsWakeDetectResult,
667
+ ModelsWakeInstallParams: () => ModelsWakeInstallParams,
668
+ ModelsWakeInstallResult: () => ModelsWakeInstallResult,
669
+ ModelsWakeStatusParams: () => ModelsWakeStatusParams,
670
+ ModelsWakeStatusResult: () => ModelsWakeStatusResult,
658
671
  NAMED_SCHEMAS: () => NAMED_SCHEMAS,
659
672
  NULL_SINCE: () => NULL_SINCE,
660
673
  NetAddress: () => NetAddress,
@@ -917,13 +930,23 @@ __export(src_exports, {
917
930
  VaultFieldSummary: () => VaultFieldSummary,
918
931
  VaultItemKind: () => VaultItemKind,
919
932
  VaultItemSummary: () => VaultItemSummary,
933
+ WAKE_PCM_MAX_CHARS: () => WAKE_PCM_MAX_CHARS,
920
934
  WEB_MAX_TEXT_CHARS: () => WEB_MAX_TEXT_CHARS,
935
+ WakeEngine: () => WakeEngine,
936
+ WakeModelInfo: () => WakeModelInfo,
921
937
  WebAttachTarget: () => WebAttachTarget,
922
938
  WebBrowserFetchParams: () => WebBrowserFetchParams,
923
939
  WebBrowserFetchResult: () => WebBrowserFetchResult,
924
940
  WebFetchParams: () => WebFetchParams,
925
941
  WebFetchResult: () => WebFetchResult,
926
942
  WebHeader: () => WebHeader,
943
+ WebHomeFetchParams: () => WebHomeFetchParams,
944
+ WebHomeFetchResult: () => WebHomeFetchResult,
945
+ WebHomeHistoryEntry: () => WebHomeHistoryEntry,
946
+ WebHomeQueueItem: () => WebHomeQueueItem,
947
+ WebHomeQueueState: () => WebHomeQueueState,
948
+ WebHomeStatusParams: () => WebHomeStatusParams,
949
+ WebHomeStatusResult: () => WebHomeStatusResult,
927
950
  WebLand: () => WebLand,
928
951
  WebLogCaller: () => WebLogCaller,
929
952
  WebLogClearParams: () => WebLogClearParams,
@@ -1030,7 +1053,7 @@ module.exports = __toCommonJS(src_exports);
1030
1053
  var import_zod = require("zod");
1031
1054
  var import_uuid = require("@ai-matrx/kit/uuid");
1032
1055
  var PROTOCOL_MAJOR = 1;
1033
- var PROTOCOL_MINOR = 87;
1056
+ var PROTOCOL_MINOR = 90;
1034
1057
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
1035
1058
  var ProtocolVersion = import_zod.z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
1036
1059
  var RequestId = import_zod.z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -1119,7 +1142,7 @@ var ErrorReason = import_zod2.z.enum([
1119
1142
  // 1.34 (REASONS_SINCE): the per-device tool policy (src/tools/policy.ts)
1120
1143
  "tool_disabled_on_device",
1121
1144
  // AUTH_FORBIDDEN: the person turned this tool off for agents on this computer (Agents › Tools)
1122
- // 1.76 (REASONS_SINCE): models.llm.chat
1145
+ // 1.76 (REASONS_SINCE): models.llm.chat (1.88: models.embed names the same two)
1123
1146
  "model_not_running",
1124
1147
  // NOT_FOUND (nothing runs) or RESOURCE_BUSY (another model runs): start this model first
1125
1148
  "model_server_unreachable"
@@ -2020,6 +2043,51 @@ var ModelsTtsVoiceSaveParams = import_zod11.z.strictObject({
2020
2043
  var ModelsTtsVoiceSaveResult = import_zod11.z.strictObject({ voice: TtsVoice });
2021
2044
  var ModelsTtsVoiceRemoveParams = import_zod11.z.strictObject({ voice: TtsVoiceId });
2022
2045
  var ModelsTtsVoiceRemoveResult = import_zod11.z.strictObject({ removed: import_zod11.z.boolean() });
2046
+ var WakeEngine = import_zod11.z.enum(["oww", "whisper"]);
2047
+ var WakeModelInfo = import_zod11.z.strictObject({
2048
+ id: ModelKey,
2049
+ size_bytes: nonNegInt,
2050
+ installed: import_zod11.z.boolean(),
2051
+ problem: import_zod11.z.string().max(300).nullable()
2052
+ });
2053
+ var ModelsWakeStatusParams = import_zod11.z.strictObject({});
2054
+ var ModelsWakeStatusResult = import_zod11.z.strictObject({
2055
+ /** The first-use runtime (onnxruntime, faster-whisper) is installed. */
2056
+ runtime_ready: import_zod11.z.boolean(),
2057
+ /** openWakeWord models this computer can fetch (the catalog's wake words). */
2058
+ models: import_zod11.z.array(WakeModelInfo),
2059
+ /** The Whisper model the phrase engine uses (the catalog's smallest); null when the catalog has none. */
2060
+ whisper: WakeModelInfo.nullable(),
2061
+ error: import_zod11.z.string().max(500).nullable()
2062
+ });
2063
+ var ModelsWakeInstallParams = import_zod11.z.strictObject({ engine: WakeEngine, model: ModelKey.optional() });
2064
+ var ModelsWakeInstallResult = import_zod11.z.strictObject({ model: ModelKey, elapsed_ms: nonNegInt });
2065
+ var WAKE_PCM_MAX_CHARS = 44e4;
2066
+ var ModelsWakeDetectParams = import_zod11.z.strictObject({
2067
+ /** The caller's listening session: the engine keeps its rolling audio per stream. */
2068
+ stream: import_zod11.z.string().min(1).max(64),
2069
+ engine: WakeEngine,
2070
+ /** (oww) The wake-word model; (whisper) unused. */
2071
+ model: ModelKey.optional(),
2072
+ /** (whisper) The phrase to hear, e.g. "hey matrix". */
2073
+ keyword: import_zod11.z.string().min(1).max(64).optional(),
2074
+ /** (oww) The score that counts as heard, 0–1. */
2075
+ threshold: import_zod11.z.number().min(0).max(1).optional(),
2076
+ /** Base64 of 16 kHz mono signed 16-bit little-endian PCM that follows the stream's last call. */
2077
+ pcm: import_zod11.z.string().max(WAKE_PCM_MAX_CHARS)
2078
+ });
2079
+ var ModelsWakeDetectResult = import_zod11.z.strictObject({
2080
+ detected: import_zod11.z.boolean(),
2081
+ /** (oww) The highest score in this audio; null for whisper. */
2082
+ score: import_zod11.z.number().min(0).max(1).nullable(),
2083
+ /** (whisper) What the window said, when it ran; null otherwise. */
2084
+ heard: import_zod11.z.string().max(500).nullable(),
2085
+ /** The audio's level, 0–1. */
2086
+ rms: import_zod11.z.number().min(0).max(1),
2087
+ elapsed_ms: nonNegInt
2088
+ });
2089
+ var ModelsWakeCloseParams = import_zod11.z.strictObject({ stream: import_zod11.z.string().min(1).max(64) });
2090
+ var ModelsWakeCloseResult = import_zod11.z.strictObject({ closed: import_zod11.z.boolean() });
2023
2091
  var MlProgress = import_zod11.z.strictObject({
2024
2092
  kind: import_zod11.z.enum(["install", "transcribe", "speak"]),
2025
2093
  /** 0–1 when known (transcribe: audio covered so far; install: bytes so far). */
@@ -2060,6 +2128,14 @@ var LlmRunning = import_zod11.z.strictObject({
2060
2128
  gpu_layers: import_zod11.z.int().min(-1).max(999).optional(),
2061
2129
  threads: import_zod11.z.int().min(1).max(512).optional()
2062
2130
  });
2131
+ var LlmSlot = import_zod11.z.enum(["chat", "embed"]);
2132
+ var LlmEmbeddingSlot = import_zod11.z.strictObject({
2133
+ state: LlmServerState,
2134
+ models: import_zod11.z.array(TextModelInfo),
2135
+ running: LlmRunning.nullable(),
2136
+ starting: TextModelId.nullable(),
2137
+ error: import_zod11.z.string().max(300).nullable()
2138
+ });
2063
2139
  var ModelsLlmStatusParams = import_zod11.z.strictObject({});
2064
2140
  var ModelsLlmStatusResult = import_zod11.z.strictObject({
2065
2141
  state: LlmServerState,
@@ -2075,7 +2151,9 @@ var ModelsLlmStatusResult = import_zod11.z.strictObject({
2075
2151
  /** Non-null while the server program or a model's weights are being downloaded. */
2076
2152
  install: MlInstallProgress.nullable(),
2077
2153
  /** Why the last start or download failed, one human line; null otherwise. */
2078
- error: import_zod11.z.string().max(300).nullable()
2154
+ error: import_zod11.z.string().max(300).nullable(),
2155
+ /** (1.88) The embeddings slot: the same model service's second llama-server, in embeddings mode, beside the chat model. */
2156
+ embedding: LlmEmbeddingSlot.optional()
2079
2157
  });
2080
2158
  var ModelsLlmInstallParams = import_zod11.z.strictObject({
2081
2159
  model: TextModelId,
@@ -2097,10 +2175,15 @@ var ModelsLlmStartParams = import_zod11.z.strictObject({
2097
2175
  /** (1.48) CPU threads, computed by the app from the knobs. */
2098
2176
  threads: import_zod11.z.int().min(1).max(512).optional(),
2099
2177
  /** (1.48) Seconds to wait for the model to load, computed by the app from the knobs. */
2100
- load_timeout_s: import_zod11.z.int().min(10).max(3600).optional()
2178
+ load_timeout_s: import_zod11.z.int().min(10).max(3600).optional(),
2179
+ /** (1.88) Which slot: `chat` (default) or `embed` (the embedding model, beside the chat model; neither stops the other). */
2180
+ slot: LlmSlot.optional()
2101
2181
  });
2102
2182
  var ModelsLlmStartResult = import_zod11.z.strictObject({ running: LlmRunning, elapsed_ms: nonNegInt });
2103
- var ModelsLlmStopParams = import_zod11.z.strictObject({});
2183
+ var ModelsLlmStopParams = import_zod11.z.strictObject({
2184
+ /** (1.88) Which slot to stop: `chat` (default) or `embed`. */
2185
+ slot: LlmSlot.optional()
2186
+ });
2104
2187
  var ModelsLlmStopResult = import_zod11.z.strictObject({ stopped: import_zod11.z.boolean() });
2105
2188
  var ModelsLlmChatParams = import_zod11.z.strictObject({
2106
2189
  model: TextModelId,
@@ -2110,6 +2193,23 @@ var ModelsLlmChatParams = import_zod11.z.strictObject({
2110
2193
  window_bytes: import_zod11.z.int().min(4096).max(16777216).optional()
2111
2194
  });
2112
2195
  var ModelsLlmChatResult = import_zod11.z.strictObject({ model: TextModelId, content_type: import_zod11.z.string().max(128) });
2196
+ var ModelsEmbedParams = import_zod11.z.strictObject({
2197
+ model: TextModelId,
2198
+ input: import_zod11.z.union([import_zod11.z.string().min(1).max(262144), import_zod11.z.array(import_zod11.z.string().min(1).max(262144)).min(1).max(256)]),
2199
+ /** Start the model in the embeddings slot first when nothing runs there (a different embedding model running is never stopped). */
2200
+ start_if_stopped: import_zod11.z.boolean().optional()
2201
+ });
2202
+ var EmbeddingVector = import_zod11.z.strictObject({
2203
+ index: nonNegInt,
2204
+ embedding: import_zod11.z.array(import_zod11.z.number()).min(1).max(16384)
2205
+ });
2206
+ var ModelsEmbedResult = import_zod11.z.strictObject({
2207
+ model: TextModelId,
2208
+ /** The vector length (every row has it). */
2209
+ dimensions: import_zod11.z.int().min(1).max(16384),
2210
+ data: import_zod11.z.array(EmbeddingVector).min(1).max(256),
2211
+ usage: import_zod11.z.strictObject({ prompt_tokens: nonNegInt, total_tokens: nonNegInt })
2212
+ });
2113
2213
  var Sha256Hex = import_zod11.z.string().regex(/^[0-9a-f]{64}$/);
2114
2214
  var CatalogFile = import_zod11.z.strictObject({
2115
2215
  /** Path inside the model's folder (the artifact's path_in_repo). */
@@ -2155,7 +2255,11 @@ var MlCatalogSetParams = import_zod11.z.strictObject({
2155
2255
  /** (1.69) Language models on this computer that cannot run here, each with its one-line reason: models.llm.status lists them. */
2156
2256
  unusable: import_zod11.z.array(UnusableTextModel).optional(),
2157
2257
  /** (1.81) Text-to-speech models (Kokoro): what models.tts.* runs. */
2158
- speech: import_zod11.z.array(CatalogModelEntry).optional()
2258
+ speech: import_zod11.z.array(CatalogModelEntry).optional(),
2259
+ /** (1.88) Embedding models (GGUF, run by llama-server with --embeddings in the embeddings slot): what models.embed runs. */
2260
+ embedding: import_zod11.z.array(CatalogModelEntry).optional(),
2261
+ /** (1.89) Wake-word models (openWakeWord ONNX): what models.wake.* runs. */
2262
+ wake: import_zod11.z.array(CatalogModelEntry).optional()
2159
2263
  });
2160
2264
  var MlCatalogSetResult = import_zod11.z.strictObject({ text: nonNegInt, transcription: nonNegInt });
2161
2265
  var DownloadKind = import_zod11.z.enum(["speech_model", "text_model", "runtime"]);
@@ -4108,6 +4212,62 @@ var WebResearchFetchResult = import_zod23.z.strictObject({
4108
4212
  cannot_edit: nonNegInt
4109
4213
  });
4110
4214
  var ToolsServiceProgress = import_zod23.z.strictObject({ phase: import_zod23.z.enum(["fetching", "installing"]), done: nonNegInt, total: nonNegInt });
4215
+ var WebHomeFetchParams = import_zod23.z.strictObject({
4216
+ url: WebUrl,
4217
+ method: import_zod23.z.enum(["GET", "HEAD"]).default("GET"),
4218
+ headers: import_zod23.z.array(WebHeader).max(32).default([]),
4219
+ /** Why the server's own fetch failed (its block reason, e.g. `cloudflare_block`, `bad_status:403`). */
4220
+ reason: import_zod23.z.string().min(1).max(64),
4221
+ /** The server's id for this request: asking again with it returns the same queued item. */
4222
+ request_id: import_zod23.z.string().min(1).max(128),
4223
+ /** Keep it and retry when it cannot be fetched now (saved as a Source once read). */
4224
+ queue: import_zod23.z.boolean().default(false),
4225
+ timeout_s: import_zod23.z.int().min(1).max(300).default(30)
4226
+ });
4227
+ var WebHomeQueueState = import_zod23.z.enum(["pending", "in_progress", "succeeded", "failed", "dead_letter"]);
4228
+ var WebHomeQueueItem = import_zod23.z.strictObject({
4229
+ queue_id: import_zod23.z.string().min(1).max(64),
4230
+ request_id: import_zod23.z.string().min(1).max(128),
4231
+ url: import_zod23.z.string().max(8192),
4232
+ reason: import_zod23.z.string().max(64),
4233
+ state: WebHomeQueueState,
4234
+ attempts: nonNegInt,
4235
+ max_attempts: nonNegInt,
4236
+ created_at_ms: nonNegInt,
4237
+ next_attempt_at_ms: nonNegInt.nullable(),
4238
+ last_error: import_zod23.z.string().max(2e3).nullable()
4239
+ });
4240
+ var WebHomeFetchResult = import_zod23.z.strictObject({
4241
+ /** `fetched`: `fetch` holds the answer. `queued`: it waits on this computer (`item`). */
4242
+ state: import_zod23.z.enum(["fetched", "queued"]),
4243
+ fetch: WebFetchResult.nullable(),
4244
+ item: WebHomeQueueItem.nullable(),
4245
+ /** One sentence for the person (and the server's result trail). */
4246
+ message: import_zod23.z.string().max(2e3)
4247
+ });
4248
+ var WebHomeHistoryEntry = import_zod23.z.strictObject({
4249
+ at_ms: nonNegInt,
4250
+ url: import_zod23.z.string().max(8192),
4251
+ reason: import_zod23.z.string().max(64),
4252
+ /** `fetched` (status says how the site answered), `refused` (off, a private address, the limit), `queued`, `failed`. */
4253
+ outcome: import_zod23.z.enum(["fetched", "refused", "queued", "failed"]),
4254
+ status: import_zod23.z.int().min(0).max(999).nullable(),
4255
+ bytes: nonNegInt,
4256
+ elapsed_ms: nonNegInt,
4257
+ detail: import_zod23.z.string().max(2e3)
4258
+ });
4259
+ var WebHomeStatusParams = import_zod23.z.strictObject({});
4260
+ var WebHomeStatusResult = import_zod23.z.strictObject({
4261
+ enabled: import_zod23.z.boolean(),
4262
+ max_per_hour: nonNegInt,
4263
+ max_body_bytes: nonNegInt,
4264
+ timeout_s: nonNegInt,
4265
+ used_last_hour: nonNegInt,
4266
+ queue: import_zod23.z.array(WebHomeQueueItem).max(1e3),
4267
+ history: import_zod23.z.array(WebHomeHistoryEntry).max(1e3),
4268
+ /** One sentence: on/off, how much of the hour is used, what waits. */
4269
+ summary: import_zod23.z.string().max(2e3)
4270
+ });
4111
4271
 
4112
4272
  // src/schema/system.ts
4113
4273
  var import_zod24 = require("zod");
@@ -6491,6 +6651,7 @@ var OPS = {
6491
6651
  "models.llm.start": { params: ModelsLlmStartParams, result: ModelsLlmStartResult, kind: "unary", since: "1.31", errors: ["NOT_FOUND", "RESOURCE_BUSY", "RESOURCE_GONE", "TIMEOUT", "CANCELLED", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
6492
6652
  "models.llm.stop": { params: ModelsLlmStopParams, result: ModelsLlmStopResult, kind: "unary", since: "1.31", errors: ["INTERNAL"] },
6493
6653
  "models.llm.chat": { params: ModelsLlmChatParams, result: ModelsLlmChatResult, kind: "stream", since: "1.76", errors: ["NOT_FOUND", "RESOURCE_BUSY", "RESOURCE_GONE", "INVALID_PARAMS", "TIMEOUT", "CANCELLED", "RATE_LIMITED", "INTERNAL"] },
6654
+ "models.embed": { params: ModelsEmbedParams, result: ModelsEmbedResult, kind: "unary", since: "1.88", errors: ["NOT_FOUND", "RESOURCE_BUSY", "RESOURCE_GONE", "INVALID_PARAMS", "TIMEOUT", "CANCELLED", "INTERNAL"] },
6494
6655
  "models.downloads.list": { params: ModelsDownloadsListParams, result: ModelsDownloadsListResult, kind: "unary", since: "1.45", errors: ["INTERNAL"] },
6495
6656
  "models.downloads.cancel": { params: ModelsDownloadsCancelParams, result: ModelsDownloadsCancelResult, kind: "unary", since: "1.45", errors: ["NOT_FOUND", "INTERNAL"] },
6496
6657
  "models.local.list": { params: ModelsLocalListParams, result: ModelsLocalListResult, kind: "unary", since: "1.74", errors: ["INTERNAL"] },
@@ -6500,6 +6661,10 @@ var OPS = {
6500
6661
  "models.tts.speak": { params: ModelsTtsSpeakParams, result: ModelsTtsSpeakResult, kind: "unary", since: "1.81", errors: ["NOT_FOUND", "INVALID_PARAMS", "RESOURCE_BUSY", "RESOURCE_GONE", "TIMEOUT", "CANCELLED", "INTERNAL"] },
6501
6662
  "models.tts.voice_save": { params: ModelsTtsVoiceSaveParams, result: ModelsTtsVoiceSaveResult, kind: "unary", since: "1.81", errors: ["NOT_FOUND", "INVALID_PARAMS", "PAYLOAD_TOO_LARGE", "CONFLICT", "RESOURCE_BUSY", "INTERNAL"] },
6502
6663
  "models.tts.voice_remove": { params: ModelsTtsVoiceRemoveParams, result: ModelsTtsVoiceRemoveResult, kind: "unary", since: "1.81", errors: ["NOT_FOUND", "INVALID_PARAMS", "INTERNAL"] },
6664
+ "models.wake.status": { params: ModelsWakeStatusParams, result: ModelsWakeStatusResult, kind: "unary", since: "1.89", errors: ["RESOURCE_BUSY", "INTERNAL"] },
6665
+ "models.wake.install": { params: ModelsWakeInstallParams, result: ModelsWakeInstallResult, kind: "unary", since: "1.89", errors: ["NOT_FOUND", "RESOURCE_BUSY", "RESOURCE_GONE", "TIMEOUT", "CANCELLED", "INTERNAL"] },
6666
+ "models.wake.detect": { params: ModelsWakeDetectParams, result: ModelsWakeDetectResult, kind: "unary", since: "1.89", errors: ["NOT_FOUND", "INVALID_PARAMS", "RESOURCE_BUSY", "RESOURCE_GONE", "INTERNAL"] },
6667
+ "models.wake.close": { params: ModelsWakeCloseParams, result: ModelsWakeCloseResult, kind: "unary", since: "1.89", errors: ["INTERNAL"] },
6503
6668
  // Desktop apps and their profiles (SPEC §6 apps); profiles are rows in users.desktop_app_profile.
6504
6669
  "apps.list": { params: AppsListParams, result: AppsListResult, kind: "unary", since: "1.2", errors: ["INTERNAL"] },
6505
6670
  "apps.profiles.list": { params: AppsProfilesListParams, result: AppsProfilesListResult, kind: "unary", since: "1.2", errors: ["NOT_FOUND", "INVALID_PARAMS", "INTERNAL"] },
@@ -6682,6 +6847,8 @@ var OPS = {
6682
6847
  "web.log.clear": { params: WebLogClearParams, result: WebLogClearResult, kind: "unary", since: "1.40", errors: ["INTERNAL"] },
6683
6848
  "web.research.queue": { params: WebResearchQueueParams, result: WebResearchQueueResult, kind: "unary", since: "1.40", errors: ["INVALID_PARAMS", "INTERNAL"] },
6684
6849
  "web.research.fetch": { params: WebResearchFetchParams, result: WebResearchFetchResult, kind: "unary", since: "1.40", errors: ["INVALID_PARAMS", "AUTH_REQUIRED", "RESOURCE_BUSY", "CANCELLED", "INTERNAL"] },
6850
+ "web.home_fetch": { params: WebHomeFetchParams, result: WebHomeFetchResult, kind: "unary", since: "1.90", errors: ["INVALID_PARAMS", "AUTH_FORBIDDEN", "RATE_LIMITED", "TIMEOUT", "INTERNAL"] },
6851
+ "web.home.status": { params: WebHomeStatusParams, result: WebHomeStatusResult, kind: "unary", since: "1.90", errors: ["INTERNAL"] },
6685
6852
  // 1.23: the signed-in person's own agents and Vault, read as them (the desktop's Agents library and Vault).
6686
6853
  "account.agents.list": { params: AccountAgentsListParams, result: AccountAgentsListResult, kind: "unary", since: "1.23", errors: ["INTERNAL"] },
6687
6854
  "account.vault.list": { params: AccountVaultListParams, result: AccountVaultListResult, kind: "unary", since: "1.23", errors: ["INTERNAL"] },
@@ -6805,6 +6972,10 @@ var SERVICES = {
6805
6972
  "ml.tts_speak": { params: ModelsTtsSpeakParams, result: ModelsTtsSpeakResult },
6806
6973
  "ml.tts_voice_save": { params: ModelsTtsVoiceSaveParams, result: ModelsTtsVoiceSaveResult },
6807
6974
  "ml.tts_voice_remove": { params: ModelsTtsVoiceRemoveParams, result: ModelsTtsVoiceRemoveResult },
6975
+ "ml.wake_status": { params: ModelsWakeStatusParams, result: ModelsWakeStatusResult },
6976
+ "ml.wake_install": { params: ModelsWakeInstallParams, result: ModelsWakeInstallResult },
6977
+ "ml.wake_detect": { params: ModelsWakeDetectParams, result: ModelsWakeDetectResult },
6978
+ "ml.wake_close": { params: ModelsWakeCloseParams, result: ModelsWakeCloseResult },
6808
6979
  "ml.catalog_set": { params: MlCatalogSetParams, result: MlCatalogSetResult }
6809
6980
  }
6810
6981
  },
@@ -7058,6 +7229,11 @@ var NAMED_SCHEMAS = {
7058
7229
  ModelsLlmStopResult,
7059
7230
  ModelsLlmChatParams,
7060
7231
  ModelsLlmChatResult,
7232
+ ModelsEmbedParams,
7233
+ ModelsEmbedResult,
7234
+ EmbeddingVector,
7235
+ LlmSlot,
7236
+ LlmEmbeddingSlot,
7061
7237
  DownloadKind,
7062
7238
  DownloadRow,
7063
7239
  ModelsDownloadsListParams,
@@ -7085,6 +7261,16 @@ var NAMED_SCHEMAS = {
7085
7261
  ModelsTtsVoiceSaveResult,
7086
7262
  ModelsTtsVoiceRemoveParams,
7087
7263
  ModelsTtsVoiceRemoveResult,
7264
+ WakeEngine,
7265
+ WakeModelInfo,
7266
+ ModelsWakeStatusParams,
7267
+ ModelsWakeStatusResult,
7268
+ ModelsWakeInstallParams,
7269
+ ModelsWakeInstallResult,
7270
+ ModelsWakeDetectParams,
7271
+ ModelsWakeDetectResult,
7272
+ ModelsWakeCloseParams,
7273
+ ModelsWakeCloseResult,
7088
7274
  CodingServiceCredentials,
7089
7275
  CodingHistoryBlocked,
7090
7276
  CodingHistoryFailure,
@@ -7554,6 +7740,13 @@ var NAMED_SCHEMAS = {
7554
7740
  WebLogListResult,
7555
7741
  WebLogClearParams,
7556
7742
  WebLogClearResult,
7743
+ WebHomeFetchParams,
7744
+ WebHomeFetchResult,
7745
+ WebHomeQueueState,
7746
+ WebHomeQueueItem,
7747
+ WebHomeHistoryEntry,
7748
+ WebHomeStatusParams,
7749
+ WebHomeStatusResult,
7557
7750
  WebProgressEvent,
7558
7751
  WebResearchItemState,
7559
7752
  WebResearchItem,
@@ -7770,9 +7963,11 @@ var import_versions = require("@ai-matrx/kit/versions");
7770
7963
  var FIELDS_SINCE = {
7771
7964
  LlmRunning: { context_length: "1.48", gpu_layers: "1.48", threads: "1.48" },
7772
7965
  TextModelInfo: { title: "1.69", problem: "1.69" },
7773
- MlCatalogSetParams: { unusable: "1.69", speech: "1.81" },
7966
+ MlCatalogSetParams: { unusable: "1.69", speech: "1.81", embedding: "1.88", wake: "1.89" },
7967
+ ModelsLlmStatusResult: { embedding: "1.88" },
7968
+ ModelsLlmStopParams: { slot: "1.88" },
7774
7969
  MlProgress: { audio: "1.81" },
7775
- ModelsLlmStartParams: { gpu_layers: "1.48", threads: "1.48", load_timeout_s: "1.48" },
7970
+ ModelsLlmStartParams: { gpu_layers: "1.48", threads: "1.48", load_timeout_s: "1.48", slot: "1.88" },
7776
7971
  FsPatchResult: { edits_applied: "1.1", edits_failed: "1.1" },
7777
7972
  "ProtocolErrorBody.data": { edits_failed: "1.1" },
7778
7973
  "RelayCallResponse|0": { protocol_version: "1.1" },
@@ -7956,7 +8151,9 @@ var RESULT_PATH = /* @__PURE__ */ new Map([
7956
8151
  // 1.67: Matrx Local's local_mac_apps result fields.
7957
8152
  ["photos.get", "PhotosGetResult"],
7958
8153
  ["location.get", "LocationGetResult"],
7959
- ["account.agents.restore_version", "AccountAgentsRestoreVersionResult"]
8154
+ ["account.agents.restore_version", "AccountAgentsRestoreVersionResult"],
8155
+ // 1.88: the embeddings slot beside the chat model.
8156
+ ["models.llm.status", "ModelsLlmStatusResult"]
7960
8157
  ]);
7961
8158
  var NESTED_RESULTS = /* @__PURE__ */ new Map([
7962
8159
  ["apps.chats.list", [["chats", "ChatRow"]]],
@@ -8120,7 +8317,7 @@ function forPeer(op, part, value, version) {
8120
8317
  var VERSIONED_RESULT_OPS = [.../* @__PURE__ */ new Set([...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys(), ...NESTED_RESULTS.keys()])];
8121
8318
 
8122
8319
  // src/contract.ts
8123
- var CONTRACT_SHA256 = "6bafb641835624f0c1624f585cf5cd59d4594107b4661936bab4b771e54924e2";
8320
+ var CONTRACT_SHA256 = "c506c1188555e5a6810a0fb4c8517ee0b7328c66f5b4ddcf7eb1fe55bc737914";
8124
8321
 
8125
8322
  // src/close-policy.ts
8126
8323
  var CLOSE_RULES = {
@@ -8206,9 +8403,10 @@ var TOOL_CATALOG = [
8206
8403
  { name: "desktop_documents", group: "tools_service", state: "built", path: "device_op", ops: ["documents.pdf_text", "documents.ocr", "documents.image_resize", "documents.office_generate"], platforms: ALL, summary: "PDF text, OCR, images, Word and Excel files" },
8207
8404
  { name: "desktop_web", group: "tools_service", state: "built", path: "device_op", ops: ["web.fetch", "web.scrape", "web.search", "web.fetch_with_browser"], platforms: ALL, summary: "Fetch, scrape, search and research the web from this computer's own connection (research: search on AI Matrx, every result read here)" },
8208
8405
  { name: "desktop_entities", group: "tools_service", state: "built", path: "device_op", ops: ["entities.ner", "entities.pii"], platforms: ALL, summary: "Names, places, organizations and private data, found on the device" },
8209
- // matrx-local's SemanticFindPaths: needs a local embedding index of this computer's files and an
8210
- // embedding model on the device; neither exists yet, so it is Coming soon on Agents › Tools.
8211
- { name: "desktop_semantic_find", group: "files_shell", state: "planned", path: "device_op", ops: ["fs.search_semantic"], platforms: ALL, summary: "Find files by meaning (a local embedding index of this computer's files)" },
8406
+ // matrx-local's SemanticFindPaths: the local embedding index of this computer's files (1.87) searched by an
8407
+ // embedding model on the device (1.88: the model service's embeddings slot). fs.semantic_status tells an agent
8408
+ // whether the index is ready (indexed N of M, or why not) before it asks.
8409
+ { name: "desktop_semantic_find", group: "files_shell", state: "built", path: "device_op", ops: ["fs.search_semantic", "fs.semantic_status"], platforms: ALL, summary: "Find files by meaning (a local embedding index of this computer's files, searched by an embedding model on the device)" },
8212
8410
  { name: "desktop_notes", group: "files_shell", state: "built", path: "device_op", ops: ["notes.folders", "notes.list", "notes.read", "notes.write", "notes.search"], platforms: ALL, summary: "The person's local notes (Documents/Matrx/Notes): list, read, write, search" },
8213
8411
  // ── 5. Python `ml` service ───────────────────────────────────────────────────────────────────
8214
8412
  // Built: models.transcribe through local_proxy's POST /op/{cap.op} (matrx-ai implementations/desktop.py).
@@ -8237,7 +8435,7 @@ var LEGACY_ACTIONS = {
8237
8435
  "local_file.list": tool("fs_list"),
8238
8436
  "local_file.places": dropped("The device's home and folders reach the agent in its binding briefing (sysinfo.get)"),
8239
8437
  "local_file.find": tool("fs_search"),
8240
- "local_file.semantic_find": dropped("Needs a local embedding index; desktop_semantic_find is planned (Coming soon on Agents \u203A Tools) until it exists"),
8438
+ "local_file.semantic_find": tool("desktop_semantic_find"),
8241
8439
  "local_shell.run": tool("shell_execute"),
8242
8440
  "local_shell.output": tool("shell_job"),
8243
8441
  "local_shell.stop": tool("shell_job"),