@ai-matrx/desktop-protocol 0.21.84 → 0.21.86

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,8 +1,8 @@
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 { W as Welcome, D as DesktopProtocolError, C as CloseOutcome, O as OpName, a as OpParams, b as OpResult, c as OPS, S as StreamMeta, E as EndReason, d as EVENTS, e as ClientType, M as ModelsTranscribeResult, T as TranscriptionModelId, f as MlProgress } from './models-DMJ4I-2x.cjs';
5
- export { i as isDesktopProtocolError } from './models-DMJ4I-2x.cjs';
4
+ import { W as Welcome, D as DesktopProtocolError, C as CloseOutcome, O as OpName, a as OpParams, b as OpResult, c as OPS, S as StreamMeta, E as EndReason, d as EVENTS, e as ClientType, M as ModelsTranscribeResult, T as TranscriptionModelId, f as MlProgress } from './models-CIpqsu-S.cjs';
5
+ export { i as isDesktopProtocolError } from './models-CIpqsu-S.cjs';
6
6
  import { FrameHeader } from './frame.cjs';
7
7
 
8
8
  /** The subset of the WHATWG WebSocket the client uses — browser, React Native, `ws` and Workers all fit. */
package/dist/client.d.ts CHANGED
@@ -1,8 +1,8 @@
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 { W as Welcome, D as DesktopProtocolError, C as CloseOutcome, O as OpName, a as OpParams, b as OpResult, c as OPS, S as StreamMeta, E as EndReason, d as EVENTS, e as ClientType, M as ModelsTranscribeResult, T as TranscriptionModelId, f as MlProgress } from './models-DMJ4I-2x.js';
5
- export { i as isDesktopProtocolError } from './models-DMJ4I-2x.js';
4
+ import { W as Welcome, D as DesktopProtocolError, C as CloseOutcome, O as OpName, a as OpParams, b as OpResult, c as OPS, S as StreamMeta, E as EndReason, d as EVENTS, e as ClientType, M as ModelsTranscribeResult, T as TranscriptionModelId, f as MlProgress } from './models-CIpqsu-S.js';
5
+ export { i as isDesktopProtocolError } from './models-CIpqsu-S.js';
6
6
  import { FrameHeader } from './frame.js';
7
7
 
