@ai-matrx/desktop-protocol 0.21.96 → 0.21.98
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/CHANGELOG.md +24 -1
- package/dist/{chunk-server-UNRE6WGX.js → chunk-server-4H74IJI4.js} +3 -3
- package/dist/{chunk-server-46JNNDT7.js → chunk-server-ATU4VUHA.js} +6 -4
- package/dist/chunk-server-ATU4VUHA.js.map +1 -0
- package/dist/{chunk-server-HU5BCBEF.js → chunk-server-I5MQ4EET.js} +4 -2
- package/dist/{chunk-server-HU5BCBEF.js.map → chunk-server-I5MQ4EET.js.map} +1 -1
- package/dist/{chunk-server-IHK7SYRO.js → chunk-server-M4ZZLI5M.js} +8 -3
- package/dist/chunk-server-M4ZZLI5M.js.map +1 -0
- package/dist/client.cjs +9 -2
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +2 -2
- package/dist/client.d.ts +2 -2
- package/dist/client.js +3 -3
- package/dist/index.cjs +14 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +269 -253
- package/dist/index.d.ts +269 -253
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/{models-CW7-r8m4.d.cts → models-DDuVPiOe.d.cts} +493 -469
- package/dist/{models-CW7-r8m4.d.ts → models-DDuVPiOe.d.ts} +493 -469
- package/dist/react.d.cts +3 -1
- package/dist/react.d.ts +3 -1
- package/fixtures/device-model-contract.json +37 -0
- package/generated/desktop-protocol.schema.json +16 -3
- package/package.json +3 -2
- package/dist/chunk-server-46JNNDT7.js.map +0 -1
- package/dist/chunk-server-IHK7SYRO.js.map +0 -1
- /package/dist/{chunk-server-UNRE6WGX.js.map → chunk-server-4H74IJI4.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.21.
|
|
3
|
+
## 0.21.98
|
|
4
4
|
|
|
5
5
|
UNVERIFIED: this release has no Unreleased entry and the source comparison could not be made (the caller supplied no source comparison). Whether source changed is unknown; consumer action is unknown.
|
|
6
6
|
Check the package's gitHead on npm against this version's gitHead: `git diff <previous gitHead> <this gitHead> -- apps/shared/desktop-protocol/src`.
|
|
7
7
|
|
|
8
|
+
## 0.21.97
|
|
9
|
+
|
|
10
|
+
SOURCE CHANGED WITH NO RELEASE NOTE. This release shipped source changes that nobody described in an Unreleased entry,
|
|
11
|
+
so they may include breaking API changes. Consumer action is UNKNOWN: read the diff before upgrading.
|
|
12
|
+
Diff: `git diff cf96f35563 10c84da03c -- apps/shared/desktop-protocol/src`
|
|
13
|
+
|
|
14
|
+
Changed shipped source files (5):
|
|
15
|
+
- `apps/shared/desktop-protocol/src/contract.ts`
|
|
16
|
+
- `apps/shared/desktop-protocol/src/schema/errors.ts`
|
|
17
|
+
- `apps/shared/desktop-protocol/src/schema/primitives.ts`
|
|
18
|
+
- `apps/shared/desktop-protocol/src/types.ts`
|
|
19
|
+
- `apps/shared/desktop-protocol/src/versioning.ts`
|
|
20
|
+
|
|
21
|
+
## 0.21.96
|
|
22
|
+
|
|
23
|
+
SOURCE CHANGED WITH NO RELEASE NOTE. This release shipped source changes that nobody described in an Unreleased entry,
|
|
24
|
+
so they may include breaking API changes. Consumer action is UNKNOWN: read the diff before upgrading.
|
|
25
|
+
Diff: `git diff 141397109f cf96f35563 -- apps/shared/desktop-protocol/src`
|
|
26
|
+
|
|
27
|
+
Changed shipped source files (2):
|
|
28
|
+
- `apps/shared/desktop-protocol/src/schema/registry.ts`
|
|
29
|
+
- `apps/shared/desktop-protocol/src/schema/served-service-ops.ts`
|
|
30
|
+
|
|
8
31
|
## 0.21.95
|
|
9
32
|
|
|
10
33
|
SOURCE CHANGED WITH NO RELEASE NOTE. This release shipped source changes that nobody described in an Unreleased entry,
|
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
NAMED_SCHEMAS,
|
|
4
4
|
OPS,
|
|
5
5
|
SERVICES
|
|
6
|
-
} from "./chunk-server-
|
|
7
|
-
import "./chunk-server-
|
|
6
|
+
} from "./chunk-server-I5MQ4EET.js";
|
|
7
|
+
import "./chunk-server-M4ZZLI5M.js";
|
|
8
8
|
import "./chunk-server-OVLU5III.js";
|
|
9
9
|
export {
|
|
10
10
|
EVENTS,
|
|
@@ -12,4 +12,4 @@ export {
|
|
|
12
12
|
OPS,
|
|
13
13
|
SERVICES
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=chunk-server-
|
|
15
|
+
//# sourceMappingURL=chunk-server-4H74IJI4.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
CloseCode,
|
|
3
3
|
PROTOCOL_MAJOR,
|
|
4
4
|
PROTOCOL_MINOR
|
|
5
|
-
} from "./chunk-server-
|
|
5
|
+
} from "./chunk-server-M4ZZLI5M.js";
|
|
6
6
|
|
|
7
7
|
// src/versioning.ts
|
|
8
8
|
import { compareVersions } from "@ai-matrx/kit/versions";
|
|
@@ -12,10 +12,11 @@ var FIELDS_SINCE = {
|
|
|
12
12
|
MlCatalogSetParams: { unusable: "1.69", speech: "1.81", embedding: "1.88", wake: "1.89" },
|
|
13
13
|
ModelsLlmStatusResult: { embedding: "1.88" },
|
|
14
14
|
ModelsLlmStopParams: { slot: "1.88" },
|
|
15
|
+
ModelsLlmChatParams: { chat_title: "1.92" },
|
|
15
16
|
MlProgress: { audio: "1.81" },
|
|
16
17
|
ModelsLlmStartParams: { gpu_layers: "1.48", threads: "1.48", load_timeout_s: "1.48", slot: "1.88" },
|
|
17
18
|
FsPatchResult: { edits_applied: "1.1", edits_failed: "1.1" },
|
|
18
|
-
"ProtocolErrorBody.data": { edits_failed: "1.1" },
|
|
19
|
+
"ProtocolErrorBody.data": { edits_failed: "1.1", chat_title: "1.91" },
|
|
19
20
|
"RelayCallResponse|0": { protocol_version: "1.1" },
|
|
20
21
|
"RelayCallResponse|1": { protocol_version: "1.1" },
|
|
21
22
|
WindowInfo: { app: "1.7", pid: "1.7" },
|
|
@@ -108,7 +109,8 @@ var REASONS_SINCE = {
|
|
|
108
109
|
awaiting_confirmation: "1.28",
|
|
109
110
|
tool_disabled_on_device: "1.34",
|
|
110
111
|
model_not_running: "1.76",
|
|
111
|
-
model_server_unreachable: "1.76"
|
|
112
|
+
model_server_unreachable: "1.76",
|
|
113
|
+
busy_with_another_chat: "1.91"
|
|
112
114
|
};
|
|
113
115
|
var PERMISSIONS_SINCE = {
|
|
114
116
|
reminders: "1.41",
|
|
@@ -405,4 +407,4 @@ export {
|
|
|
405
407
|
closeRule,
|
|
406
408
|
isTerminalClose
|
|
407
409
|
};
|
|
408
|
-
//# sourceMappingURL=chunk-server-
|
|
410
|
+
//# sourceMappingURL=chunk-server-ATU4VUHA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/versioning.ts","../src/close-policy.ts"],"sourcesContent":["/**\n * Version skew is the normal state: a phone, the server and a desktop app in the field run\n * different package versions, and a minor protocol bump must never make any of them fail.\n *\n * THE RULE (enforced by src/versioning.test.ts against generated/baseline-1.0.json):\n * 1. Within a major, a minor may only ADD. A field added after x.0 is OPTIONAL in the schema\n * (an older peer omits it) and is listed in FIELDS_SINCE with the minor that added it.\n * 2. A writer never sends a field newer than the version its peer negotiated (hello/welcome, or\n * the /call version header): older peers' strict schemas refuse unknown keys. `forPeer`\n * does the stripping; the core's Router applies it to every result and error it sends.\n * 3. A reader that needs a newer field checks the peer's version and says so loudly when the\n * peer is older (e.g. aidream's local_proxy marks a patch answer from a 1.0 app).\n */\nimport { compareVersions } from \"@ai-matrx/kit/versions\";\n\nimport type { OpName } from \"./schema/registry\";\nimport type { ErrorReasonName } from \"./types\";\nimport { PROTOCOL_MAJOR, PROTOCOL_MINOR } from \"./schema/primitives\";\n\n/**\n * Fields added after x.0, by schema location: a named schema (`FsPatchResult`), a property path\n * inside one (`ProtocolErrorBody.data`), or a union branch (`RelayCallResponse|0`).\n */\nexport const FIELDS_SINCE = {\n LlmRunning: { context_length: \"1.48\", gpu_layers: \"1.48\", threads: \"1.48\" },\n TextModelInfo: { title: \"1.69\", problem: \"1.69\" },\n MlCatalogSetParams: { unusable: \"1.69\", speech: \"1.81\", embedding: \"1.88\", wake: \"1.89\" },\n ModelsLlmStatusResult: { embedding: \"1.88\" },\n ModelsLlmStopParams: { slot: \"1.88\" },\n ModelsLlmChatParams: { chat_title: \"1.92\" },\n MlProgress: { audio: \"1.81\" },\n ModelsLlmStartParams: { gpu_layers: \"1.48\", threads: \"1.48\", load_timeout_s: \"1.48\", slot: \"1.88\" },\n FsPatchResult: { edits_applied: \"1.1\", edits_failed: \"1.1\" },\n \"ProtocolErrorBody.data\": { edits_failed: \"1.1\", chat_title: \"1.91\" },\n \"RelayCallResponse|0\": { protocol_version: \"1.1\" },\n \"RelayCallResponse|1\": { protocol_version: \"1.1\" },\n WindowInfo: { app: \"1.7\", pid: \"1.7\" },\n AppWindowInfo: { remote_control: \"1.50\" },\n WindowRemoteControl: { problem: \"1.52\" },\n CodingProviderStatus: { accounts: \"1.53\", accountsProblem: \"1.53\", usage: \"1.57\", continueOn: \"1.57\" },\n CodingProviderAccount: { ready: \"1.57\", lastProblem: \"1.57\", problem: \"1.57\", fix: \"1.57\", usage: \"1.57\", continueOn: \"1.57\" },\n CodingSessionRecord: { accountId: \"1.57\" },\n CodingDiscoveredChat: { accountId: \"1.57\" },\n CodingRecentRow: { accountId: \"1.57\" },\n CodingSearchHit: { accountId: \"1.57\" },\n AppInstance: { missing: \"1.63\" },\n AppsInstancesListParams: { fresh: \"1.51\" },\n AppsInstancesListResult: { as_of_ms: \"1.51\", refreshing: \"1.51\", computer: \"1.71\", elsewhere: \"1.71\", shared_problem: \"1.71\" },\n AppsAccountsListParams: { fresh: \"1.51\" },\n AppsAccountsListResult: { as_of_ms: \"1.51\", refreshing: \"1.51\", shared_problem: \"1.71\" },\n AppsChatsListResult: { updating: \"1.9\", live: \"1.9\", families: \"1.10\" },\n AppsAccountsUsageResult: { problem: \"1.12\" },\n AppsAccountsResetsResult: { problem: \"1.12\" },\n ColdChat: { hidden: \"1.78\" },\n SpendChat: { hidden: \"1.78\" },\n SpendLive: { hidden: \"1.78\" },\n SpendIdle: { hidden: \"1.78\" },\n ChatRow: { app_project: \"1.13\", tokens: \"1.13\", original_title: \"1.14\", title_source: \"1.14\", title_override: \"1.14\", archived: \"1.15\", session_id: \"1.59\", app_groups: \"1.59\", parent: \"1.59\", prior_sessions: \"1.59\", title_sync: \"1.61\", moved: \"1.62\", home: \"1.63\", hidden: \"1.70\", pin_sync: \"1.72\" },\n AccountUsage: { plan: \"1.13\", credits: \"1.13\", five_hour_resets_by_ms: \"1.25\", read_source: \"1.73\" },\n AppAccount: { profile: \"1.73\", read_source: \"1.73\", session_cost_usd: \"1.73\", readings: \"1.79\" },\n ResourcesDisk: { name: \"1.17\" },\n StackServer: { cpu_percent: \"1.18\", memory_bytes: \"1.18\" },\n AudioDevice: { kind: \"1.24\" },\n AudioRecordParams: { channels: \"1.66\", sample_rate: \"1.66\" },\n AudioRecordResult: { channels: \"1.66\", sample_rate: \"1.66\" },\n AudioPlayParams: { device_id: \"1.66\" },\n WindowListParams: { app: \"1.66\" },\n WindowMinimizeParams: { mode: \"1.66\" },\n WindowMinimizeResult: { mode: \"1.66\" },\n ScreenDisplay: { rotation: \"1.24\", refresh_hz: \"1.24\", builtin: \"1.24\" },\n PowerStatusResult: { energy: \"1.24\" },\n AppsSpendResult: { days: \"1.24\" },\n AppsWindowsUpdateStateResult: { closed_by_update: \"1.27\" },\n AppsProjectsToWindowParams: { pin: \"1.32\", chat_ids: \"1.36\", take_off_from: \"1.36\", group_id: \"1.43\", group_name: \"1.43\" },\n AppsProjectsToWindowResult: { pin: \"1.32\", chats: \"1.43\" },\n ProjectMoveGroup: { when: \"1.43\", group_id: \"1.43\" },\n AppsChatsTitlesCheckResult: { stale_windows: \"1.33\" },\n AccountAgent: { tags: \"1.39\", model_id: \"1.39\", access_level: \"1.39\", organization_id: \"1.39\", origin: \"1.39\", is_archived: \"1.39\", orchestra: \"1.39\" },\n WebScrapeParams: { engine: \"1.40\", land: \"1.40\" },\n WebScrapePage: { source: \"1.40\" },\n WebBrowserFetchParams: { land: \"1.40\" },\n WebBrowserFetchResult: { source: \"1.40\" },\n SysinfoGetResult: { requirements: \"1.41\" },\n \"SysinfoGetResult.permissions[]\": { detail: \"1.41\" },\n MessagesSendParams: { service: \"1.42\" },\n // 1.67: Matrx Local's local_mac_apps and local_windows_ps contracts, carried whole.\n MailAccount: { mailboxes: \"1.67\" },\n MailSendParams: { bcc: \"1.67\" },\n MessagesChat: { last_message: \"1.67\" },\n MessagesListParams: { contact: \"1.67\", unread_only: \"1.67\" },\n MessagesMessage: { read: \"1.67\", service: \"1.67\", chat_name: \"1.67\" },\n CalendarListParams: { calendars: \"1.67\" },\n CalendarEvent: { url: \"1.67\" },\n RemindersListParams: { lists: \"1.67\" },\n Reminder: { priority: \"1.67\", completed_at_ms: \"1.67\" },\n PhotosSearchParams: { media_type: \"1.67\" },\n Photo: { media_type: \"1.67\", duration_s: \"1.67\" },\n PhotosGetParams: { thumbnail_size: \"1.67\" },\n PhotosGetResult: { thumbnail_png_base64: \"1.67\" },\n LocationGetResult: { altitude_m: \"1.67\", vertical_accuracy_m: \"1.67\", speed_mps: \"1.67\", course_deg: \"1.67\" },\n WindowsServicesParams: { status: \"1.67\" },\n WindowsEventLogParams: { source: \"1.67\" },\n WindowsFeaturesParams: { installed_only: \"1.67\" },\n SysinfoHardwareResult: { graphics: \"1.45\" },\n DownloadRow: { error: \"1.46\" },\n CopyRestart: { reopened: \"1.60\" },\n AccountAgentsRestoreVersionResult: { new_version: \"1.68\", unchanged: \"1.68\" },\n} as const satisfies Record<string, Record<string, `${number}.${number}`>>;\n\nexport type FieldsSincePath = keyof typeof FIELDS_SINCE;\n\n/**\n * 1.0 fields that a later minor lets be null, and what a peer older than that minor is sent\n * instead (the value that meant the same thing before). Widening a field any other way is a major.\n */\nexport const NULL_SINCE = {\n \"RelayDeviceStatusEvent.since_ms\": { since: \"1.1\", olderPeersGet: 0 },\n} as const satisfies Record<string, { since: `${number}.${number}`; olderPeersGet: unknown }>;\n\n/**\n * Error reasons added after x.0, with the minor that added each. An older peer's strict enum would\n * refuse the whole error body, so `forPeer` drops a reason the peer does not know (the code, the\n * message and `retryable` still tell it what happened).\n */\nexport const REASONS_SINCE = {\n runtime_not_installed: \"1.2\",\n model_not_installed: \"1.2\",\n unsupported_media: \"1.2\",\n download_failed: \"1.2\",\n service_starting: \"1.2\",\n service_restarted: \"1.2\",\n service_failed: \"1.2\",\n browser_not_connected: \"1.28\",\n browser_ambiguous: \"1.28\",\n browser_account_mismatch: \"1.28\",\n browser_connection_off: \"1.28\",\n awaiting_confirmation: \"1.28\",\n tool_disabled_on_device: \"1.34\",\n model_not_running: \"1.76\",\n model_server_unreachable: \"1.76\",\n busy_with_another_chat: \"1.91\",\n} as const satisfies Partial<Record<ErrorReasonName, `${number}.${number}`>>;\n\n/**\n * (1.41) Values a later minor added to an enum a peer reads inside a list, by the minor that added\n * each: sysinfo.get's permission names. An older peer's strict enum would refuse the whole answer,\n * so `forPeer` leaves out the rows it does not know (it is never sent a name it cannot read).\n */\nexport const PERMISSIONS_SINCE = {\n reminders: \"1.41\",\n speech_recognition: \"1.41\",\n messages: \"1.41\",\n mail: \"1.41\",\n wifi: \"1.41\",\n} as const satisfies Record<string, `${number}.${number}`>;\n\n/**\n * (1.80) Values a later minor added to SetupItemKind (apps.setup.list `setups[].items[].kind`), by\n * the minor that added each. An older peer's strict enum would refuse the whole answer, so `forPeer`\n * leaves out the items it does not know.\n */\nexport const SETUP_KINDS_SINCE = {\n skill: \"1.80\",\n} as const satisfies Record<string, `${number}.${number}`>;\n\nfunction setupItemsForPeer(value: unknown, version: string): unknown {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) return value;\n const body = value as { setups?: unknown };\n if (!Array.isArray(body.setups)) return value;\n const since = SETUP_KINDS_SINCE as Record<string, string>;\n const setups: unknown[] = body.setups;\n const next = setups.map((s: unknown) => {\n const items = (s as { items?: unknown } | null)?.items;\n if (!Array.isArray(items)) return s;\n const kept = items.filter((i: unknown) => {\n const kind = (i as { kind?: unknown } | null)?.kind;\n const added = typeof kind === \"string\" ? since[kind] : undefined;\n return !added || knows(version, added);\n });\n return kept.length === items.length ? s : { ...(s as Record<string, unknown>), items: kept };\n });\n return next.some((s, i) => s !== setups[i]) ? { ...body, setups: next } : value;\n}\n\nfunction permissionsForPeer(value: unknown, version: string): unknown {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) return value;\n const body = value as { permissions?: unknown };\n if (!Array.isArray(body.permissions)) return value;\n const since = PERMISSIONS_SINCE as Record<string, string>;\n const kept = body.permissions.filter((p: unknown) => {\n const name = (p as { name?: unknown } | null)?.name;\n const added = typeof name === \"string\" ? since[name] : undefined;\n return !added || knows(version, added);\n });\n return kept.length === body.permissions.length ? value : { ...body, permissions: kept };\n}\n\n/** A device status for a reader at `version`: `since_ms` null (\"never\") becomes 0 before 1.1. */\nexport function statusForPeer<T extends { since_ms: number | null }>(status: T, version: string): T {\n const rule = NULL_SINCE[\"RelayDeviceStatusEvent.since_ms\"];\n return status.since_ms === null && !knows(version, rule.since) ? { ...status, since_ms: rule.olderPeersGet } : status;\n}\n\n/**\n * A WebSocket client announces the newest minor it reads at connect time by also offering\n * `matrx.v<major>.<minor>` beside SUBPROTOCOL (servers still answer SUBPROTOCOL). Before hello is\n * possible, this is how the relay picks the right shape for its greeting.\n */\nexport function versionSubprotocol(version: string): string {\n return `matrx.v${version}`;\n}\n\n/** The version a client announced in its offered subprotocols; \"1.0\" when it did not. */\nexport function announcedVersion(offered: readonly string[]): string {\n let best = `${PROTOCOL_MAJOR}.0`;\n for (const p of offered) {\n const m = /^matrx\\.v(\\d+\\.\\d+)$/.exec(p.trim());\n if (m?.[1] && compareVersions(m[1], best) > 0 && m[1].startsWith(`${PROTOCOL_MAJOR}.`)) best = m[1];\n }\n return best;\n}\n\n/** True when a peer at `version` knows a field added in `since`. */\nexport function knows(version: string, since: string): boolean {\n return compareVersions(version, since) >= 0;\n}\n\n/** The version two peers speak: the lower minor within this major. */\nexport function negotiate(peerVersion: string): string {\n const [major = 0, minor = 0] = peerVersion.split(\".\").map(Number);\n if (major !== PROTOCOL_MAJOR) return `${PROTOCOL_MAJOR}.0`;\n return `${PROTOCOL_MAJOR}.${Math.min(minor, PROTOCOL_MINOR)}`;\n}\n\nfunction strip(value: unknown, fields: Record<string, string> | undefined, version: string): unknown {\n if (!fields || value === null || typeof value !== \"object\" || Array.isArray(value)) return value;\n let out: Record<string, unknown> | null = null;\n for (const [field, since] of Object.entries(fields)) {\n if (field in (value as object) && !knows(version, since)) {\n out ??= { ...(value as Record<string, unknown>) };\n delete out[field];\n }\n }\n return out ?? value;\n}\n\nconst RESULT_PATH = new Map<OpName, FieldsSincePath>([\n [\"fs.patch\", \"FsPatchResult\"],\n [\"apps.chats.list\", \"AppsChatsListResult\"],\n [\"apps.accounts.usage\", \"AppsAccountsUsageResult\"],\n [\"apps.accounts.resets\", \"AppsAccountsResetsResult\"],\n [\"apps.windows.update_state\", \"AppsWindowsUpdateStateResult\"],\n [\"web.fetch_with_browser\", \"WebBrowserFetchResult\"],\n [\"sysinfo.get\", \"SysinfoGetResult\"],\n [\"sysinfo.hardware\", \"SysinfoHardwareResult\"],\n [\"apps.projects.to_window\", \"AppsProjectsToWindowResult\"],\n // 1.67: Matrx Local's local_mac_apps result fields.\n [\"photos.get\", \"PhotosGetResult\"],\n [\"location.get\", \"LocationGetResult\"],\n [\"account.agents.restore_version\", \"AccountAgentsRestoreVersionResult\"],\n // 1.88: the embeddings slot beside the chat model.\n [\"models.llm.status\", \"ModelsLlmStatusResult\"],\n]);\n\n/** 1.13: results that carry a named schema with versioned fields under a key (one object or an array of them). */\nconst NESTED_RESULTS: ReadonlyMap<OpName, ReadonlyArray<readonly [string, FieldsSincePath]>> = new Map<OpName, ReadonlyArray<readonly [string, FieldsSincePath]>>([\n [\"apps.chats.list\", [[\"chats\", \"ChatRow\"]]],\n [\"apps.projects.file\", [[\"chat\", \"ChatRow\"]]],\n [\"apps.projects.file_many\", [[\"chats\", \"ChatRow\"]]],\n [\"apps.projects.unfile\", [[\"chat\", \"ChatRow\"]]],\n [\"apps.projects.move\", [[\"chat\", \"ChatRow\"]]],\n [\"apps.chats.star\", [[\"chat\", \"ChatRow\"]]],\n // 1.78: our Hide on the cold and spend rows.\n [\"apps.chats.cold\", [[\"waiting\", \"ColdChat\"], [\"recently_cold\", \"ColdChat\"]]],\n [\"apps.spend\", [[\"chats\", \"SpendChat\"], [\"live\", \"SpendLive\"], [\"idle\", \"SpendIdle\"]]],\n [\"apps.chats.place\", [[\"chat\", \"ChatRow\"]]],\n [\"apps.accounts.usage\", [[\"accounts\", \"AccountUsage\"]]],\n // 1.73/1.79: the account rows' newer fields (profile, read_source, session_cost_usd, readings).\n [\"apps.accounts.list\", [[\"accounts\", \"AppAccount\"]]],\n [\"resources.snapshot\", [[\"disks\", \"ResourcesDisk\"]]],\n [\"stack.state\", [[\"servers\", \"StackServer\"]]],\n [\"account.agents.list\", [[\"agents\", \"AccountAgent\"]]],\n [\"web.scrape\", [[\"pages\", \"WebScrapePage\"]]],\n [\"sysinfo.get\", [[\"permissions\", \"SysinfoGetResult.permissions[]\"]]],\n [\"models.downloads.list\", [[\"downloads\", \"DownloadRow\"]]],\n [\"apps.projects.to_window\", [[\"group\", \"ProjectMoveGroup\"]]],\n // 1.60: each closed window's reopen outcome in a restart_verify copy.\n [\"apps.chats.copy_to_account\", [[\"restart\", \"CopyRestart\"]]],\n [\"apps.windows.list\", [[\"windows\", \"AppWindowInfo\"]]],\n // 1.63: what an instance record still lacks.\n [\"apps.instances.list\", [[\"instances\", \"AppInstance\"]]],\n [\"apps.windows.set_remote_control\", [[\"remote_control\", \"WindowRemoteControl\"]]],\n // 1.67: Matrx Local's local_mac_apps result fields.\n [\"mail.accounts\", [[\"accounts\", \"MailAccount\"]]],\n [\"messages.chats\", [[\"chats\", \"MessagesChat\"]]],\n [\"messages.list\", [[\"messages\", \"MessagesMessage\"]]],\n [\"calendar.list\", [[\"events\", \"CalendarEvent\"]]],\n [\"reminders.list\", [[\"reminders\", \"Reminder\"]]],\n [\"photos.search\", [[\"photos\", \"Photo\"]]],\n [\"photos.get\", [[\"photo\", \"Photo\"]]],\n [\"coding.providers\", [[\"providers\", \"CodingProviderStatus\"]]],\n // 1.57: the account a coding record belongs to.\n [\"coding.sessions.list\", [[\"sessions\", \"CodingSessionRecord\"], [\"recent\", \"CodingRecentRow\"]]],\n [\"coding.recent.seen\", [[\"recent\", \"CodingRecentRow\"]]],\n [\"coding.discover\", [[\"chats\", \"CodingDiscoveredChat\"]]],\n [\"coding.search\", [[\"hits\", \"CodingSearchHit\"]]],\n [\"coding.start\", [[\"session\", \"CodingSessionRecord\"]]],\n [\"coding.send\", [[\"session\", \"CodingSessionRecord\"]]],\n [\"coding.takeover\", [[\"session\", \"CodingSessionRecord\"]]],\n [\"coding.options.set\", [[\"session\", \"CodingSessionRecord\"]]],\n [\"coding.agent.set\", [[\"session\", \"CodingSessionRecord\"]]],\n [\"coding.account.continue\", [[\"session\", \"CodingSessionRecord\"]]],\n]);\n\nfunction stripNested(value: unknown, nested: ReadonlyArray<readonly [string, FieldsSincePath]>, version: string): unknown {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) return value;\n let body = value as Record<string, unknown>;\n for (const [key, path] of nested) {\n const inner = body[key];\n if (inner === undefined || inner === null) continue;\n const fields = FIELDS_SINCE[path];\n if (Array.isArray(inner)) {\n const next = inner.map((x: unknown) => strip(x, fields, version));\n if (next.some((x, i) => x !== inner[i])) body = { ...body, [key]: next };\n } else {\n const next = strip(inner, fields, version);\n if (next !== inner) body = { ...body, [key]: next };\n }\n }\n return body;\n}\n\n/**\n * (1.52) apps.windows.list for a peer older than 1.52: each window's `remote_control` loses `problem`,\n * and a window whose settings file is damaged (\"unreadable\", a value its strict enum does not know)\n * has no `remote_control` at all (not known) instead of failing the whole list.\n */\nfunction windowListRemoteControlForPeer(value: unknown, version: string): unknown {\n if (knows(version, \"1.52\") || value === null || typeof value !== \"object\") return value;\n const body = value as { windows?: unknown };\n if (!Array.isArray(body.windows)) return value;\n const windows: unknown[] = body.windows;\n const next = windows.map((w: unknown) => {\n const rc = (w as { remote_control?: unknown } | null)?.remote_control;\n if (rc === null || typeof rc !== \"object\") return w;\n if ((rc as { setting?: unknown }).setting === \"unreadable\") {\n const { remote_control: _dropped, ...rest } = w as Record<string, unknown>;\n return rest;\n }\n const kept = strip(rc, FIELDS_SINCE.WindowRemoteControl, version);\n return kept === rc ? w : { ...(w as Record<string, unknown>), remote_control: kept };\n });\n return next.some((w, i) => w !== windows[i]) ? { ...body, windows: next } : value;\n}\n\n/**\n * coding.providers, one level below the providers:\n * (1.54) for a peer older than 1.54, a default model whose source is \"account\" (a value its strict\n * enum does not know) is sent as \"driver\" (the app picked it, not the person's settings\n * file), instead of failing the whole answer;\n * (1.57) each of a provider's `accounts` loses the fields newer than the peer (its health, usage\n * and \"Continue on\").\n */\nfunction providersForPeer(value: unknown, version: string): unknown {\n if (knows(version, \"1.57\") || value === null || typeof value !== \"object\") return value;\n const body = value as { providers?: unknown };\n if (!Array.isArray(body.providers)) return value;\n const providers: unknown[] = body.providers;\n const next = providers.map((p: unknown) => {\n if (p === null || typeof p !== \"object\") return p;\n let out = p as Record<string, unknown>;\n const dm = out.defaultModel;\n if (!knows(version, \"1.54\") && dm !== null && typeof dm === \"object\" && (dm as { source?: unknown }).source === \"account\") {\n out = { ...out, defaultModel: { ...(dm as Record<string, unknown>), source: \"driver\" } };\n }\n const accounts = out.accounts;\n if (Array.isArray(accounts)) {\n const kept = accounts.map((a: unknown) => strip(a, FIELDS_SINCE.CodingProviderAccount, version));\n if (kept.some((a, i) => a !== accounts[i])) out = { ...out, accounts: kept };\n }\n return out;\n });\n return next.some((p, i) => p !== providers[i]) ? { ...body, providers: next } : value;\n}\n\n/**\n * (1.65) coding.history / coding.transcript.read for a peer older than 1.65: a `continued` item (a\n * kind its strict union does not know, which would refuse the whole transcript) is sent as the\n * info `notice` it was before (\"Continued from Alpha\").\n */\nfunction transcriptItemsForPeer(value: unknown, version: string): unknown {\n if (knows(version, \"1.65\") || value === null || typeof value !== \"object\") return value;\n const body = value as { items?: unknown };\n if (!Array.isArray(body.items)) return value;\n const items: unknown[] = body.items;\n const next = items.map((item: unknown) => {\n const it = item as { kind?: unknown; id?: unknown; text?: unknown } | null;\n if (it?.kind !== \"continued\") return item;\n return { kind: \"notice\", id: it.id, level: \"info\", text: it.text };\n });\n return next.some((it, i) => it !== items[i]) ? { ...body, items: next } : value;\n}\n\n/** Results that carry WindowInfo (window.list's `windows`, focus/move's `window`). */\nconst WINDOW_RESULTS: ReadonlyMap<OpName, \"windows\" | \"window\"> = new Map([\n [\"window.list\", \"windows\"],\n [\"window.focus\", \"window\"],\n [\"window.move\", \"window\"],\n]);\n\nfunction stripWindows(value: unknown, key: \"windows\" | \"window\", version: string): unknown {\n if (value === null || typeof value !== \"object\") return value;\n const body = value as Record<string, unknown>;\n const inner = body[key];\n if (inner === undefined) return value;\n const fields = FIELDS_SINCE.WindowInfo;\n if (Array.isArray(inner)) {\n const next = inner.map((w: unknown) => strip(w, fields, version));\n return next.some((w, i) => w !== inner[i]) ? { ...body, [key]: next } : value;\n }\n const next = strip(inner, fields, version);\n return next === inner ? value : { ...body, [key]: next };\n}\n\n/**\n * What to send a peer that negotiated `version`: `result` of `op`, or an error body, with every\n * field newer than that version removed (rule 2). Unchanged for a current peer.\n */\nexport function forPeer(op: OpName, part: \"result\", value: unknown, version: string): unknown;\nexport function forPeer(op: OpName | null, part: \"error\", value: unknown, version: string): unknown;\nexport function forPeer(op: OpName | null, part: \"result\" | \"error\", value: unknown, version: string): unknown {\n if (part === \"result\") {\n const windowKey = op ? WINDOW_RESULTS.get(op) : undefined;\n if (windowKey) return stripWindows(value, windowKey, version);\n const path = op ? RESULT_PATH.get(op) : undefined;\n const known = op === \"sysinfo.get\" ? permissionsForPeer(value, version) : value;\n const top = path ? strip(known, FIELDS_SINCE[path], version) : known;\n const nested = op ? NESTED_RESULTS.get(op) : undefined;\n const stripped = nested ? stripNested(top, nested, version) : top;\n if (op === \"coding.providers\") return providersForPeer(stripped, version);\n if (op === \"coding.history\" || op === \"coding.transcript.read\") return transcriptItemsForPeer(stripped, version);\n if (op === \"apps.setup.list\") return setupItemsForPeer(stripped, version);\n return op === \"apps.windows.list\" ? windowListRemoteControlForPeer(stripped, version) : stripped;\n }\n if (value === null || typeof value !== \"object\") return value;\n const body = value as { data?: unknown };\n if (body.data === undefined) return value;\n let data = strip(body.data, FIELDS_SINCE[\"ProtocolErrorBody.data\"], version);\n const reason = (data as { reason?: unknown }).reason;\n const reasonSince = typeof reason === \"string\" ? (REASONS_SINCE as Record<string, string>)[reason] : undefined;\n if (reasonSince && !knows(version, reasonSince)) {\n const { reason: _dropped, ...rest } = data as Record<string, unknown>;\n data = rest;\n }\n return data === body.data ? value : { ...body, data };\n}\n\n/** Every op whose result has a versioned field is wired into forPeer (checked by the test). */\nexport const VERSIONED_RESULT_OPS: readonly OpName[] = [...new Set([...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys(), ...NESTED_RESULTS.keys()])];\n","/**\n * What a connecting side does after each WebSocket close — the ONE table every client reads (the\n * package client, the desktop's relay transport, any other dialer). Never keep a local list of\n * \"terminal\" codes: a code added to CloseCode without a rule here fails to compile.\n *\n * reconnect_now the far side went away on purpose or the socket died; dial again at once if the\n * connection had opened, with backoff otherwise (a dead network never spins).\n * reconnect transient refusal; dial again with backoff.\n * reauth the token was refused; get a FRESH token and dial once more. A second refusal in\n * a row (no successful open between) is terminal with outcome \"signed_out\".\n * stop retrying cannot help: stop dialing until something changes (a new sign-in, a\n * new device, an update) and show the outcome.\n */\nimport type { ErrorCodeName } from \"./types\";\nimport { CloseCode, type CloseCodeValue } from \"./schema/envelope\";\n\nexport type CloseAction = \"reconnect_now\" | \"reconnect\" | \"reauth\" | \"stop\";\n\n/** The one state a person is shown when dialing stops. */\nexport type CloseOutcome = \"signed_out\" | \"not_owned\" | \"removed\" | \"revoked\" | \"replaced\" | \"upgrade_required\";\n\nexport interface CloseRule {\n readonly action: CloseAction;\n /** Set for `stop` and `reauth` (the outcome when the fresh token is refused too). */\n readonly outcome?: CloseOutcome;\n /** The error a caller's pending work is failed with. */\n readonly error: readonly [ErrorCodeName, string];\n}\n\nexport const CLOSE_RULES = {\n [CloseCode.NORMAL]: { action: \"reconnect\", error: [\"DEVICE_OFFLINE\", \"Connection closed\"] },\n [CloseCode.GOING_AWAY]: { action: \"reconnect_now\", error: [\"DEVICE_OFFLINE\", \"Connection lost\"] },\n [CloseCode.ABNORMAL]: { action: \"reconnect_now\", error: [\"DEVICE_OFFLINE\", \"Connection lost\"] },\n [CloseCode.DEVICE_RECONNECTED]: { action: \"reconnect_now\", error: [\"DEVICE_OFFLINE\", \"Device reconnected\"] },\n [CloseCode.TRY_AGAIN_LATER]: { action: \"reconnect\", error: [\"DEVICE_OFFLINE\", \"Relay busy; retrying\"] },\n [CloseCode.AUTH_INVALID]: { action: \"reauth\", outcome: \"signed_out\", error: [\"AUTH_INVALID\", \"Sign-in was not accepted\"] },\n [CloseCode.AUTH_FORBIDDEN]: { action: \"stop\", outcome: \"not_owned\", error: [\"AUTH_FORBIDDEN\", \"Not this device's owner\"] },\n [CloseCode.DEVICE_NOT_FOUND]: { action: \"stop\", outcome: \"removed\", error: [\"NOT_FOUND\", \"Device not found\"] },\n [CloseCode.AUTH_EXPIRED]: { action: \"reauth\", outcome: \"signed_out\", error: [\"AUTH_EXPIRED\", \"Sign-in expired\"] },\n [CloseCode.REPLACED]: { action: \"stop\", outcome: \"replaced\", error: [\"CONFLICT\", \"Replaced by a newer connection\"] },\n [CloseCode.DEVICE_REVOKED]: { action: \"stop\", outcome: \"revoked\", error: [\"AUTH_DEVICE_REVOKED\", \"This device was revoked\"] },\n // A malformed message, or a connection the relay lost track of: a fresh socket starts clean.\n [CloseCode.PROTOCOL_ERROR]: { action: \"reconnect\", error: [\"PROTOCOL_ERROR\", \"Connection reset by the relay\"] },\n [CloseCode.UPGRADE_REQUIRED]: { action: \"stop\", outcome: \"upgrade_required\", error: [\"PROTOCOL_VERSION_UNSUPPORTED\", \"Protocol upgrade required\"] },\n} as const satisfies Record<CloseCodeValue, CloseRule>;\n\nconst UNKNOWN: CloseRule = { action: \"reconnect\", error: [\"DEVICE_OFFLINE\", \"Connection lost\"] };\n\n/** The rule for any close code; one this table does not know (or null: no close frame) reconnects with backoff. */\nexport function closeRule(code: number | null | undefined): CloseRule {\n if (code === null || code === undefined) return CLOSE_RULES[CloseCode.ABNORMAL];\n return (CLOSE_RULES as Record<number, CloseRule>)[code] ?? UNKNOWN;\n}\n\n/** True when dialing must stop after this close (no retry will help). */\nexport function isTerminalClose(code: number | null | undefined): boolean {\n return closeRule(code).action === \"stop\";\n}\n"],"mappings":"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","names":["next"]}
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
epochMs,
|
|
34
34
|
nonNegInt,
|
|
35
35
|
u32
|
|
36
|
-
} from "./chunk-server-
|
|
36
|
+
} from "./chunk-server-M4ZZLI5M.js";
|
|
37
37
|
|
|
38
38
|
// src/schema/fs-semantic.ts
|
|
39
39
|
import { z } from "zod";
|
|
@@ -738,6 +738,8 @@ var ModelsLlmChatParams = z6.strictObject({
|
|
|
738
738
|
body: z6.record(z6.string().max(200), z6.unknown()),
|
|
739
739
|
/** Start the model first when nothing runs (a `models` progress event says so); a different model running is never stopped. */
|
|
740
740
|
start_if_stopped: z6.boolean().optional(),
|
|
741
|
+
/** (1.92) The title of the chat this completion belongs to: named in the busy refusal to another chat that finds this model answering it. */
|
|
742
|
+
chat_title: z6.string().max(200).optional(),
|
|
741
743
|
window_bytes: z6.int().min(4096).max(16777216).optional()
|
|
742
744
|
});
|
|
743
745
|
var ModelsLlmChatResult = z6.strictObject({ model: TextModelId, content_type: z6.string().max(128) });
|
|
@@ -7495,4 +7497,4 @@ export {
|
|
|
7495
7497
|
SERVICES,
|
|
7496
7498
|
NAMED_SCHEMAS
|
|
7497
7499
|
};
|
|
7498
|
-
//# sourceMappingURL=chunk-server-
|
|
7500
|
+
//# sourceMappingURL=chunk-server-I5MQ4EET.js.map
|