@ai-matrx/desktop-protocol 0.19.0 → 0.21.0

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 = 19;
5
+ var PROTOCOL_MINOR = 21;
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_-]+$/);
@@ -1143,6 +1143,19 @@ var AppsAccountsResetsResult = z13.strictObject({
1143
1143
  var AppsWindowActionResult = z13.strictObject({ message: z13.string().max(400) });
1144
1144
  var AppsWindowsOpenParams = z13.strictObject({ app_key: AppKey, window: ChatPlace });
1145
1145
  var AppsWindowsReloadParams = z13.strictObject({ app_key: AppKey, window: ChatPlace });
1146
+ var ShownSection = z13.strictObject({
1147
+ title: z13.string().max(300),
1148
+ /** Rows drawn under it (a collapsed section draws none). */
1149
+ rows: z13.number().int().nonnegative(),
1150
+ expanded: z13.boolean()
1151
+ });
1152
+ var AppsWindowsShownParams = z13.strictObject({ app_key: AppKey, window: ChatPlace });
1153
+ var AppsWindowsShownResult = z13.strictObject({
1154
+ window: ChatPlace,
1155
+ open: z13.boolean(),
1156
+ sections: z13.array(ShownSection).max(200),
1157
+ problem: z13.string().max(400).nullable()
1158
+ });
1146
1159
  var AppsWindowsRestartParams = z13.strictObject({ app_key: AppKey, window: ChatPlace, force: z13.boolean().default(false) });
1147
1160
  var AppsWindowsRefreshUsageParams = z13.strictObject({ app_key: AppKey, window: ChatPlace });
1148
1161
  var AppsProjectsMoveParams = z13.strictObject({
@@ -1674,95 +1687,175 @@ var PowerPreventSleepResult = z22.strictObject({
1674
1687
  awake_until_ms: epochMs.nullable()
1675
1688
  });
1676
1689
 
1677
- // src/schema/resources.ts
1690
+ // src/schema/diag.ts
1678
1691
  import { z as z23 } from "zod";
1679
- var ResourcesDisk = z23.strictObject({
1692
+ var DiagProcess = z23.enum([
1693
+ "main",
1694
+ "renderer",
1695
+ "hosted_page",
1696
+ "core",
1697
+ "pty_host",
1698
+ "python_ml",
1699
+ "python_coding",
1700
+ "python_tools",
1701
+ "relay",
1702
+ "coding_sessions",
1703
+ "claude_accounts"
1704
+ ]);
1705
+ var DiagErrorKind = z23.enum([
1706
+ "uncaught_exception",
1707
+ "unhandled_rejection",
1708
+ "renderer_crash",
1709
+ "native_crash",
1710
+ "console_error",
1711
+ "load_failed",
1712
+ "op_failed",
1713
+ "child_exit",
1714
+ "banner",
1715
+ "logged_error"
1716
+ ]);
1717
+ var DiagErrorStatus = z23.enum(["waiting", "sent", "resolved"]);
1718
+ var DiagErrorEntry = z23.strictObject({
1719
+ /** sha256 prefix over process, kind, source, code and the normalized message. */
1720
+ signature: z23.string().regex(/^[0-9a-f]{32}$/),
1721
+ process: DiagProcess,
1722
+ kind: DiagErrorKind,
1723
+ /** Where: a cap.op, a log event, a screen or page name. */
1724
+ source: z23.string().min(1).max(128),
1725
+ /** An ErrorCode, an exit code or signal, an error class; null when there is none. */
1726
+ code: z23.string().max(64).nullable(),
1727
+ /** The first occurrence's message, personal data removed. */
1728
+ message: z23.string().max(500),
1729
+ count: nonNegInt,
1730
+ first_seen_ms: epochMs,
1731
+ last_seen_ms: epochMs,
1732
+ status: DiagErrorStatus,
1733
+ /** What the agent who resolved it wrote; null until resolved. */
1734
+ resolution_note: z23.string().max(500).nullable(),
1735
+ app_version: z23.string().max(64)
1736
+ });
1737
+ var DiagErrorsListParams = z23.strictObject({
1738
+ /** open = waiting or sent; all includes resolved. */
1739
+ status: z23.enum(["open", "all"]).default("open"),
1740
+ limit: z23.int().min(1).max(500).default(200)
1741
+ });
1742
+ var DiagErrorsListResult = z23.strictObject({
1743
+ /** Newest last_seen first. */
1744
+ entries: z23.array(DiagErrorEntry).max(500),
1745
+ total_signatures: nonNegInt,
1746
+ total_occurrences: nonNegInt,
1747
+ /** Signatures with occurrences not yet delivered. */
1748
+ waiting: nonNegInt,
1749
+ /** signed_out = kept until sign-in; ok = the last delivery worked; failing = the last delivery failed (kept, retried). */
1750
+ delivery: z23.enum(["signed_out", "ok", "failing"]),
1751
+ last_delivery_ms: epochMs.nullable()
1752
+ });
1753
+ var DiagErrorsReportParams = z23.strictObject({
1754
+ process: z23.enum(["renderer", "hosted_page"]),
1755
+ kind: z23.enum(["uncaught_exception", "unhandled_rejection", "console_error", "banner"]),
1756
+ /** The screen or page, e.g. "code.chats". */
1757
+ source: z23.string().min(1).max(128),
1758
+ message: z23.string().min(1).max(2e3),
1759
+ code: z23.string().max(64).optional(),
1760
+ stack: z23.string().max(8e3).optional()
1761
+ });
1762
+ var DiagErrorsReportResult = z23.strictObject({
1763
+ signature: z23.string().regex(/^[0-9a-f]{32}$/)
1764
+ });
1765
+ var DiagErrorsChangedEvent = z23.strictObject({
1766
+ total_signatures: nonNegInt,
1767
+ waiting: nonNegInt
1768
+ });
1769
+
1770
+ // src/schema/resources.ts
1771
+ import { z as z24 } from "zod";
1772
+ var ResourcesDisk = z24.strictObject({
1680
1773
  /** Where it is mounted ("/", "C:"). */
1681
- mount: z23.string().max(512),
1774
+ mount: z24.string().max(512),
1682
1775
  /** The volume's name as the file manager shows it ("Macintosh HD", "Local Disk (C:)"). Since 1.17. */
1683
- name: z23.string().max(256).optional(),
1776
+ name: z24.string().max(256).optional(),
1684
1777
  /** The file system ("apfs", "NTFS", "ext4"). */
1685
- fs: z23.string().max(64),
1778
+ fs: z24.string().max(64),
1686
1779
  size_bytes: nonNegInt,
1687
1780
  used_bytes: nonNegInt,
1688
1781
  available_bytes: nonNegInt
1689
1782
  });
1690
- var ResourcesSnapshotParams = z23.strictObject({});
1691
- var ResourcesSnapshotResult = z23.strictObject({
1692
- cpu: z23.strictObject({
1783
+ var ResourcesSnapshotParams = z24.strictObject({});
1784
+ var ResourcesSnapshotResult = z24.strictObject({
1785
+ cpu: z24.strictObject({
1693
1786
  /** Busy share of all cores, 0–100, measured now. */
1694
- percent: z23.number().min(0).max(100),
1695
- cores: z23.int().min(1),
1787
+ percent: z24.number().min(0).max(100),
1788
+ cores: z24.int().min(1),
1696
1789
  /** 1, 5 and 15 minute load averages; null on Windows. */
1697
- load: z23.array(z23.number().min(0)).length(3).nullable()
1790
+ load: z24.array(z24.number().min(0)).length(3).nullable()
1698
1791
  }),
1699
- memory: z23.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
1700
- swap: z23.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
1701
- disks: z23.array(ResourcesDisk).max(64),
1792
+ memory: z24.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
1793
+ swap: z24.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
1794
+ disks: z24.array(ResourcesDisk).max(64),
1702
1795
  uptime_seconds: nonNegInt
1703
1796
  });
1704
- var ResourcesJobKind = z23.enum(["type-check", "tests", "build", "lint", "dev server", "language server", "search"]);
1705
- var ResourcesStrain = z23.enum(["good", "strain", "overloaded"]);
1706
- var ResourcesPressure = z23.enum(["normal", "warning", "critical"]);
1707
- var ResourcesJob = z23.strictObject({
1797
+ var ResourcesJobKind = z24.enum(["type-check", "tests", "build", "lint", "dev server", "language server", "search"]);
1798
+ var ResourcesStrain = z24.enum(["good", "strain", "overloaded"]);
1799
+ var ResourcesPressure = z24.enum(["normal", "warning", "critical"]);
1800
+ var ResourcesJob = z24.strictObject({
1708
1801
  /** The job's root process (Stop takes its whole tree). */
1709
- pid: z23.int().min(0),
1802
+ pid: z24.int().min(0),
1710
1803
  kind: ResourcesJobKind,
1711
1804
  /** Its heaviest process's command line, shortened ("…/lib/tsc --noEmit -p tsconfig.json"). */
1712
- command: z23.string().max(256),
1805
+ command: z24.string().max(256),
1713
1806
  /** Who started it: "Claude Code", "Codex", "Cursor", "VS Code", "Terminal", "local stack", "detached"; null when unknown. */
1714
- started_by: z23.string().max(64).nullable(),
1807
+ started_by: z24.string().max(64).nullable(),
1715
1808
  /** Whatever started it is gone and nothing waits for it. */
1716
- orphan: z23.boolean(),
1809
+ orphan: z24.boolean(),
1717
1810
  /** A type-check queued for its turn (no compiler running yet). */
1718
- waiting: z23.boolean(),
1811
+ waiting: z24.boolean(),
1719
1812
  /** The project folder it runs in ("matrx-frontend"); null when not in one. */
1720
- folder: z23.string().max(256).nullable(),
1813
+ folder: z24.string().max(256).nullable(),
1721
1814
  /** The same command in the same folder, running this many times (1 = no duplicate). */
1722
- duplicates: z23.int().min(1),
1723
- processes: z23.int().min(1),
1815
+ duplicates: z24.int().min(1),
1816
+ processes: z24.int().min(1),
1724
1817
  /** Sum over the tree, as `ps` reports it: 100 = one full core. */
1725
- cpu_percent: z23.number().min(0),
1818
+ cpu_percent: z24.number().min(0),
1726
1819
  /** Real memory (macOS: the physical footprint Activity Monitor shows, compressed included). */
1727
1820
  memory_bytes: nonNegInt,
1728
1821
  started_at_ms: epochMs.nullable(),
1729
1822
  /** False for an app, an agent session, a terminal, a system process, the local stack or Matrx 2 itself. */
1730
- stoppable: z23.boolean()
1823
+ stoppable: z24.boolean()
1731
1824
  });
1732
- var ResourcesProcess = z23.strictObject({
1733
- pid: z23.int().min(0),
1825
+ var ResourcesProcess = z24.strictObject({
1826
+ pid: z24.int().min(0),
1734
1827
  /** The command line, shortened. */
1735
- name: z23.string().max(256),
1736
- cpu_percent: z23.number().min(0),
1828
+ name: z24.string().max(256),
1829
+ cpu_percent: z24.number().min(0),
1737
1830
  memory_bytes: nonNegInt,
1738
- started_by: z23.string().max(64).nullable(),
1831
+ started_by: z24.string().max(64).nullable(),
1739
1832
  /** The job it belongs to ("type-check in aidream"); null when none. */
1740
- job: z23.string().max(256).nullable(),
1833
+ job: z24.string().max(256).nullable(),
1741
1834
  started_at_ms: epochMs.nullable()
1742
1835
  });
1743
- var ResourcesVerdict = z23.strictObject({
1836
+ var ResourcesVerdict = z24.strictObject({
1744
1837
  level: ResourcesStrain,
1745
1838
  /** One sentence ("Your Mac is under strain. 3 type-checks are running at once."). */
1746
- text: z23.string().max(256),
1839
+ text: z24.string().max(256),
1747
1840
  /** The biggest jobs behind it; null when all is well. */
1748
- cause: z23.string().max(1024).nullable()
1841
+ cause: z24.string().max(1024).nullable()
1749
1842
  });
1750
- var ResourcesSample = z23.strictObject({
1843
+ var ResourcesSample = z24.strictObject({
1751
1844
  at_ms: epochMs,
1752
1845
  /** The 1-minute load average. */
1753
- load: z23.number().min(0),
1846
+ load: z24.number().min(0),
1754
1847
  memory_used_bytes: nonNegInt,
1755
1848
  typechecks: nonNegInt
1756
1849
  });
1757
- var ResourcesActivityParams = z23.strictObject({});
1758
- var ResourcesActivityResult = z23.strictObject({
1850
+ var ResourcesActivityParams = z24.strictObject({});
1851
+ var ResourcesActivityResult = z24.strictObject({
1759
1852
  /** False until the first reading (a second or two after start). */
1760
- ready: z23.boolean(),
1853
+ ready: z24.boolean(),
1761
1854
  sampled_at_ms: epochMs.nullable(),
1762
- cores: z23.int().min(1),
1855
+ cores: z24.int().min(1),
1763
1856
  /** 1, 5 and 15 minute load averages. */
1764
- load: z23.array(z23.number().min(0)).length(3),
1765
- memory: z23.strictObject({
1857
+ load: z24.array(z24.number().min(0)).length(3),
1858
+ memory: z24.strictObject({
1766
1859
  total_bytes: nonNegInt,
1767
1860
  /** Activity Monitor's Memory Used: app memory + wired + compressed. */
1768
1861
  used_bytes: nonNegInt,
@@ -1773,252 +1866,252 @@ var ResourcesActivityResult = z23.strictObject({
1773
1866
  pressure: ResourcesPressure.nullable()
1774
1867
  }),
1775
1868
  verdict: ResourcesVerdict,
1776
- typechecks: z23.strictObject({ running: nonNegInt, waiting: nonNegInt, comfort: nonNegInt }),
1869
+ typechecks: z24.strictObject({ running: nonNegInt, waiting: nonNegInt, comfort: nonNegInt }),
1777
1870
  /** Heaviest first (1 GB weighs as much as 16 % of a core). */
1778
- jobs: z23.array(ResourcesJob).max(200),
1871
+ jobs: z24.array(ResourcesJob).max(200),
1779
1872
  /** The 15 heaviest by memory and the 15 busiest by CPU, together. */
1780
- top: z23.array(ResourcesProcess).max(30),
1873
+ top: z24.array(ResourcesProcess).max(30),
1781
1874
  /** The last hour, oldest first. */
1782
- history: z23.array(ResourcesSample).max(1200)
1875
+ history: z24.array(ResourcesSample).max(1200)
1783
1876
  });
1784
- var ResourcesStopJobParams = z23.strictObject({ pid: z23.int().min(1) });
1785
- var ResourcesStopJobResult = z23.strictObject({
1877
+ var ResourcesStopJobParams = z24.strictObject({ pid: z24.int().min(1) });
1878
+ var ResourcesStopJobResult = z24.strictObject({
1786
1879
  /** Processes signalled; whatever is still running 5 seconds later is force-stopped. */
1787
1880
  processes: nonNegInt,
1788
1881
  /** It had finished before the request arrived. */
1789
- already_finished: z23.boolean()
1882
+ already_finished: z24.boolean()
1790
1883
  });
1791
- var ResourcesIncident = z23.strictObject({
1884
+ var ResourcesIncident = z24.strictObject({
1792
1885
  at_ms: epochMs,
1793
1886
  verdict: ResourcesVerdict,
1794
- load: z23.number().min(0),
1887
+ load: z24.number().min(0),
1795
1888
  memory_used_bytes: nonNegInt,
1796
1889
  compressed_bytes: nonNegInt,
1797
1890
  pressure: ResourcesPressure.nullable(),
1798
- jobs: z23.array(
1799
- z23.strictObject({
1891
+ jobs: z24.array(
1892
+ z24.strictObject({
1800
1893
  kind: ResourcesJobKind,
1801
- started_by: z23.string().max(64).nullable(),
1802
- folder: z23.string().max(256).nullable(),
1803
- command: z23.string().max(256),
1804
- cpu_percent: z23.number().min(0),
1894
+ started_by: z24.string().max(64).nullable(),
1895
+ folder: z24.string().max(256).nullable(),
1896
+ command: z24.string().max(256),
1897
+ cpu_percent: z24.number().min(0),
1805
1898
  memory_bytes: nonNegInt,
1806
- duplicates: z23.int().min(1)
1899
+ duplicates: z24.int().min(1)
1807
1900
  })
1808
1901
  ).max(8)
1809
1902
  });
1810
- var ResourcesIncidentsParams = z23.strictObject({ limit: z23.int().min(1).max(200).default(50) });
1811
- var ResourcesIncidentsResult = z23.strictObject({
1903
+ var ResourcesIncidentsParams = z24.strictObject({ limit: z24.int().min(1).max(200).default(50) });
1904
+ var ResourcesIncidentsResult = z24.strictObject({
1812
1905
  /** Newest first; at most one a minute is written. */
1813
- incidents: z23.array(ResourcesIncident).max(200)
1906
+ incidents: z24.array(ResourcesIncident).max(200)
1814
1907
  });
1815
1908
 
1816
1909
  // src/schema/stack.ts
1817
- import { z as z24 } from "zod";
1818
- var StackServerName = z24.string().regex(/^[a-z0-9_-]{1,64}$/);
1819
- var StackTone = z24.enum(["good", "wait", "bad", "off"]);
1820
- var StackServer = z24.strictObject({
1910
+ import { z as z25 } from "zod";
1911
+ var StackServerName = z25.string().regex(/^[a-z0-9_-]{1,64}$/);
1912
+ var StackTone = z25.enum(["good", "wait", "bad", "off"]);
1913
+ var StackServer = z25.strictObject({
1821
1914
  name: StackServerName,
1822
1915
  /** One word: Healthy, Starting, Unhealthy, Restarting, Stopping, Waiting, Stopped, Crashed, Off. */
1823
- label: z24.string().max(32),
1916
+ label: z25.string().max(32),
1824
1917
  tone: StackTone,
1825
1918
  /** What is going on, in one or two plain sentences. */
1826
- sentence: z24.string().max(2e3),
1919
+ sentence: z25.string().max(2e3),
1827
1920
  /** The config's own description of the server. */
1828
- description: z24.string().max(512),
1921
+ description: z25.string().max(512),
1829
1922
  /** Where the server answers, when its description names an address. */
1830
- open_url: z24.string().max(2048).nullable(),
1831
- log_file: z24.string().max(4096),
1923
+ open_url: z25.string().max(2048).nullable(),
1924
+ log_file: z25.string().max(4096),
1832
1925
  /** When its log file was last written. */
1833
1926
  last_output_at_ms: epochMs.nullable(),
1834
1927
  started_at_ms: epochMs.nullable(),
1835
1928
  restarts: nonNegInt,
1836
- exit_code: z24.int().nullable(),
1837
- pid: z24.int().nullable(),
1929
+ exit_code: z25.int().nullable(),
1930
+ pid: z25.int().nullable(),
1838
1931
  /** (1.18) CPU of the server's process and everything under it, in percent of one core; absent when it is not running. */
1839
- cpu_percent: z24.number().min(0).optional(),
1932
+ cpu_percent: z25.number().min(0).optional(),
1840
1933
  /** (1.18) Memory of the same processes: the physical footprint (Activity Monitor's Memory) summed; absent when it is not running. */
1841
1934
  memory_bytes: nonNegInt.optional()
1842
1935
  });
1843
- var StackEvent = z24.strictObject({
1936
+ var StackEvent = z25.strictObject({
1844
1937
  at_ms: epochMs,
1845
1938
  /** A server name, or "stack" for the stack as a whole. */
1846
- server: z24.string().max(64),
1939
+ server: z25.string().max(64),
1847
1940
  /** started · stopped · healthy · unhealthy · crashed · exited · restarting · stopping · action · action-done · action-failed · setup · error */
1848
- kind: z24.string().max(32),
1849
- text: z24.string().max(4e3)
1941
+ kind: z25.string().max(32),
1942
+ text: z25.string().max(4e3)
1850
1943
  });
1851
- var StackStateParams = z24.strictObject({});
1852
- var StackStateResult = z24.strictObject({
1944
+ var StackStateParams = z25.strictObject({});
1945
+ var StackStateResult = z25.strictObject({
1853
1946
  /** The stack's config file, when found. */
1854
- config_path: z24.string().max(4096).nullable(),
1947
+ config_path: z25.string().max(4096).nullable(),
1855
1948
  /** Why the stack cannot be run from here (no config, no process-compose), else null. */
1856
- problem: z24.string().max(1e3).nullable(),
1857
- stack_up: z24.boolean(),
1949
+ problem: z25.string().max(1e3).nullable(),
1950
+ stack_up: z25.boolean(),
1858
1951
  stack_started_at_ms: epochMs.nullable(),
1859
- servers: z24.array(StackServer).max(64),
1952
+ servers: z25.array(StackServer).max(64),
1860
1953
  /** One line about the one-shot setup steps ("Docker Desktop: running."), or null. */
1861
- setup_note: z24.string().max(500).nullable(),
1954
+ setup_note: z25.string().max(500).nullable(),
1862
1955
  /** Start everything / Stop everything in flight. */
1863
- pending: z24.strictObject({ verb: z24.enum(["start", "stop"]), label: z24.string().max(64), since_ms: epochMs }).nullable(),
1956
+ pending: z25.strictObject({ verb: z25.enum(["start", "stop"]), label: z25.string().max(64), since_ms: epochMs }).nullable(),
1864
1957
  /** The newest entries last. */
1865
- events: z24.array(StackEvent).max(300)
1958
+ events: z25.array(StackEvent).max(300)
1866
1959
  });
1867
- var StackStartParams = z24.strictObject({});
1868
- var StackStopParams = z24.strictObject({});
1869
- var StackRunResult = z24.strictObject({ accepted: z24.boolean() });
1870
- var StackServerActionParams = z24.strictObject({
1960
+ var StackStartParams = z25.strictObject({});
1961
+ var StackStopParams = z25.strictObject({});
1962
+ var StackRunResult = z25.strictObject({ accepted: z25.boolean() });
1963
+ var StackServerActionParams = z25.strictObject({
1871
1964
  name: StackServerName,
1872
- verb: z24.enum(["start", "stop", "restart"])
1965
+ verb: z25.enum(["start", "stop", "restart"])
1873
1966
  });
1874
- var StackServerActionResult = z24.strictObject({ message: z24.string().max(1e3) });
1875
- var StackLogsParams = z24.strictObject({
1967
+ var StackServerActionResult = z25.strictObject({ message: z25.string().max(1e3) });
1968
+ var StackLogsParams = z25.strictObject({
1876
1969
  name: StackServerName,
1877
1970
  /** Without `offset`: the last this-many complete lines. With it: new lines after it, at most this many. */
1878
- lines: z24.int().min(1).max(2e5).default(2e3),
1971
+ lines: z25.int().min(1).max(2e5).default(2e3),
1879
1972
  /** Byte offset the last read ended at: answer only what was written after it (follow). */
1880
1973
  offset: nonNegInt.optional(),
1881
1974
  /** A "Clear" point: the lines written after this byte offset (no `offset`). */
1882
1975
  since: nonNegInt.optional(),
1883
1976
  /** With `offset`: wait up to this long for a new line when none is waiting (0 answers at once). */
1884
- wait_ms: z24.int().min(0).max(25e3).default(0)
1977
+ wait_ms: z25.int().min(0).max(25e3).default(0)
1885
1978
  });
1886
- var StackLogsResult = z24.strictObject({
1979
+ var StackLogsResult = z25.strictObject({
1887
1980
  /** Complete lines, colour codes removed. */
1888
- lines: z24.array(z24.string().max(65536)).max(2e5),
1981
+ lines: z25.array(z25.string().max(65536)).max(2e5),
1889
1982
  /** Where these lines end: pass it back as `offset` to follow. */
1890
1983
  offset: nonNegInt,
1891
1984
  /** False when `since` no longer exists (the log rotated): the lines are the plain tail instead. */
1892
- since_valid: z24.boolean(),
1985
+ since_valid: z25.boolean(),
1893
1986
  /** The log was rotated or truncated since `offset`: these lines start the file again. */
1894
- reset: z24.boolean(),
1895
- log_file: z24.string().max(4096)
1987
+ reset: z25.boolean(),
1988
+ log_file: z25.string().max(4096)
1896
1989
  });
1897
- var StackErrorsParams = z24.strictObject({
1898
- window_minutes: z24.int().min(1).max(1440).default(60)
1990
+ var StackErrorsParams = z25.strictObject({
1991
+ window_minutes: z25.int().min(1).max(1440).default(60)
1899
1992
  });
1900
- var StackErrorsResult = z24.strictObject({
1993
+ var StackErrorsResult = z25.strictObject({
1901
1994
  /** Per server: a heading line ("=== aidream — errors in the last 60 minutes (<file>) ===") and each error with the 10 lines after it. */
1902
- sections: z24.array(z24.strictObject({ name: StackServerName, heading: z24.string().max(4096), lines: z24.array(z24.string().max(65536)).max(5e3) })).max(64),
1903
- window_minutes: z24.int().min(1).max(1440)
1995
+ sections: z25.array(z25.strictObject({ name: StackServerName, heading: z25.string().max(4096), lines: z25.array(z25.string().max(65536)).max(5e3) })).max(64),
1996
+ window_minutes: z25.int().min(1).max(1440)
1904
1997
  });
1905
1998
 
1906
1999
  // src/schema/audio.ts
1907
- import { z as z25 } from "zod";
1908
- var AudioDevice = z25.strictObject({
2000
+ import { z as z26 } from "zod";
2001
+ var AudioDevice = z26.strictObject({
1909
2002
  /** The OS's name for it, as audio.record takes it. */
1910
- id: z25.string().min(1).max(256),
1911
- name: z25.string().max(256),
1912
- default: z25.boolean()
2003
+ id: z26.string().min(1).max(256),
2004
+ name: z26.string().max(256),
2005
+ default: z26.boolean()
1913
2006
  });
1914
- var AudioDevicesParams = z25.strictObject({});
1915
- var AudioDevicesResult = z25.strictObject({
1916
- inputs: z25.array(AudioDevice).max(64),
1917
- outputs: z25.array(AudioDevice).max(64)
2007
+ var AudioDevicesParams = z26.strictObject({});
2008
+ var AudioDevicesResult = z26.strictObject({
2009
+ inputs: z26.array(AudioDevice).max(64),
2010
+ outputs: z26.array(AudioDevice).max(64)
1918
2011
  });
1919
- var AudioRecordParams = z25.strictObject({
1920
- seconds: z25.number().min(0.5).max(600),
2012
+ var AudioRecordParams = z26.strictObject({
2013
+ seconds: z26.number().min(0.5).max(600),
1921
2014
  /** The microphone (from audio.devices); the default input when absent. */
1922
- device_id: z25.string().min(1).max(256).optional(),
2015
+ device_id: z26.string().min(1).max(256).optional(),
1923
2016
  /** Where the WAV file goes; a new file in the temp folder when absent. */
1924
2017
  path: AbsPath.optional()
1925
2018
  });
1926
- var AudioRecordResult = z25.strictObject({
2019
+ var AudioRecordResult = z26.strictObject({
1927
2020
  path: AbsPath,
1928
- seconds: z25.number().min(0),
2021
+ seconds: z26.number().min(0),
1929
2022
  bytes: nonNegInt,
1930
2023
  /** Loudest sample, 0–1: 0 means the device gave silence. */
1931
- peak: z25.number().min(0).max(1)
2024
+ peak: z26.number().min(0).max(1)
1932
2025
  });
1933
- var AudioPlayParams = z25.strictObject({ path: AbsPath });
1934
- var AudioPlayResult = z25.strictObject({ path: AbsPath, seconds: z25.number().min(0) });
2026
+ var AudioPlayParams = z26.strictObject({ path: AbsPath });
2027
+ var AudioPlayResult = z26.strictObject({ path: AbsPath, seconds: z26.number().min(0) });
1935
2028
 
1936
2029
  // src/schema/fs-watch.ts
1937
- import { z as z26 } from "zod";
1938
- var FsWatchId = z26.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
1939
- var FsWatchStartParams = z26.strictObject({
2030
+ import { z as z27 } from "zod";
2031
+ var FsWatchId = z27.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
2032
+ var FsWatchStartParams = z27.strictObject({
1940
2033
  path: AbsPath,
1941
- recursive: z26.boolean().default(true),
2034
+ recursive: z27.boolean().default(true),
1942
2035
  /** Globs relative to `path` whose changes are not reported (".git/**", "node_modules/**"). */
1943
- ignore: z26.array(z26.string().max(256)).max(64).default([])
2036
+ ignore: z27.array(z27.string().max(256)).max(64).default([])
1944
2037
  });
1945
- var FsWatchStartResult = z26.strictObject({
2038
+ var FsWatchStartResult = z27.strictObject({
1946
2039
  watch_id: FsWatchId,
1947
2040
  path: AbsPath,
1948
2041
  /** The watch ends by itself if nobody reads it for 30 minutes. */
1949
2042
  expires_at_ms: epochMs
1950
2043
  });
1951
- var FsWatchEventsParams = z26.strictObject({
2044
+ var FsWatchEventsParams = z27.strictObject({
1952
2045
  watch_id: FsWatchId,
1953
2046
  /** Wait up to this long for a first change when none is waiting (0 answers at once). */
1954
- wait_ms: z26.int().min(0).max(25e3).default(0)
2047
+ wait_ms: z27.int().min(0).max(25e3).default(0)
1955
2048
  });
1956
- var FsWatchEventsResult = z26.strictObject({
2049
+ var FsWatchEventsResult = z27.strictObject({
1957
2050
  /** What changed since the last read, oldest first; re-checked against the disk when read. */
1958
- changes: z26.array(FsChange).max(1e3),
2051
+ changes: z27.array(FsChange).max(1e3),
1959
2052
  /** Changes were dropped (more than 1000 waited): list the folder again. */
1960
- overflow: z26.boolean(),
2053
+ overflow: z27.boolean(),
1961
2054
  expires_at_ms: epochMs
1962
2055
  });
1963
- var FsWatchStopParams = z26.strictObject({ watch_id: FsWatchId });
1964
- var FsWatchStopResult = z26.strictObject({ watch_id: FsWatchId });
2056
+ var FsWatchStopParams = z27.strictObject({ watch_id: FsWatchId });
2057
+ var FsWatchStopResult = z27.strictObject({ watch_id: FsWatchId });
1965
2058
 
1966
2059
  // src/schema/exec-job.ts
1967
- import { z as z27 } from "zod";
1968
- var ExecJobId = z27.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
1969
- var ExecJobStartParams = z27.strictObject({
1970
- command: z27.string().min(1).max(131072),
2060
+ import { z as z28 } from "zod";
2061
+ var ExecJobId = z28.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
2062
+ var ExecJobStartParams = z28.strictObject({
2063
+ command: z28.string().min(1).max(131072),
1971
2064
  /** The folder it runs in; the home folder when absent. */
1972
2065
  cwd: AbsPath.optional(),
1973
- env: z27.record(z27.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), z27.string().max(32768)).optional()
2066
+ env: z28.record(z28.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), z28.string().max(32768)).optional()
1974
2067
  });
1975
- var ExecJobStartResult = z27.strictObject({ job_id: ExecJobId, pid: z27.int().min(1), cwd: AbsPath });
1976
- var ExecJobOutputParams = z27.strictObject({
2068
+ var ExecJobStartResult = z28.strictObject({ job_id: ExecJobId, pid: z28.int().min(1), cwd: AbsPath });
2069
+ var ExecJobOutputParams = z28.strictObject({
1977
2070
  job_id: ExecJobId,
1978
2071
  /** Byte offset into the job's output to read from (next_offset of the last read; 0 = the start). */
1979
2072
  offset: nonNegInt.default(0),
1980
2073
  /** Wait up to this long for new output or the exit when none is waiting (0 answers at once). */
1981
- wait_ms: z27.int().min(0).max(25e3).default(0),
1982
- max_bytes: z27.int().min(1024).max(1048576).default(65536)
2074
+ wait_ms: z28.int().min(0).max(25e3).default(0),
2075
+ max_bytes: z28.int().min(1024).max(1048576).default(65536)
1983
2076
  });
1984
- var ExecJobOutputResult = z27.strictObject({
2077
+ var ExecJobOutputResult = z28.strictObject({
1985
2078
  /** stdout and stderr interleaved as they arrived (UTF-8). */
1986
- output: z27.string(),
2079
+ output: z28.string(),
1987
2080
  next_offset: nonNegInt,
1988
2081
  /** Bytes before `offset` that are gone (the job keeps its last 4 MiB). */
1989
2082
  dropped_bytes: nonNegInt,
1990
- running: z27.boolean(),
1991
- exit_code: z27.int().nullable()
2083
+ running: z28.boolean(),
2084
+ exit_code: z28.int().nullable()
1992
2085
  });
1993
- var ExecJobStopParams = z27.strictObject({
2086
+ var ExecJobStopParams = z28.strictObject({
1994
2087
  job_id: ExecJobId,
1995
2088
  /** End it at once (SIGKILL; on Windows the whole tree with /F) instead of asking it to quit. */
1996
- force: z27.boolean().default(false)
2089
+ force: z28.boolean().default(false)
1997
2090
  });
1998
- var ExecJobStopResult = z27.strictObject({ job_id: ExecJobId, exited: z27.boolean(), exit_code: z27.int().nullable() });
1999
- var ExecJobInfo = z27.strictObject({
2091
+ var ExecJobStopResult = z28.strictObject({ job_id: ExecJobId, exited: z28.boolean(), exit_code: z28.int().nullable() });
2092
+ var ExecJobInfo = z28.strictObject({
2000
2093
  job_id: ExecJobId,
2001
- command: z27.string().max(1024),
2002
- pid: z27.int().min(1),
2094
+ command: z28.string().max(1024),
2095
+ pid: z28.int().min(1),
2003
2096
  cwd: AbsPath,
2004
- running: z27.boolean(),
2005
- exit_code: z27.int().nullable(),
2097
+ running: z28.boolean(),
2098
+ exit_code: z28.int().nullable(),
2006
2099
  started_at_ms: epochMs,
2007
2100
  output_bytes: nonNegInt
2008
2101
  });
2009
- var ExecJobListParams = z27.strictObject({});
2010
- var ExecJobListResult = z27.strictObject({ jobs: z27.array(ExecJobInfo).max(64) });
2102
+ var ExecJobListParams = z28.strictObject({});
2103
+ var ExecJobListResult = z28.strictObject({ jobs: z28.array(ExecJobInfo).max(64) });
2011
2104
 
2012
2105
  // src/schema/coding.ts
2013
- import { z as z28 } from "zod";
2106
+ import { z as z29 } from "zod";
2014
2107
  import { UUID_SHAPE_PATTERN as UUID_SHAPE_PATTERN3 } from "@ai-matrx/kit/uuid";
2015
- var CodingServiceCredentials = z28.strictObject({
2016
- access_token: z28.string().min(16).max(16384),
2017
- user_id: z28.string().regex(UUID_SHAPE_PATTERN3),
2108
+ var CodingServiceCredentials = z29.strictObject({
2109
+ access_token: z29.string().min(16).max(16384),
2110
+ user_id: z29.string().regex(UUID_SHAPE_PATTERN3),
2018
2111
  /** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
2019
- server_url: z28.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
2112
+ server_url: z29.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
2020
2113
  });
2021
- var CodingHistoryBlocked = z28.enum([
2114
+ var CodingHistoryBlocked = z29.enum([
2022
2115
  "signed_out",
2023
2116
  "offline",
2024
2117
  "organization_required",
@@ -2026,11 +2119,11 @@ var CodingHistoryBlocked = z28.enum([
2026
2119
  "cloud_list_unavailable",
2027
2120
  "history_too_large"
2028
2121
  ]);
2029
- var CodingHistoryFailure = z28.strictObject({
2030
- session_id: z28.string().max(64),
2031
- reason: z28.string().max(300)
2122
+ var CodingHistoryFailure = z29.strictObject({
2123
+ session_id: z29.string().max(64),
2124
+ reason: z29.string().max(300)
2032
2125
  });
2033
- var CodingHistoryRun = z28.strictObject({
2126
+ var CodingHistoryRun = z29.strictObject({
2034
2127
  /** Claude Code sessions found on this computer. */
2035
2128
  local_sessions: nonNegInt,
2036
2129
  /** Of those, already complete in AI Matrx. */
@@ -2045,39 +2138,39 @@ var CodingHistoryRun = z28.strictObject({
2045
2138
  /** Changed while being read; a later run takes them. */
2046
2139
  changed: nonNegInt,
2047
2140
  failed: nonNegInt,
2048
- failures: z28.array(CodingHistoryFailure).max(20),
2141
+ failures: z29.array(CodingHistoryFailure).max(20),
2049
2142
  /** Candidates not reached yet. */
2050
2143
  remaining: nonNegInt,
2051
2144
  /** The one line a person reads, e.g. "Imported 12 of 14 sessions. 140 already in AI Matrx." */
2052
- summary: z28.string().max(400)
2145
+ summary: z29.string().max(400)
2053
2146
  });
2054
- var CodingHistoryStep = z28.strictObject({
2147
+ var CodingHistoryStep = z29.strictObject({
2055
2148
  /** Null when the run could not start (blocked before a plan existed). */
2056
- plan_id: z28.string().regex(/^[0-9a-f]{32}$/).nullable(),
2057
- finished: z28.boolean(),
2149
+ plan_id: z29.string().regex(/^[0-9a-f]{32}$/).nullable(),
2150
+ finished: z29.boolean(),
2058
2151
  blocked: CodingHistoryBlocked.nullable(),
2059
2152
  run: CodingHistoryRun
2060
2153
  });
2061
- var CodingPlanMissingParams = z28.strictObject({ credentials: CodingServiceCredentials.nullable() });
2062
- var CodingImportNextParams = z28.strictObject({
2063
- plan_id: z28.string().regex(/^[0-9a-f]{32}$/),
2154
+ var CodingPlanMissingParams = z29.strictObject({ credentials: CodingServiceCredentials.nullable() });
2155
+ var CodingImportNextParams = z29.strictObject({
2156
+ plan_id: z29.string().regex(/^[0-9a-f]{32}$/),
2064
2157
  credentials: CodingServiceCredentials.nullable()
2065
2158
  });
2066
- var CodingServiceProgress = z28.strictObject({
2067
- phase: z28.enum(["checking", "importing"]),
2159
+ var CodingServiceProgress = z29.strictObject({
2160
+ phase: z29.enum(["checking", "importing"]),
2068
2161
  done: nonNegInt,
2069
2162
  total: nonNegInt
2070
2163
  });
2071
- var CodingHistoryImportMissingParams = z28.strictObject({});
2072
- var CodingHistoryImportMissingResult = z28.strictObject({
2073
- state: z28.enum(["done", "blocked", "cancelled"]),
2164
+ var CodingHistoryImportMissingParams = z29.strictObject({});
2165
+ var CodingHistoryImportMissingResult = z29.strictObject({
2166
+ state: z29.enum(["done", "blocked", "cancelled"]),
2074
2167
  blocked: CodingHistoryBlocked.nullable(),
2075
2168
  run: CodingHistoryRun,
2076
2169
  elapsed_ms: nonNegInt
2077
2170
  });
2078
- var CodingHistoryProgressEvent = z28.strictObject({
2171
+ var CodingHistoryProgressEvent = z29.strictObject({
2079
2172
  request_id: RequestId,
2080
- phase: z28.enum(["checking", "importing"]),
2173
+ phase: z29.enum(["checking", "importing"]),
2081
2174
  /** Sessions settled so far, of `total` candidates (0 of 0 while checking). */
2082
2175
  done: nonNegInt,
2083
2176
  total: nonNegInt,
@@ -2193,6 +2286,11 @@ var OPS = {
2193
2286
  "stack.server.action": { params: StackServerActionParams, result: StackServerActionResult, kind: "unary", since: "1.16", errors: ["NOT_FOUND", "CONFLICT", "INTERNAL"] },
2194
2287
  "stack.logs": { params: StackLogsParams, result: StackLogsResult, kind: "unary", since: "1.16", errors: ["NOT_FOUND", "INTERNAL"] },
2195
2288
  "stack.errors": { params: StackErrorsParams, result: StackErrorsResult, kind: "unary", since: "1.16", errors: ["INTERNAL"] },
2289
+ // The device's error ledger (SPEC §3.12): every process's errors, grouped, delivered to ops.system_error.
2290
+ "diag.errors.list": { params: DiagErrorsListParams, result: DiagErrorsListResult, kind: "unary", since: "1.20", errors: ["INTERNAL"] },
2291
+ "diag.errors.report": { params: DiagErrorsReportParams, result: DiagErrorsReportResult, kind: "unary", since: "1.20", errors: ["INTERNAL"] },
2292
+ // 1.21: what a window's sidebar draws (the Move-all grouping check).
2293
+ "apps.windows.shown": { params: AppsWindowsShownParams, result: AppsWindowsShownResult, kind: "unary", since: "1.21", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2196
2294
  // Claude Code history (SPEC §6 coding): served by the `coding` Python service through SERVICES below.
2197
2295
  "coding.history.import_missing": { params: CodingHistoryImportMissingParams, result: CodingHistoryImportMissingResult, kind: "unary", since: "1.5", errors: ["RESOURCE_BUSY", "RESOURCE_GONE", "CANCELLED", "INTERNAL"] }
2198
2296
  };
@@ -2207,7 +2305,8 @@ var EVENTS = {
2207
2305
  "models.progress": ModelsProgressEvent,
2208
2306
  "coding.history.progress": CodingHistoryProgressEvent,
2209
2307
  "relay.device_status": RelayDeviceStatusEvent,
2210
- "relay.auth_expiring": RelayAuthExpiringEvent
2308
+ "relay.auth_expiring": RelayAuthExpiringEvent,
2309
+ "diag.errors.changed": DiagErrorsChangedEvent
2211
2310
  };
2212
2311
  var SERVICES = {
2213
2312
  ml: {
@@ -2453,6 +2552,15 @@ var NAMED_SCHEMAS = {
2453
2552
  StackLogsResult,
2454
2553
  StackErrorsParams,
2455
2554
  StackErrorsResult,
2555
+ DiagProcess,
2556
+ DiagErrorKind,
2557
+ DiagErrorStatus,
2558
+ DiagErrorEntry,
2559
+ DiagErrorsListParams,
2560
+ DiagErrorsListResult,
2561
+ DiagErrorsReportParams,
2562
+ DiagErrorsReportResult,
2563
+ DiagErrorsChangedEvent,
2456
2564
  FsWatchId,
2457
2565
  FsWatchStartParams,
2458
2566
  FsWatchStartResult,
@@ -2551,6 +2659,9 @@ var NAMED_SCHEMAS = {
2551
2659
  ProjectMoveGroup,
2552
2660
  AppsProjectsToWindowParams,
2553
2661
  AppsProjectsToWindowResult,
2662
+ ShownSection,
2663
+ AppsWindowsShownParams,
2664
+ AppsWindowsShownResult,
2554
2665
  ColdChat,
2555
2666
  AppsChatsColdParams,
2556
2667
  AppsChatsColdResult,
@@ -2719,7 +2830,7 @@ function forPeer(op, part, value, version) {
2719
2830
  var VERSIONED_RESULT_OPS = [.../* @__PURE__ */ new Set([...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys(), ...NESTED_RESULTS.keys()])];
2720
2831
 
2721
2832
  // src/contract.ts
2722
- var CONTRACT_SHA256 = "4fc16cc5bdaf7d666d5a0916ad3cd362df192d0238655ea288e7ffe15e54f246";
2833
+ var CONTRACT_SHA256 = "5745ca5b70c283eadfce68d0c66c06207405b60c7e112cb75aca7ff29b15d12e";
2723
2834
 
2724
2835
  // src/close-policy.ts
2725
2836
  var CLOSE_RULES = {
@@ -3133,6 +3244,8 @@ export {
3133
3244
  AppsWindowsReloadParams,
3134
3245
  AppsWindowsRestartParams,
3135
3246
  AppsWindowsSaveNamesParams,
3247
+ AppsWindowsShownParams,
3248
+ AppsWindowsShownResult,
3136
3249
  AudioDevice,
3137
3250
  AudioDevicesParams,
3138
3251
  AudioDevicesResult,
@@ -3186,6 +3299,15 @@ export {
3186
3299
  DEFAULT_WINDOW_BYTES,
3187
3300
  DesktopProtocolError,
3188
3301
  DeviceId,
3302
+ DiagErrorEntry,
3303
+ DiagErrorKind,
3304
+ DiagErrorStatus,
3305
+ DiagErrorsChangedEvent,
3306
+ DiagErrorsListParams,
3307
+ DiagErrorsListResult,
3308
+ DiagErrorsReportParams,
3309
+ DiagErrorsReportResult,
3310
+ DiagProcess,
3189
3311
  EVENTS,
3190
3312
  EXCLUDED_TOOLS,
3191
3313
  EndMsg,
@@ -3390,6 +3512,7 @@ export {
3390
3512
  SessionListResult,
3391
3513
  SessionReleaseParams,
3392
3514
  SessionReleaseResult,
3515
+ ShownSection,
3393
3516
  Signal,
3394
3517
  SpendAccount,
3395
3518
  SpendChat,