@ai-matrx/desktop-protocol 0.21.21 → 0.21.23
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 +12 -0
- package/dist/client.cjs +171 -4
- 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 +171 -4
- package/dist/client.js.map +1 -1
- package/dist/index.cjs +256 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +418 -6
- package/dist/index.d.ts +418 -6
- package/dist/index.js +256 -7
- package/dist/index.js.map +1 -1
- package/dist/{models-ZQtKshfc.d.cts → models-CXjW101n.d.cts} +629 -2
- package/dist/{models-ZQtKshfc.d.ts → models-CXjW101n.d.ts} +629 -2
- package/dist/react.d.cts +261 -1
- package/dist/react.d.ts +261 -1
- package/generated/desktop-protocol.schema.json +1019 -85
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.21.23
|
|
4
|
+
|
|
5
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
6
|
+
`git diff npm/desktop-protocol/v0.21.22..npm/desktop-protocol/v0.21.23 -- apps/shared/desktop-protocol`).
|
|
7
|
+
No source changes intended and no consumer action required.
|
|
8
|
+
|
|
9
|
+
## 0.21.22
|
|
10
|
+
|
|
11
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
12
|
+
`git diff npm/desktop-protocol/v0.21.21..npm/desktop-protocol/v0.21.22 -- apps/shared/desktop-protocol`).
|
|
13
|
+
No source changes intended and no consumer action required.
|
|
14
|
+
|
|
3
15
|
## 0.21.21
|
|
4
16
|
|
|
5
17
|
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
package/dist/client.cjs
CHANGED
|
@@ -144,7 +144,7 @@ var import_zod2 = require("zod");
|
|
|
144
144
|
var import_zod = require("zod");
|
|
145
145
|
var import_uuid = require("@ai-matrx/kit/uuid");
|
|
146
146
|
var PROTOCOL_MAJOR = 1;
|
|
147
|
-
var PROTOCOL_MINOR =
|
|
147
|
+
var PROTOCOL_MINOR = 29;
|
|
148
148
|
var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
|
|
149
149
|
var ProtocolVersion = import_zod.z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
|
|
150
150
|
var RequestId = import_zod.z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
|
|
@@ -216,8 +216,19 @@ var ErrorReason = import_zod2.z.enum([
|
|
|
216
216
|
// RESOURCE_BUSY (retryable): the service is starting or restarting
|
|
217
217
|
"service_restarted",
|
|
218
218
|
// RESOURCE_GONE: the service died while this request ran
|
|
219
|
-
"service_failed"
|
|
219
|
+
"service_failed",
|
|
220
220
|
// INTERNAL: the service could not be started (see models.status)
|
|
221
|
+
// 1.28 (REASONS_SINCE): the `browser` capability (the AI Matrx extension as Matrx 2's client)
|
|
222
|
+
"browser_not_connected",
|
|
223
|
+
// NOT_FOUND: no browser with the extension is connected (or none routable)
|
|
224
|
+
"browser_ambiguous",
|
|
225
|
+
// CONFLICT: several browsers are connected and none was named
|
|
226
|
+
"browser_account_mismatch",
|
|
227
|
+
// AUTH_FORBIDDEN: the named browser is signed in to another account
|
|
228
|
+
"browser_connection_off",
|
|
229
|
+
// AUTH_FORBIDDEN: the person turned Browser connection off
|
|
230
|
+
"awaiting_confirmation"
|
|
231
|
+
// TIMEOUT: the person did not answer the browser's confirmation in time
|
|
221
232
|
]);
|
|
222
233
|
var FsPatchEditFailure = import_zod2.z.strictObject({ edit_index: nonNegInt, reason: import_zod2.z.string().max(300) });
|
|
223
234
|
var ProtocolErrorBody = import_zod2.z.strictObject({
|
|
@@ -2378,6 +2389,44 @@ var AppsChatsColdResult = import_zod30.z.strictObject({
|
|
|
2378
2389
|
/** Chats working right now (not waiting). */
|
|
2379
2390
|
working: nonNegInt
|
|
2380
2391
|
});
|
|
2392
|
+
var TitleCopies = import_zod30.z.strictObject({
|
|
2393
|
+
window: ChatPlace,
|
|
2394
|
+
/** Record copies in that window holding a different name (main keeps one per account folder). */
|
|
2395
|
+
copies: nonNegInt,
|
|
2396
|
+
titles: import_zod30.z.array(import_zod30.z.strictObject({ title: import_zod30.z.string().max(2e3), source: import_zod30.z.string().max(32) })).max(50)
|
|
2397
|
+
});
|
|
2398
|
+
var TitleMismatch = import_zod30.z.strictObject({
|
|
2399
|
+
chat_id: ChatId,
|
|
2400
|
+
/** The right name: the latest one a person gave it (in any window, or in Matrx), else the newest automatic title. */
|
|
2401
|
+
title: import_zod30.z.string().max(2e3),
|
|
2402
|
+
title_source: import_zod30.z.enum(["user", "auto"]),
|
|
2403
|
+
/** Where the right name came from: a window, "matrx", or "ledger" (decided earlier). */
|
|
2404
|
+
decided_from: import_zod30.z.string().max(64),
|
|
2405
|
+
kind: import_zod30.z.enum(["user_vs_auto", "user_vs_user", "auto_vs_auto", "source_only"]),
|
|
2406
|
+
windows: import_zod30.z.array(ChatPlace).max(200),
|
|
2407
|
+
differs_in: import_zod30.z.array(TitleCopies).max(200)
|
|
2408
|
+
});
|
|
2409
|
+
var AppsChatsTitlesCheckParams = import_zod30.z.strictObject({ app_key: AppKey });
|
|
2410
|
+
var AppsChatsTitlesCheckResult = import_zod30.z.strictObject({
|
|
2411
|
+
app_key: AppKey,
|
|
2412
|
+
chats_total: nonNegInt,
|
|
2413
|
+
chats_in_several_windows: nonNegInt,
|
|
2414
|
+
/** Chats with a different name in some window (or in Matrx). */
|
|
2415
|
+
chats_with_a_different_name: nonNegInt,
|
|
2416
|
+
copies_to_write: nonNegInt,
|
|
2417
|
+
chats: import_zod30.z.array(TitleMismatch).max(5e3)
|
|
2418
|
+
});
|
|
2419
|
+
var AppsChatsTitlesPushParams = import_zod30.z.strictObject({ app_key: AppKey, chat_id: ChatId.optional(), dry_run: import_zod30.z.boolean().optional() });
|
|
2420
|
+
var AppsChatsTitlesPushResult = import_zod30.z.strictObject({
|
|
2421
|
+
app_key: AppKey,
|
|
2422
|
+
/** Record files rewritten (title and titleSource only, each backed up first). */
|
|
2423
|
+
written: nonNegInt,
|
|
2424
|
+
chats_fixed: nonNegInt,
|
|
2425
|
+
/** Copies that could not be written (left for the next push). */
|
|
2426
|
+
failed: nonNegInt,
|
|
2427
|
+
/** Still different after the push (dry_run: would be written). */
|
|
2428
|
+
chats_with_a_different_name: nonNegInt
|
|
2429
|
+
});
|
|
2381
2430
|
var AppsChatsOpenParams = import_zod30.z.strictObject({ app_key: AppKey, chat_id: ChatId, window: ChatPlace.optional() });
|
|
2382
2431
|
var SpendSplit = import_zod30.z.strictObject({ main: import_zod30.z.number(), helpers: import_zod30.z.number() });
|
|
2383
2432
|
var SpendScopes = import_zod30.z.strictObject({ today: SpendSplit, week: SpendSplit });
|
|
@@ -2478,6 +2527,109 @@ var AppsWindowsUpdateAndReopenResult = import_zod30.z.strictObject({
|
|
|
2478
2527
|
installed_version: import_zod30.z.string().max(64).nullable()
|
|
2479
2528
|
});
|
|
2480
2529
|
|
|
2530
|
+
// src/schema/browser.ts
|
|
2531
|
+
var import_zod31 = require("zod");
|
|
2532
|
+
var BrowserClientInstance = import_zod31.z.string().min(1).max(64).regex(/^[A-Za-z0-9_.:-]+$/);
|
|
2533
|
+
var BrowserKind = import_zod31.z.enum(["chrome", "edge", "brave", "arc", "opera", "vivaldi", "chromium", "firefox", "other"]);
|
|
2534
|
+
var BrowserSessionState = import_zod31.z.enum(["connected", "different_account", "extension_signed_out", "device_signed_out", "unverified"]);
|
|
2535
|
+
var BrowserSession = import_zod31.z.strictObject({
|
|
2536
|
+
client_instance: BrowserClientInstance,
|
|
2537
|
+
/** What the person sees ("Chrome — Work"), set by the extension. */
|
|
2538
|
+
client_label: import_zod31.z.string().min(1).max(128),
|
|
2539
|
+
browser: BrowserKind,
|
|
2540
|
+
extension_version: import_zod31.z.string().min(1).max(32),
|
|
2541
|
+
state: BrowserSessionState,
|
|
2542
|
+
/** True only for `connected`: an agent's call can reach this session. */
|
|
2543
|
+
routable: import_zod31.z.boolean(),
|
|
2544
|
+
/** The extension's account email from its token (null when signed out or unknown). */
|
|
2545
|
+
account_email: import_zod31.z.string().max(320).nullable(),
|
|
2546
|
+
connected_at_ms: epochMs,
|
|
2547
|
+
last_call_at_ms: epochMs.nullable(),
|
|
2548
|
+
calls: nonNegInt,
|
|
2549
|
+
errors: nonNegInt,
|
|
2550
|
+
/** Call latency over the last 200 calls; null before the first. */
|
|
2551
|
+
p50_ms: nonNegInt.nullable(),
|
|
2552
|
+
p95_ms: nonNegInt.nullable(),
|
|
2553
|
+
/** A call is waiting for the person to confirm it in the browser. */
|
|
2554
|
+
awaiting_confirmation: import_zod31.z.boolean()
|
|
2555
|
+
});
|
|
2556
|
+
var BrowserRegisterParams = import_zod31.z.strictObject({
|
|
2557
|
+
client_instance: BrowserClientInstance,
|
|
2558
|
+
client_label: import_zod31.z.string().min(1).max(128),
|
|
2559
|
+
browser: BrowserKind,
|
|
2560
|
+
extension_version: import_zod31.z.string().min(1).max(32),
|
|
2561
|
+
/** The extension's current AI Matrx access token, checked against the device owner; null when signed out. */
|
|
2562
|
+
account_token: import_zod31.z.string().min(16).max(8192).nullable()
|
|
2563
|
+
});
|
|
2564
|
+
var BrowserRegisterResult = import_zod31.z.strictObject({ session: BrowserSession });
|
|
2565
|
+
var BrowserCallError = import_zod31.z.strictObject({
|
|
2566
|
+
message: import_zod31.z.string().max(1e3),
|
|
2567
|
+
/** The extension's own error code, when it has one ("tool_not_found", "denied"). */
|
|
2568
|
+
code: import_zod31.z.string().max(64).nullable()
|
|
2569
|
+
});
|
|
2570
|
+
var BrowserResultParams = import_zod31.z.strictObject({
|
|
2571
|
+
call_id: import_zod31.z.string().min(1).max(64),
|
|
2572
|
+
ok: import_zod31.z.boolean(),
|
|
2573
|
+
/** The tool's result when ok (any JSON). */
|
|
2574
|
+
result: import_zod31.z.unknown(),
|
|
2575
|
+
error: BrowserCallError.nullable()
|
|
2576
|
+
});
|
|
2577
|
+
var BrowserResultResult = import_zod31.z.strictObject({ accepted: import_zod31.z.boolean() });
|
|
2578
|
+
var BrowserCallPhase = import_zod31.z.enum(["awaiting_confirmation", "running"]);
|
|
2579
|
+
var BrowserProgressParams = import_zod31.z.strictObject({ call_id: import_zod31.z.string().min(1).max(64), phase: BrowserCallPhase });
|
|
2580
|
+
var BrowserProgressResult = import_zod31.z.strictObject({ accepted: import_zod31.z.boolean() });
|
|
2581
|
+
var BrowserSessionsParams = import_zod31.z.strictObject({});
|
|
2582
|
+
var BrowserSessionsResult = import_zod31.z.strictObject({
|
|
2583
|
+
/** The person's Browser connection switch. Off: no pairing, no extension sessions. */
|
|
2584
|
+
enabled: import_zod31.z.boolean(),
|
|
2585
|
+
/** Whether Matrx 2 is signed in (without an owner no session is routable). */
|
|
2586
|
+
owner_signed_in: import_zod31.z.boolean(),
|
|
2587
|
+
sessions: import_zod31.z.array(BrowserSession).max(64)
|
|
2588
|
+
});
|
|
2589
|
+
var BrowserDisconnectParams = import_zod31.z.strictObject({ client_instance: BrowserClientInstance });
|
|
2590
|
+
var BrowserDisconnectResult = import_zod31.z.strictObject({ disconnected: import_zod31.z.boolean() });
|
|
2591
|
+
var BrowserSetEnabledParams = import_zod31.z.strictObject({ enabled: import_zod31.z.boolean() });
|
|
2592
|
+
var BrowserSetEnabledResult = import_zod31.z.strictObject({ enabled: import_zod31.z.boolean() });
|
|
2593
|
+
var BrowserPairCodeParams = import_zod31.z.strictObject({});
|
|
2594
|
+
var BrowserPairCodeResult = import_zod31.z.strictObject({ code: import_zod31.z.string().min(16).max(128) });
|
|
2595
|
+
var BrowserPairResetParams = import_zod31.z.strictObject({});
|
|
2596
|
+
var BrowserCallParams = import_zod31.z.strictObject({
|
|
2597
|
+
tool: import_zod31.z.string().min(1).max(96).regex(/^[a-z][a-z0-9_]*$/),
|
|
2598
|
+
args: import_zod31.z.record(import_zod31.z.string(), import_zod31.z.unknown()),
|
|
2599
|
+
/** Which session; default: the most recently active routable one (BROWSER ambiguity → CONFLICT). */
|
|
2600
|
+
client_instance: BrowserClientInstance.optional(),
|
|
2601
|
+
/** How long to wait, including a person's confirmation; default 120 s. */
|
|
2602
|
+
timeout_ms: import_zod31.z.int().min(1e3).max(6e5).optional()
|
|
2603
|
+
});
|
|
2604
|
+
var BrowserCallResult = import_zod31.z.strictObject({
|
|
2605
|
+
client_instance: BrowserClientInstance,
|
|
2606
|
+
result: import_zod31.z.unknown(),
|
|
2607
|
+
duration_ms: nonNegInt
|
|
2608
|
+
});
|
|
2609
|
+
var BrowserInvokeEvent = import_zod31.z.strictObject({
|
|
2610
|
+
call_id: import_zod31.z.string().min(1).max(64),
|
|
2611
|
+
tool: import_zod31.z.string().min(1).max(96),
|
|
2612
|
+
args: import_zod31.z.record(import_zod31.z.string(), import_zod31.z.unknown()),
|
|
2613
|
+
deadline_ms: epochMs
|
|
2614
|
+
});
|
|
2615
|
+
var BrowserSessionsChangedEvent = import_zod31.z.strictObject({ count: nonNegInt, enabled: import_zod31.z.boolean() });
|
|
2616
|
+
var BrowserProgressEvent = import_zod31.z.strictObject({
|
|
2617
|
+
call_id: import_zod31.z.string().min(1).max(64),
|
|
2618
|
+
client_instance: BrowserClientInstance,
|
|
2619
|
+
phase: BrowserCallPhase
|
|
2620
|
+
});
|
|
2621
|
+
var DesktopHealth = import_zod31.z.strictObject({
|
|
2622
|
+
status: import_zod31.z.literal("ok"),
|
|
2623
|
+
service: import_zod31.z.literal("matrx-desktop"),
|
|
2624
|
+
version: import_zod31.z.string().max(32),
|
|
2625
|
+
protocol_version: import_zod31.z.string().max(16),
|
|
2626
|
+
ws_path: import_zod31.z.literal("/v1/connect"),
|
|
2627
|
+
device_id: import_zod31.z.string().max(64),
|
|
2628
|
+
browser_connection: import_zod31.z.enum(["on", "off"])
|
|
2629
|
+
});
|
|
2630
|
+
var BrowserPairRequest = import_zod31.z.strictObject({ client_instance: BrowserClientInstance });
|
|
2631
|
+
var BrowserPairResult = import_zod31.z.strictObject({ pair_token: import_zod31.z.string().min(16).max(128), ws_path: import_zod31.z.literal("/v1/connect") });
|
|
2632
|
+
|
|
2481
2633
|
// src/schema/registry.ts
|
|
2482
2634
|
var FS_ERR = ["NOT_FOUND", "PERMISSION_DENIED_OS", "INVALID_PARAMS", "RESOURCE_BUSY", "INTERNAL"];
|
|
2483
2635
|
var OPS = {
|
|
@@ -2540,6 +2692,8 @@ var OPS = {
|
|
|
2540
2692
|
// 1.11: Going cold, Spend, sync health, windows upkeep.
|
|
2541
2693
|
"apps.chats.cold": { params: AppsChatsColdParams, result: AppsChatsColdResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
2542
2694
|
"apps.chats.open": { params: AppsChatsOpenParams, result: AppsWindowActionResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "CONFLICT", "TIMEOUT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
2695
|
+
"apps.chats.titles_check": { params: AppsChatsTitlesCheckParams, result: AppsChatsTitlesCheckResult, kind: "unary", since: "1.29", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
2696
|
+
"apps.chats.titles_push": { params: AppsChatsTitlesPushParams, result: AppsChatsTitlesPushResult, kind: "unary", since: "1.29", errors: ["NOT_FOUND", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
2543
2697
|
"apps.spend": { params: AppsSpendParams, result: AppsSpendResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
2544
2698
|
"apps.sync.status": { params: AppsSyncStatusParams, result: AppsSyncStatusResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
2545
2699
|
"apps.sync.run": { params: AppsSyncRunParams, result: AppsWindowActionResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
@@ -2623,7 +2777,17 @@ var OPS = {
|
|
|
2623
2777
|
// 1.26: the app's own update (it installs only once every window quit) and bringing the windows back.
|
|
2624
2778
|
"apps.windows.update_state": { params: AppsWindowsUpdateStateParams, result: AppsWindowsUpdateStateResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
2625
2779
|
"apps.windows.reopen": { params: AppsWindowsReopenParams, result: AppsWindowsReopenResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
2626
|
-
"apps.windows.update_and_reopen": { params: AppsWindowsUpdateAndReopenParams, result: AppsWindowsUpdateAndReopenResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "CONFLICT", "TIMEOUT", "PLATFORM_UNSUPPORTED", "INTERNAL"] }
|
|
2780
|
+
"apps.windows.update_and_reopen": { params: AppsWindowsUpdateAndReopenParams, result: AppsWindowsUpdateAndReopenResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "CONFLICT", "TIMEOUT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
2781
|
+
// 1.28: the AI Matrx extension as a client (register, result, progress), the Browsers screen, and agents' calls.
|
|
2782
|
+
"browser.register": { params: BrowserRegisterParams, result: BrowserRegisterResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN", "INVALID_PARAMS", "INTERNAL"] },
|
|
2783
|
+
"browser.result": { params: BrowserResultParams, result: BrowserResultResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN", "PAYLOAD_TOO_LARGE"] },
|
|
2784
|
+
"browser.progress": { params: BrowserProgressParams, result: BrowserProgressResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN"] },
|
|
2785
|
+
"browser.sessions": { params: BrowserSessionsParams, result: BrowserSessionsResult, kind: "unary", since: "1.28", errors: ["INTERNAL"] },
|
|
2786
|
+
"browser.disconnect": { params: BrowserDisconnectParams, result: BrowserDisconnectResult, kind: "unary", since: "1.28", errors: ["NOT_FOUND", "AUTH_FORBIDDEN"] },
|
|
2787
|
+
"browser.set_enabled": { params: BrowserSetEnabledParams, result: BrowserSetEnabledResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN", "INTERNAL"] },
|
|
2788
|
+
"browser.pair_code": { params: BrowserPairCodeParams, result: BrowserPairCodeResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN", "INTERNAL"] },
|
|
2789
|
+
"browser.pair_reset": { params: BrowserPairResetParams, result: BrowserPairCodeResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN", "INTERNAL"] },
|
|
2790
|
+
"browser.call": { params: BrowserCallParams, result: BrowserCallResult, kind: "unary", since: "1.28", errors: ["NOT_FOUND", "CONFLICT", "AUTH_FORBIDDEN", "INVALID_PARAMS", "TIMEOUT", "CANCELLED", "RESOURCE_GONE", "PAYLOAD_TOO_LARGE", "INTERNAL"] }
|
|
2627
2791
|
};
|
|
2628
2792
|
var EVENTS = {
|
|
2629
2793
|
"fs.changed": FsChangedEvent,
|
|
@@ -2637,7 +2801,10 @@ var EVENTS = {
|
|
|
2637
2801
|
"coding.history.progress": CodingHistoryProgressEvent,
|
|
2638
2802
|
"relay.device_status": RelayDeviceStatusEvent,
|
|
2639
2803
|
"relay.auth_expiring": RelayAuthExpiringEvent,
|
|
2640
|
-
"diag.errors.changed": DiagErrorsChangedEvent
|
|
2804
|
+
"diag.errors.changed": DiagErrorsChangedEvent,
|
|
2805
|
+
"browser.invoke": BrowserInvokeEvent,
|
|
2806
|
+
"browser.sessions_changed": BrowserSessionsChangedEvent,
|
|
2807
|
+
"browser.progress": BrowserProgressEvent
|
|
2641
2808
|
};
|
|
2642
2809
|
|
|
2643
2810
|
// src/client/client.ts
|