8
8
  /** 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-CFON4SPE.js";
4
+ } from "./chunk-server-4UMW5S3S.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-QLS73E3X.js";
15
+ } from "./chunk-server-VYJA3PFP.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-OSCX7DKA.js").then((m) => registry = m);
31
+ registryLoad ??= import("./chunk-server-MOQ6N2L2.js").then((m) => registry = m);
32
32
  return registryLoad;
33
33
  }
34
34
  var WS_OPEN = 1;
package/dist/index.cjs CHANGED
@@ -585,6 +585,16 @@ __export(src_exports, {
585
585
  ModelsStatusResult: () => ModelsStatusResult,
586
586
  ModelsTranscribeParams: () => ModelsTranscribeParams,
587
587
  ModelsTranscribeResult: () => ModelsTranscribeResult,
588
+ ModelsTtsInstallParams: () => ModelsTtsInstallParams,
589
+ ModelsTtsInstallResult: () => ModelsTtsInstallResult,
590
+ ModelsTtsSpeakParams: () => ModelsTtsSpeakParams,
591
+ ModelsTtsSpeakResult: () => ModelsTtsSpeakResult,
592
+ ModelsTtsStatusParams: () => ModelsTtsStatusParams,
593
+ ModelsTtsStatusResult: () => ModelsTtsStatusResult,
594
+ ModelsTtsVoiceRemoveParams: () => ModelsTtsVoiceRemoveParams,
595
+ ModelsTtsVoiceRemoveResult: () => ModelsTtsVoiceRemoveResult,
596
+ ModelsTtsVoiceSaveParams: () => ModelsTtsVoiceSaveParams,
597
+ ModelsTtsVoiceSaveResult: () => ModelsTtsVoiceSaveResult,
588
598
  NAMED_SCHEMAS: () => NAMED_SCHEMAS,
589
599
  NULL_SINCE: () => NULL_SINCE,
590
600
  NetAddress: () => NetAddress,
@@ -835,6 +845,11 @@ __export(src_exports, {
835
845
  TranscriptSegment: () => TranscriptSegment,
836
846
  TranscriptionModelId: () => TranscriptionModelId,
837
847
  TranscriptionModelInfo: () => TranscriptionModelInfo,
848
+ TtsAudioChunk: () => TtsAudioChunk,
849
+ TtsBlendPart: () => TtsBlendPart,
850
+ TtsModelInfo: () => TtsModelInfo,
851
+ TtsVoice: () => TtsVoice,
852
+ TtsVoiceId: () => TtsVoiceId,
838
853
  UnusableTextModel: () => UnusableTextModel,
839
854
  VERSIONED_RESULT_OPS: () => VERSIONED_RESULT_OPS,
840
855
  VaultFieldSummary: () => VaultFieldSummary,
@@ -945,7 +960,7 @@ module.exports = __toCommonJS(src_exports);
945
960
  var import_zod = require("zod");
946
961
  var import_uuid = require("@ai-matrx/kit/uuid");
947
962
  var PROTOCOL_MAJOR = 1;
948
- var PROTOCOL_MINOR = 80;
963
+ var PROTOCOL_MINOR = 81;
949
964
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
950
965
  var ProtocolVersion = import_zod.z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
951
966
  var RequestId = import_zod.z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -1817,13 +1832,79 @@ var ModelsTranscribeResult = import_zod10.z.strictObject({
1817
1832
  segments: import_zod10.z.array(TranscriptSegment).max(2e4),
1818
1833
  elapsed_ms: nonNegInt
1819
1834
  });
1835
+ var TtsVoiceId = import_zod10.z.string().min(1).max(64).regex(/^[a-z0-9][a-z0-9_]*$/);
1836
+ var TtsVoice = import_zod10.z.strictObject({
1837
+ id: TtsVoiceId,
1838
+ name: import_zod10.z.string().min(1).max(80),
1839
+ /** Null for a saved voice (a blend has no single gender). */
1840
+ gender: import_zod10.z.enum(["female", "male"]).nullable(),
1841
+ /** The language's name (`American English`). */
1842
+ language: import_zod10.z.string().min(1).max(64),
1843
+ /** Kokoro's language code (`a`, `b`, `j`, `z`, `e`, `f`, `h`, `i`, `p`). */
1844
+ lang_code: import_zod10.z.string().min(1).max(4),
1845
+ /** The published quality grade (`A`, `B-`, `C+`); null for a saved voice. */
1846
+ grade: import_zod10.z.string().max(4).nullable(),
1847
+ traits: import_zod10.z.array(import_zod10.z.string().min(1).max(32)).max(8),
1848
+ custom: import_zod10.z.boolean()
1849
+ });
1850
+ var TtsModelInfo = import_zod10.z.strictObject({ id: ModelKey, size_bytes: nonNegInt, installed: import_zod10.z.boolean() });
1851
+ var ModelsTtsStatusParams = import_zod10.z.strictObject({});
1852
+ var ModelsTtsStatusResult = import_zod10.z.strictObject({
1853
+ /** Null when the catalog offers no speech model this computer can run. */
1854
+ model: TtsModelInfo.nullable(),
1855
+ runtime: MlRuntimeState,
1856
+ /** Every voice: builtin first (in catalog order), then saved ones. Unbounded in practice; capped for the wire. */
1857
+ voices: import_zod10.z.array(TtsVoice).max(1e3),
1858
+ default_voice: TtsVoiceId,
1859
+ /** Hertz of every chunk this engine produces (24 000 for Kokoro v1.0). */
1860
+ sample_rate: import_zod10.z.int().min(8e3).max(192e3),
1861
+ speed_min: import_zod10.z.number().min(0),
1862
+ speed_max: import_zod10.z.number().min(0),
1863
+ /** The last install or load failure, one human line. */
1864
+ error: import_zod10.z.string().max(300).nullable()
1865
+ });
1866
+ var ModelsTtsInstallParams = import_zod10.z.strictObject({});
1867
+ var ModelsTtsInstallResult = import_zod10.z.strictObject({ model: ModelKey, elapsed_ms: nonNegInt });
1868
+ var TtsBlendPart = import_zod10.z.strictObject({ voice: TtsVoiceId, weight: import_zod10.z.number().min(0).max(1) });
1869
+ var ModelsTtsSpeakParams = import_zod10.z.strictObject({
1870
+ text: import_zod10.z.string().min(1).max(1e5),
1871
+ voice: TtsVoiceId.optional(),
1872
+ blend: import_zod10.z.array(TtsBlendPart).min(2).max(5).optional(),
1873
+ speed: import_zod10.z.number().min(0.5).max(2).default(1),
1874
+ /** Text longer than this many characters is split at sentences into chunks (Matrx Local's ttsStreamingThreshold). */
1875
+ chunk_chars: import_zod10.z.int().min(40).max(5e3).optional()
1876
+ });
1877
+ var ModelsTtsSpeakResult = import_zod10.z.strictObject({
1878
+ chunks: nonNegInt,
1879
+ duration_s: import_zod10.z.number().min(0),
1880
+ sample_rate: import_zod10.z.int().min(8e3).max(192e3),
1881
+ voice: import_zod10.z.string().min(1).max(200),
1882
+ elapsed_ms: nonNegInt
1883
+ });
1884
+ var TtsAudioChunk = import_zod10.z.strictObject({
1885
+ index: nonNegInt,
1886
+ sample_rate: import_zod10.z.int().min(8e3).max(192e3),
1887
+ pcm16_base64: import_zod10.z.string().max(8e6),
1888
+ /** The text this chunk speaks. */
1889
+ text: import_zod10.z.string().max(5e3)
1890
+ });
1891
+ var ModelsTtsVoiceSaveParams = import_zod10.z.strictObject({
1892
+ name: import_zod10.z.string().min(1).max(80),
1893
+ blend: import_zod10.z.array(TtsBlendPart).min(2).max(5).optional(),
1894
+ path: AbsPath.optional()
1895
+ });
1896
+ var ModelsTtsVoiceSaveResult = import_zod10.z.strictObject({ voice: TtsVoice });
1897
+ var ModelsTtsVoiceRemoveParams = import_zod10.z.strictObject({ voice: TtsVoiceId });
1898
+ var ModelsTtsVoiceRemoveResult = import_zod10.z.strictObject({ removed: import_zod10.z.boolean() });
1820
1899
  var MlProgress = import_zod10.z.strictObject({
1821
- kind: import_zod10.z.enum(["install", "transcribe"]),
1900
+ kind: import_zod10.z.enum(["install", "transcribe", "speak"]),
1822
1901
  /** 0–1 when known (transcribe: audio covered so far; install: bytes so far). */
1823
1902
  fraction: import_zod10.z.number().min(0).max(1).nullable(),
1824
1903
  install: MlInstallProgress.nullable(),
1825
1904
  /** The segment just transcribed (transcribe only): text appears as it is recognized. */
1826
- segment: TranscriptSegment.nullable()
1905
+ segment: TranscriptSegment.nullable(),
1906
+ /** (1.81) The chunk just synthesized (speak only). */
1907
+ audio: TtsAudioChunk.optional()
1827
1908
  });
