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