@ai-matrx/desktop-protocol 0.21.81 → 0.21.83

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 CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.21.83
4
+ ### Protocol 1.80 — skills in the Setup table
5
+
6
+ - `SetupItemKind` (apps.setup.list `setups[].items[].kind`): new value `"skill"` (a Claude Code skill
7
+ installed). In SETUP_KINDS_SINCE; `forPeer` leaves skill items out for an older peer, whose strict
8
+ enum would refuse the whole answer. Consumer action: none.
9
+
10
+ ### Protocol 1.79 — the usage readings Matrx keeps
11
+
12
+ - `AppAccount` (apps.accounts.list `accounts`): optional `readings` (`AccountReadingsKept`: `kept`,
13
+ `since_ms`, `days` of `{ day_ms, weekly }`), the readings Matrx kept of the account on this computer.
14
+ In FIELDS_SINCE; apps.accounts.list's `accounts` now strip AppAccount's newer fields for older peers.
15
+ Consumer action: none.
16
+
3
17
  ## 0.21.81
4
18
  ### Protocol 1.78 — our Hide on Going cold and Spend
5
19
 
@@ -6,7 +6,7 @@ import {
6
6
  import { z } from "zod";
7
7
  import { UUID_SHAPE_PATTERN } from "@ai-matrx/kit/uuid";
8
8
  var PROTOCOL_MAJOR = 1;
9
- var PROTOCOL_MINOR = 78;
9
+ var PROTOCOL_MINOR = 80;
10
10
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
11
11
  var ProtocolVersion = z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
12
12
  var RequestId = z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -2021,6 +2021,11 @@ var AccountProfile = z15.strictObject({
2021
2021
  /** When the app last fetched them, when it says. */
2022
2022
  as_of_ms: epochMs.nullable()
2023
2023
  });
2024
+ var AccountReadingsKept = z15.strictObject({
2025
+ kept: z15.number().int().nonnegative(),
2026
+ since_ms: epochMs.nullable(),
2027
+ days: z15.array(z15.strictObject({ day_ms: epochMs, weekly: z15.number().nullable() })).max(31)
2028
+ });
2024
2029
  var AppAccount = z15.strictObject({
2025
2030
  app_key: AppKey,
2026
2031
  /** The provider's own account id (Claude's account uuid, ChatGPT's account id); `org:<uuid>` when only its organization is known. */
@@ -2056,7 +2061,9 @@ var AppAccount = z15.strictObject({
2056
2061
  /** 1.73: where the newest reading came from (absent = the app itself). */
2057
2062
  read_source: AccountReadSource.optional(),
2058
2063
  /** 1.73: Claude Code: the running session's cost as Claude Code estimates it (US dollars), with a Claude Code reading. */
2059
- session_cost_usd: z15.number().nonnegative().optional()
2064
+ session_cost_usd: z15.number().nonnegative().optional(),
2065
+ /** 1.79: the readings Matrx kept of this account on this computer (its reading history). */
2066
+ readings: AccountReadingsKept.optional()
2060
2067
  });
2061
2068
  var AppsInstancesListParams = z15.strictObject({ app_key: AppKey, fresh: z15.boolean().optional() });
2062
2069
  var AppsInstancesListResult = z15.strictObject({
@@ -2107,7 +2114,7 @@ var McpServerRow = z15.strictObject({
2107
2114
  where: z15.string().max(400)
2108
2115
  });
2109
2116
  var SetupFact = z15.strictObject({ name: z15.string().max(80), value: z15.string().max(300) });
2110
- var SetupItemKind = z15.enum(["extension", "plugin", "marketplace", "model"]);
2117
+ var SetupItemKind = z15.enum(["extension", "plugin", "marketplace", "model", "skill"]);
2111
2118
  var SetupItem = z15.strictObject({
2112
2119
  kind: SetupItemKind,
2113
2120
  name: z15.string().max(200),
@@ -5117,6 +5124,7 @@ var NAMED_SCHEMAS = {
5117
5124
  AppsAccountsListResult,
5118
5125
  AccountReadSource,
5119
5126
  AccountProfile,
5127
+ AccountReadingsKept,
5120
5128
  McpTransport,
5121
5129
  McpServerRow,
5122
5130
  SetupFact,
@@ -5968,7 +5976,7 @@ var FIELDS_SINCE = {
5968
5976
  SpendIdle: { hidden: "1.78" },
5969
5977
  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" },
5970
5978
  AccountUsage: { plan: "1.13", credits: "1.13", five_hour_resets_by_ms: "1.25", read_source: "1.73" },
5971
- AppAccount: { profile: "1.73", read_source: "1.73", session_cost_usd: "1.73" },
5979
+ AppAccount: { profile: "1.73", read_source: "1.73", session_cost_usd: "1.73", readings: "1.79" },
5972
5980
  ResourcesDisk: { name: "1.17" },
5973
5981
  StackServer: { cpu_percent: "1.18", memory_bytes: "1.18" },
5974
5982
  AudioDevice: { kind: "1.24" },
@@ -6044,6 +6052,27 @@ var PERMISSIONS_SINCE = {
6044
6052
  mail: "1.41",
6045
6053
  wifi: "1.41"
6046
6054
  };
6055
+ var SETUP_KINDS_SINCE = {
6056
+ skill: "1.80"
6057
+ };
6058
+ function setupItemsForPeer(value, version) {
6059
+ if (value === null || typeof value !== "object" || Array.isArray(value)) return value;
6060
+ const body = value;
6061
+ if (!Array.isArray(body.setups)) return value;
6062
+ const since = SETUP_KINDS_SINCE;
6063
+ const setups = body.setups;
6064
+ const next = setups.map((s) => {
6065
+ const items = s?.items;
6066
+ if (!Array.isArray(items)) return s;
6067
+ const kept = items.filter((i) => {
6068
+ const kind = i?.kind;
6069
+ const added = typeof kind === "string" ? since[kind] : void 0;
6070
+ return !added || knows(version, added);
6071
+ });
6072
+ return kept.length === items.length ? s : { ...s, items: kept };
6073
+ });
6074
+ return next.some((s, i) => s !== setups[i]) ? { ...body, setups: next } : value;
6075
+ }
6047
6076
  function permissionsForPeer(value, version) {
6048
6077
  if (value === null || typeof value !== "object" || Array.isArray(value)) return value;
6049
6078
  const body = value;
@@ -6117,6 +6146,8 @@ var NESTED_RESULTS = /* @__PURE__ */ new Map([
6117
6146
  ["apps.spend", [["chats", "SpendChat"], ["live", "SpendLive"], ["idle", "SpendIdle"]]],
6118
6147
  ["apps.chats.place", [["chat", "ChatRow"]]],
6119
6148
  ["apps.accounts.usage", [["accounts", "AccountUsage"]]],
6149
+ // 1.73/1.79: the account rows' newer fields (profile, read_source, session_cost_usd, readings).
6150
+ ["apps.accounts.list", [["accounts", "AppAccount"]]],
6120
6151
  ["resources.snapshot", [["disks", "ResourcesDisk"]]],
6121
6152
  ["stack.state", [["servers", "StackServer"]]],
6122
6153
  ["account.agents.list", [["agents", "AccountAgent"]]],
@@ -6247,6 +6278,7 @@ function forPeer(op, part, value, version) {
6247
6278
  const stripped = nested ? stripNested(top, nested, version) : top;
6248
6279
  if (op === "coding.providers") return providersForPeer(stripped, version);
6249
6280
  if (op === "coding.history" || op === "coding.transcript.read") return transcriptItemsForPeer(stripped, version);
6281
+ if (op === "apps.setup.list") return setupItemsForPeer(stripped, version);
6250
6282
  return op === "apps.windows.list" ? windowListRemoteControlForPeer(stripped, version) : stripped;
6251
6283
  }
6252
6284
  if (value === null || typeof value !== "object") return value;
@@ -6649,6 +6681,7 @@ export {
6649
6681
  AccountGap,
6650
6682
  AccountReadSource,
6651
6683
  AccountProfile,
6684
+ AccountReadingsKept,
6652
6685
  AppAccount,
6653
6686
  AppsInstancesListParams,
6654
6687
  AppsInstancesListResult,
@@ -7165,6 +7198,7 @@ export {
7165
7198
  NULL_SINCE,
7166
7199
  REASONS_SINCE,
7167
7200
  PERMISSIONS_SINCE,
7201
+ SETUP_KINDS_SINCE,
7168
7202
  statusForPeer,
7169
7203
  versionSubprotocol,
7170
7204
  announcedVersion,
@@ -7176,4 +7210,4 @@ export {
7176
7210
  closeRule,
7177
7211
  isTerminalClose
7178
7212
  };
7179
- //# sourceMappingURL=chunk-server-T5RWEV22.js.map
7213
+ //# sourceMappingURL=chunk-server-EKAFTH72.js.map