1828
1909
  var TextModelId = ModelKey;
1829
1910
  var TextModelInfo = import_zod10.z.strictObject({
@@ -1948,7 +2029,9 @@ var MlCatalogSetParams = import_zod10.z.strictObject({
1948
2029
  /** When the catalog was last changed (catalog_updated_at), for the service's log. */
1949
2030
  catalog_updated_at: import_zod10.z.string().max(40),
1950
2031
  /** (1.69) Language models on this computer that cannot run here, each with its one-line reason: models.llm.status lists them. */
1951
- unusable: import_zod10.z.array(UnusableTextModel).optional()
2032
+ unusable: import_zod10.z.array(UnusableTextModel).optional(),
2033
+ /** (1.81) Text-to-speech models (Kokoro): what models.tts.* runs. */
2034
+ speech: import_zod10.z.array(CatalogModelEntry).optional()
1952
2035
  });
1953
2036
  var MlCatalogSetResult = import_zod10.z.strictObject({ text: nonNegInt, transcription: nonNegInt });
1954
2037
  var DownloadKind = import_zod10.z.enum(["speech_model", "text_model", "runtime"]);
@@ -5860,6 +5943,11 @@ var OPS = {
5860
5943
  "models.downloads.cancel": { params: ModelsDownloadsCancelParams, result: ModelsDownloadsCancelResult, kind: "unary", since: "1.45", errors: ["NOT_FOUND", "INTERNAL"] },
5861
5944
  "models.local.list": { params: ModelsLocalListParams, result: ModelsLocalListResult, kind: "unary", since: "1.74", errors: ["INTERNAL"] },
5862
5945
  "models.local.remove": { params: ModelsLocalRemoveParams, result: ModelsLocalRemoveResult, kind: "unary", since: "1.74", errors: ["NOT_FOUND", "INVALID_PARAMS", "RESOURCE_BUSY", "INTERNAL"] },
5946
+ "models.tts.status": { params: ModelsTtsStatusParams, result: ModelsTtsStatusResult, kind: "unary", since: "1.81", errors: ["RESOURCE_BUSY", "INTERNAL"] },
5947
+ "models.tts.install": { params: ModelsTtsInstallParams, result: ModelsTtsInstallResult, kind: "unary", since: "1.81", errors: ["NOT_FOUND", "RESOURCE_BUSY", "RESOURCE_GONE", "TIMEOUT", "CANCELLED", "INTERNAL"] },
5948
+ "models.tts.speak": { params: ModelsTtsSpeakParams, result: ModelsTtsSpeakResult, kind: "unary", since: "1.81", errors: ["NOT_FOUND", "INVALID_PARAMS", "RESOURCE_BUSY", "RESOURCE_GONE", "TIMEOUT", "CANCELLED", "INTERNAL"] },
5949
+ "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"] },
5950
+ "models.tts.voice_remove": { params: ModelsTtsVoiceRemoveParams, result: ModelsTtsVoiceRemoveResult, kind: "unary", since: "1.81", errors: ["NOT_FOUND", "INVALID_PARAMS", "INTERNAL"] },
5863
5951
  // Desktop apps and their profiles (SPEC §6 apps); profiles are rows in users.desktop_app_profile.
5864
5952
  "apps.list": { params: AppsListParams, result: AppsListResult, kind: "unary", since: "1.2", errors: ["INTERNAL"] },
5865
5953
  "apps.profiles.list": { params: AppsProfilesListParams, result: AppsProfilesListResult, kind: "unary", since: "1.2", errors: ["NOT_FOUND", "INVALID_PARAMS", "INTERNAL"] },
@@ -6142,6 +6230,11 @@ var SERVICES = {
6142
6230
  "ml.download_cancel": { params: ModelsDownloadsCancelParams, result: ModelsDownloadsCancelResult },
6143
6231
  "ml.local_list": { params: ModelsLocalListParams, result: ModelsLocalListResult },
6144
6232
  "ml.local_remove": { params: ModelsLocalRemoveParams, result: ModelsLocalRemoveResult },
6233
+ "ml.tts_status": { params: ModelsTtsStatusParams, result: ModelsTtsStatusResult },
6234
+ "ml.tts_install": { params: ModelsTtsInstallParams, result: ModelsTtsInstallResult },
6235
+ "ml.tts_speak": { params: ModelsTtsSpeakParams, result: ModelsTtsSpeakResult },
6236
+ "ml.tts_voice_save": { params: ModelsTtsVoiceSaveParams, result: ModelsTtsVoiceSaveResult },
6237
+ "ml.tts_voice_remove": { params: ModelsTtsVoiceRemoveParams, result: ModelsTtsVoiceRemoveResult },
6145
6238
  "ml.catalog_set": { params: MlCatalogSetParams, result: MlCatalogSetResult }
6146
6239
  }
6147
6240
  },
