@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/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { z } from "zod";
3
3
  import { UUID_SHAPE_PATTERN } from "@ai-matrx/kit/uuid";
4
4
  var PROTOCOL_MAJOR = 1;
5
- var PROTOCOL_MINOR = 27;
5
+ var PROTOCOL_MINOR = 29;
6
6
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
7
7
  var ProtocolVersion = z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
8
8
  var RequestId = z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -75,8 +75,19 @@ var ErrorReason = z2.enum([
75
75
  // RESOURCE_BUSY (retryable): the service is starting or restarting
76
76
  "service_restarted",
77
77
  // RESOURCE_GONE: the service died while this request ran
78
- "service_failed"
78
+ "service_failed",
79
79
  // INTERNAL: the service could not be started (see models.status)
80
+ // 1.28 (REASONS_SINCE): the `browser` capability (the AI Matrx extension as Matrx 2's client)
81
+ "browser_not_connected",
82
+ // NOT_FOUND: no browser with the extension is connected (or none routable)
83
+ "browser_ambiguous",
84
+ // CONFLICT: several browsers are connected and none was named
85
+ "browser_account_mismatch",
86
+ // AUTH_FORBIDDEN: the named browser is signed in to another account
87
+ "browser_connection_off",
88
+ // AUTH_FORBIDDEN: the person turned Browser connection off
89
+ "awaiting_confirmation"
90
+ // TIMEOUT: the person did not answer the browser's confirmation in time
80
91
  ]);
81
92
  var FsPatchEditFailure = z2.strictObject({ edit_index: nonNegInt, reason: z2.string().max(300) });