@@ -6349,6 +6442,21 @@ var NAMED_SCHEMAS = {
6349
6442
  ModelsLocalListResult,
6350
6443
  ModelsLocalRemoveParams,
6351
6444
  ModelsLocalRemoveResult,
6445
+ TtsVoiceId,
6446
+ TtsVoice,
6447
+ TtsModelInfo,
6448
+ ModelsTtsStatusParams,
6449
+ ModelsTtsStatusResult,
6450
+ ModelsTtsInstallParams,
6451
+ ModelsTtsInstallResult,
6452
+ TtsBlendPart,
6453
+ ModelsTtsSpeakParams,
6454
+ ModelsTtsSpeakResult,
6455
+ TtsAudioChunk,
6456
+ ModelsTtsVoiceSaveParams,
6457
+ ModelsTtsVoiceSaveResult,
6458
+ ModelsTtsVoiceRemoveParams,
6459
+ ModelsTtsVoiceRemoveResult,
6352
6460
  CodingServiceCredentials,
6353
6461
  CodingHistoryBlocked,
6354
6462
  CodingHistoryFailure,
@@ -7013,7 +7121,8 @@ var import_versions = require("@ai-matrx/kit/versions");
7013
7121
  var FIELDS_SINCE = {
7014
7122
  LlmRunning: { context_length: "1.48", gpu_layers: "1.48", threads: "1.48" },
7015
7123
  TextModelInfo: { title: "1.69", problem: "1.69" },
7016
- MlCatalogSetParams: { unusable: "1.69" },
7124
+ MlCatalogSetParams: { unusable: "1.69", speech: "1.81" },
7125
+ MlProgress: { audio: "1.81" },
7017
7126
  ModelsLlmStartParams: { gpu_layers: "1.48", threads: "1.48", load_timeout_s: "1.48" },
7018
7127
  FsPatchResult: { edits_applied: "1.1", edits_failed: "1.1" },
7019
7128
  "ProtocolErrorBody.data": { edits_failed: "1.1" },
@@ -7362,7 +7471,7 @@ function forPeer(op, part, value, version) {
7362
7471
  var VERSIONED_RESULT_OPS = [.../* @__PURE__ */ new Set([...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys(), ...NESTED_RESULTS.keys()])];
7363
7472
 
7364
7473
  // src/contract.ts
7365
- var CONTRACT_SHA256 = "c416872bf8877ac2f210f9a4da3c7873a49879bfe07d4c58f4f29dc91e09be27";
7474
+ var CONTRACT_SHA256 = "f88cc7b499a4e0c6f8dd49d8c67b88d009218977e625330423421d231e1cca80";
7366
7475
 
7367
7476
  // src/close-policy.ts
7368
7477
  var CLOSE_RULES = {