82
93
  var ProtocolErrorBody = z2.strictObject({
@@ -1334,6 +1345,44 @@ var AppsChatsColdResult = z14.strictObject({
1334
1345
  /** Chats working right now (not waiting). */
1335
1346
  working: nonNegInt
1336
1347
  });
1348
+ var TitleCopies = z14.strictObject({
1349
+ window: ChatPlace,
1350
+ /** Record copies in that window holding a different name (main keeps one per account folder). */
1351
+ copies: nonNegInt,
1352
+ titles: z14.array(z14.strictObject({ title: z14.string().max(2e3), source: z14.string().max(32) })).max(50)
1353
+ });
1354
+ var TitleMismatch = z14.strictObject({
1355
+ chat_id: ChatId,
1356
+ /** The right name: the latest one a person gave it (in any window, or in Matrx), else the newest automatic title. */
1357
+ title: z14.string().max(2e3),
1358
+ title_source: z14.enum(["user", "auto"]),
1359
+ /** Where the right name came from: a window, "matrx", or "ledger" (decided earlier). */
1360
+ decided_from: z14.string().max(64),
1361
+ kind: z14.enum(["user_vs_auto", "user_vs_user", "auto_vs_auto", "source_only"]),
1362
+ windows: z14.array(ChatPlace).max(200),
1363
+ differs_in: z14.array(TitleCopies).max(200)
1364
+ });
1365
+ var AppsChatsTitlesCheckParams = z14.strictObject({ app_key: AppKey });
1366
+ var AppsChatsTitlesCheckResult = z14.strictObject({
1367
+ app_key: AppKey,
1368
+ chats_total: nonNegInt,
1369
+ chats_in_several_windows: nonNegInt,
1370
+ /** Chats with a different name in some window (or in Matrx). */
1371
+ chats_with_a_different_name: nonNegInt,
1372
+ copies_to_write: nonNegInt,
1373
+ chats: z14.array(TitleMismatch).max(5e3)
1374
+ });
1375
+ var AppsChatsTitlesPushParams = z14.strictObject({ app_key: AppKey, chat_id: ChatId.optional(), dry_run: z14.boolean().optional() });
1376
+ var AppsChatsTitlesPushResult = z14.strictObject({
1377
+ app_key: AppKey,
1378
+ /** Record files rewritten (title and titleSource only, each backed up first). */
1379
+ written: nonNegInt,
1380
+ chats_fixed: nonNegInt,
1381
+ /** Copies that could not be written (left for the next push). */
1382
+ failed: nonNegInt,
1383
+ /** Still different after the push (dry_run: would be written). */
1384
+ chats_with_a_different_name: nonNegInt
1385
+ });
1337
1386
  var AppsChatsOpenParams = z14.strictObject({ app_key: AppKey, chat_id: ChatId, window: ChatPlace.optional() });
1338
1387
  var SpendSplit = z14.strictObject({ main: z14.number(), helpers: z14.number() });
1339
1388
  var SpendScopes = z14.strictObject({ today: SpendSplit, week: SpendSplit });
@@ -2522,6 +2571,114 @@ var CodingHistoryProgressEvent = z32.strictObject({
2522
2571
  failed: nonNegInt
2523
2572
  });
2524
2573
 
2574
+ // src/schema/browser.ts
2575
+ import { z as z33 } from "zod";
2576
+ var BrowserClientInstance = z33.string().min(1).max(64).regex(/^[A-Za-z0-9_.:-]+$/);
2577
+ var BrowserKind = z33.enum(["chrome", "edge", "brave", "arc", "opera", "vivaldi", "chromium", "firefox", "other"]);
2578
+ var BrowserSessionState = z33.enum(["connected", "different_account", "extension_signed_out", "device_signed_out", "unverified"]);
2579
+ var BrowserSession = z33.strictObject({
2580
+ client_instance: BrowserClientInstance,
2581
+ /** What the person sees ("Chrome — Work"), set by the extension. */
2582
+ client_label: z33.string().min(1).max(128),
2583
+ browser: BrowserKind,
2584
+ extension_version: z33.string().min(1).max(32),
2585
+ state: BrowserSessionState,
2586
+ /** True only for `connected`: an agent's call can reach this session. */
2587
+ routable: z33.boolean(),
2588
+ /** The extension's account email from its token (null when signed out or unknown). */
2589
+ account_email: z33.string().max(320).nullable(),
2590
+ connected_at_ms: epochMs,
2591
+ last_call_at_ms: epochMs.nullable(),
2592
+ calls: nonNegInt,
2593
+ errors: nonNegInt,
2594
+ /** Call latency over the last 200 calls; null before the first. */
2595
+ p50_ms: nonNegInt.nullable(),
2596
+ p95_ms: nonNegInt.nullable(),
2597
+ /** A call is waiting for the person to confirm it in the browser. */
2598
+ awaiting_confirmation: z33.boolean()
2599
+ });
2600
+ var BrowserRegisterParams = z33.strictObject({
2601
+ client_instance: BrowserClientInstance,
2602
+ client_label: z33.string().min(1).max(128),
2603
+ browser: BrowserKind,
2604
+ extension_version: z33.string().min(1).max(32),
2605
+ /** The extension's current AI Matrx access token, checked against the device owner; null when signed out. */
2606
+ account_token: z33.string().min(16).max(8192).nullable()
2607
+ });
2608
+ var BrowserRegisterResult = z33.strictObject({ session: BrowserSession });
2609
+ var BrowserCallError = z33.strictObject({
2610
+ message: z33.string().max(1e3),
2611
+ /** The extension's own error code, when it has one ("tool_not_found", "denied"). */
2612
+ code: z33.string().max(64).nullable()
2613
+ });
2614
+ var BrowserResultParams = z33.strictObject({
2615
+ call_id: z33.string().min(1).max(64),
2616
+ ok: z33.boolean(),
2617
+ /** The tool's result when ok (any JSON). */
2618
+ result: z33.unknown(),
2619
+ error: BrowserCallError.nullable()
2620
+ });
2621
+ var BrowserResultResult = z33.strictObject({ accepted: z33.boolean() });
2622
+ var BrowserCallPhase = z33.enum(["awaiting_confirmation", "running"]);
2623
+ var BrowserProgressParams = z33.strictObject({ call_id: z33.string().min(1).max(64), phase: BrowserCallPhase });
2624
+ var BrowserProgressResult = z33.strictObject({ accepted: z33.boolean() });
2625
+ var BrowserSessionsParams = z33.strictObject({});
2626
+ var BrowserSessionsResult = z33.strictObject({
2627
+ /** The person's Browser connection switch. Off: no pairing, no extension sessions. */
2628
+ enabled: z33.boolean(),
2629
+ /** Whether Matrx 2 is signed in (without an owner no session is routable). */
2630
+ owner_signed_in: z33.boolean(),
2631
+ sessions: z33.array(BrowserSession).max(64)
2632
+ });
2633
+ var BrowserDisconnectParams = z33.strictObject({ client_instance: BrowserClientInstance });
2634
+ var BrowserDisconnectResult = z33.strictObject({ disconnected: z33.boolean() });
2635
+ var BrowserSetEnabledParams = z33.strictObject({ enabled: z33.boolean() });
2636
+ var BrowserSetEnabledResult = z33.strictObject({ enabled: z33.boolean() });
2637
+ var BrowserPairCodeParams = z33.strictObject({});
2638
+ var BrowserPairCodeResult = z33.strictObject({ code: z33.string().min(16).max(128) });
2639
+ var BrowserPairResetParams = z33.strictObject({});
2640
+ var BrowserCallParams = z33.strictObject({
2641
+ tool: z33.string().min(1).max(96).regex(/^[a-z][a-z0-9_]*$/),
2642
+ args: z33.record(z33.string(), z33.unknown()),
2643
+ /** Which session; default: the most recently active routable one (BROWSER ambiguity → CONFLICT). */
2644
+ client_instance: BrowserClientInstance.optional(),
2645
+ /** How long to wait, including a person's confirmation; default 120 s. */
2646
+ timeout_ms: z33.int().min(1e3).max(6e5).optional()
2647
+ });
2648
+ var BrowserCallResult = z33.strictObject({
2649
+ client_instance: BrowserClientInstance,
2650
+ result: z33.unknown(),
2651
+ duration_ms: nonNegInt
2652
+ });
2653
+ var BrowserInvokeEvent = z33.strictObject({
2654
+ call_id: z33.string().min(1).max(64),
2655
+ tool: z33.string().min(1).max(96),
2656
+ args: z33.record(z33.string(), z33.unknown()),
2657
+ deadline_ms: epochMs
2658
+ });
2659
+ var BrowserSessionsChangedEvent = z33.strictObject({ count: nonNegInt, enabled: z33.boolean() });
2660
+ var BrowserProgressEvent = z33.strictObject({
2661
+ call_id: z33.string().min(1).max(64),
2662
+ client_instance: BrowserClientInstance,
2663
+ phase: BrowserCallPhase
2664
+ });
2665
+ var DesktopHealth = z33.strictObject({
2666
+ status: z33.literal("ok"),
2667
+ service: z33.literal("matrx-desktop"),
2668
+ version: z33.string().max(32),
2669
+ protocol_version: z33.string().max(16),
2670
+ ws_path: z33.literal("/v1/connect"),
2671
+ device_id: z33.string().max(64),
2672
+ browser_connection: z33.enum(["on", "off"])
2673
+ });
2674
+ var BrowserPairRequest = z33.strictObject({ client_instance: BrowserClientInstance });
2675
+ var BrowserPairResult = z33.strictObject({ pair_token: z33.string().min(16).max(128), ws_path: z33.literal("/v1/connect") });
2676
+ var MATRX_EXTENSION_IDS = {
2677
+ store: "hnfolienncfklkgmdjjmhhegglimlamg",
2678
+ development: "cihdmkcdjjckfhjpgoedmgfpoljebaml"
2679
+ };
2680
+ var DISCOVERY_FILE = { live: "matrx2.json", development: "matrx2-dev.json" };
2681
+
2525
2682
  // src/schema/registry.ts
2526
2683
  var FS_ERR = ["NOT_FOUND", "PERMISSION_DENIED_OS", "INVALID_PARAMS", "RESOURCE_BUSY", "INTERNAL"];
2527
2684
  var OPS = {
@@ -2584,6 +2741,8 @@ var OPS = {
2584
2741
  // 1.11: Going cold, Spend, sync health, windows upkeep.
2585
2742
  "apps.chats.cold": { params: AppsChatsColdParams, result: AppsChatsColdResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2586
2743
  "apps.chats.open": { params: AppsChatsOpenParams, result: AppsWindowActionResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "CONFLICT", "TIMEOUT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2744
+ "apps.chats.titles_check": { params: AppsChatsTitlesCheckParams, result: AppsChatsTitlesCheckResult, kind: "unary", since: "1.29", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2745
+ "apps.chats.titles_push": { params: AppsChatsTitlesPushParams, result: AppsChatsTitlesPushResult, kind: "unary", since: "1.29", errors: ["NOT_FOUND", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2587
2746
  "apps.spend": { params: AppsSpendParams, result: AppsSpendResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2588
2747
  "apps.sync.status": { params: AppsSyncStatusParams, result: AppsSyncStatusResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2589
2748
  "apps.sync.run": { params: AppsSyncRunParams, result: AppsWindowActionResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
@@ -2667,7 +2826,17 @@ var OPS = {
2667
2826
  // 1.26: the app's own update (it installs only once every window quit) and bringing the windows back.
2668
2827
  "apps.windows.update_state": { params: AppsWindowsUpdateStateParams, result: AppsWindowsUpdateStateResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2669
2828
  "apps.windows.reopen": { params: AppsWindowsReopenParams, result: AppsWindowsReopenResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2670
- "apps.windows.update_and_reopen": { params: AppsWindowsUpdateAndReopenParams, result: AppsWindowsUpdateAndReopenResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "CONFLICT", "TIMEOUT", "PLATFORM_UNSUPPORTED", "INTERNAL"] }
2829
+ "apps.windows.update_and_reopen": { params: AppsWindowsUpdateAndReopenParams, result: AppsWindowsUpdateAndReopenResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "CONFLICT", "TIMEOUT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2830
+ // 1.28: the AI Matrx extension as a client (register, result, progress), the Browsers screen, and agents' calls.
2831
+ "browser.register": { params: BrowserRegisterParams, result: BrowserRegisterResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN", "INVALID_PARAMS", "INTERNAL"] },
2832
+ "browser.result": { params: BrowserResultParams, result: BrowserResultResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN", "PAYLOAD_TOO_LARGE"] },
2833
+ "browser.progress": { params: BrowserProgressParams, result: BrowserProgressResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN"] },
2834
+ "browser.sessions": { params: BrowserSessionsParams, result: BrowserSessionsResult, kind: "unary", since: "1.28", errors: ["INTERNAL"] },
2835
+ "browser.disconnect": { params: BrowserDisconnectParams, result: BrowserDisconnectResult, kind: "unary", since: "1.28", errors: ["NOT_FOUND", "AUTH_FORBIDDEN"] },
2836
+ "browser.set_enabled": { params: BrowserSetEnabledParams, result: BrowserSetEnabledResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN", "INTERNAL"] },
2837
+ "browser.pair_code": { params: BrowserPairCodeParams, result: BrowserPairCodeResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN", "INTERNAL"] },
2838
+ "browser.pair_reset": { params: BrowserPairResetParams, result: BrowserPairCodeResult, kind: "unary", since: "1.28", errors: ["AUTH_FORBIDDEN", "INTERNAL"] },
2839
+ "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"] }
2671
2840
  };
2672
2841
  var EVENTS = {
2673
2842
  "fs.changed": FsChangedEvent,
@@ -2681,7 +2850,10 @@ var EVENTS = {
2681
2850
  "coding.history.progress": CodingHistoryProgressEvent,
2682
2851
  "relay.device_status": RelayDeviceStatusEvent,
2683
2852
  "relay.auth_expiring": RelayAuthExpiringEvent,
2684
- "diag.errors.changed": DiagErrorsChangedEvent
2853
+ "diag.errors.changed": DiagErrorsChangedEvent,
2854
+ "browser.invoke": BrowserInvokeEvent,
2855
+ "browser.sessions_changed": BrowserSessionsChangedEvent,
2856
+ "browser.progress": BrowserProgressEvent
2685
2857
  };
2686
2858
  var SERVICES = {
2687
2859
  ml: {
@@ -3065,6 +3237,12 @@ var NAMED_SCHEMAS = {
3065
3237
  AppsChatsColdParams,
3066
3238
  AppsChatsColdResult,
3067
3239
  AppsChatsOpenParams,
3240
+ TitleCopies,
3241
+ TitleMismatch,
3242
+ AppsChatsTitlesCheckParams,
3243
+ AppsChatsTitlesCheckResult,
3244
+ AppsChatsTitlesPushParams,
3245
+ AppsChatsTitlesPushResult,
3068
3246
  SpendSplit,
3069
3247
  SpendScopes,
3070
3248
  SpendAccount,
@@ -3134,7 +3312,36 @@ var NAMED_SCHEMAS = {
3134
3312
  AppsWindowsReopenParams,
3135
3313
  AppsWindowsReopenResult,
3136
3314
  AppsWindowsUpdateAndReopenParams,
3137
- AppsWindowsUpdateAndReopenResult
3315
+ AppsWindowsUpdateAndReopenResult,
3316
+ BrowserClientInstance,
3317
+ BrowserKind,
3318
+ BrowserSessionState,
3319
+ BrowserSession,
3320
+ BrowserRegisterParams,
3321
+ BrowserRegisterResult,
3322
+ BrowserCallError,
3323
+ BrowserResultParams,
3324
+ BrowserResultResult,
3325
+ BrowserCallPhase,
3326
+ BrowserProgressParams,
3327
+ BrowserProgressResult,
3328
+ BrowserSessionsParams,
3329
+ BrowserSessionsResult,
3330
+ BrowserDisconnectParams,
3331
+ BrowserDisconnectResult,
3332
+ BrowserSetEnabledParams,
3333
+ BrowserSetEnabledResult,
3334
+ BrowserPairCodeParams,
3335
+ BrowserPairCodeResult,
3336
+ BrowserPairResetParams,
3337
+ BrowserCallParams,
3338
+ BrowserCallResult,
3339
+ BrowserInvokeEvent,
3340
+ BrowserSessionsChangedEvent,
3341
+ BrowserProgressEvent,
3342
+ DesktopHealth,
3343
+ BrowserPairRequest,
3344
+ BrowserPairResult
3138
3345
  };
3139
3346
 
3140
3347
  // src/versioning.ts
@@ -3167,7 +3374,12 @@ var REASONS_SINCE = {
3167
3374
  download_failed: "1.2",
3168
3375
  service_starting: "1.2",
3169
3376
  service_restarted: "1.2",
3170
- service_failed: "1.2"
3377
+ service_failed: "1.2",
3378
+ browser_not_connected: "1.28",
3379
+ browser_ambiguous: "1.28",
3380
+ browser_account_mismatch: "1.28",
3381
+ browser_connection_off: "1.28",
3382
+ awaiting_confirmation: "1.28"
3171
3383
  };
3172
3384
  function statusForPeer(status, version) {
3173
3385
  const rule = NULL_SINCE["RelayDeviceStatusEvent.since_ms"];
@@ -3286,7 +3498,7 @@ function forPeer(op, part, value, version) {
3286
3498
  var VERSIONED_RESULT_OPS = [.../* @__PURE__ */ new Set([...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys(), ...NESTED_RESULTS.keys()])];
3287
3499
 
3288
3500
  // src/contract.ts
3289
- var CONTRACT_SHA256 = "eece2e5eba3e6e33126a0fda2fad8c91abe9c878fbfdc98bd049ff5af126cb09";
3501
+ var CONTRACT_SHA256 = "5994ab9f6c2dba636a90e18c99bd3a90736f23782b3f8df9e0d2d7234b8e2b1b";
3290
3502
 
3291
3503
  // src/close-policy.ts
3292
3504
  var CLOSE_RULES = {
@@ -3664,6 +3876,10 @@ export {
3664
3876
  AppsChatsPlaceResult,
3665
3877
  AppsChatsStarParams,
3666
3878
  AppsChatsStarResult,
3879
+ AppsChatsTitlesCheckParams,
3880
+ AppsChatsTitlesCheckResult,
3881
+ AppsChatsTitlesPushParams,
3882
+ AppsChatsTitlesPushResult,
3667
3883
  AppsChatsWatchParams,
3668
3884
  AppsChatsWatchResult,
3669
3885
  AppsChatsWatchStateEvent,
@@ -3731,6 +3947,34 @@ export {
3731
3947
  AudioSetLevelsParams,
3732
3948
  BEARER_PREFIX,
3733
3949
  BROADCAST_CID,
3950
+ BrowserCallError,
3951
+ BrowserCallParams,
3952
+ BrowserCallPhase,
3953
+ BrowserCallResult,
3954
+ BrowserClientInstance,
3955
+ BrowserDisconnectParams,
3956
+ BrowserDisconnectResult,
3957
+ BrowserInvokeEvent,
3958
+ BrowserKind,
3959
+ BrowserPairCodeParams,
3960
+ BrowserPairCodeResult,
3961
+ BrowserPairRequest,
3962
+ BrowserPairResetParams,
3963
+ BrowserPairResult,
3964
+ BrowserProgressEvent,
3965
+ BrowserProgressParams,
3966
+ BrowserProgressResult,
3967
+ BrowserRegisterParams,
3968
+ BrowserRegisterResult,
3969
+ BrowserResultParams,
3970
+ BrowserResultResult,
3971
+ BrowserSession,
3972
+ BrowserSessionState,
3973
+ BrowserSessionsChangedEvent,
3974
+ BrowserSessionsParams,
3975
+ BrowserSessionsResult,
3976
+ BrowserSetEnabledParams,
3977
+ BrowserSetEnabledResult,
3734
3978
  CLOSE_RULES,
3735
3979
  CONTRACT_SHA256,
3736
3980
  CancelMsg,
@@ -3773,6 +4017,8 @@ export {
3773
4017
  DEFAULT_MAX_FRAME_PAYLOAD_BYTES,
3774
4018
  DEFAULT_MAX_MESSAGE_BYTES,
3775
4019
  DEFAULT_WINDOW_BYTES,
4020
+ DISCOVERY_FILE,
4021
+ DesktopHealth,
3776
4022
  DesktopProtocolError,
3777
4023
  DeviceId,
3778
4024
  DiagErrorEntry,
@@ -3900,6 +4146,7 @@ export {
3900
4146
  LEGACY_ACTIONS,
3901
4147
  LEGACY_DISPATCHERS,
3902
4148
  Limits,
4149
+ MATRX_EXTENSION_IDS,
3903
4150
  MlInstallPhase,
3904
4151
  MlInstallProgress,
3905
4152
  MlProgress,
@@ -4061,6 +4308,8 @@ export {
4061
4308
  TOOL_GROUPS,
4062
4309
  TOOL_LEVELS,
4063
4310
  TOOL_PLATFORMS,
4311
+ TitleCopies,
4312
+ TitleMismatch,
4064
4313
  ToolLevel,
4065
4314
  ToolLevelResult,
4066
4315
  ToolName,