@ai-matrx/desktop-protocol 0.21.37 → 0.21.39
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 +21 -1
- package/dist/client.cjs +588 -500
- 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 +588 -500
- package/dist/client.js.map +1 -1
- package/dist/index.cjs +1447 -1338
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +178 -6
- package/dist/index.d.ts +178 -6
- package/dist/index.js +1447 -1338
- package/dist/index.js.map +1 -1
- package/dist/{models-B7jYxupg.d.cts → models-Ut2nuRzV.d.cts} +239 -1
- package/dist/{models-B7jYxupg.d.ts → models-Ut2nuRzV.d.ts} +239 -1
- package/dist/react.d.cts +85 -1
- package/dist/react.d.ts +85 -1
- package/generated/desktop-protocol.schema.json +515 -1
- package/package.json +2 -2
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 = 47;
|
|
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_-]+$/);
|
|
@@ -935,7 +935,9 @@ var DownloadRow = z10.strictObject({
|
|
|
935
935
|
/** Unix ms; null when stopped. */
|
|
936
936
|
started_at: nonNegInt.nullable(),
|
|
937
937
|
/** The folder it downloads into (Show in Finder). */
|
|
938
|
-
path: z10.string().max(1024).nullable()
|
|
938
|
+
path: z10.string().max(1024).nullable(),
|
|
939
|
+
/** (1.46) Why it stopped, when it failed (one human line); absent otherwise. */
|
|
940
|
+
error: z10.string().max(300).optional()
|
|
939
941
|
});
|
|
940
942
|
var ModelsDownloadsListParams = z10.strictObject({});
|
|
941
943
|
var ModelsDownloadsListResult = z10.strictObject({ downloads: z10.array(DownloadRow).max(64) });
|
|
@@ -1749,249 +1751,331 @@ var AppsWindowsUpdateAndReopenResult = z14.strictObject({
|
|
|
1749
1751
|
installed_version: z14.string().max(64).nullable()
|
|
1750
1752
|
});
|
|
1751
1753
|
|
|
1752
|
-
// src/schema/
|
|
1754
|
+
// src/schema/apps-instances.ts
|
|
1753
1755
|
import { z as z15 } from "zod";
|
|
1756
|
+
var InstanceStatus = z15.enum(["open", "closed", "wrong_account", "update_waiting", "folder_missing"]);
|
|
1757
|
+
var AppInstall = z15.strictObject({
|
|
1758
|
+
location: z15.string().max(1024),
|
|
1759
|
+
version: z15.string().max(80).nullable()
|
|
1760
|
+
});
|
|
1761
|
+
var AppInstance = z15.strictObject({
|
|
1762
|
+
app_key: AppKey,
|
|
1763
|
+
/** "main", or the instance's name: the same key every window action takes. */
|
|
1764
|
+
key: ChatPlace,
|
|
1765
|
+
main: z15.boolean(),
|
|
1766
|
+
status: InstanceStatus,
|
|
1767
|
+
running: z15.boolean(),
|
|
1768
|
+
/** Its process while open. */
|
|
1769
|
+
pid: nonNegInt.nullable(),
|
|
1770
|
+
/** Its data folder on this device. */
|
|
1771
|
+
folder: z15.string().max(1024).nullable(),
|
|
1772
|
+
folder_exists: z15.boolean(),
|
|
1773
|
+
/** The provider's id of the account signed in there now, when the app records it. */
|
|
1774
|
+
account_id: z15.string().max(200).nullable(),
|
|
1775
|
+
/** That account's email, when known. */
|
|
1776
|
+
account: z15.string().max(320).nullable(),
|
|
1777
|
+
/** The account this instance is kept for (null for main: it signs into any). */
|
|
1778
|
+
meant_for: z15.string().max(320).nullable(),
|
|
1779
|
+
/** The version running in it now, or the one it last ran when closed. */
|
|
1780
|
+
version: z15.string().max(80).nullable(),
|
|
1781
|
+
installed_version: z15.string().max(80).nullable(),
|
|
1782
|
+
/** Chats open in it now. */
|
|
1783
|
+
open_chats: nonNegInt,
|
|
1784
|
+
launched_ms: epochMs.nullable(),
|
|
1785
|
+
quit_ms: epochMs.nullable(),
|
|
1786
|
+
first_launch_ms: epochMs.nullable()
|
|
1787
|
+
});
|
|
1788
|
+
var AccountResetSource = z15.enum(["app", "usage_history", "your_list"]);
|
|
1789
|
+
var AccountGap = z15.enum(["email", "plan", "usage"]);
|
|
1790
|
+
var AppAccount = z15.strictObject({
|
|
1791
|
+
app_key: AppKey,
|
|
1792
|
+
/** The provider's own account id (Claude's account uuid, ChatGPT's account id); `org:<uuid>` when only its organization is known. */
|
|
1793
|
+
account_id: z15.string().max(200),
|
|
1794
|
+
email: z15.string().max(320).nullable(),
|
|
1795
|
+
plan: z15.string().max(80).nullable(),
|
|
1796
|
+
/** The provider organizations its readings are filed under. */
|
|
1797
|
+
orgs: z15.array(z15.string().max(80)).max(20),
|
|
1798
|
+
/** Weekly use in percent; 0 once the week reset after the reading. */
|
|
1799
|
+
weekly: z15.number().nullable(),
|
|
1800
|
+
weekly_reset_since: z15.boolean(),
|
|
1801
|
+
weekly_resets_at_ms: epochMs.nullable(),
|
|
1802
|
+
weekly_reset_source: AccountResetSource.nullable(),
|
|
1803
|
+
/** 5-hour use in percent; 0 once the 5-hour window passed after the reading. */
|
|
1804
|
+
five_hour: z15.number().nullable(),
|
|
1805
|
+
five_hour_reset_since: z15.boolean(),
|
|
1806
|
+
/** The latest the 5-hour window resets. */
|
|
1807
|
+
five_hour_resets_at_ms: epochMs.nullable(),
|
|
1808
|
+
/** Claude: extra-usage spend as a percent of its cap. */
|
|
1809
|
+
extra_usage: z15.number().nullable(),
|
|
1810
|
+
/** Codex: the credit balance. */
|
|
1811
|
+
credits: z15.number().nullable(),
|
|
1812
|
+
/** When the newest reading was taken, and in which instance. */
|
|
1813
|
+
read_at_ms: epochMs.nullable(),
|
|
1814
|
+
read_in: ChatPlace.nullable(),
|
|
1815
|
+
/** Instances signed into it now. */
|
|
1816
|
+
instances: z15.array(ChatPlace).max(200),
|
|
1817
|
+
first_seen_ms: epochMs.nullable(),
|
|
1818
|
+
last_seen_ms: epochMs.nullable(),
|
|
1819
|
+
missing: z15.array(AccountGap).max(3)
|
|
1820
|
+
});
|
|
1821
|
+
var AppsInstancesListParams = z15.strictObject({ app_key: AppKey });
|
|
1822
|
+
var AppsInstancesListResult = z15.strictObject({
|
|
1823
|
+
app_key: AppKey,
|
|
1824
|
+
install: AppInstall.nullable(),
|
|
1825
|
+
instances: z15.array(AppInstance).max(200),
|
|
1826
|
+
/** The rows are right but something around them failed; shown, never hidden. */
|
|
1827
|
+
problem: z15.string().max(400).optional()
|
|
1828
|
+
});
|
|
1829
|
+
var AppsAccountsListParams = z15.strictObject({ app_key: AppKey });
|
|
1830
|
+
var AppsAccountsListResult = z15.strictObject({
|
|
1831
|
+
app_key: AppKey,
|
|
1832
|
+
accounts: z15.array(AppAccount).max(500),
|
|
1833
|
+
problem: z15.string().max(400).optional()
|
|
1834
|
+
});
|
|
1835
|
+
|
|
1836
|
+
// src/schema/service.ts
|
|
1837
|
+
import { z as z16 } from "zod";
|
|
1754
1838
|
var SERVICE_MAX_FRAME_BYTES = 16777216;
|
|
1755
|
-
var ServiceName =
|
|
1756
|
-
var ContractHash =
|
|
1757
|
-
var ServiceToken =
|
|
1839
|
+
var ServiceName = z16.enum(["ml", "coding", "tools"]);
|
|
1840
|
+
var ContractHash = z16.string().regex(/^[0-9a-f]{64}$/);
|
|
1841
|
+
var ServiceToken = z16.string().regex(/^[A-Za-z0-9_-]{43}$/);
|
|
1758
1842
|
var ServiceRequestId = u32;
|
|
1759
|
-
var ServiceHello =
|
|
1760
|
-
var ServiceWelcome =
|
|
1761
|
-
type:
|
|
1843
|
+
var ServiceHello = z16.strictObject({ type: z16.literal("hello"), token: ServiceToken, contract: ContractHash });
|
|
1844
|
+
var ServiceWelcome = z16.strictObject({
|
|
1845
|
+
type: z16.literal("welcome"),
|
|
1762
1846
|
service: ServiceName,
|
|
1763
1847
|
contract: ContractHash,
|
|
1764
1848
|
pid: nonNegInt,
|
|
1765
1849
|
/** The interpreter's version, e.g. "3.13.15". */
|
|
1766
|
-
python:
|
|
1850
|
+
python: z16.string().max(32),
|
|
1767
1851
|
/** Every op this service serves; must equal SERVICES[service] exactly. */
|
|
1768
|
-
ops:
|
|
1852
|
+
ops: z16.array(z16.string().min(1).max(64)).max(64)
|
|
1769
1853
|
});
|
|
1770
|
-
var ServiceRequest =
|
|
1771
|
-
type:
|
|
1854
|
+
var ServiceRequest = z16.strictObject({
|
|
1855
|
+
type: z16.literal("request"),
|
|
1772
1856
|
id: ServiceRequestId,
|
|
1773
|
-
op:
|
|
1774
|
-
params:
|
|
1857
|
+
op: z16.string().min(1).max(64),
|
|
1858
|
+
params: z16.unknown()
|
|
1775
1859
|
// validated by the service against SERVICES[service][op].params
|
|
1776
1860
|
});
|
|
1777
|
-
var ServiceResponse =
|
|
1778
|
-
type:
|
|
1861
|
+
var ServiceResponse = z16.strictObject({
|
|
1862
|
+
type: z16.literal("response"),
|
|
1779
1863
|
id: ServiceRequestId,
|
|
1780
|
-
result:
|
|
1864
|
+
result: z16.unknown()
|
|
1781
1865
|
// validated by the core against SERVICES[service][op].result
|
|
1782
1866
|
});
|
|
1783
|
-
var ServiceErrorMsg =
|
|
1784
|
-
var ServiceProgressMsg =
|
|
1785
|
-
var ServiceCancel =
|
|
1786
|
-
var ServicePing =
|
|
1787
|
-
var ServicePong =
|
|
1788
|
-
type:
|
|
1867
|
+
var ServiceErrorMsg = z16.strictObject({ type: z16.literal("error"), id: ServiceRequestId, error: ProtocolErrorBody });
|
|
1868
|
+
var ServiceProgressMsg = z16.strictObject({ type: z16.literal("progress"), id: ServiceRequestId, progress: z16.unknown() });
|
|
1869
|
+
var ServiceCancel = z16.strictObject({ type: z16.literal("cancel"), id: ServiceRequestId });
|
|
1870
|
+
var ServicePing = z16.strictObject({ type: z16.literal("ping"), id: ServiceRequestId });
|
|
1871
|
+
var ServicePong = z16.strictObject({
|
|
1872
|
+
type: z16.literal("pong"),
|
|
1789
1873
|
id: ServiceRequestId,
|
|
1790
1874
|
/** Requests running now. */
|
|
1791
1875
|
busy: nonNegInt
|
|
1792
1876
|
});
|
|
1793
|
-
var ServiceShutdown =
|
|
1794
|
-
var CoreToServiceMsg =
|
|
1795
|
-
var ServiceToCoreMsg =
|
|
1877
|
+
var ServiceShutdown = z16.strictObject({ type: z16.literal("shutdown") });
|
|
1878
|
+
var CoreToServiceMsg = z16.discriminatedUnion("type", [ServiceHello, ServiceRequest, ServiceCancel, ServicePing, ServiceShutdown]);
|
|
1879
|
+
var ServiceToCoreMsg = z16.discriminatedUnion("type", [ServiceWelcome, ServiceResponse, ServiceErrorMsg, ServiceProgressMsg, ServicePong]);
|
|
1796
1880
|
|
|
1797
1881
|
// src/schema/tools.ts
|
|
1798
|
-
import { z as
|
|
1799
|
-
var ToolLevel =
|
|
1800
|
-
var ToolOutcome =
|
|
1801
|
-
var ToolPlatform =
|
|
1802
|
-
var ToolTransport =
|
|
1803
|
-
var ToolName =
|
|
1804
|
-
var ToolLevelResult =
|
|
1882
|
+
import { z as z17 } from "zod";
|
|
1883
|
+
var ToolLevel = z17.enum(["programmatic", "protocol", "chat"]);
|
|
1884
|
+
var ToolOutcome = z17.enum(["pass", "fail", "skip"]);
|
|
1885
|
+
var ToolPlatform = z17.enum(["darwin", "win32", "linux"]);
|
|
1886
|
+
var ToolTransport = z17.enum(["in_process", "localhost", "relay", "agent"]);
|
|
1887
|
+
var ToolName = z17.string().min(1).max(64).regex(/^[a-z][a-z0-9_]*$/);
|
|
1888
|
+
var ToolLevelResult = z17.strictObject({
|
|
1805
1889
|
tool: ToolName,
|
|
1806
1890
|
level: ToolLevel,
|
|
1807
1891
|
platform: ToolPlatform,
|
|
1808
1892
|
transport: ToolTransport,
|
|
1809
1893
|
outcome: ToolOutcome,
|
|
1810
1894
|
/** True when the caller sat on a different network from the device (a phone on cellular, CI). */
|
|
1811
|
-
remote_network:
|
|
1895
|
+
remote_network: z17.boolean(),
|
|
1812
1896
|
/** One line: what was asserted, or why it failed. Never a token, a file's contents or a path under a real home. */
|
|
1813
|
-
detail:
|
|
1897
|
+
detail: z17.string().max(500),
|
|
1814
1898
|
/** The harness that produced it, e.g. `matrx-desktop test/tools/programmatic.test.ts`. */
|
|
1815
|
-
suite:
|
|
1899
|
+
suite: z17.string().min(1).max(200),
|
|
1816
1900
|
/** The test case inside the suite. */
|
|
1817
|
-
test:
|
|
1818
|
-
run_at_ms:
|
|
1901
|
+
test: z17.string().min(1).max(300),
|
|
1902
|
+
run_at_ms: z17.int().min(0),
|
|
1819
1903
|
/**
|
|
1820
1904
|
* Chat level: how many tool calls the agent's turn made, of any tool. `0` means the turn never
|
|
1821
1905
|
* exercised a tool (the model answered in prose, or the chat request failed), so the result is
|
|
1822
1906
|
* no evidence about the tool: it never turns a cell red. Absent on older results.
|
|
1823
1907
|
*/
|
|
1824
|
-
calls_made:
|
|
1908
|
+
calls_made: z17.int().min(0).optional()
|
|
1825
1909
|
});
|
|
1826
|
-
var ToolResultsFile =
|
|
1827
|
-
schema:
|
|
1910
|
+
var ToolResultsFile = z17.strictObject({
|
|
1911
|
+
schema: z17.literal("matrx.tool-results.v1"),
|
|
1828
1912
|
/** The producing repo's commit (short or full SHA). */
|
|
1829
|
-
commit:
|
|
1830
|
-
results:
|
|
1913
|
+
commit: z17.string().min(4).max(64),
|
|
1914
|
+
results: z17.array(ToolLevelResult).max(1e4)
|
|
1831
1915
|
});
|
|
1832
1916
|
|
|
1833
1917
|
// src/schema/proc.ts
|
|
1834
|
-
import { z as
|
|
1835
|
-
var ProcSort =
|
|
1836
|
-
var ProcListParams =
|
|
1918
|
+
import { z as z18 } from "zod";
|
|
1919
|
+
var ProcSort = z18.enum(["cpu", "memory", "pid", "name"]);
|
|
1920
|
+
var ProcListParams = z18.strictObject({
|
|
1837
1921
|
/** Case-insensitive substring of the process name or its command line. */
|
|
1838
|
-
name:
|
|
1922
|
+
name: z18.string().min(1).max(128).optional(),
|
|
1839
1923
|
sort: ProcSort.default("cpu"),
|
|
1840
|
-
limit:
|
|
1924
|
+
limit: z18.int().min(1).max(500).default(50)
|
|
1841
1925
|
});
|
|
1842
|
-
var ProcInfo =
|
|
1843
|
-
pid:
|
|
1926
|
+
var ProcInfo = z18.strictObject({
|
|
1927
|
+
pid: z18.int().min(0),
|
|
1844
1928
|
/** Parent process id; null where the OS does not report it. */
|
|
1845
|
-
ppid:
|
|
1846
|
-
name:
|
|
1929
|
+
ppid: z18.int().min(0).nullable(),
|
|
1930
|
+
name: z18.string().max(256),
|
|
1847
1931
|
/** The command line, cut to 1024 characters. */
|
|
1848
|
-
command:
|
|
1932
|
+
command: z18.string().max(1024),
|
|
1849
1933
|
/** Share of one core, as `ps` and Task Manager report it; null where the OS does not say. */
|
|
1850
|
-
cpu_percent:
|
|
1934
|
+
cpu_percent: z18.number().min(0).nullable(),
|
|
1851
1935
|
memory_bytes: nonNegInt.nullable(),
|
|
1852
|
-
user:
|
|
1936
|
+
user: z18.string().max(128).nullable()
|
|
1853
1937
|
});
|
|
1854
|
-
var ProcListResult =
|
|
1855
|
-
processes:
|
|
1938
|
+
var ProcListResult = z18.strictObject({
|
|
1939
|
+
processes: z18.array(ProcInfo).max(500),
|
|
1856
1940
|
/** Processes that matched before `limit`. */
|
|
1857
1941
|
total: nonNegInt,
|
|
1858
|
-
truncated:
|
|
1942
|
+
truncated: z18.boolean()
|
|
1859
1943
|
});
|
|
1860
|
-
var ProcPortsParams =
|
|
1944
|
+
var ProcPortsParams = z18.strictObject({
|
|
1861
1945
|
/** Only this port. */
|
|
1862
|
-
port:
|
|
1946
|
+
port: z18.int().min(1).max(65535).optional()
|
|
1863
1947
|
});
|
|
1864
|
-
var ProcPort =
|
|
1865
|
-
port:
|
|
1866
|
-
protocol:
|
|
1948
|
+
var ProcPort = z18.strictObject({
|
|
1949
|
+
port: z18.int().min(1).max(65535),
|
|
1950
|
+
protocol: z18.enum(["tcp", "udp"]),
|
|
1867
1951
|
/** The local address it listens on ("127.0.0.1", "*", "::"). */
|
|
1868
|
-
address:
|
|
1869
|
-
pid:
|
|
1870
|
-
process:
|
|
1952
|
+
address: z18.string().max(64),
|
|
1953
|
+
pid: z18.int().min(0).nullable(),
|
|
1954
|
+
process: z18.string().max(256).nullable()
|
|
1871
1955
|
});
|
|
1872
|
-
var ProcPortsResult =
|
|
1873
|
-
var ProcKillParams =
|
|
1874
|
-
pid:
|
|
1956
|
+
var ProcPortsResult = z18.strictObject({ ports: z18.array(ProcPort).max(4e3) });
|
|
1957
|
+
var ProcKillParams = z18.strictObject({
|
|
1958
|
+
pid: z18.int().min(1),
|
|
1875
1959
|
/** Kill outright (SIGKILL; on Windows the same /F) instead of asking it to quit. */
|
|
1876
|
-
force:
|
|
1960
|
+
force: z18.boolean().default(false)
|
|
1877
1961
|
});
|
|
1878
|
-
var ProcKillResult =
|
|
1879
|
-
pid:
|
|
1880
|
-
signal:
|
|
1962
|
+
var ProcKillResult = z18.strictObject({
|
|
1963
|
+
pid: z18.int().min(1),
|
|
1964
|
+
signal: z18.enum(["SIGTERM", "SIGKILL"]),
|
|
1881
1965
|
/** True when the process was gone within 3 s. */
|
|
1882
|
-
exited:
|
|
1966
|
+
exited: z18.boolean()
|
|
1883
1967
|
});
|
|
1884
1968
|
|
|
1885
1969
|
// src/schema/clipboard.ts
|
|
1886
|
-
import { z as
|
|
1887
|
-
var ClipboardReadParams =
|
|
1888
|
-
var ClipboardReadResult =
|
|
1970
|
+
import { z as z19 } from "zod";
|
|
1971
|
+
var ClipboardReadParams = z19.strictObject({});
|
|
1972
|
+
var ClipboardReadResult = z19.strictObject({
|
|
1889
1973
|
/** The clipboard's text ("" when it holds none), cut to 1 MiB. */
|
|
1890
|
-
text:
|
|
1891
|
-
truncated:
|
|
1974
|
+
text: z19.string().max(1048576),
|
|
1975
|
+
truncated: z19.boolean()
|
|
1892
1976
|
});
|
|
1893
|
-
var ClipboardWriteParams =
|
|
1894
|
-
var ClipboardWriteResult =
|
|
1977
|
+
var ClipboardWriteParams = z19.strictObject({ text: z19.string().max(1048576) });
|
|
1978
|
+
var ClipboardWriteResult = z19.strictObject({ bytes: nonNegInt });
|
|
1895
1979
|
|
|
1896
1980
|
// src/schema/git.ts
|
|
1897
|
-
import { z as
|
|
1981
|
+
import { z as z20 } from "zod";
|
|
1898
1982
|
var GIT_MAX_OUTPUT_CHARS = 262144;
|
|
1899
|
-
var GitText =
|
|
1900
|
-
var GitName =
|
|
1901
|
-
var GitOutputResult =
|
|
1902
|
-
var GitStatusParams =
|
|
1903
|
-
var GitStatusFile =
|
|
1904
|
-
path:
|
|
1983
|
+
var GitText = z20.string().max(GIT_MAX_OUTPUT_CHARS);
|
|
1984
|
+
var GitName = z20.string().min(1).max(255).regex(/^[^-\s][^\s]*$/);
|
|
1985
|
+
var GitOutputResult = z20.strictObject({ output: GitText, truncated: z20.boolean() });
|
|
1986
|
+
var GitStatusParams = z20.strictObject({ cwd: AbsPath });
|
|
1987
|
+
var GitStatusFile = z20.strictObject({
|
|
1988
|
+
path: z20.string(),
|
|
1905
1989
|
/** Porcelain v1 status letters: index (staged) and worktree; "?" for untracked. */
|
|
1906
|
-
index:
|
|
1907
|
-
worktree:
|
|
1990
|
+
index: z20.string().length(1),
|
|
1991
|
+
worktree: z20.string().length(1)
|
|
1908
1992
|
});
|
|
1909
|
-
var GitStatusResult =
|
|
1993
|
+
var GitStatusResult = z20.strictObject({
|
|
1910
1994
|
/** The checked-out branch; null when HEAD is detached. */
|
|
1911
|
-
branch:
|
|
1912
|
-
upstream:
|
|
1995
|
+
branch: z20.string().nullable(),
|
|
1996
|
+
upstream: z20.string().nullable(),
|
|
1913
1997
|
ahead: nonNegInt,
|
|
1914
1998
|
behind: nonNegInt,
|
|
1915
|
-
files:
|
|
1916
|
-
clean:
|
|
1999
|
+
files: z20.array(GitStatusFile).max(5e3),
|
|
2000
|
+
clean: z20.boolean(),
|
|
1917
2001
|
/** More than 5000 changed files: the list is cut. */
|
|
1918
|
-
truncated:
|
|
1919
|
-
});
|
|
1920
|
-
var GitDiffParams =
|
|
1921
|
-
var GitDiffResult =
|
|
1922
|
-
var GitLogParams =
|
|
1923
|
-
var GitLogCommit =
|
|
1924
|
-
var GitLogResult =
|
|
1925
|
-
var GitAddParams =
|
|
1926
|
-
var GitCommitParams =
|
|
2002
|
+
truncated: z20.boolean()
|
|
2003
|
+
});
|
|
2004
|
+
var GitDiffParams = z20.strictObject({ cwd: AbsPath, path: z20.string().max(4096).optional(), staged: z20.boolean().default(false) });
|
|
2005
|
+
var GitDiffResult = z20.strictObject({ diff: GitText, truncated: z20.boolean() });
|
|
2006
|
+
var GitLogParams = z20.strictObject({ cwd: AbsPath, limit: z20.int().min(1).max(500).default(50) });
|
|
2007
|
+
var GitLogCommit = z20.strictObject({ sha: z20.string(), short: z20.string(), author: z20.string(), date: z20.string(), subject: z20.string() });
|
|
2008
|
+
var GitLogResult = z20.strictObject({ commits: z20.array(GitLogCommit).max(500) });
|
|
2009
|
+
var GitAddParams = z20.strictObject({ cwd: AbsPath, paths: z20.array(z20.string().min(1).max(4096)).min(1).max(1e3) });
|
|
2010
|
+
var GitCommitParams = z20.strictObject({
|
|
1927
2011
|
cwd: AbsPath,
|
|
1928
|
-
message:
|
|
1929
|
-
amend:
|
|
2012
|
+
message: z20.string().min(1).max(65536),
|
|
2013
|
+
amend: z20.boolean().default(false),
|
|
1930
2014
|
/** "Name <email>"; absent = the computer's own git identity. */
|
|
1931
|
-
author:
|
|
2015
|
+
author: z20.string().max(512).optional()
|
|
1932
2016
|
});
|
|
1933
|
-
var GitCommitResult =
|
|
1934
|
-
var GitPushParams =
|
|
1935
|
-
var GitPullParams =
|
|
1936
|
-
var GitBranchParams =
|
|
1937
|
-
var GitBranchResult =
|
|
2017
|
+
var GitCommitResult = z20.strictObject({ sha: z20.string(), output: GitText, truncated: z20.boolean() });
|
|
2018
|
+
var GitPushParams = z20.strictObject({ cwd: AbsPath, remote: GitName.default("origin"), branch: GitName.optional(), force_with_lease: z20.boolean().default(false) });
|
|
2019
|
+
var GitPullParams = z20.strictObject({ cwd: AbsPath, remote: GitName.default("origin"), branch: GitName.optional(), rebase: z20.boolean().default(false) });
|
|
2020
|
+
var GitBranchParams = z20.strictObject({ cwd: AbsPath, action: z20.enum(["list", "create", "delete", "switch"]), name: GitName.optional() });
|
|
2021
|
+
var GitBranchResult = z20.strictObject({
|
|
1938
2022
|
/** The branch checked out after the action; null when detached. */
|
|
1939
|
-
current:
|
|
2023
|
+
current: z20.string().nullable(),
|
|
1940
2024
|
/** Local branches (filled by `list`; empty otherwise). */
|
|
1941
|
-
branches:
|
|
2025
|
+
branches: z20.array(z20.string()).max(5e3),
|
|
1942
2026
|
output: GitText,
|
|
1943
|
-
truncated:
|
|
2027
|
+
truncated: z20.boolean()
|
|
1944
2028
|
});
|
|
1945
|
-
var GitStashParams =
|
|
1946
|
-
var GitCloneParams =
|
|
1947
|
-
url:
|
|
2029
|
+
var GitStashParams = z20.strictObject({ cwd: AbsPath, action: z20.enum(["push", "pop", "list", "drop"]), message: z20.string().max(4096).optional() });
|
|
2030
|
+
var GitCloneParams = z20.strictObject({
|
|
2031
|
+
url: z20.string().min(1).max(4096).regex(/^[^-]/),
|
|
1948
2032
|
/** The folder to create; must not exist yet (or be empty). */
|
|
1949
2033
|
dest: AbsPath,
|
|
1950
2034
|
branch: GitName.optional(),
|
|
1951
|
-
depth:
|
|
2035
|
+
depth: z20.int().min(1).max(1e6).optional()
|
|
1952
2036
|
});
|
|
1953
2037
|
|
|
1954
2038
|
// src/schema/web.ts
|
|
1955
2039
|
import { UUID_SHAPE_PATTERN as UUID_SHAPE_PATTERN4 } from "@ai-matrx/kit/uuid";
|
|
1956
|
-
import { z as
|
|
2040
|
+
import { z as z21 } from "zod";
|
|
1957
2041
|
var WEB_MAX_TEXT_CHARS = 524288;
|
|
1958
|
-
var WebUrl =
|
|
1959
|
-
var WebText =
|
|
1960
|
-
var OrgId =
|
|
1961
|
-
var WebHeader =
|
|
1962
|
-
var WebFetchParams =
|
|
2042
|
+
var WebUrl = z21.string().min(1).max(8192).regex(/^https?:\/\//);
|
|
2043
|
+
var WebText = z21.string().max(WEB_MAX_TEXT_CHARS);
|
|
2044
|
+
var OrgId = z21.string().regex(UUID_SHAPE_PATTERN4);
|
|
2045
|
+
var WebHeader = z21.strictObject({ name: z21.string().min(1).max(256), value: z21.string().max(8192) });
|
|
2046
|
+
var WebFetchParams = z21.strictObject({
|
|
1963
2047
|
url: WebUrl,
|
|
1964
|
-
method:
|
|
1965
|
-
headers:
|
|
1966
|
-
body:
|
|
1967
|
-
follow_redirects:
|
|
1968
|
-
timeout_s:
|
|
1969
|
-
});
|
|
1970
|
-
var WebFetchResult =
|
|
1971
|
-
status:
|
|
1972
|
-
reason:
|
|
2048
|
+
method: z21.enum(["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"]).default("GET"),
|
|
2049
|
+
headers: z21.array(WebHeader).max(64).default([]),
|
|
2050
|
+
body: z21.string().max(1048576).optional(),
|
|
2051
|
+
follow_redirects: z21.boolean().default(true),
|
|
2052
|
+
timeout_s: z21.int().min(1).max(300).default(30)
|
|
2053
|
+
});
|
|
2054
|
+
var WebFetchResult = z21.strictObject({
|
|
2055
|
+
status: z21.int().min(100).max(999),
|
|
2056
|
+
reason: z21.string(),
|
|
1973
2057
|
/** The final URL after redirects. */
|
|
1974
|
-
url:
|
|
1975
|
-
content_type:
|
|
1976
|
-
headers:
|
|
2058
|
+
url: z21.string(),
|
|
2059
|
+
content_type: z21.string().nullable(),
|
|
2060
|
+
headers: z21.array(WebHeader),
|
|
1977
2061
|
body: WebText,
|
|
1978
|
-
truncated:
|
|
2062
|
+
truncated: z21.boolean(),
|
|
1979
2063
|
bytes: nonNegInt,
|
|
1980
2064
|
elapsed_ms: nonNegInt
|
|
1981
2065
|
});
|
|
1982
|
-
var WebAttachTarget =
|
|
1983
|
-
entity_type:
|
|
1984
|
-
entity_id:
|
|
1985
|
-
label:
|
|
2066
|
+
var WebAttachTarget = z21.strictObject({
|
|
2067
|
+
entity_type: z21.string().min(1).max(64),
|
|
2068
|
+
entity_id: z21.string().min(1).max(128),
|
|
2069
|
+
label: z21.string().max(200).optional()
|
|
1986
2070
|
});
|
|
1987
|
-
var WebLand =
|
|
2071
|
+
var WebLand = z21.strictObject({
|
|
1988
2072
|
/** The organization the page is saved in; absent: this computer's active organization. */
|
|
1989
2073
|
organization_id: OrgId.optional(),
|
|
1990
2074
|
/** Keep it: AI processing starts (chunks, search). Unkept pages are saved and wait. */
|
|
1991
|
-
keep:
|
|
1992
|
-
attach_to:
|
|
2075
|
+
keep: z21.boolean().default(false),
|
|
2076
|
+
attach_to: z21.array(WebAttachTarget).max(8).default([])
|
|
1993
2077
|
});
|
|
1994
|
-
var WebNotSavedReason =
|
|
2078
|
+
var WebNotSavedReason = z21.enum([
|
|
1995
2079
|
/** Nobody is signed in on this computer. Saved on sign-in. */
|
|
1996
2080
|
"signed_out",
|
|
1997
2081
|
/** AI Matrx could not be reached. Retried on its own. */
|
|
@@ -2001,249 +2085,249 @@ var WebNotSavedReason = z20.enum([
|
|
|
2001
2085
|
/** Waiting its turn behind other pages (retried on its own). */
|
|
2002
2086
|
"queued"
|
|
2003
2087
|
]);
|
|
2004
|
-
var WebSourceNotice =
|
|
2005
|
-
var WebSourceState =
|
|
2006
|
-
|
|
2007
|
-
state:
|
|
2008
|
-
processed_document_id:
|
|
2009
|
-
source_id:
|
|
2088
|
+
var WebSourceNotice = z21.strictObject({ code: z21.string().max(120), message: z21.string().max(2e3), remedy: z21.string().max(120) });
|
|
2089
|
+
var WebSourceState = z21.discriminatedUnion("state", [
|
|
2090
|
+
z21.strictObject({
|
|
2091
|
+
state: z21.literal("saved"),
|
|
2092
|
+
processed_document_id: z21.string().min(1).max(64),
|
|
2093
|
+
source_id: z21.string().min(1).max(128),
|
|
2010
2094
|
/** The page was already saved and nothing changed ("Already saved, no change"). */
|
|
2011
|
-
reused_existing:
|
|
2095
|
+
reused_existing: z21.boolean(),
|
|
2012
2096
|
/** The page changed: this is a new version of that Source. */
|
|
2013
|
-
new_version_of:
|
|
2014
|
-
kept:
|
|
2015
|
-
intelligence:
|
|
2097
|
+
new_version_of: z21.string().max(64).nullable(),
|
|
2098
|
+
kept: z21.boolean(),
|
|
2099
|
+
intelligence: z21.enum(["queued", "deferred", "never"]),
|
|
2016
2100
|
/** The original page as captured, kept by AI Matrx (null: the organization keeps none). */
|
|
2017
|
-
original_file_id:
|
|
2101
|
+
original_file_id: z21.string().max(128).nullable(),
|
|
2018
2102
|
/** The organization it was saved in. */
|
|
2019
2103
|
organization_id: OrgId,
|
|
2020
|
-
notices:
|
|
2104
|
+
notices: z21.array(WebSourceNotice).max(20)
|
|
2021
2105
|
}),
|
|
2022
|
-
|
|
2023
|
-
state:
|
|
2024
|
-
outbox_id:
|
|
2106
|
+
z21.strictObject({
|
|
2107
|
+
state: z21.literal("not_saved"),
|
|
2108
|
+
outbox_id: z21.string().min(1).max(64),
|
|
2025
2109
|
reason: WebNotSavedReason,
|
|
2026
|
-
message:
|
|
2110
|
+
message: z21.string().max(2e3)
|
|
2027
2111
|
})
|
|
2028
2112
|
]);
|
|
2029
|
-
var WebScrapeParams =
|
|
2030
|
-
urls:
|
|
2031
|
-
use_cache:
|
|
2032
|
-
get_links:
|
|
2113
|
+
var WebScrapeParams = z21.strictObject({
|
|
2114
|
+
urls: z21.array(WebUrl).min(1).max(20),
|
|
2115
|
+
use_cache: z21.boolean().default(true),
|
|
2116
|
+
get_links: z21.boolean().default(false),
|
|
2033
2117
|
/**
|
|
2034
2118
|
* Since 1.38. `auto` (absent): this computer's scraper (HTTP, its browser only when a page needs
|
|
2035
2119
|
* it). `browser`: this computer's own browser renders every page. `server`: AI Matrx's servers
|
|
2036
2120
|
* read it (their connection, not this computer's; saved there as a web capture).
|
|
2037
2121
|
*/
|
|
2038
|
-
engine:
|
|
2122
|
+
engine: z21.enum(["auto", "browser", "server"]).optional(),
|
|
2039
2123
|
/** Since 1.38: where the pages are saved (see WebLand). */
|
|
2040
2124
|
land: WebLand.optional()
|
|
2041
2125
|
});
|
|
2042
|
-
var WebScrapePage =
|
|
2043
|
-
url:
|
|
2044
|
-
ok:
|
|
2045
|
-
status:
|
|
2046
|
-
title:
|
|
2126
|
+
var WebScrapePage = z21.strictObject({
|
|
2127
|
+
url: z21.string(),
|
|
2128
|
+
ok: z21.boolean(),
|
|
2129
|
+
status: z21.int().min(0).max(999).nullable(),
|
|
2130
|
+
title: z21.string().nullable(),
|
|
2047
2131
|
/** The page's readable content (markdown-like text from the scraper's parse). */
|
|
2048
2132
|
text: WebText,
|
|
2049
|
-
truncated:
|
|
2133
|
+
truncated: z21.boolean(),
|
|
2050
2134
|
/** Links found on the page (only with get_links). */
|
|
2051
|
-
links:
|
|
2135
|
+
links: z21.array(z21.string()).max(2e3),
|
|
2052
2136
|
/** Why the page failed (blocked, timeout, not found…), in the scraper's words; null when ok. */
|
|
2053
|
-
error:
|
|
2137
|
+
error: z21.string().nullable(),
|
|
2054
2138
|
/** How the page was fetched (http, browser, cache). */
|
|
2055
|
-
via:
|
|
2139
|
+
via: z21.string().nullable(),
|
|
2056
2140
|
/** Since 1.38: the page's Source (absent from a 1.37 core, and for a page that failed). */
|
|
2057
2141
|
source: WebSourceState.optional()
|
|
2058
2142
|
});
|
|
2059
|
-
var WebScrapeResult =
|
|
2060
|
-
var WebSearchParams =
|
|
2061
|
-
keywords:
|
|
2062
|
-
country:
|
|
2063
|
-
count:
|
|
2064
|
-
freshness:
|
|
2065
|
-
});
|
|
2066
|
-
var WebSearchHit =
|
|
2067
|
-
var WebSearchQueryResult =
|
|
2068
|
-
var WebSearchResult =
|
|
2069
|
-
var ToolsWebSearchParams =
|
|
2070
|
-
keywords:
|
|
2071
|
-
country:
|
|
2072
|
-
count:
|
|
2073
|
-
freshness:
|
|
2074
|
-
});
|
|
2075
|
-
var WebBrowserFetchParams =
|
|
2143
|
+
var WebScrapeResult = z21.strictObject({ pages: z21.array(WebScrapePage), elapsed_ms: nonNegInt });
|
|
2144
|
+
var WebSearchParams = z21.strictObject({
|
|
2145
|
+
keywords: z21.array(z21.string().min(1).max(400)).min(1).max(5),
|
|
2146
|
+
country: z21.string().min(2).max(2).default("us"),
|
|
2147
|
+
count: z21.int().min(1).max(20).default(10),
|
|
2148
|
+
freshness: z21.enum(["pd", "pw", "pm", "py"]).optional()
|
|
2149
|
+
});
|
|
2150
|
+
var WebSearchHit = z21.strictObject({ title: z21.string(), url: z21.string(), description: z21.string() });
|
|
2151
|
+
var WebSearchQueryResult = z21.strictObject({ keyword: z21.string(), hits: z21.array(WebSearchHit), error: z21.string().nullable() });
|
|
2152
|
+
var WebSearchResult = z21.strictObject({ queries: z21.array(WebSearchQueryResult), elapsed_ms: nonNegInt });
|
|
2153
|
+
var ToolsWebSearchParams = z21.strictObject({
|
|
2154
|
+
keywords: z21.array(z21.string().min(1).max(400)).min(1).max(5),
|
|
2155
|
+
country: z21.string().min(2).max(2).default("us"),
|
|
2156
|
+
count: z21.int().min(1).max(20).default(10),
|
|
2157
|
+
freshness: z21.enum(["pd", "pw", "pm", "py"]).optional()
|
|
2158
|
+
});
|
|
2159
|
+
var WebBrowserFetchParams = z21.strictObject({
|
|
2076
2160
|
url: WebUrl,
|
|
2077
2161
|
/** A CSS selector to wait for before reading the page. */
|
|
2078
|
-
wait_for:
|
|
2079
|
-
wait_timeout_ms:
|
|
2162
|
+
wait_for: z21.string().max(1024).optional(),
|
|
2163
|
+
wait_timeout_ms: z21.int().min(100).max(12e4).default(3e4),
|
|
2080
2164
|
/** true: readable text; false: the rendered HTML. */
|
|
2081
|
-
extract_text:
|
|
2165
|
+
extract_text: z21.boolean().default(true),
|
|
2082
2166
|
/** Since 1.38: where the rendered page is saved (see WebLand). */
|
|
2083
2167
|
land: WebLand.optional()
|
|
2084
2168
|
});
|
|
2085
|
-
var WebBrowserFetchResult =
|
|
2086
|
-
url:
|
|
2087
|
-
status:
|
|
2088
|
-
title:
|
|
2169
|
+
var WebBrowserFetchResult = z21.strictObject({
|
|
2170
|
+
url: z21.string(),
|
|
2171
|
+
status: z21.int().min(0).max(999).nullable(),
|
|
2172
|
+
title: z21.string().nullable(),
|
|
2089
2173
|
content: WebText,
|
|
2090
|
-
truncated:
|
|
2174
|
+
truncated: z21.boolean(),
|
|
2091
2175
|
elapsed_ms: nonNegInt,
|
|
2092
2176
|
/** Since 1.38: the rendered page's Source (absent from a 1.37 core). */
|
|
2093
2177
|
source: WebSourceState.optional()
|
|
2094
2178
|
});
|
|
2095
|
-
var ToolsParseFile =
|
|
2179
|
+
var ToolsParseFile = z21.strictObject({
|
|
2096
2180
|
/** Absolute path of the gzipped JSON the core reads, saves and then removes. */
|
|
2097
|
-
path:
|
|
2181
|
+
path: z21.string().min(1).max(4096),
|
|
2098
2182
|
bytes: nonNegInt
|
|
2099
2183
|
});
|
|
2100
|
-
var ToolsWebScrapeParams =
|
|
2101
|
-
urls:
|
|
2102
|
-
use_cache:
|
|
2103
|
-
get_links:
|
|
2184
|
+
var ToolsWebScrapeParams = z21.strictObject({
|
|
2185
|
+
urls: z21.array(WebUrl).min(1).max(20),
|
|
2186
|
+
use_cache: z21.boolean().default(true),
|
|
2187
|
+
get_links: z21.boolean().default(false),
|
|
2104
2188
|
/** `browser`: render every page in this computer's browser, then parse it. */
|
|
2105
|
-
engine:
|
|
2189
|
+
engine: z21.enum(["auto", "browser"]).default("auto"),
|
|
2106
2190
|
/** Pages read at once (desktop.web/scrape_concurrency). */
|
|
2107
|
-
concurrency:
|
|
2191
|
+
concurrency: z21.int().min(1).max(20).default(5),
|
|
2108
2192
|
/** The wait between pages from the same site (desktop.web/request_delay_ms). */
|
|
2109
|
-
delay_ms:
|
|
2193
|
+
delay_ms: z21.int().min(0).max(3e4).default(0),
|
|
2110
2194
|
/** Where the parse files go (the core's spool folder). */
|
|
2111
|
-
spool_dir:
|
|
2195
|
+
spool_dir: z21.string().min(1).max(4096)
|
|
2112
2196
|
});
|
|
2113
|
-
var ToolsWebScrapePage =
|
|
2197
|
+
var ToolsWebScrapePage = z21.strictObject({
|
|
2114
2198
|
page: WebScrapePage,
|
|
2115
2199
|
/** The page's whole parse, for the door; null when the page failed or had no words. */
|
|
2116
2200
|
parse: ToolsParseFile.nullable(),
|
|
2117
2201
|
/** The page as fetched, for research (rendered HTML or the HTTP body); null when not kept. */
|
|
2118
2202
|
html: ToolsParseFile.nullable()
|
|
2119
2203
|
});
|
|
2120
|
-
var ToolsWebScrapeResult =
|
|
2121
|
-
var ToolsWebBrowserFetchParams =
|
|
2204
|
+
var ToolsWebScrapeResult = z21.strictObject({ pages: z21.array(ToolsWebScrapePage), elapsed_ms: nonNegInt });
|
|
2205
|
+
var ToolsWebBrowserFetchParams = z21.strictObject({
|
|
2122
2206
|
url: WebUrl,
|
|
2123
|
-
wait_for:
|
|
2124
|
-
wait_timeout_ms:
|
|
2125
|
-
extract_text:
|
|
2126
|
-
spool_dir:
|
|
2127
|
-
});
|
|
2128
|
-
var ToolsWebBrowserFetchResult =
|
|
2129
|
-
var WebRuntimeStateName =
|
|
2130
|
-
var WebRuntimeParams =
|
|
2131
|
-
var WebRuntimeState =
|
|
2207
|
+
wait_for: z21.string().max(1024).optional(),
|
|
2208
|
+
wait_timeout_ms: z21.int().min(100).max(12e4).default(3e4),
|
|
2209
|
+
extract_text: z21.boolean().default(true),
|
|
2210
|
+
spool_dir: z21.string().min(1).max(4096)
|
|
2211
|
+
});
|
|
2212
|
+
var ToolsWebBrowserFetchResult = z21.strictObject({ result: WebBrowserFetchResult, parse: ToolsParseFile.nullable() });
|
|
2213
|
+
var WebRuntimeStateName = z21.enum(["not_installed", "installing", "installed", "failed"]);
|
|
2214
|
+
var WebRuntimeParams = z21.strictObject({});
|
|
2215
|
+
var WebRuntimeState = z21.strictObject({
|
|
2132
2216
|
state: WebRuntimeStateName,
|
|
2133
2217
|
/** Why it failed, in the installer's words; null otherwise. */
|
|
2134
|
-
error:
|
|
2218
|
+
error: z21.string().max(2e3).nullable(),
|
|
2135
2219
|
/** Bytes the browser takes on this computer (its packages and Chromium); null when unknown. */
|
|
2136
2220
|
size_bytes: nonNegInt.nullable(),
|
|
2137
2221
|
/** Whether it can show a window while it works (false: only the headless shell is installed). */
|
|
2138
|
-
can_show_window:
|
|
2222
|
+
can_show_window: z21.boolean()
|
|
2139
2223
|
});
|
|
2140
|
-
var WebOutboxItem =
|
|
2141
|
-
outbox_id:
|
|
2142
|
-
url:
|
|
2143
|
-
title:
|
|
2224
|
+
var WebOutboxItem = z21.strictObject({
|
|
2225
|
+
outbox_id: z21.string().min(1).max(64),
|
|
2226
|
+
url: z21.string().max(8192),
|
|
2227
|
+
title: z21.string().max(500).nullable(),
|
|
2144
2228
|
organization_id: OrgId.nullable(),
|
|
2145
2229
|
reason: WebNotSavedReason,
|
|
2146
|
-
message:
|
|
2230
|
+
message: z21.string().max(2e3),
|
|
2147
2231
|
attempts: nonNegInt,
|
|
2148
2232
|
created_at_ms: nonNegInt,
|
|
2149
2233
|
last_attempt_at_ms: nonNegInt.nullable(),
|
|
2150
2234
|
bytes: nonNegInt
|
|
2151
2235
|
});
|
|
2152
|
-
var WebOutboxListParams =
|
|
2153
|
-
var WebOutboxListResult =
|
|
2154
|
-
items:
|
|
2236
|
+
var WebOutboxListParams = z21.strictObject({});
|
|
2237
|
+
var WebOutboxListResult = z21.strictObject({
|
|
2238
|
+
items: z21.array(WebOutboxItem),
|
|
2155
2239
|
bytes: nonNegInt,
|
|
2156
2240
|
/** The most the outbox holds; past it the oldest pages are dropped (and the log says so). */
|
|
2157
2241
|
cap_bytes: nonNegInt
|
|
2158
2242
|
});
|
|
2159
|
-
var WebOutboxRetryParams =
|
|
2160
|
-
var WebOutboxRetryResult =
|
|
2161
|
-
var WebOutboxDiscardParams =
|
|
2162
|
-
var WebOutboxDiscardResult =
|
|
2163
|
-
var WebLogVia =
|
|
2164
|
-
var WebLogCaller =
|
|
2165
|
-
var WebLogResult =
|
|
2166
|
-
var WebLogEntry =
|
|
2167
|
-
id:
|
|
2243
|
+
var WebOutboxRetryParams = z21.strictObject({ outbox_id: z21.string().min(1).max(64).optional() });
|
|
2244
|
+
var WebOutboxRetryResult = z21.strictObject({ saved: nonNegInt, waiting: nonNegInt });
|
|
2245
|
+
var WebOutboxDiscardParams = z21.strictObject({ outbox_id: z21.string().min(1).max(64) });
|
|
2246
|
+
var WebOutboxDiscardResult = z21.strictObject({ discarded: z21.boolean() });
|
|
2247
|
+
var WebLogVia = z21.enum(["this_computer", "browser", "server"]);
|
|
2248
|
+
var WebLogCaller = z21.enum(["person", "agent", "research", "phone", "other"]);
|
|
2249
|
+
var WebLogResult = z21.enum(["saved", "not_saved", "failed", "blocked", "read"]);
|
|
2250
|
+
var WebLogEntry = z21.strictObject({
|
|
2251
|
+
id: z21.string().min(1).max(64),
|
|
2168
2252
|
at_ms: nonNegInt,
|
|
2169
2253
|
caller: WebLogCaller,
|
|
2170
|
-
url:
|
|
2171
|
-
title:
|
|
2254
|
+
url: z21.string().max(8192),
|
|
2255
|
+
title: z21.string().max(500).nullable(),
|
|
2172
2256
|
result: WebLogResult,
|
|
2173
2257
|
/** One sentence: why it failed or was blocked, or the save's notice. Never page text. */
|
|
2174
|
-
detail:
|
|
2258
|
+
detail: z21.string().max(1e3).nullable(),
|
|
2175
2259
|
via: WebLogVia,
|
|
2176
2260
|
duration_ms: nonNegInt,
|
|
2177
|
-
processed_document_id:
|
|
2261
|
+
processed_document_id: z21.string().max(64).nullable()
|
|
2178
2262
|
});
|
|
2179
|
-
var WebLogListParams =
|
|
2180
|
-
var WebLogListResult =
|
|
2181
|
-
var WebLogClearParams =
|
|
2182
|
-
var WebLogClearResult =
|
|
2183
|
-
var WebProgressEvent =
|
|
2263
|
+
var WebLogListParams = z21.strictObject({ since_ms: nonNegInt.optional(), limit: z21.int().min(1).max(1e3).default(200) });
|
|
2264
|
+
var WebLogListResult = z21.strictObject({ entries: z21.array(WebLogEntry) });
|
|
2265
|
+
var WebLogClearParams = z21.strictObject({});
|
|
2266
|
+
var WebLogClearResult = z21.strictObject({ cleared: nonNegInt });
|
|
2267
|
+
var WebProgressEvent = z21.strictObject({
|
|
2184
2268
|
request_id: RequestId,
|
|
2185
|
-
phase:
|
|
2269
|
+
phase: z21.enum(["installing", "fetching", "saving"]),
|
|
2186
2270
|
done: nonNegInt,
|
|
2187
2271
|
total: nonNegInt
|
|
2188
2272
|
});
|
|
2189
|
-
var WebResearchItemState =
|
|
2190
|
-
var WebResearchItem =
|
|
2191
|
-
topic_id:
|
|
2192
|
-
topic_name:
|
|
2193
|
-
source_id:
|
|
2194
|
-
url:
|
|
2195
|
-
title:
|
|
2273
|
+
var WebResearchItemState = z21.enum(["waiting", "fetching", "saved", "thin", "failed", "cannot_edit", "blocked"]);
|
|
2274
|
+
var WebResearchItem = z21.strictObject({
|
|
2275
|
+
topic_id: z21.string().min(1).max(64),
|
|
2276
|
+
topic_name: z21.string().max(500),
|
|
2277
|
+
source_id: z21.string().min(1).max(64),
|
|
2278
|
+
url: z21.string().max(8192),
|
|
2279
|
+
title: z21.string().max(500).nullable(),
|
|
2196
2280
|
/** The capture level this computer would try (1 quick, 2 scroll); 3+ is the extension's. */
|
|
2197
|
-
level:
|
|
2198
|
-
last_failure:
|
|
2281
|
+
level: z21.int().min(1).max(4),
|
|
2282
|
+
last_failure: z21.string().max(1e3).nullable(),
|
|
2199
2283
|
state: WebResearchItemState,
|
|
2200
2284
|
/** One sentence after a fetch: what happened. */
|
|
2201
|
-
message:
|
|
2285
|
+
message: z21.string().max(1e3).nullable()
|
|
2202
2286
|
});
|
|
2203
|
-
var WebResearchQueueParams =
|
|
2204
|
-
var WebResearchQueueResult =
|
|
2205
|
-
state:
|
|
2206
|
-
problem:
|
|
2287
|
+
var WebResearchQueueParams = z21.strictObject({ topic_id: z21.string().min(1).max(64).optional() });
|
|
2288
|
+
var WebResearchQueueResult = z21.strictObject({
|
|
2289
|
+
state: z21.enum(["ready", "signed_out", "unavailable"]),
|
|
2290
|
+
problem: z21.string().max(1e3).nullable(),
|
|
2207
2291
|
/** L1/L2 items on topics this person can edit: what this computer can fetch. */
|
|
2208
|
-
items:
|
|
2292
|
+
items: z21.array(WebResearchItem),
|
|
2209
2293
|
/** Items on topics the person can view but not add to (shown, never fetched). */
|
|
2210
2294
|
view_only: nonNegInt
|
|
2211
2295
|
});
|
|
2212
|
-
var WebResearchFetchParams =
|
|
2213
|
-
topic_id:
|
|
2214
|
-
source_ids:
|
|
2296
|
+
var WebResearchFetchParams = z21.strictObject({
|
|
2297
|
+
topic_id: z21.string().min(1).max(64).optional(),
|
|
2298
|
+
source_ids: z21.array(z21.string().min(1).max(64)).max(200).optional()
|
|
2215
2299
|
});
|
|
2216
|
-
var WebResearchFetchResult =
|
|
2217
|
-
items:
|
|
2300
|
+
var WebResearchFetchResult = z21.strictObject({
|
|
2301
|
+
items: z21.array(WebResearchItem),
|
|
2218
2302
|
saved: nonNegInt,
|
|
2219
2303
|
thin: nonNegInt,
|
|
2220
2304
|
failed: nonNegInt,
|
|
2221
2305
|
cannot_edit: nonNegInt
|
|
2222
2306
|
});
|
|
2223
|
-
var ToolsServiceProgress =
|
|
2307
|
+
var ToolsServiceProgress = z21.strictObject({ phase: z21.enum(["fetching", "installing"]), done: nonNegInt, total: nonNegInt });
|
|
2224
2308
|
|
|
2225
2309
|
// src/schema/system.ts
|
|
2226
|
-
import { z as
|
|
2227
|
-
var SystemOpenUrlParams =
|
|
2310
|
+
import { z as z22 } from "zod";
|
|
2311
|
+
var SystemOpenUrlParams = z22.strictObject({
|
|
2228
2312
|
/** http, https or mailto; opened in the person's default app for it. */
|
|
2229
|
-
url:
|
|
2313
|
+
url: z22.string().min(1).max(4096)
|
|
2230
2314
|
});
|
|
2231
|
-
var SystemOpenUrlResult =
|
|
2232
|
-
var SystemOpenPathParams =
|
|
2315
|
+
var SystemOpenUrlResult = z22.strictObject({ url: z22.string().max(4096) });
|
|
2316
|
+
var SystemOpenPathParams = z22.strictObject({
|
|
2233
2317
|
path: AbsPath,
|
|
2234
2318
|
/** Show it in the file manager (Finder, Explorer) instead of opening it. */
|
|
2235
|
-
reveal:
|
|
2319
|
+
reveal: z22.boolean().default(false)
|
|
2236
2320
|
});
|
|
2237
|
-
var SystemOpenPathResult =
|
|
2238
|
-
var SystemNotifyParams =
|
|
2239
|
-
title:
|
|
2240
|
-
body:
|
|
2321
|
+
var SystemOpenPathResult = z22.strictObject({ path: AbsPath, revealed: z22.boolean() });
|
|
2322
|
+
var SystemNotifyParams = z22.strictObject({
|
|
2323
|
+
title: z22.string().min(1).max(128),
|
|
2324
|
+
body: z22.string().max(1024).default("")
|
|
2241
2325
|
});
|
|
2242
|
-
var SystemNotifyResult =
|
|
2326
|
+
var SystemNotifyResult = z22.strictObject({
|
|
2243
2327
|
/** False when this computer has no notification service to show it (a bare Linux box). */
|
|
2244
|
-
shown:
|
|
2328
|
+
shown: z22.boolean()
|
|
2245
2329
|
});
|
|
2246
|
-
var SystemSettingsPane =
|
|
2330
|
+
var SystemSettingsPane = z22.enum([
|
|
2247
2331
|
"displays",
|
|
2248
2332
|
"night_shift",
|
|
2249
2333
|
"sound",
|
|
@@ -2278,99 +2362,99 @@ var SystemSettingsPane = z21.enum([
|
|
|
2278
2362
|
"messages",
|
|
2279
2363
|
"mail"
|
|
2280
2364
|
]);
|
|
2281
|
-
var SystemOpenSettingsParams =
|
|
2282
|
-
var SystemOpenSettingsResult =
|
|
2365
|
+
var SystemOpenSettingsParams = z22.strictObject({ pane: SystemSettingsPane });
|
|
2366
|
+
var SystemOpenSettingsResult = z22.strictObject({ pane: SystemSettingsPane });
|
|
2283
2367
|
|
|
2284
2368
|
// src/schema/screen.ts
|
|
2285
|
-
import { z as
|
|
2286
|
-
var ScreenDisplay =
|
|
2369
|
+
import { z as z23 } from "zod";
|
|
2370
|
+
var ScreenDisplay = z23.strictObject({
|
|
2287
2371
|
/** The OS's display id; pass it to screen.capture. */
|
|
2288
2372
|
id: nonNegInt,
|
|
2289
|
-
name:
|
|
2373
|
+
name: z23.string().max(128),
|
|
2290
2374
|
/** Position and size in the OS's logical points (x and y may be negative left of or above the main display). */
|
|
2291
|
-
x:
|
|
2292
|
-
y:
|
|
2293
|
-
width:
|
|
2294
|
-
height:
|
|
2375
|
+
x: z23.int(),
|
|
2376
|
+
y: z23.int(),
|
|
2377
|
+
width: z23.int().min(1),
|
|
2378
|
+
height: z23.int().min(1),
|
|
2295
2379
|
/** Pixels per point (2 on a Retina display). */
|
|
2296
|
-
scale:
|
|
2297
|
-
primary:
|
|
2380
|
+
scale: z23.number().min(0.1).max(8),
|
|
2381
|
+
primary: z23.boolean(),
|
|
2298
2382
|
/** (1.24) Clockwise rotation in degrees (Displays' Rotation: 0 is Standard). */
|
|
2299
|
-
rotation:
|
|
2383
|
+
rotation: z23.int().min(0).max(359).optional(),
|
|
2300
2384
|
/** (1.24) Refresh rate in hertz; absent where the OS does not say. */
|
|
2301
|
-
refresh_hz:
|
|
2385
|
+
refresh_hz: z23.number().min(0).max(1e3).optional(),
|
|
2302
2386
|
/** (1.24) The computer's own screen (a laptop's), not one plugged in. */
|
|
2303
|
-
builtin:
|
|
2387
|
+
builtin: z23.boolean().optional()
|
|
2304
2388
|
});
|
|
2305
|
-
var ScreenListParams =
|
|
2306
|
-
var ScreenListResult =
|
|
2307
|
-
var ScreenCaptureParams =
|
|
2389
|
+
var ScreenListParams = z23.strictObject({});
|
|
2390
|
+
var ScreenListResult = z23.strictObject({ displays: z23.array(ScreenDisplay).max(32) });
|
|
2391
|
+
var ScreenCaptureParams = z23.strictObject({
|
|
2308
2392
|
/** The display (from screen.list); the primary display when absent. */
|
|
2309
2393
|
display_id: nonNegInt.optional(),
|
|
2310
|
-
format:
|
|
2394
|
+
format: z23.enum(["jpeg", "png"]).default("jpeg"),
|
|
2311
2395
|
/** Scale the picture down to at most this width in pixels (kept when already smaller). */
|
|
2312
|
-
max_width:
|
|
2396
|
+
max_width: z23.int().min(160).max(7680).default(1600)
|
|
2313
2397
|
});
|
|
2314
|
-
var ScreenCaptureResult =
|
|
2398
|
+
var ScreenCaptureResult = z23.strictObject({
|
|
2315
2399
|
display_id: nonNegInt,
|
|
2316
|
-
mime_type:
|
|
2317
|
-
width:
|
|
2318
|
-
height:
|
|
2400
|
+
mime_type: z23.enum(["image/jpeg", "image/png"]),
|
|
2401
|
+
width: z23.int().min(1),
|
|
2402
|
+
height: z23.int().min(1),
|
|
2319
2403
|
/** The display's full resolution in pixels, before scaling. */
|
|
2320
|
-
source_width:
|
|
2321
|
-
source_height:
|
|
2404
|
+
source_width: z23.int().min(1),
|
|
2405
|
+
source_height: z23.int().min(1),
|
|
2322
2406
|
/** The image, base64 (at most 6 MiB of text). */
|
|
2323
|
-
data_base64:
|
|
2407
|
+
data_base64: z23.string().max(6291456)
|
|
2324
2408
|
});
|
|
2325
2409
|
|
|
2326
2410
|
// src/schema/window.ts
|
|
2327
|
-
import { z as
|
|
2328
|
-
var WindowInfo =
|
|
2411
|
+
import { z as z24 } from "zod";
|
|
2412
|
+
var WindowInfo = z24.strictObject({
|
|
2329
2413
|
/** The OS's window handle (macOS window number, Windows HWND, X11 window id). */
|
|
2330
2414
|
id: nonNegInt,
|
|
2331
|
-
title:
|
|
2415
|
+
title: z24.string().max(512),
|
|
2332
2416
|
/** Position and size in logical points. */
|
|
2333
|
-
x:
|
|
2334
|
-
y:
|
|
2335
|
-
width:
|
|
2336
|
-
height:
|
|
2417
|
+
x: z24.int(),
|
|
2418
|
+
y: z24.int(),
|
|
2419
|
+
width: z24.int().min(0),
|
|
2420
|
+
height: z24.int().min(0),
|
|
2337
2421
|
/**
|
|
2338
2422
|
* The application that owns the window, by the name the OS shows people; absent when the OS does
|
|
2339
2423
|
* not say. Optional (never null, the schema rule) because it was added in protocol 1.7: an older
|
|
2340
2424
|
* app's answer has no such field (FIELDS_SINCE).
|
|
2341
2425
|
*/
|
|
2342
|
-
app:
|
|
2426
|
+
app: z24.string().max(256).optional(),
|
|
2343
2427
|
/** The owning process id; absent when the OS does not say. Added in protocol 1.7. */
|
|
2344
|
-
pid:
|
|
2428
|
+
pid: z24.int().min(0).optional()
|
|
2345
2429
|
});
|
|
2346
|
-
var WindowListParams =
|
|
2430
|
+
var WindowListParams = z24.strictObject({
|
|
2347
2431
|
/** Case-insensitive substring of the window title. */
|
|
2348
|
-
title:
|
|
2349
|
-
limit:
|
|
2432
|
+
title: z24.string().min(1).max(256).optional(),
|
|
2433
|
+
limit: z24.int().min(1).max(500).default(100)
|
|
2350
2434
|
});
|
|
2351
|
-
var WindowListResult =
|
|
2352
|
-
windows:
|
|
2435
|
+
var WindowListResult = z24.strictObject({
|
|
2436
|
+
windows: z24.array(WindowInfo).max(500),
|
|
2353
2437
|
total: nonNegInt,
|
|
2354
|
-
truncated:
|
|
2438
|
+
truncated: z24.boolean()
|
|
2355
2439
|
});
|
|
2356
|
-
var WindowFocusParams =
|
|
2357
|
-
var WindowFocusResult =
|
|
2358
|
-
var WindowMoveParams =
|
|
2440
|
+
var WindowFocusParams = z24.strictObject({ id: nonNegInt });
|
|
2441
|
+
var WindowFocusResult = z24.strictObject({ window: WindowInfo });
|
|
2442
|
+
var WindowMoveParams = z24.strictObject({
|
|
2359
2443
|
id: nonNegInt,
|
|
2360
2444
|
/** New top-left corner; unchanged when absent. */
|
|
2361
|
-
x:
|
|
2362
|
-
y:
|
|
2445
|
+
x: z24.int().optional(),
|
|
2446
|
+
y: z24.int().optional(),
|
|
2363
2447
|
/** New size; unchanged when absent. */
|
|
2364
|
-
width:
|
|
2365
|
-
height:
|
|
2448
|
+
width: z24.int().min(50).max(16384).optional(),
|
|
2449
|
+
height: z24.int().min(50).max(16384).optional()
|
|
2366
2450
|
});
|
|
2367
|
-
var WindowMoveResult =
|
|
2368
|
-
var WindowMinimizeParams =
|
|
2369
|
-
var WindowMinimizeResult =
|
|
2451
|
+
var WindowMoveResult = z24.strictObject({ window: WindowInfo });
|
|
2452
|
+
var WindowMinimizeParams = z24.strictObject({ id: nonNegInt });
|
|
2453
|
+
var WindowMinimizeResult = z24.strictObject({ id: nonNegInt });
|
|
2370
2454
|
|
|
2371
2455
|
// src/schema/input.ts
|
|
2372
|
-
import { z as
|
|
2373
|
-
var InputKey =
|
|
2456
|
+
import { z as z25 } from "zod";
|
|
2457
|
+
var InputKey = z25.enum([
|
|
2374
2458
|
"cmd",
|
|
2375
2459
|
"ctrl",
|
|
2376
2460
|
"alt",
|
|
@@ -2450,80 +2534,80 @@ var InputKey = z24.enum([
|
|
|
2450
2534
|
"backslash",
|
|
2451
2535
|
"grave"
|
|
2452
2536
|
]);
|
|
2453
|
-
var InputTypeTextParams =
|
|
2454
|
-
var InputTypeTextResult =
|
|
2455
|
-
var InputHotkeyParams =
|
|
2537
|
+
var InputTypeTextParams = z25.strictObject({ text: z25.string().min(1).max(1e4) });
|
|
2538
|
+
var InputTypeTextResult = z25.strictObject({ characters: z25.int().min(1) });
|
|
2539
|
+
var InputHotkeyParams = z25.strictObject({
|
|
2456
2540
|
/** Pressed together in order and released in reverse: ["cmd", "shift", "t"]. */
|
|
2457
|
-
keys:
|
|
2541
|
+
keys: z25.array(InputKey).min(1).max(6)
|
|
2458
2542
|
});
|
|
2459
|
-
var InputHotkeyResult =
|
|
2460
|
-
var InputPoint =
|
|
2461
|
-
var InputMouseMoveParams =
|
|
2543
|
+
var InputHotkeyResult = z25.strictObject({ keys: z25.array(InputKey) });
|
|
2544
|
+
var InputPoint = z25.strictObject({ x: z25.int(), y: z25.int() });
|
|
2545
|
+
var InputMouseMoveParams = z25.strictObject({
|
|
2462
2546
|
/** Screen position in logical points (the coordinates screen.list and window.list report). */
|
|
2463
|
-
x:
|
|
2464
|
-
y:
|
|
2547
|
+
x: z25.int(),
|
|
2548
|
+
y: z25.int()
|
|
2465
2549
|
});
|
|
2466
|
-
var InputMouseMoveResult =
|
|
2550
|
+
var InputMouseMoveResult = z25.strictObject({
|
|
2467
2551
|
/** Where the pointer is now, read back from the OS. */
|
|
2468
2552
|
position: InputPoint
|
|
2469
2553
|
});
|
|
2470
|
-
var InputMouseClickParams =
|
|
2554
|
+
var InputMouseClickParams = z25.strictObject({
|
|
2471
2555
|
/** Move here first; clicks where the pointer is when absent. */
|
|
2472
|
-
x:
|
|
2473
|
-
y:
|
|
2474
|
-
button:
|
|
2475
|
-
double:
|
|
2556
|
+
x: z25.int().optional(),
|
|
2557
|
+
y: z25.int().optional(),
|
|
2558
|
+
button: z25.enum(["left", "right", "middle"]).default("left"),
|
|
2559
|
+
double: z25.boolean().default(false)
|
|
2476
2560
|
});
|
|
2477
|
-
var InputMouseClickResult =
|
|
2561
|
+
var InputMouseClickResult = z25.strictObject({
|
|
2478
2562
|
position: InputPoint,
|
|
2479
|
-
button:
|
|
2480
|
-
double:
|
|
2563
|
+
button: z25.enum(["left", "right", "middle"]),
|
|
2564
|
+
double: z25.boolean()
|
|
2481
2565
|
});
|
|
2482
|
-
var InputKeyboardSettingsParams =
|
|
2483
|
-
var InputKeyboardSettingsResult =
|
|
2566
|
+
var InputKeyboardSettingsParams = z25.strictObject({});
|
|
2567
|
+
var InputKeyboardSettingsResult = z25.strictObject({
|
|
2484
2568
|
/** Key repeat is off (a held key types once). */
|
|
2485
|
-
repeat_off:
|
|
2569
|
+
repeat_off: z25.boolean().nullable(),
|
|
2486
2570
|
/** Time between repeats while a key is held (Key repeat rate: shorter is faster). */
|
|
2487
2571
|
repeat_interval_ms: nonNegInt.nullable(),
|
|
2488
2572
|
/** Time a key is held before it starts repeating (Delay until repeat). */
|
|
2489
2573
|
repeat_delay_ms: nonNegInt.nullable(),
|
|
2490
2574
|
/** What the fn / globe key does alone. */
|
|
2491
|
-
fn_key:
|
|
2575
|
+
fn_key: z25.enum(["nothing", "input_source", "emoji", "dictation"]).nullable(),
|
|
2492
2576
|
/** Tab moves focus between every control. */
|
|
2493
|
-
keyboard_navigation:
|
|
2577
|
+
keyboard_navigation: z25.boolean().nullable(),
|
|
2494
2578
|
/** The enabled input sources by name ("U.S.", "ABC – Extended"). */
|
|
2495
|
-
input_sources:
|
|
2579
|
+
input_sources: z25.array(z25.string().max(128)).max(64),
|
|
2496
2580
|
/** A key repeat change takes effect only after the person logs out and in again (macOS). */
|
|
2497
|
-
applies_after_login:
|
|
2581
|
+
applies_after_login: z25.boolean()
|
|
2498
2582
|
});
|
|
2499
|
-
var InputSetKeyboardSettingsParams =
|
|
2500
|
-
repeat_off:
|
|
2501
|
-
repeat_interval_ms:
|
|
2502
|
-
repeat_delay_ms:
|
|
2503
|
-
keyboard_navigation:
|
|
2583
|
+
var InputSetKeyboardSettingsParams = z25.strictObject({
|
|
2584
|
+
repeat_off: z25.boolean().optional(),
|
|
2585
|
+
repeat_interval_ms: z25.int().min(15).max(2e3).optional(),
|
|
2586
|
+
repeat_delay_ms: z25.int().min(150).max(2e3).optional(),
|
|
2587
|
+
keyboard_navigation: z25.boolean().optional()
|
|
2504
2588
|
});
|
|
2505
2589
|
|
|
2506
2590
|
// src/schema/power.ts
|
|
2507
|
-
import { z as
|
|
2508
|
-
var PowerEnergy =
|
|
2591
|
+
import { z as z26 } from "zod";
|
|
2592
|
+
var PowerEnergy = z26.strictObject({
|
|
2509
2593
|
display_sleep_minutes: nonNegInt.nullable(),
|
|
2510
2594
|
/** The computer itself sleeps after this long idle; null = never (Prevent automatic sleeping). */
|
|
2511
2595
|
sleep_minutes: nonNegInt.nullable(),
|
|
2512
2596
|
/** Hard disks sleep after this long; null = never. */
|
|
2513
2597
|
disk_sleep_minutes: nonNegInt.nullable(),
|
|
2514
|
-
wake_for_network:
|
|
2515
|
-
restart_after_power_failure:
|
|
2598
|
+
wake_for_network: z26.boolean().nullable(),
|
|
2599
|
+
restart_after_power_failure: z26.boolean().nullable(),
|
|
2516
2600
|
/** Low Power Mode (Energy Mode "Low Power"). */
|
|
2517
|
-
low_power_mode:
|
|
2601
|
+
low_power_mode: z26.boolean().nullable()
|
|
2518
2602
|
});
|
|
2519
|
-
var PowerStatusParams =
|
|
2520
|
-
var PowerStatusResult =
|
|
2521
|
-
has_battery:
|
|
2603
|
+
var PowerStatusParams = z26.strictObject({});
|
|
2604
|
+
var PowerStatusResult = z26.strictObject({
|
|
2605
|
+
has_battery: z26.boolean(),
|
|
2522
2606
|
/** 0–100; null without a battery. */
|
|
2523
|
-
percent:
|
|
2524
|
-
charging:
|
|
2607
|
+
percent: z26.number().min(0).max(100).nullable(),
|
|
2608
|
+
charging: z26.boolean().nullable(),
|
|
2525
2609
|
/** On wall power; null where the OS does not say. */
|
|
2526
|
-
plugged_in:
|
|
2610
|
+
plugged_in: z26.boolean().nullable(),
|
|
2527
2611
|
/** Minutes of battery left; null when charging, unknown or without a battery. */
|
|
2528
2612
|
minutes_left: nonNegInt.nullable(),
|
|
2529
2613
|
/** Matrx 2 is keeping the computer awake (power.prevent_sleep) until this time; null when it is not. */
|
|
@@ -2531,26 +2615,26 @@ var PowerStatusResult = z25.strictObject({
|
|
|
2531
2615
|
/** (1.24) The OS's own energy settings; absent where it keeps none Matrx 2 can read. */
|
|
2532
2616
|
energy: PowerEnergy.optional()
|
|
2533
2617
|
});
|
|
2534
|
-
var PowerHistoryParams =
|
|
2535
|
-
var PowerHistoryPoint =
|
|
2536
|
-
var PowerHistoryResult =
|
|
2618
|
+
var PowerHistoryParams = z26.strictObject({});
|
|
2619
|
+
var PowerHistoryPoint = z26.strictObject({ at_ms: epochMs, percent: z26.number().min(0).max(100), plugged_in: z26.boolean() });
|
|
2620
|
+
var PowerHistoryResult = z26.strictObject({
|
|
2537
2621
|
/** Oldest first; empty without a battery or where the OS keeps no log. */
|
|
2538
|
-
points:
|
|
2622
|
+
points: z26.array(PowerHistoryPoint).max(5e3)
|
|
2539
2623
|
});
|
|
2540
|
-
var PowerPreventSleepParams =
|
|
2624
|
+
var PowerPreventSleepParams = z26.strictObject({
|
|
2541
2625
|
/** Keep the computer awake this long; 0 lets it sleep again now. */
|
|
2542
|
-
seconds:
|
|
2626
|
+
seconds: z26.int().min(0).max(86400),
|
|
2543
2627
|
/** Shown where the OS lists what keeps it awake. */
|
|
2544
|
-
reason:
|
|
2628
|
+
reason: z26.string().min(1).max(128).default("Matrx 2 is working")
|
|
2545
2629
|
});
|
|
2546
|
-
var PowerPreventSleepResult =
|
|
2630
|
+
var PowerPreventSleepResult = z26.strictObject({
|
|
2547
2631
|
/** When it may sleep again; null after seconds 0. */
|
|
2548
2632
|
awake_until_ms: epochMs.nullable()
|
|
2549
2633
|
});
|
|
2550
2634
|
|
|
2551
2635
|
// src/schema/diag.ts
|
|
2552
|
-
import { z as
|
|
2553
|
-
var DiagProcess =
|
|
2636
|
+
import { z as z27 } from "zod";
|
|
2637
|
+
var DiagProcess = z27.enum([
|
|
2554
2638
|
"main",
|
|
2555
2639
|
"renderer",
|
|
2556
2640
|
"hosted_page",
|
|
@@ -2563,7 +2647,7 @@ var DiagProcess = z26.enum([
|
|
|
2563
2647
|
"coding_sessions",
|
|
2564
2648
|
"claude_accounts"
|
|
2565
2649
|
]);
|
|
2566
|
-
var DiagErrorKind =
|
|
2650
|
+
var DiagErrorKind = z27.enum([
|
|
2567
2651
|
"uncaught_exception",
|
|
2568
2652
|
"unhandled_rejection",
|
|
2569
2653
|
"renderer_crash",
|
|
@@ -2575,148 +2659,148 @@ var DiagErrorKind = z26.enum([
|
|
|
2575
2659
|
"banner",
|
|
2576
2660
|
"logged_error"
|
|
2577
2661
|
]);
|
|
2578
|
-
var DiagErrorStatus =
|
|
2579
|
-
var DiagErrorEntry =
|
|
2662
|
+
var DiagErrorStatus = z27.enum(["waiting", "sent", "resolved"]);
|
|
2663
|
+
var DiagErrorEntry = z27.strictObject({
|
|
2580
2664
|
/** sha256 prefix over process, kind, source, code and the normalized message. */
|
|
2581
|
-
signature:
|
|
2665
|
+
signature: z27.string().regex(/^[0-9a-f]{32}$/),
|
|
2582
2666
|
process: DiagProcess,
|
|
2583
2667
|
kind: DiagErrorKind,
|
|
2584
2668
|
/** Where: a cap.op, a log event, a screen or page name. */
|
|
2585
|
-
source:
|
|
2669
|
+
source: z27.string().min(1).max(128),
|
|
2586
2670
|
/** An ErrorCode, an exit code or signal, an error class; null when there is none. */
|
|
2587
|
-
code:
|
|
2671
|
+
code: z27.string().max(64).nullable(),
|
|
2588
2672
|
/** The first occurrence's message, personal data removed. */
|
|
2589
|
-
message:
|
|
2673
|
+
message: z27.string().max(500),
|
|
2590
2674
|
count: nonNegInt,
|
|
2591
2675
|
first_seen_ms: epochMs,
|
|
2592
2676
|
last_seen_ms: epochMs,
|
|
2593
2677
|
status: DiagErrorStatus,
|
|
2594
2678
|
/** What the agent who resolved it wrote; null until resolved. */
|
|
2595
|
-
resolution_note:
|
|
2596
|
-
app_version:
|
|
2679
|
+
resolution_note: z27.string().max(500).nullable(),
|
|
2680
|
+
app_version: z27.string().max(64)
|
|
2597
2681
|
});
|
|
2598
|
-
var DiagErrorsListParams =
|
|
2682
|
+
var DiagErrorsListParams = z27.strictObject({
|
|
2599
2683
|
/** open = waiting or sent; all includes resolved. */
|
|
2600
|
-
status:
|
|
2601
|
-
limit:
|
|
2684
|
+
status: z27.enum(["open", "all"]).default("open"),
|
|
2685
|
+
limit: z27.int().min(1).max(500).default(200)
|
|
2602
2686
|
});
|
|
2603
|
-
var DiagErrorsListResult =
|
|
2687
|
+
var DiagErrorsListResult = z27.strictObject({
|
|
2604
2688
|
/** Newest last_seen first. */
|
|
2605
|
-
entries:
|
|
2689
|
+
entries: z27.array(DiagErrorEntry).max(500),
|
|
2606
2690
|
total_signatures: nonNegInt,
|
|
2607
2691
|
total_occurrences: nonNegInt,
|
|
2608
2692
|
/** Signatures with occurrences not yet delivered. */
|
|
2609
2693
|
waiting: nonNegInt,
|
|
2610
2694
|
/** signed_out = kept until sign-in; ok = the last delivery worked; failing = the last delivery failed (kept, retried). */
|
|
2611
|
-
delivery:
|
|
2695
|
+
delivery: z27.enum(["signed_out", "ok", "failing"]),
|
|
2612
2696
|
last_delivery_ms: epochMs.nullable()
|
|
2613
2697
|
});
|
|
2614
|
-
var DiagErrorsReportParams =
|
|
2615
|
-
process:
|
|
2616
|
-
kind:
|
|
2698
|
+
var DiagErrorsReportParams = z27.strictObject({
|
|
2699
|
+
process: z27.enum(["renderer", "hosted_page"]),
|
|
2700
|
+
kind: z27.enum(["uncaught_exception", "unhandled_rejection", "console_error", "banner"]),
|
|
2617
2701
|
/** The screen or page, e.g. "code.chats". */
|
|
2618
|
-
source:
|
|
2619
|
-
message:
|
|
2620
|
-
code:
|
|
2621
|
-
stack:
|
|
2702
|
+
source: z27.string().min(1).max(128),
|
|
2703
|
+
message: z27.string().min(1).max(2e3),
|
|
2704
|
+
code: z27.string().max(64).optional(),
|
|
2705
|
+
stack: z27.string().max(8e3).optional()
|
|
2622
2706
|
});
|
|
2623
|
-
var DiagErrorsReportResult =
|
|
2624
|
-
signature:
|
|
2707
|
+
var DiagErrorsReportResult = z27.strictObject({
|
|
2708
|
+
signature: z27.string().regex(/^[0-9a-f]{32}$/)
|
|
2625
2709
|
});
|
|
2626
|
-
var DiagErrorsChangedEvent =
|
|
2710
|
+
var DiagErrorsChangedEvent = z27.strictObject({
|
|
2627
2711
|
total_signatures: nonNegInt,
|
|
2628
2712
|
waiting: nonNegInt
|
|
2629
2713
|
});
|
|
2630
2714
|
|
|
2631
2715
|
// src/schema/resources.ts
|
|
2632
|
-
import { z as
|
|
2633
|
-
var ResourcesDisk =
|
|
2716
|
+
import { z as z28 } from "zod";
|
|
2717
|
+
var ResourcesDisk = z28.strictObject({
|
|
2634
2718
|
/** Where it is mounted ("/", "C:"). */
|
|
2635
|
-
mount:
|
|
2719
|
+
mount: z28.string().max(512),
|
|
2636
2720
|
/** The volume's name as the file manager shows it ("Macintosh HD", "Local Disk (C:)"). Since 1.17. */
|
|
2637
|
-
name:
|
|
2721
|
+
name: z28.string().max(256).optional(),
|
|
2638
2722
|
/** The file system ("apfs", "NTFS", "ext4"). */
|
|
2639
|
-
fs:
|
|
2723
|
+
fs: z28.string().max(64),
|
|
2640
2724
|
size_bytes: nonNegInt,
|
|
2641
2725
|
used_bytes: nonNegInt,
|
|
2642
2726
|
available_bytes: nonNegInt
|
|
2643
2727
|
});
|
|
2644
|
-
var ResourcesSnapshotParams =
|
|
2645
|
-
var ResourcesSnapshotResult =
|
|
2646
|
-
cpu:
|
|
2728
|
+
var ResourcesSnapshotParams = z28.strictObject({});
|
|
2729
|
+
var ResourcesSnapshotResult = z28.strictObject({
|
|
2730
|
+
cpu: z28.strictObject({
|
|
2647
2731
|
/** Busy share of all cores, 0–100, measured now. */
|
|
2648
|
-
percent:
|
|
2649
|
-
cores:
|
|
2732
|
+
percent: z28.number().min(0).max(100),
|
|
2733
|
+
cores: z28.int().min(1),
|
|
2650
2734
|
/** 1, 5 and 15 minute load averages; null on Windows. */
|
|
2651
|
-
load:
|
|
2735
|
+
load: z28.array(z28.number().min(0)).length(3).nullable()
|
|
2652
2736
|
}),
|
|
2653
|
-
memory:
|
|
2654
|
-
swap:
|
|
2655
|
-
disks:
|
|
2737
|
+
memory: z28.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
|
|
2738
|
+
swap: z28.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
|
|
2739
|
+
disks: z28.array(ResourcesDisk).max(64),
|
|
2656
2740
|
uptime_seconds: nonNegInt
|
|
2657
2741
|
});
|
|
2658
|
-
var ResourcesJobKind =
|
|
2659
|
-
var ResourcesStrain =
|
|
2660
|
-
var ResourcesPressure =
|
|
2661
|
-
var ResourcesJob =
|
|
2742
|
+
var ResourcesJobKind = z28.enum(["type-check", "tests", "build", "lint", "dev server", "language server", "search"]);
|
|
2743
|
+
var ResourcesStrain = z28.enum(["good", "strain", "overloaded"]);
|
|
2744
|
+
var ResourcesPressure = z28.enum(["normal", "warning", "critical"]);
|
|
2745
|
+
var ResourcesJob = z28.strictObject({
|
|
2662
2746
|
/** The job's root process (Stop takes its whole tree). */
|
|
2663
|
-
pid:
|
|
2747
|
+
pid: z28.int().min(0),
|
|
2664
2748
|
kind: ResourcesJobKind,
|
|
2665
2749
|
/** Its heaviest process's command line, shortened ("…/lib/tsc --noEmit -p tsconfig.json"). */
|
|
2666
|
-
command:
|
|
2750
|
+
command: z28.string().max(256),
|
|
2667
2751
|
/** Who started it: "Claude Code", "Codex", "Cursor", "VS Code", "Terminal", "local stack", "detached"; null when unknown. */
|
|
2668
|
-
started_by:
|
|
2752
|
+
started_by: z28.string().max(64).nullable(),
|
|
2669
2753
|
/** Whatever started it is gone and nothing waits for it. */
|
|
2670
|
-
orphan:
|
|
2754
|
+
orphan: z28.boolean(),
|
|
2671
2755
|
/** A type-check queued for its turn (no compiler running yet). */
|
|
2672
|
-
waiting:
|
|
2756
|
+
waiting: z28.boolean(),
|
|
2673
2757
|
/** The project folder it runs in ("matrx-frontend"); null when not in one. */
|
|
2674
|
-
folder:
|
|
2758
|
+
folder: z28.string().max(256).nullable(),
|
|
2675
2759
|
/** The same command in the same folder, running this many times (1 = no duplicate). */
|
|
2676
|
-
duplicates:
|
|
2677
|
-
processes:
|
|
2760
|
+
duplicates: z28.int().min(1),
|
|
2761
|
+
processes: z28.int().min(1),
|
|
2678
2762
|
/** Sum over the tree, as `ps` reports it: 100 = one full core. */
|
|
2679
|
-
cpu_percent:
|
|
2763
|
+
cpu_percent: z28.number().min(0),
|
|
2680
2764
|
/** Real memory (macOS: the physical footprint Activity Monitor shows, compressed included). */
|
|
2681
2765
|
memory_bytes: nonNegInt,
|
|
2682
2766
|
started_at_ms: epochMs.nullable(),
|
|
2683
2767
|
/** False for an app, an agent session, a terminal, a system process, the local stack or Matrx 2 itself. */
|
|
2684
|
-
stoppable:
|
|
2768
|
+
stoppable: z28.boolean()
|
|
2685
2769
|
});
|
|
2686
|
-
var ResourcesProcess =
|
|
2687
|
-
pid:
|
|
2770
|
+
var ResourcesProcess = z28.strictObject({
|
|
2771
|
+
pid: z28.int().min(0),
|
|
2688
2772
|
/** The command line, shortened. */
|
|
2689
|
-
name:
|
|
2690
|
-
cpu_percent:
|
|
2773
|
+
name: z28.string().max(256),
|
|
2774
|
+
cpu_percent: z28.number().min(0),
|
|
2691
2775
|
memory_bytes: nonNegInt,
|
|
2692
|
-
started_by:
|
|
2776
|
+
started_by: z28.string().max(64).nullable(),
|
|
2693
2777
|
/** The job it belongs to ("type-check in aidream"); null when none. */
|
|
2694
|
-
job:
|
|
2778
|
+
job: z28.string().max(256).nullable(),
|
|
2695
2779
|
started_at_ms: epochMs.nullable()
|
|
2696
2780
|
});
|
|
2697
|
-
var ResourcesVerdict =
|
|
2781
|
+
var ResourcesVerdict = z28.strictObject({
|
|
2698
2782
|
level: ResourcesStrain,
|
|
2699
2783
|
/** One sentence ("Your Mac is under strain. 3 type-checks are running at once."). */
|
|
2700
|
-
text:
|
|
2784
|
+
text: z28.string().max(256),
|
|
2701
2785
|
/** The biggest jobs behind it; null when all is well. */
|
|
2702
|
-
cause:
|
|
2786
|
+
cause: z28.string().max(1024).nullable()
|
|
2703
2787
|
});
|
|
2704
|
-
var ResourcesSample =
|
|
2788
|
+
var ResourcesSample = z28.strictObject({
|
|
2705
2789
|
at_ms: epochMs,
|
|
2706
2790
|
/** The 1-minute load average. */
|
|
2707
|
-
load:
|
|
2791
|
+
load: z28.number().min(0),
|
|
2708
2792
|
memory_used_bytes: nonNegInt,
|
|
2709
2793
|
typechecks: nonNegInt
|
|
2710
2794
|
});
|
|
2711
|
-
var ResourcesActivityParams =
|
|
2712
|
-
var ResourcesActivityResult =
|
|
2795
|
+
var ResourcesActivityParams = z28.strictObject({});
|
|
2796
|
+
var ResourcesActivityResult = z28.strictObject({
|
|
2713
2797
|
/** False until the first reading (a second or two after start). */
|
|
2714
|
-
ready:
|
|
2798
|
+
ready: z28.boolean(),
|
|
2715
2799
|
sampled_at_ms: epochMs.nullable(),
|
|
2716
|
-
cores:
|
|
2800
|
+
cores: z28.int().min(1),
|
|
2717
2801
|
/** 1, 5 and 15 minute load averages. */
|
|
2718
|
-
load:
|
|
2719
|
-
memory:
|
|
2802
|
+
load: z28.array(z28.number().min(0)).length(3),
|
|
2803
|
+
memory: z28.strictObject({
|
|
2720
2804
|
total_bytes: nonNegInt,
|
|
2721
2805
|
/** Activity Monitor's Memory Used: app memory + wired + compressed. */
|
|
2722
2806
|
used_bytes: nonNegInt,
|
|
@@ -2727,269 +2811,269 @@ var ResourcesActivityResult = z27.strictObject({
|
|
|
2727
2811
|
pressure: ResourcesPressure.nullable()
|
|
2728
2812
|
}),
|
|
2729
2813
|
verdict: ResourcesVerdict,
|
|
2730
|
-
typechecks:
|
|
2814
|
+
typechecks: z28.strictObject({ running: nonNegInt, waiting: nonNegInt, comfort: nonNegInt }),
|
|
2731
2815
|
/** Heaviest first (1 GB weighs as much as 16 % of a core). */
|
|
2732
|
-
jobs:
|
|
2816
|
+
jobs: z28.array(ResourcesJob).max(200),
|
|
2733
2817
|
/** The 15 heaviest by memory and the 15 busiest by CPU, together. */
|
|
2734
|
-
top:
|
|
2818
|
+
top: z28.array(ResourcesProcess).max(30),
|
|
2735
2819
|
/** The last hour, oldest first. */
|
|
2736
|
-
history:
|
|
2820
|
+
history: z28.array(ResourcesSample).max(1200)
|
|
2737
2821
|
});
|
|
2738
|
-
var ResourcesStopJobParams =
|
|
2739
|
-
var ResourcesStopJobResult =
|
|
2822
|
+
var ResourcesStopJobParams = z28.strictObject({ pid: z28.int().min(1) });
|
|
2823
|
+
var ResourcesStopJobResult = z28.strictObject({
|
|
2740
2824
|
/** Processes signalled; whatever is still running 5 seconds later is force-stopped. */
|
|
2741
2825
|
processes: nonNegInt,
|
|
2742
2826
|
/** It had finished before the request arrived. */
|
|
2743
|
-
already_finished:
|
|
2827
|
+
already_finished: z28.boolean()
|
|
2744
2828
|
});
|
|
2745
|
-
var ResourcesIncident =
|
|
2829
|
+
var ResourcesIncident = z28.strictObject({
|
|
2746
2830
|
at_ms: epochMs,
|
|
2747
2831
|
verdict: ResourcesVerdict,
|
|
2748
|
-
load:
|
|
2832
|
+
load: z28.number().min(0),
|
|
2749
2833
|
memory_used_bytes: nonNegInt,
|
|
2750
2834
|
compressed_bytes: nonNegInt,
|
|
2751
2835
|
pressure: ResourcesPressure.nullable(),
|
|
2752
|
-
jobs:
|
|
2753
|
-
|
|
2836
|
+
jobs: z28.array(
|
|
2837
|
+
z28.strictObject({
|
|
2754
2838
|
kind: ResourcesJobKind,
|
|
2755
|
-
started_by:
|
|
2756
|
-
folder:
|
|
2757
|
-
command:
|
|
2758
|
-
cpu_percent:
|
|
2839
|
+
started_by: z28.string().max(64).nullable(),
|
|
2840
|
+
folder: z28.string().max(256).nullable(),
|
|
2841
|
+
command: z28.string().max(256),
|
|
2842
|
+
cpu_percent: z28.number().min(0),
|
|
2759
2843
|
memory_bytes: nonNegInt,
|
|
2760
|
-
duplicates:
|
|
2844
|
+
duplicates: z28.int().min(1)
|
|
2761
2845
|
})
|
|
2762
2846
|
).max(8)
|
|
2763
2847
|
});
|
|
2764
|
-
var ResourcesIncidentsParams =
|
|
2765
|
-
var ResourcesIncidentsResult =
|
|
2848
|
+
var ResourcesIncidentsParams = z28.strictObject({ limit: z28.int().min(1).max(200).default(50) });
|
|
2849
|
+
var ResourcesIncidentsResult = z28.strictObject({
|
|
2766
2850
|
/** Newest first; at most one a minute is written. */
|
|
2767
|
-
incidents:
|
|
2851
|
+
incidents: z28.array(ResourcesIncident).max(200)
|
|
2768
2852
|
});
|
|
2769
2853
|
|
|
2770
2854
|
// src/schema/stack.ts
|
|
2771
|
-
import { z as
|
|
2772
|
-
var StackServerName =
|
|
2773
|
-
var StackTone =
|
|
2774
|
-
var StackServer =
|
|
2855
|
+
import { z as z29 } from "zod";
|
|
2856
|
+
var StackServerName = z29.string().regex(/^[a-z0-9_-]{1,64}$/);
|
|
2857
|
+
var StackTone = z29.enum(["good", "wait", "bad", "off"]);
|
|
2858
|
+
var StackServer = z29.strictObject({
|
|
2775
2859
|
name: StackServerName,
|
|
2776
2860
|
/** One word: Healthy, Starting, Unhealthy, Restarting, Stopping, Waiting, Stopped, Crashed, Off. */
|
|
2777
|
-
label:
|
|
2861
|
+
label: z29.string().max(32),
|
|
2778
2862
|
tone: StackTone,
|
|
2779
2863
|
/** What is going on, in one or two plain sentences. */
|
|
2780
|
-
sentence:
|
|
2864
|
+
sentence: z29.string().max(2e3),
|
|
2781
2865
|
/** The config's own description of the server. */
|
|
2782
|
-
description:
|
|
2866
|
+
description: z29.string().max(512),
|
|
2783
2867
|
/** Where the server answers, when its description names an address. */
|
|
2784
|
-
open_url:
|
|
2785
|
-
log_file:
|
|
2868
|
+
open_url: z29.string().max(2048).nullable(),
|
|
2869
|
+
log_file: z29.string().max(4096),
|
|
2786
2870
|
/** When its log file was last written. */
|
|
2787
2871
|
last_output_at_ms: epochMs.nullable(),
|
|
2788
2872
|
started_at_ms: epochMs.nullable(),
|
|
2789
2873
|
restarts: nonNegInt,
|
|
2790
|
-
exit_code:
|
|
2791
|
-
pid:
|
|
2874
|
+
exit_code: z29.int().nullable(),
|
|
2875
|
+
pid: z29.int().nullable(),
|
|
2792
2876
|
/** (1.18) CPU of the server's process and everything under it, in percent of one core; absent when it is not running. */
|
|
2793
|
-
cpu_percent:
|
|
2877
|
+
cpu_percent: z29.number().min(0).optional(),
|
|
2794
2878
|
/** (1.18) Memory of the same processes: the physical footprint (Activity Monitor's Memory) summed; absent when it is not running. */
|
|
2795
2879
|
memory_bytes: nonNegInt.optional()
|
|
2796
2880
|
});
|
|
2797
|
-
var StackEvent =
|
|
2881
|
+
var StackEvent = z29.strictObject({
|
|
2798
2882
|
at_ms: epochMs,
|
|
2799
2883
|
/** A server name, or "stack" for the stack as a whole. */
|
|
2800
|
-
server:
|
|
2884
|
+
server: z29.string().max(64),
|
|
2801
2885
|
/** started · stopped · healthy · unhealthy · crashed · exited · restarting · stopping · action · action-done · action-failed · setup · error */
|
|
2802
|
-
kind:
|
|
2803
|
-
text:
|
|
2886
|
+
kind: z29.string().max(32),
|
|
2887
|
+
text: z29.string().max(4e3)
|
|
2804
2888
|
});
|
|
2805
|
-
var StackStateParams =
|
|
2806
|
-
var StackStateResult =
|
|
2889
|
+
var StackStateParams = z29.strictObject({});
|
|
2890
|
+
var StackStateResult = z29.strictObject({
|
|
2807
2891
|
/** The stack's config file, when found. */
|
|
2808
|
-
config_path:
|
|
2892
|
+
config_path: z29.string().max(4096).nullable(),
|
|
2809
2893
|
/** Why the stack cannot be run from here (no config, no process-compose), else null. */
|
|
2810
|
-
problem:
|
|
2811
|
-
stack_up:
|
|
2894
|
+
problem: z29.string().max(1e3).nullable(),
|
|
2895
|
+
stack_up: z29.boolean(),
|
|
2812
2896
|
stack_started_at_ms: epochMs.nullable(),
|
|
2813
|
-
servers:
|
|
2897
|
+
servers: z29.array(StackServer).max(64),
|
|
2814
2898
|
/** One line about the one-shot setup steps ("Docker Desktop: running."), or null. */
|
|
2815
|
-
setup_note:
|
|
2899
|
+
setup_note: z29.string().max(500).nullable(),
|
|
2816
2900
|
/** Start everything / Stop everything in flight. */
|
|
2817
|
-
pending:
|
|
2901
|
+
pending: z29.strictObject({ verb: z29.enum(["start", "stop"]), label: z29.string().max(64), since_ms: epochMs }).nullable(),
|
|
2818
2902
|
/** The newest entries last. */
|
|
2819
|
-
events:
|
|
2903
|
+
events: z29.array(StackEvent).max(300)
|
|
2820
2904
|
});
|
|
2821
|
-
var StackStartParams =
|
|
2822
|
-
var StackStopParams =
|
|
2823
|
-
var StackRunResult =
|
|
2824
|
-
var StackServerActionParams =
|
|
2905
|
+
var StackStartParams = z29.strictObject({});
|
|
2906
|
+
var StackStopParams = z29.strictObject({});
|
|
2907
|
+
var StackRunResult = z29.strictObject({ accepted: z29.boolean() });
|
|
2908
|
+
var StackServerActionParams = z29.strictObject({
|
|
2825
2909
|
name: StackServerName,
|
|
2826
|
-
verb:
|
|
2910
|
+
verb: z29.enum(["start", "stop", "restart"])
|
|
2827
2911
|
});
|
|
2828
|
-
var StackServerActionResult =
|
|
2829
|
-
var StackLogsParams =
|
|
2912
|
+
var StackServerActionResult = z29.strictObject({ message: z29.string().max(1e3) });
|
|
2913
|
+
var StackLogsParams = z29.strictObject({
|
|
2830
2914
|
name: StackServerName,
|
|
2831
2915
|
/** Without `offset`: the last this-many complete lines. With it: new lines after it, at most this many. */
|
|
2832
|
-
lines:
|
|
2916
|
+
lines: z29.int().min(1).max(2e5).default(2e3),
|
|
2833
2917
|
/** Byte offset the last read ended at: answer only what was written after it (follow). */
|
|
2834
2918
|
offset: nonNegInt.optional(),
|
|
2835
2919
|
/** A "Clear" point: the lines written after this byte offset (no `offset`). */
|
|
2836
2920
|
since: nonNegInt.optional(),
|
|
2837
2921
|
/** With `offset`: wait up to this long for a new line when none is waiting (0 answers at once). */
|
|
2838
|
-
wait_ms:
|
|
2922
|
+
wait_ms: z29.int().min(0).max(25e3).default(0)
|
|
2839
2923
|
});
|
|
2840
|
-
var StackLogsResult =
|
|
2924
|
+
var StackLogsResult = z29.strictObject({
|
|
2841
2925
|
/** Complete lines, colour codes removed. */
|
|
2842
|
-
lines:
|
|
2926
|
+
lines: z29.array(z29.string().max(65536)).max(2e5),
|
|
2843
2927
|
/** Where these lines end: pass it back as `offset` to follow. */
|
|
2844
2928
|
offset: nonNegInt,
|
|
2845
2929
|
/** False when `since` no longer exists (the log rotated): the lines are the plain tail instead. */
|
|
2846
|
-
since_valid:
|
|
2930
|
+
since_valid: z29.boolean(),
|
|
2847
2931
|
/** The log was rotated or truncated since `offset`: these lines start the file again. */
|
|
2848
|
-
reset:
|
|
2849
|
-
log_file:
|
|
2932
|
+
reset: z29.boolean(),
|
|
2933
|
+
log_file: z29.string().max(4096)
|
|
2850
2934
|
});
|
|
2851
|
-
var StackErrorsParams =
|
|
2852
|
-
window_minutes:
|
|
2935
|
+
var StackErrorsParams = z29.strictObject({
|
|
2936
|
+
window_minutes: z29.int().min(1).max(1440).default(60)
|
|
2853
2937
|
});
|
|
2854
|
-
var StackErrorsResult =
|
|
2938
|
+
var StackErrorsResult = z29.strictObject({
|
|
2855
2939
|
/** Per server: a heading line ("=== aidream — errors in the last 60 minutes (<file>) ===") and each error with the 10 lines after it. */
|
|
2856
|
-
sections:
|
|
2857
|
-
window_minutes:
|
|
2940
|
+
sections: z29.array(z29.strictObject({ name: StackServerName, heading: z29.string().max(4096), lines: z29.array(z29.string().max(65536)).max(5e3) })).max(64),
|
|
2941
|
+
window_minutes: z29.int().min(1).max(1440)
|
|
2858
2942
|
});
|
|
2859
2943
|
|
|
2860
2944
|
// src/schema/audio.ts
|
|
2861
|
-
import { z as
|
|
2862
|
-
var AudioDevice =
|
|
2945
|
+
import { z as z30 } from "zod";
|
|
2946
|
+
var AudioDevice = z30.strictObject({
|
|
2863
2947
|
/** The OS's name for it, as audio.record takes it. */
|
|
2864
|
-
id:
|
|
2865
|
-
name:
|
|
2866
|
-
default:
|
|
2948
|
+
id: z30.string().min(1).max(256),
|
|
2949
|
+
name: z30.string().max(256),
|
|
2950
|
+
default: z30.boolean(),
|
|
2867
2951
|
/** (1.24) How it is connected, as Sound's Type column says it: "Built-in", "USB", "Bluetooth",
|
|
2868
2952
|
* "DisplayPort", "HDMI", "AirPlay", "Virtual". Absent where the OS does not say. */
|
|
2869
|
-
kind:
|
|
2953
|
+
kind: z30.string().max(64).optional()
|
|
2870
2954
|
});
|
|
2871
|
-
var AudioDevicesParams =
|
|
2872
|
-
var AudioDevicesResult =
|
|
2873
|
-
inputs:
|
|
2874
|
-
outputs:
|
|
2955
|
+
var AudioDevicesParams = z30.strictObject({});
|
|
2956
|
+
var AudioDevicesResult = z30.strictObject({
|
|
2957
|
+
inputs: z30.array(AudioDevice).max(64),
|
|
2958
|
+
outputs: z30.array(AudioDevice).max(64)
|
|
2875
2959
|
});
|
|
2876
|
-
var AudioRecordParams =
|
|
2877
|
-
seconds:
|
|
2960
|
+
var AudioRecordParams = z30.strictObject({
|
|
2961
|
+
seconds: z30.number().min(0.5).max(600),
|
|
2878
2962
|
/** The microphone (from audio.devices); the default input when absent. */
|
|
2879
|
-
device_id:
|
|
2963
|
+
device_id: z30.string().min(1).max(256).optional(),
|
|
2880
2964
|
/** Where the WAV file goes; a new file in the temp folder when absent. */
|
|
2881
2965
|
path: AbsPath.optional()
|
|
2882
2966
|
});
|
|
2883
|
-
var AudioRecordResult =
|
|
2967
|
+
var AudioRecordResult = z30.strictObject({
|
|
2884
2968
|
path: AbsPath,
|
|
2885
|
-
seconds:
|
|
2969
|
+
seconds: z30.number().min(0),
|
|
2886
2970
|
bytes: nonNegInt,
|
|
2887
2971
|
/** Loudest sample, 0–1: 0 means the device gave silence. */
|
|
2888
|
-
peak:
|
|
2889
|
-
});
|
|
2890
|
-
var AudioPlayParams =
|
|
2891
|
-
var AudioPlayResult =
|
|
2892
|
-
var AudioLevelsParams =
|
|
2893
|
-
var AudioLevelsResult =
|
|
2894
|
-
output_volume:
|
|
2895
|
-
output_muted:
|
|
2896
|
-
input_volume:
|
|
2972
|
+
peak: z30.number().min(0).max(1)
|
|
2973
|
+
});
|
|
2974
|
+
var AudioPlayParams = z30.strictObject({ path: AbsPath });
|
|
2975
|
+
var AudioPlayResult = z30.strictObject({ path: AbsPath, seconds: z30.number().min(0) });
|
|
2976
|
+
var AudioLevelsParams = z30.strictObject({});
|
|
2977
|
+
var AudioLevelsResult = z30.strictObject({
|
|
2978
|
+
output_volume: z30.number().min(0).max(100).nullable(),
|
|
2979
|
+
output_muted: z30.boolean().nullable(),
|
|
2980
|
+
input_volume: z30.number().min(0).max(100).nullable(),
|
|
2897
2981
|
/** The alert (beep) volume, a share of the output volume. */
|
|
2898
|
-
alert_volume:
|
|
2982
|
+
alert_volume: z30.number().min(0).max(100).nullable()
|
|
2899
2983
|
});
|
|
2900
|
-
var AudioSetLevelsParams =
|
|
2901
|
-
output_volume:
|
|
2902
|
-
output_muted:
|
|
2903
|
-
input_volume:
|
|
2904
|
-
alert_volume:
|
|
2984
|
+
var AudioSetLevelsParams = z30.strictObject({
|
|
2985
|
+
output_volume: z30.number().min(0).max(100).optional(),
|
|
2986
|
+
output_muted: z30.boolean().optional(),
|
|
2987
|
+
input_volume: z30.number().min(0).max(100).optional(),
|
|
2988
|
+
alert_volume: z30.number().min(0).max(100).optional()
|
|
2905
2989
|
});
|
|
2906
2990
|
|
|
2907
2991
|
// src/schema/fs-watch.ts
|
|
2908
|
-
import { z as
|
|
2909
|
-
var FsWatchId =
|
|
2910
|
-
var FsWatchStartParams =
|
|
2992
|
+
import { z as z31 } from "zod";
|
|
2993
|
+
var FsWatchId = z31.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
|
|
2994
|
+
var FsWatchStartParams = z31.strictObject({
|
|
2911
2995
|
path: AbsPath,
|
|
2912
|
-
recursive:
|
|
2996
|
+
recursive: z31.boolean().default(true),
|
|
2913
2997
|
/** Globs relative to `path` whose changes are not reported (".git/**", "node_modules/**"). */
|
|
2914
|
-
ignore:
|
|
2998
|
+
ignore: z31.array(z31.string().max(256)).max(64).default([])
|
|
2915
2999
|
});
|
|
2916
|
-
var FsWatchStartResult =
|
|
3000
|
+
var FsWatchStartResult = z31.strictObject({
|
|
2917
3001
|
watch_id: FsWatchId,
|
|
2918
3002
|
path: AbsPath,
|
|
2919
3003
|
/** The watch ends by itself if nobody reads it for 30 minutes. */
|
|
2920
3004
|
expires_at_ms: epochMs
|
|
2921
3005
|
});
|
|
2922
|
-
var FsWatchEventsParams =
|
|
3006
|
+
var FsWatchEventsParams = z31.strictObject({
|
|
2923
3007
|
watch_id: FsWatchId,
|
|
2924
3008
|
/** Wait up to this long for a first change when none is waiting (0 answers at once). */
|
|
2925
|
-
wait_ms:
|
|
3009
|
+
wait_ms: z31.int().min(0).max(25e3).default(0)
|
|
2926
3010
|
});
|
|
2927
|
-
var FsWatchEventsResult =
|
|
3011
|
+
var FsWatchEventsResult = z31.strictObject({
|
|
2928
3012
|
/** What changed since the last read, oldest first; re-checked against the disk when read. */
|
|
2929
|
-
changes:
|
|
3013
|
+
changes: z31.array(FsChange).max(1e3),
|
|
2930
3014
|
/** Changes were dropped (more than 1000 waited): list the folder again. */
|
|
2931
|
-
overflow:
|
|
3015
|
+
overflow: z31.boolean(),
|
|
2932
3016
|
expires_at_ms: epochMs
|
|
2933
3017
|
});
|
|
2934
|
-
var FsWatchStopParams =
|
|
2935
|
-
var FsWatchStopResult =
|
|
3018
|
+
var FsWatchStopParams = z31.strictObject({ watch_id: FsWatchId });
|
|
3019
|
+
var FsWatchStopResult = z31.strictObject({ watch_id: FsWatchId });
|
|
2936
3020
|
|
|
2937
3021
|
// src/schema/exec-job.ts
|
|
2938
|
-
import { z as
|
|
2939
|
-
var ExecJobId =
|
|
2940
|
-
var ExecJobStartParams =
|
|
2941
|
-
command:
|
|
3022
|
+
import { z as z32 } from "zod";
|
|
3023
|
+
var ExecJobId = z32.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
|
|
3024
|
+
var ExecJobStartParams = z32.strictObject({
|
|
3025
|
+
command: z32.string().min(1).max(131072),
|
|
2942
3026
|
/** The folder it runs in; the home folder when absent. */
|
|
2943
3027
|
cwd: AbsPath.optional(),
|
|
2944
|
-
env:
|
|
3028
|
+
env: z32.record(z32.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), z32.string().max(32768)).optional()
|
|
2945
3029
|
});
|
|
2946
|
-
var ExecJobStartResult =
|
|
2947
|
-
var ExecJobOutputParams =
|
|
3030
|
+
var ExecJobStartResult = z32.strictObject({ job_id: ExecJobId, pid: z32.int().min(1), cwd: AbsPath });
|
|
3031
|
+
var ExecJobOutputParams = z32.strictObject({
|
|
2948
3032
|
job_id: ExecJobId,
|
|
2949
3033
|
/** Byte offset into the job's output to read from (next_offset of the last read; 0 = the start). */
|
|
2950
3034
|
offset: nonNegInt.default(0),
|
|
2951
3035
|
/** Wait up to this long for new output or the exit when none is waiting (0 answers at once). */
|
|
2952
|
-
wait_ms:
|
|
2953
|
-
max_bytes:
|
|
3036
|
+
wait_ms: z32.int().min(0).max(25e3).default(0),
|
|
3037
|
+
max_bytes: z32.int().min(1024).max(1048576).default(65536)
|
|
2954
3038
|
});
|
|
2955
|
-
var ExecJobOutputResult =
|
|
3039
|
+
var ExecJobOutputResult = z32.strictObject({
|
|
2956
3040
|
/** stdout and stderr interleaved as they arrived (UTF-8). */
|
|
2957
|
-
output:
|
|
3041
|
+
output: z32.string(),
|
|
2958
3042
|
next_offset: nonNegInt,
|
|
2959
3043
|
/** Bytes before `offset` that are gone (the job keeps its last 4 MiB). */
|
|
2960
3044
|
dropped_bytes: nonNegInt,
|
|
2961
|
-
running:
|
|
2962
|
-
exit_code:
|
|
3045
|
+
running: z32.boolean(),
|
|
3046
|
+
exit_code: z32.int().nullable()
|
|
2963
3047
|
});
|
|
2964
|
-
var ExecJobStopParams =
|
|
3048
|
+
var ExecJobStopParams = z32.strictObject({
|
|
2965
3049
|
job_id: ExecJobId,
|
|
2966
3050
|
/** End it at once (SIGKILL; on Windows the whole tree with /F) instead of asking it to quit. */
|
|
2967
|
-
force:
|
|
3051
|
+
force: z32.boolean().default(false)
|
|
2968
3052
|
});
|
|
2969
|
-
var ExecJobStopResult =
|
|
2970
|
-
var ExecJobInfo =
|
|
3053
|
+
var ExecJobStopResult = z32.strictObject({ job_id: ExecJobId, exited: z32.boolean(), exit_code: z32.int().nullable() });
|
|
3054
|
+
var ExecJobInfo = z32.strictObject({
|
|
2971
3055
|
job_id: ExecJobId,
|
|
2972
|
-
command:
|
|
2973
|
-
pid:
|
|
3056
|
+
command: z32.string().max(1024),
|
|
3057
|
+
pid: z32.int().min(1),
|
|
2974
3058
|
cwd: AbsPath,
|
|
2975
|
-
running:
|
|
2976
|
-
exit_code:
|
|
3059
|
+
running: z32.boolean(),
|
|
3060
|
+
exit_code: z32.int().nullable(),
|
|
2977
3061
|
started_at_ms: epochMs,
|
|
2978
3062
|
output_bytes: nonNegInt
|
|
2979
3063
|
});
|
|
2980
|
-
var ExecJobListParams =
|
|
2981
|
-
var ExecJobListResult =
|
|
3064
|
+
var ExecJobListParams = z32.strictObject({});
|
|
3065
|
+
var ExecJobListResult = z32.strictObject({ jobs: z32.array(ExecJobInfo).max(64) });
|
|
2982
3066
|
|
|
2983
3067
|
// src/schema/coding.ts
|
|
2984
|
-
import { z as
|
|
3068
|
+
import { z as z33 } from "zod";
|
|
2985
3069
|
import { UUID_SHAPE_PATTERN as UUID_SHAPE_PATTERN5 } from "@ai-matrx/kit/uuid";
|
|
2986
|
-
var CodingServiceCredentials =
|
|
2987
|
-
access_token:
|
|
2988
|
-
user_id:
|
|
3070
|
+
var CodingServiceCredentials = z33.strictObject({
|
|
3071
|
+
access_token: z33.string().min(16).max(16384),
|
|
3072
|
+
user_id: z33.string().regex(UUID_SHAPE_PATTERN5),
|
|
2989
3073
|
/** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
|
|
2990
|
-
server_url:
|
|
3074
|
+
server_url: z33.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
|
|
2991
3075
|
});
|
|
2992
|
-
var CodingHistoryBlocked =
|
|
3076
|
+
var CodingHistoryBlocked = z33.enum([
|
|
2993
3077
|
"signed_out",
|
|
2994
3078
|
"offline",
|
|
2995
3079
|
"organization_required",
|
|
@@ -2997,11 +3081,11 @@ var CodingHistoryBlocked = z32.enum([
|
|
|
2997
3081
|
"cloud_list_unavailable",
|
|
2998
3082
|
"history_too_large"
|
|
2999
3083
|
]);
|
|
3000
|
-
var CodingHistoryFailure =
|
|
3001
|
-
session_id:
|
|
3002
|
-
reason:
|
|
3084
|
+
var CodingHistoryFailure = z33.strictObject({
|
|
3085
|
+
session_id: z33.string().max(64),
|
|
3086
|
+
reason: z33.string().max(300)
|
|
3003
3087
|
});
|
|
3004
|
-
var CodingHistoryRun =
|
|
3088
|
+
var CodingHistoryRun = z33.strictObject({
|
|
3005
3089
|
/** Claude Code sessions found on this computer. */
|
|
3006
3090
|
local_sessions: nonNegInt,
|
|
3007
3091
|
/** Of those, already complete in AI Matrx. */
|
|
@@ -3016,39 +3100,39 @@ var CodingHistoryRun = z32.strictObject({
|
|
|
3016
3100
|
/** Changed while being read; a later run takes them. */
|
|
3017
3101
|
changed: nonNegInt,
|
|
3018
3102
|
failed: nonNegInt,
|
|
3019
|
-
failures:
|
|
3103
|
+
failures: z33.array(CodingHistoryFailure).max(20),
|
|
3020
3104
|
/** Candidates not reached yet. */
|
|
3021
3105
|
remaining: nonNegInt,
|
|
3022
3106
|
/** The one line a person reads, e.g. "Imported 12 of 14 sessions. 140 already in AI Matrx." */
|
|
3023
|
-
summary:
|
|
3107
|
+
summary: z33.string().max(400)
|
|
3024
3108
|
});
|
|
3025
|
-
var CodingHistoryStep =
|
|
3109
|
+
var CodingHistoryStep = z33.strictObject({
|
|
3026
3110
|
/** Null when the run could not start (blocked before a plan existed). */
|
|
3027
|
-
plan_id:
|
|
3028
|
-
finished:
|
|
3111
|
+
plan_id: z33.string().regex(/^[0-9a-f]{32}$/).nullable(),
|
|
3112
|
+
finished: z33.boolean(),
|
|
3029
3113
|
blocked: CodingHistoryBlocked.nullable(),
|
|
3030
3114
|
run: CodingHistoryRun
|
|
3031
3115
|
});
|
|
3032
|
-
var CodingPlanMissingParams =
|
|
3033
|
-
var CodingImportNextParams =
|
|
3034
|
-
plan_id:
|
|
3116
|
+
var CodingPlanMissingParams = z33.strictObject({ credentials: CodingServiceCredentials.nullable() });
|
|
3117
|
+
var CodingImportNextParams = z33.strictObject({
|
|
3118
|
+
plan_id: z33.string().regex(/^[0-9a-f]{32}$/),
|
|
3035
3119
|
credentials: CodingServiceCredentials.nullable()
|
|
3036
3120
|
});
|
|
3037
|
-
var CodingServiceProgress =
|
|
3038
|
-
phase:
|
|
3121
|
+
var CodingServiceProgress = z33.strictObject({
|
|
3122
|
+
phase: z33.enum(["checking", "importing"]),
|
|
3039
3123
|
done: nonNegInt,
|
|
3040
3124
|
total: nonNegInt
|
|
3041
3125
|
});
|
|
3042
|
-
var CodingHistoryImportMissingParams =
|
|
3043
|
-
var CodingHistoryImportMissingResult =
|
|
3044
|
-
state:
|
|
3126
|
+
var CodingHistoryImportMissingParams = z33.strictObject({});
|
|
3127
|
+
var CodingHistoryImportMissingResult = z33.strictObject({
|
|
3128
|
+
state: z33.enum(["done", "blocked", "cancelled"]),
|
|
3045
3129
|
blocked: CodingHistoryBlocked.nullable(),
|
|
3046
3130
|
run: CodingHistoryRun,
|
|
3047
3131
|
elapsed_ms: nonNegInt
|
|
3048
3132
|
});
|
|
3049
|
-
var CodingHistoryProgressEvent =
|
|
3133
|
+
var CodingHistoryProgressEvent = z33.strictObject({
|
|
3050
3134
|
request_id: RequestId,
|
|
3051
|
-
phase:
|
|
3135
|
+
phase: z33.enum(["checking", "importing"]),
|
|
3052
3136
|
/** Sessions settled so far, of `total` candidates (0 of 0 while checking). */
|
|
3053
3137
|
done: nonNegInt,
|
|
3054
3138
|
total: nonNegInt,
|
|
@@ -3057,386 +3141,386 @@ var CodingHistoryProgressEvent = z32.strictObject({
|
|
|
3057
3141
|
});
|
|
3058
3142
|
|
|
3059
3143
|
// src/schema/coding-sessions.ts
|
|
3060
|
-
import { z as
|
|
3061
|
-
var CodingProviderName =
|
|
3062
|
-
var CodingRunStatus =
|
|
3063
|
-
var SessionKey =
|
|
3064
|
-
var IsoTime =
|
|
3065
|
-
var LocalPath =
|
|
3066
|
-
var CodingClientRequestId =
|
|
3067
|
-
var ShortText =
|
|
3068
|
-
var CodingRunUsage =
|
|
3144
|
+
import { z as z34 } from "zod";
|
|
3145
|
+
var CodingProviderName = z34.enum(["claude", "codex"]);
|
|
3146
|
+
var CodingRunStatus = z34.enum(["starting", "running", "completed", "stopped", "failed"]);
|
|
3147
|
+
var SessionKey = z34.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/);
|
|
3148
|
+
var IsoTime = z34.string().min(10).max(40);
|
|
3149
|
+
var LocalPath = z34.string().min(1).max(4096);
|
|
3150
|
+
var CodingClientRequestId = z34.string().regex(/^[A-Za-z0-9_-]{8,64}$/);
|
|
3151
|
+
var ShortText = z34.string().max(500);
|
|
3152
|
+
var CodingRunUsage = z34.strictObject({
|
|
3069
3153
|
inputTokens: nonNegInt,
|
|
3070
3154
|
outputTokens: nonNegInt,
|
|
3071
3155
|
cachedInputTokens: nonNegInt
|
|
3072
3156
|
});
|
|
3073
|
-
var CodingStartedBy =
|
|
3074
|
-
kind:
|
|
3075
|
-
label:
|
|
3157
|
+
var CodingStartedBy = z34.strictObject({
|
|
3158
|
+
kind: z34.enum(["this_computer", "web", "phone", "agent", "other"]),
|
|
3159
|
+
label: z34.string().min(1).max(80)
|
|
3076
3160
|
});
|
|
3077
|
-
var CodingRunRecord =
|
|
3078
|
-
runId:
|
|
3161
|
+
var CodingRunRecord = z34.strictObject({
|
|
3162
|
+
runId: z34.string().min(1).max(64),
|
|
3079
3163
|
sessionId: SessionKey,
|
|
3080
3164
|
provider: CodingProviderName,
|
|
3081
3165
|
cwd: LocalPath,
|
|
3082
|
-
prompt:
|
|
3083
|
-
model:
|
|
3166
|
+
prompt: z34.string().max(1048576),
|
|
3167
|
+
model: z34.string().max(200).nullable(),
|
|
3084
3168
|
status: CodingRunStatus,
|
|
3085
3169
|
startedAt: IsoTime,
|
|
3086
3170
|
endedAt: IsoTime.nullable(),
|
|
3087
|
-
error:
|
|
3171
|
+
error: z34.string().max(65536).nullable(),
|
|
3088
3172
|
usage: CodingRunUsage.nullable(),
|
|
3089
|
-
costUsd:
|
|
3090
|
-
billing:
|
|
3173
|
+
costUsd: z34.number().nullable(),
|
|
3174
|
+
billing: z34.enum(["subscription", "api", "unknown"]).nullable(),
|
|
3091
3175
|
startedBy: CodingStartedBy.nullable()
|
|
3092
3176
|
});
|
|
3093
|
-
var CodingSessionAgentPart =
|
|
3094
|
-
part:
|
|
3177
|
+
var CodingSessionAgentPart = z34.strictObject({
|
|
3178
|
+
part: z34.enum(["instructions", "skills", "tools"]),
|
|
3095
3179
|
loaded: nonNegInt,
|
|
3096
3180
|
total: nonNegInt
|
|
3097
3181
|
});
|
|
3098
|
-
var CodingSessionAgent =
|
|
3099
|
-
agentId:
|
|
3100
|
-
versionId:
|
|
3182
|
+
var CodingSessionAgent = z34.strictObject({
|
|
3183
|
+
agentId: z34.string().min(1).max(64),
|
|
3184
|
+
versionId: z34.string().max(64).nullable(),
|
|
3101
3185
|
versionNumber: nonNegInt.nullable(),
|
|
3102
|
-
name:
|
|
3103
|
-
definitionHash:
|
|
3104
|
-
loaded:
|
|
3105
|
-
unavailable:
|
|
3106
|
-
skills:
|
|
3107
|
-
tools:
|
|
3108
|
-
variables:
|
|
3109
|
-
blockDue:
|
|
3186
|
+
name: z34.string().max(300),
|
|
3187
|
+
definitionHash: z34.string().max(200),
|
|
3188
|
+
loaded: z34.array(CodingSessionAgentPart).max(3),
|
|
3189
|
+
unavailable: z34.array(z34.strictObject({ kind: z34.string().max(60), name: z34.string().max(300), reason: ShortText })).max(500),
|
|
3190
|
+
skills: z34.array(z34.string().max(300)).max(500),
|
|
3191
|
+
tools: z34.array(z34.string().max(300)).max(500),
|
|
3192
|
+
variables: z34.record(z34.string().max(200), z34.unknown()),
|
|
3193
|
+
blockDue: z34.boolean(),
|
|
3110
3194
|
deliveredAt: IsoTime.nullable(),
|
|
3111
|
-
replaces:
|
|
3195
|
+
replaces: z34.string().max(300).nullable()
|
|
3112
3196
|
});
|
|
3113
|
-
var CodingSessionRecord =
|
|
3197
|
+
var CodingSessionRecord = z34.strictObject({
|
|
3114
3198
|
id: SessionKey,
|
|
3115
3199
|
provider: CodingProviderName,
|
|
3116
3200
|
providerSessionId: SessionKey.nullable(),
|
|
3117
3201
|
cwd: LocalPath,
|
|
3118
|
-
title:
|
|
3119
|
-
model:
|
|
3120
|
-
effort:
|
|
3121
|
-
origin:
|
|
3202
|
+
title: z34.string().max(500),
|
|
3203
|
+
model: z34.string().max(200).nullable(),
|
|
3204
|
+
effort: z34.string().max(40).nullable(),
|
|
3205
|
+
origin: z34.enum(["started", "takeover"]),
|
|
3122
3206
|
createdAt: IsoTime,
|
|
3123
3207
|
updatedAt: IsoTime,
|
|
3124
|
-
lastRunId:
|
|
3208
|
+
lastRunId: z34.string().max(64).nullable(),
|
|
3125
3209
|
lastRunStatus: CodingRunStatus.nullable(),
|
|
3126
|
-
queued:
|
|
3210
|
+
queued: z34.array(z34.string().max(1048576)).max(100),
|
|
3127
3211
|
agent: CodingSessionAgent.nullable(),
|
|
3128
|
-
agentRemovedDue:
|
|
3212
|
+
agentRemovedDue: z34.boolean()
|
|
3129
3213
|
});
|
|
3130
|
-
var CodingActiveElsewhere =
|
|
3131
|
-
reason:
|
|
3214
|
+
var CodingActiveElsewhere = z34.strictObject({
|
|
3215
|
+
reason: z34.enum(["process", "recent-write", "open-tool-call", "open"]),
|
|
3132
3216
|
message: ShortText,
|
|
3133
3217
|
/** The process driving it, when the evidence is a process (re-checked before any stop). */
|
|
3134
|
-
pid:
|
|
3218
|
+
pid: z34.int().min(1).nullable()
|
|
3135
3219
|
});
|
|
3136
|
-
var CodingTitleSource =
|
|
3137
|
-
var CodingDiscoveredChat =
|
|
3220
|
+
var CodingTitleSource = z34.enum(["app", "app-remembered", "custom-title", "ai-title", "agent-name", "summary", "first-prompt", "last-prompt", "unknown"]);
|
|
3221
|
+
var CodingDiscoveredChat = z34.strictObject({
|
|
3138
3222
|
provider: CodingProviderName,
|
|
3139
3223
|
providerSessionId: SessionKey,
|
|
3140
3224
|
cwd: LocalPath.nullable(),
|
|
3141
|
-
title:
|
|
3225
|
+
title: z34.string().max(500),
|
|
3142
3226
|
titleSource: CodingTitleSource.optional(),
|
|
3143
|
-
titlePending:
|
|
3144
|
-
archived:
|
|
3145
|
-
scheduled:
|
|
3146
|
-
unlisted:
|
|
3227
|
+
titlePending: z34.boolean().optional(),
|
|
3228
|
+
archived: z34.boolean().optional(),
|
|
3229
|
+
scheduled: z34.boolean().optional(),
|
|
3230
|
+
unlisted: z34.boolean().optional(),
|
|
3147
3231
|
unavailable: ShortText.nullable(),
|
|
3148
3232
|
updatedAt: IsoTime,
|
|
3149
|
-
source:
|
|
3233
|
+
source: z34.string().max(60).nullable(),
|
|
3150
3234
|
activeElsewhere: CodingActiveElsewhere.nullable()
|
|
3151
3235
|
});
|
|
3152
|
-
var CodingTranscriptItem =
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
kind:
|
|
3160
|
-
id:
|
|
3161
|
-
output:
|
|
3162
|
-
isError:
|
|
3236
|
+
var CodingTranscriptItem = z34.discriminatedUnion("kind", [
|
|
3237
|
+
z34.strictObject({ kind: z34.literal("user"), id: z34.string().max(200), text: z34.string(), at: IsoTime.nullable() }),
|
|
3238
|
+
z34.strictObject({ kind: z34.literal("text"), id: z34.string().max(200), text: z34.string() }),
|
|
3239
|
+
z34.strictObject({ kind: z34.literal("text-delta"), id: z34.string().max(200), text: z34.string() }),
|
|
3240
|
+
z34.strictObject({ kind: z34.literal("reasoning"), id: z34.string().max(200), text: z34.string() }),
|
|
3241
|
+
z34.strictObject({ kind: z34.literal("tool-call"), id: z34.string().max(200), name: z34.string().max(300), input: z34.unknown() }),
|
|
3242
|
+
z34.strictObject({
|
|
3243
|
+
kind: z34.literal("tool-result"),
|
|
3244
|
+
id: z34.string().max(200),
|
|
3245
|
+
output: z34.string(),
|
|
3246
|
+
isError: z34.boolean(),
|
|
3163
3247
|
/** The output's full size when only its start is here; `coding.item.full` reads the rest. */
|
|
3164
3248
|
fullBytes: nonNegInt.optional()
|
|
3165
3249
|
}),
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3250
|
+
z34.strictObject({ kind: z34.literal("usage"), usage: CodingRunUsage, costUsd: z34.number().nullable() }),
|
|
3251
|
+
z34.strictObject({ kind: z34.literal("notice"), id: z34.string().max(200), level: z34.enum(["info", "warning"]), text: z34.string() }),
|
|
3252
|
+
z34.strictObject({ kind: z34.literal("error"), id: z34.string().max(200), text: z34.string() })
|
|
3169
3253
|
]);
|
|
3170
|
-
var CodingHistoryRecord =
|
|
3171
|
-
items:
|
|
3254
|
+
var CodingHistoryRecord = z34.strictObject({
|
|
3255
|
+
items: z34.array(CodingTranscriptItem),
|
|
3172
3256
|
/** Only the end of the chat is here; "Show earlier" reads more (a bigger `max_bytes`). */
|
|
3173
|
-
truncated:
|
|
3257
|
+
truncated: z34.boolean(),
|
|
3174
3258
|
unavailable: ShortText.nullable(),
|
|
3175
3259
|
/** The last live item `seq` this read already contains; a watch applies only newer ones. */
|
|
3176
3260
|
seq: nonNegInt
|
|
3177
3261
|
});
|
|
3178
|
-
var CodingQuotaWindow =
|
|
3179
|
-
label:
|
|
3180
|
-
usedPercent:
|
|
3181
|
-
resetsAt:
|
|
3182
|
-
valueLabel:
|
|
3262
|
+
var CodingQuotaWindow = z34.strictObject({
|
|
3263
|
+
label: z34.string().max(120),
|
|
3264
|
+
usedPercent: z34.number().nullable(),
|
|
3265
|
+
resetsAt: z34.string().max(80).nullable(),
|
|
3266
|
+
valueLabel: z34.string().max(120).nullable()
|
|
3183
3267
|
});
|
|
3184
|
-
var CodingProviderProblem =
|
|
3185
|
-
kind:
|
|
3186
|
-
message:
|
|
3187
|
-
until:
|
|
3268
|
+
var CodingProviderProblem = z34.strictObject({
|
|
3269
|
+
kind: z34.enum(["usage-limit", "signed-out"]),
|
|
3270
|
+
message: z34.string().max(2e3),
|
|
3271
|
+
until: z34.string().max(120).nullable(),
|
|
3188
3272
|
at: IsoTime
|
|
3189
3273
|
});
|
|
3190
|
-
var CodingProviderBinary =
|
|
3274
|
+
var CodingProviderBinary = z34.strictObject({
|
|
3191
3275
|
path: LocalPath,
|
|
3192
|
-
version:
|
|
3193
|
-
source:
|
|
3194
|
-
sourceLabel:
|
|
3195
|
-
newer:
|
|
3276
|
+
version: z34.string().max(80).nullable(),
|
|
3277
|
+
source: z34.enum(["desktop-app", "path", "npm-global", "configured"]),
|
|
3278
|
+
sourceLabel: z34.string().max(120),
|
|
3279
|
+
newer: z34.strictObject({ path: LocalPath, version: z34.string().max(80), sourceLabel: z34.string().max(120) }).nullable()
|
|
3196
3280
|
});
|
|
3197
|
-
var CodingProviderStatus =
|
|
3281
|
+
var CodingProviderStatus = z34.strictObject({
|
|
3198
3282
|
provider: CodingProviderName,
|
|
3199
|
-
label:
|
|
3200
|
-
installed:
|
|
3201
|
-
version:
|
|
3202
|
-
loggedIn:
|
|
3203
|
-
billing:
|
|
3204
|
-
plan:
|
|
3205
|
-
account:
|
|
3283
|
+
label: z34.string().max(60),
|
|
3284
|
+
installed: z34.boolean(),
|
|
3285
|
+
version: z34.string().max(80).nullable(),
|
|
3286
|
+
loggedIn: z34.boolean(),
|
|
3287
|
+
billing: z34.enum(["subscription", "api", "unknown"]),
|
|
3288
|
+
plan: z34.string().max(80).nullable(),
|
|
3289
|
+
account: z34.string().max(320).nullable(),
|
|
3206
3290
|
problem: ShortText.nullable(),
|
|
3207
3291
|
fix: ShortText.nullable(),
|
|
3208
|
-
ready:
|
|
3292
|
+
ready: z34.boolean(),
|
|
3209
3293
|
lastProblem: CodingProviderProblem.nullable(),
|
|
3210
|
-
quota:
|
|
3211
|
-
models:
|
|
3212
|
-
efforts:
|
|
3213
|
-
defaultModel:
|
|
3214
|
-
defaultEffort:
|
|
3294
|
+
quota: z34.array(CodingQuotaWindow).max(20),
|
|
3295
|
+
models: z34.array(z34.strictObject({ id: z34.string().max(200), label: z34.string().max(200) })).max(200),
|
|
3296
|
+
efforts: z34.array(z34.string().max(40)).max(20),
|
|
3297
|
+
defaultModel: z34.strictObject({ id: z34.string().max(200), source: z34.enum(["settings", "driver"]) }).nullable(),
|
|
3298
|
+
defaultEffort: z34.string().max(40).nullable(),
|
|
3215
3299
|
binary: CodingProviderBinary.nullable()
|
|
3216
3300
|
});
|
|
3217
|
-
var CodingChatPreference =
|
|
3218
|
-
title:
|
|
3219
|
-
pinned:
|
|
3220
|
-
hidden:
|
|
3301
|
+
var CodingChatPreference = z34.strictObject({
|
|
3302
|
+
title: z34.string().max(500).nullable(),
|
|
3303
|
+
pinned: z34.boolean(),
|
|
3304
|
+
hidden: z34.boolean(),
|
|
3221
3305
|
/** When the person last had this chat open on any screen of this computer (the "New output" dot). */
|
|
3222
3306
|
lastSeenAt: IsoTime.nullable(),
|
|
3223
3307
|
updatedAt: IsoTime.nullable()
|
|
3224
3308
|
});
|
|
3225
|
-
var CodingTitleStatus =
|
|
3226
|
-
owner:
|
|
3227
|
-
pending:
|
|
3309
|
+
var CodingTitleStatus = z34.strictObject({
|
|
3310
|
+
owner: z34.boolean(),
|
|
3311
|
+
pending: z34.boolean(),
|
|
3228
3312
|
problem: ShortText.nullable(),
|
|
3229
3313
|
renames: ShortText.nullable()
|
|
3230
3314
|
});
|
|
3231
|
-
var CodingRecentRow =
|
|
3232
|
-
target:
|
|
3233
|
-
title:
|
|
3315
|
+
var CodingRecentRow = z34.strictObject({
|
|
3316
|
+
target: z34.string().min(3).max(200),
|
|
3317
|
+
title: z34.string().max(500),
|
|
3234
3318
|
provider: CodingProviderName,
|
|
3235
3319
|
sessionId: SessionKey.nullable(),
|
|
3236
3320
|
providerSessionId: SessionKey.nullable(),
|
|
3237
3321
|
cwd: LocalPath.nullable(),
|
|
3238
3322
|
updatedAt: IsoTime,
|
|
3239
|
-
state:
|
|
3240
|
-
stateLabel:
|
|
3241
|
-
pinned:
|
|
3323
|
+
state: z34.enum(["running", "needs_attention", "new_output", "elsewhere", "idle"]),
|
|
3324
|
+
stateLabel: z34.string().max(120).nullable(),
|
|
3325
|
+
pinned: z34.boolean(),
|
|
3242
3326
|
startedBy: CodingStartedBy.nullable()
|
|
3243
3327
|
});
|
|
3244
|
-
var CodingFolderCheck =
|
|
3245
|
-
path:
|
|
3246
|
-
exists:
|
|
3247
|
-
isDirectory:
|
|
3328
|
+
var CodingFolderCheck = z34.strictObject({
|
|
3329
|
+
path: z34.string().max(4096),
|
|
3330
|
+
exists: z34.boolean(),
|
|
3331
|
+
isDirectory: z34.boolean()
|
|
3248
3332
|
});
|
|
3249
|
-
var CodingRecentFolder =
|
|
3250
|
-
var CodingAgentSelectionParams =
|
|
3251
|
-
agent_id:
|
|
3252
|
-
version_id:
|
|
3253
|
-
variables:
|
|
3333
|
+
var CodingRecentFolder = z34.strictObject({ path: LocalPath, lastUsedAt: IsoTime, exists: z34.boolean() });
|
|
3334
|
+
var CodingAgentSelectionParams = z34.strictObject({
|
|
3335
|
+
agent_id: z34.string().min(1).max(64),
|
|
3336
|
+
version_id: z34.string().min(1).max(64).optional(),
|
|
3337
|
+
variables: z34.record(z34.string().max(200), z34.unknown()).optional()
|
|
3254
3338
|
});
|
|
3255
|
-
var CodingSendResult =
|
|
3339
|
+
var CodingSendResult = z34.strictObject({
|
|
3256
3340
|
session: CodingSessionRecord,
|
|
3257
3341
|
run: CodingRunRecord.nullable(),
|
|
3258
3342
|
/** The prompt waits behind a live run (it shows as a queued bubble). */
|
|
3259
|
-
queued:
|
|
3343
|
+
queued: z34.boolean()
|
|
3260
3344
|
});
|
|
3261
|
-
var CodingProvidersParams =
|
|
3262
|
-
var CodingProvidersResult =
|
|
3263
|
-
var CodingSessionsListParams =
|
|
3264
|
-
var CodingSessionsListResult =
|
|
3265
|
-
sessions:
|
|
3345
|
+
var CodingProvidersParams = z34.strictObject({});
|
|
3346
|
+
var CodingProvidersResult = z34.strictObject({ providers: z34.array(CodingProviderStatus).max(4) });
|
|
3347
|
+
var CodingSessionsListParams = z34.strictObject({});
|
|
3348
|
+
var CodingSessionsListResult = z34.strictObject({
|
|
3349
|
+
sessions: z34.array(CodingSessionRecord),
|
|
3266
3350
|
/** The latest run of each session, by session id. */
|
|
3267
|
-
runs:
|
|
3268
|
-
recent:
|
|
3351
|
+
runs: z34.record(z34.string().max(128), CodingRunRecord),
|
|
3352
|
+
recent: z34.array(CodingRecentRow),
|
|
3269
3353
|
title_status: CodingTitleStatus
|
|
3270
3354
|
});
|
|
3271
|
-
var CodingDiscoverParams =
|
|
3272
|
-
var CodingDiscoverResult =
|
|
3273
|
-
var CodingRunsListParams =
|
|
3274
|
-
var CodingRunsListResult =
|
|
3275
|
-
var CodingHistoryParams =
|
|
3355
|
+
var CodingDiscoverParams = z34.strictObject({ limit: z34.int().min(1).max(1e3).optional() });
|
|
3356
|
+
var CodingDiscoverResult = z34.strictObject({ chats: z34.array(CodingDiscoveredChat) });
|
|
3357
|
+
var CodingRunsListParams = z34.strictObject({ session_id: SessionKey });
|
|
3358
|
+
var CodingRunsListResult = z34.strictObject({ runs: z34.array(CodingRunRecord) });
|
|
3359
|
+
var CodingHistoryParams = z34.strictObject({ session_id: SessionKey, max_bytes: z34.int().min(1024).max(209715200).optional() });
|
|
3276
3360
|
var CodingHistoryResult = CodingHistoryRecord;
|
|
3277
|
-
var CodingTranscriptReadParams =
|
|
3361
|
+
var CodingTranscriptReadParams = z34.strictObject({
|
|
3278
3362
|
provider: CodingProviderName,
|
|
3279
3363
|
provider_session_id: SessionKey,
|
|
3280
|
-
max_bytes:
|
|
3364
|
+
max_bytes: z34.int().min(1024).max(209715200).optional()
|
|
3281
3365
|
});
|
|
3282
3366
|
var CodingTranscriptReadResult = CodingHistoryRecord;
|
|
3283
|
-
var CodingItemFullParams =
|
|
3367
|
+
var CodingItemFullParams = z34.strictObject({
|
|
3284
3368
|
provider: CodingProviderName,
|
|
3285
3369
|
provider_session_id: SessionKey,
|
|
3286
|
-
item_id:
|
|
3287
|
-
});
|
|
3288
|
-
var CodingItemFullResult =
|
|
3289
|
-
var CodingActivityParams =
|
|
3290
|
-
var CodingActivityResult =
|
|
3291
|
-
var CodingFoldersRecentParams =
|
|
3292
|
-
var CodingFoldersRecentResult =
|
|
3293
|
-
var CodingFoldersCheckParams =
|
|
3370
|
+
item_id: z34.string().min(1).max(200)
|
|
3371
|
+
});
|
|
3372
|
+
var CodingItemFullResult = z34.strictObject({ output: z34.string(), bytes: nonNegInt });
|
|
3373
|
+
var CodingActivityParams = z34.strictObject({ provider: CodingProviderName, provider_session_id: SessionKey });
|
|
3374
|
+
var CodingActivityResult = z34.strictObject({ active: CodingActiveElsewhere.nullable() });
|
|
3375
|
+
var CodingFoldersRecentParams = z34.strictObject({});
|
|
3376
|
+
var CodingFoldersRecentResult = z34.strictObject({ folders: z34.array(CodingRecentFolder).max(100) });
|
|
3377
|
+
var CodingFoldersCheckParams = z34.strictObject({ path: z34.string().min(1).max(4096) });
|
|
3294
3378
|
var CodingFoldersCheckResult = CodingFolderCheck;
|
|
3295
|
-
var CodingFoldersCreateParams =
|
|
3379
|
+
var CodingFoldersCreateParams = z34.strictObject({ path: z34.string().min(1).max(4096) });
|
|
3296
3380
|
var CodingFoldersCreateResult = CodingFolderCheck;
|
|
3297
|
-
var CodingStartParams =
|
|
3381
|
+
var CodingStartParams = z34.strictObject({
|
|
3298
3382
|
provider: CodingProviderName,
|
|
3299
|
-
cwd:
|
|
3300
|
-
prompt:
|
|
3301
|
-
model:
|
|
3302
|
-
effort:
|
|
3383
|
+
cwd: z34.string().min(1).max(4096),
|
|
3384
|
+
prompt: z34.string().min(1).max(1048576),
|
|
3385
|
+
model: z34.string().min(1).max(200).optional(),
|
|
3386
|
+
effort: z34.string().min(1).max(40).optional(),
|
|
3303
3387
|
agent: CodingAgentSelectionParams.optional(),
|
|
3304
3388
|
/** One of the person's coding accounts on this computer (Accounts); absent = the default login. */
|
|
3305
|
-
account_profile_id:
|
|
3389
|
+
account_profile_id: z34.string().min(1).max(64).optional(),
|
|
3306
3390
|
client_request_id: CodingClientRequestId
|
|
3307
3391
|
});
|
|
3308
3392
|
var CodingStartResult = CodingSendResult;
|
|
3309
|
-
var CodingTakeoverParams =
|
|
3393
|
+
var CodingTakeoverParams = z34.strictObject({
|
|
3310
3394
|
provider: CodingProviderName,
|
|
3311
3395
|
provider_session_id: SessionKey,
|
|
3312
|
-
cwd:
|
|
3313
|
-
title:
|
|
3396
|
+
cwd: z34.string().min(1).max(4096),
|
|
3397
|
+
title: z34.string().max(500).optional(),
|
|
3314
3398
|
agent: CodingAgentSelectionParams.optional(),
|
|
3315
|
-
confirm_elsewhere:
|
|
3399
|
+
confirm_elsewhere: z34.boolean().optional()
|
|
3316
3400
|
});
|
|
3317
|
-
var CodingTakeoverResult =
|
|
3318
|
-
var CodingSendParams =
|
|
3401
|
+
var CodingTakeoverResult = z34.strictObject({ session: CodingSessionRecord });
|
|
3402
|
+
var CodingSendParams = z34.strictObject({
|
|
3319
3403
|
session_id: SessionKey,
|
|
3320
|
-
prompt:
|
|
3404
|
+
prompt: z34.string().min(1).max(1048576),
|
|
3321
3405
|
client_request_id: CodingClientRequestId
|
|
3322
3406
|
});
|
|
3323
|
-
var CodingStopParams =
|
|
3324
|
-
var CodingStopResult =
|
|
3325
|
-
var CodingStopElsewhereParams =
|
|
3407
|
+
var CodingStopParams = z34.strictObject({ run_id: z34.string().min(1).max(64) });
|
|
3408
|
+
var CodingStopResult = z34.strictObject({ run: CodingRunRecord.nullable() });
|
|
3409
|
+
var CodingStopElsewhereParams = z34.strictObject({
|
|
3326
3410
|
provider: CodingProviderName,
|
|
3327
3411
|
provider_session_id: SessionKey,
|
|
3328
|
-
pid:
|
|
3412
|
+
pid: z34.int().min(1)
|
|
3329
3413
|
});
|
|
3330
|
-
var CodingStopElsewhereResult =
|
|
3331
|
-
var CodingOptionsSetParams =
|
|
3414
|
+
var CodingStopElsewhereResult = z34.strictObject({ stopped: z34.boolean(), message: ShortText });
|
|
3415
|
+
var CodingOptionsSetParams = z34.strictObject({
|
|
3332
3416
|
session_id: SessionKey,
|
|
3333
|
-
model:
|
|
3334
|
-
effort:
|
|
3335
|
-
});
|
|
3336
|
-
var CodingOptionsSetResult =
|
|
3337
|
-
var CodingAgentSetParams =
|
|
3338
|
-
var CodingAgentSetResult =
|
|
3339
|
-
var CodingAgentsAccessParams =
|
|
3340
|
-
var CodingAgentsAccessResult =
|
|
3341
|
-
signedIn:
|
|
3342
|
-
userId:
|
|
3343
|
-
organizationId:
|
|
3344
|
-
configured:
|
|
3345
|
-
});
|
|
3346
|
-
var CodingTitlesStatusParams =
|
|
3417
|
+
model: z34.string().max(200).optional(),
|
|
3418
|
+
effort: z34.string().max(40).optional()
|
|
3419
|
+
});
|
|
3420
|
+
var CodingOptionsSetResult = z34.strictObject({ session: CodingSessionRecord });
|
|
3421
|
+
var CodingAgentSetParams = z34.strictObject({ session_id: SessionKey, agent: CodingAgentSelectionParams.optional() });
|
|
3422
|
+
var CodingAgentSetResult = z34.strictObject({ session: CodingSessionRecord });
|
|
3423
|
+
var CodingAgentsAccessParams = z34.strictObject({});
|
|
3424
|
+
var CodingAgentsAccessResult = z34.strictObject({
|
|
3425
|
+
signedIn: z34.boolean(),
|
|
3426
|
+
userId: z34.string().max(64).nullable(),
|
|
3427
|
+
organizationId: z34.string().max(64).nullable(),
|
|
3428
|
+
configured: z34.boolean()
|
|
3429
|
+
});
|
|
3430
|
+
var CodingTitlesStatusParams = z34.strictObject({});
|
|
3347
3431
|
var CodingTitlesStatusResult = CodingTitleStatus;
|
|
3348
|
-
var CodingPrefsListParams =
|
|
3349
|
-
var CodingPrefsListResult =
|
|
3350
|
-
var CodingPrefsSetParams =
|
|
3351
|
-
key:
|
|
3352
|
-
title:
|
|
3353
|
-
clear_title:
|
|
3354
|
-
pinned:
|
|
3355
|
-
hidden:
|
|
3432
|
+
var CodingPrefsListParams = z34.strictObject({});
|
|
3433
|
+
var CodingPrefsListResult = z34.strictObject({ preferences: z34.record(z34.string().max(200), CodingChatPreference) });
|
|
3434
|
+
var CodingPrefsSetParams = z34.strictObject({
|
|
3435
|
+
key: z34.string().min(1).max(200),
|
|
3436
|
+
title: z34.string().min(1).max(500).optional(),
|
|
3437
|
+
clear_title: z34.boolean().optional(),
|
|
3438
|
+
pinned: z34.boolean().optional(),
|
|
3439
|
+
hidden: z34.boolean().optional()
|
|
3356
3440
|
});
|
|
3357
3441
|
var CodingPrefsSetResult = CodingPrefsListResult;
|
|
3358
|
-
var CodingRecentSeenParams =
|
|
3359
|
-
var CodingRecentSeenResult =
|
|
3360
|
-
var CodingSearchParams =
|
|
3361
|
-
query:
|
|
3442
|
+
var CodingRecentSeenParams = z34.strictObject({ target: z34.string().min(3).max(200) });
|
|
3443
|
+
var CodingRecentSeenResult = z34.strictObject({ recent: z34.array(CodingRecentRow) });
|
|
3444
|
+
var CodingSearchParams = z34.strictObject({
|
|
3445
|
+
query: z34.string().min(1).max(500),
|
|
3362
3446
|
cursor: nonNegInt.optional(),
|
|
3363
|
-
limit:
|
|
3447
|
+
limit: z34.int().min(1).max(100).optional()
|
|
3364
3448
|
});
|
|
3365
|
-
var CodingSearchResult =
|
|
3366
|
-
query:
|
|
3367
|
-
hits:
|
|
3368
|
-
|
|
3449
|
+
var CodingSearchResult = z34.strictObject({
|
|
3450
|
+
query: z34.string().max(500),
|
|
3451
|
+
hits: z34.array(
|
|
3452
|
+
z34.strictObject({
|
|
3369
3453
|
provider: CodingProviderName,
|
|
3370
3454
|
providerSessionId: SessionKey,
|
|
3371
|
-
title:
|
|
3455
|
+
title: z34.string().max(500),
|
|
3372
3456
|
cwd: LocalPath.nullable(),
|
|
3373
3457
|
updatedAt: IsoTime,
|
|
3374
|
-
where:
|
|
3375
|
-
snippet:
|
|
3458
|
+
where: z34.enum(["title", "content"]),
|
|
3459
|
+
snippet: z34.string().max(2e3).nullable()
|
|
3376
3460
|
})
|
|
3377
3461
|
),
|
|
3378
3462
|
scanned: nonNegInt,
|
|
3379
3463
|
total: nonNegInt,
|
|
3380
3464
|
nextCursor: nonNegInt.nullable()
|
|
3381
3465
|
});
|
|
3382
|
-
var CodingReconcileParams =
|
|
3383
|
-
var CodingReconcileResult =
|
|
3384
|
-
state:
|
|
3385
|
-
summary:
|
|
3466
|
+
var CodingReconcileParams = z34.strictObject({ provider: CodingProviderName, provider_session_id: SessionKey });
|
|
3467
|
+
var CodingReconcileResult = z34.strictObject({
|
|
3468
|
+
state: z34.enum(["done", "blocked", "nothing_to_do"]),
|
|
3469
|
+
summary: z34.string().max(400)
|
|
3386
3470
|
});
|
|
3387
|
-
var CodingTranscriptRawParams =
|
|
3388
|
-
var CodingTranscriptRawResult =
|
|
3389
|
-
available:
|
|
3471
|
+
var CodingTranscriptRawParams = z34.strictObject({ provider: CodingProviderName, provider_session_id: SessionKey });
|
|
3472
|
+
var CodingTranscriptRawResult = z34.strictObject({
|
|
3473
|
+
available: z34.boolean(),
|
|
3390
3474
|
reason: ShortText.nullable(),
|
|
3391
|
-
file_name:
|
|
3475
|
+
file_name: z34.string().max(300).nullable(),
|
|
3392
3476
|
bytes: nonNegInt,
|
|
3393
3477
|
/** The opt-in cloud backup was refreshed (false: off, unchanged, or signed out). */
|
|
3394
|
-
backup_refreshed:
|
|
3478
|
+
backup_refreshed: z34.boolean(),
|
|
3395
3479
|
/** Subagent transcripts beside the chat (Claude Code), downloaded separately. */
|
|
3396
3480
|
subagents: nonNegInt
|
|
3397
3481
|
});
|
|
3398
|
-
var CodingWatchParams =
|
|
3399
|
-
var CodingWatchResult =
|
|
3400
|
-
var CodingSessionWatchParams =
|
|
3401
|
-
var CodingSessionWatchResult =
|
|
3482
|
+
var CodingWatchParams = z34.strictObject({});
|
|
3483
|
+
var CodingWatchResult = z34.strictObject({ resource_id: ResourceId });
|
|
3484
|
+
var CodingSessionWatchParams = z34.strictObject({ session_id: SessionKey, since_seq: nonNegInt.optional() });
|
|
3485
|
+
var CodingSessionWatchResult = z34.strictObject({
|
|
3402
3486
|
resource_id: ResourceId,
|
|
3403
3487
|
/** The newest item seq the device has for this session right now. */
|
|
3404
3488
|
seq: nonNegInt
|
|
3405
3489
|
});
|
|
3406
|
-
var CodingChangedEvent =
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
|
|
3490
|
+
var CodingChangedEvent = z34.discriminatedUnion("kind", [
|
|
3491
|
+
z34.strictObject({ kind: z34.literal("session"), session: CodingSessionRecord }),
|
|
3492
|
+
z34.strictObject({ kind: z34.literal("run"), run: CodingRunRecord }),
|
|
3493
|
+
z34.strictObject({ kind: z34.literal("preferences"), preferences: z34.record(z34.string().max(200), CodingChatPreference) }),
|
|
3494
|
+
z34.strictObject({ kind: z34.literal("titles") }),
|
|
3495
|
+
z34.strictObject({ kind: z34.literal("recent"), recent: z34.array(CodingRecentRow) })
|
|
3412
3496
|
]);
|
|
3413
|
-
var CodingWatchStateEvent =
|
|
3414
|
-
var CodingItemEvent =
|
|
3497
|
+
var CodingWatchStateEvent = z34.strictObject({ live: z34.boolean(), reason: ShortText.nullable(), beat_ms: z34.int().min(1e3) });
|
|
3498
|
+
var CodingItemEvent = z34.strictObject({
|
|
3415
3499
|
session_id: SessionKey,
|
|
3416
|
-
run_id:
|
|
3500
|
+
run_id: z34.string().min(1).max(64),
|
|
3417
3501
|
seq: nonNegInt,
|
|
3418
3502
|
item: CodingTranscriptItem
|
|
3419
3503
|
});
|
|
3420
|
-
var CodingGapEvent =
|
|
3421
|
-
var SessionIdentifyParams =
|
|
3422
|
-
var SessionIdentifyResult =
|
|
3504
|
+
var CodingGapEvent = z34.strictObject({ session_id: SessionKey, since_seq: nonNegInt, seq: nonNegInt });
|
|
3505
|
+
var SessionIdentifyParams = z34.strictObject({ label: z34.string().min(1).max(60) });
|
|
3506
|
+
var SessionIdentifyResult = z34.strictObject({ label: z34.string().max(60) });
|
|
3423
3507
|
|
|
3424
3508
|
// src/schema/browser.ts
|
|
3425
|
-
import { z as
|
|
3426
|
-
var BrowserClientInstance =
|
|
3427
|
-
var BrowserKind =
|
|
3428
|
-
var BrowserSessionState =
|
|
3429
|
-
var BrowserSession =
|
|
3509
|
+
import { z as z35 } from "zod";
|
|
3510
|
+
var BrowserClientInstance = z35.string().min(1).max(64).regex(/^[A-Za-z0-9_.:-]+$/);
|
|
3511
|
+
var BrowserKind = z35.enum(["chrome", "edge", "brave", "arc", "opera", "vivaldi", "chromium", "firefox", "other"]);
|
|
3512
|
+
var BrowserSessionState = z35.enum(["connected", "different_account", "extension_signed_out", "device_signed_out", "unverified"]);
|
|
3513
|
+
var BrowserSession = z35.strictObject({
|
|
3430
3514
|
client_instance: BrowserClientInstance,
|
|
3431
3515
|
/** What the person sees ("Chrome — Work"), set by the extension. */
|
|
3432
|
-
client_label:
|
|
3516
|
+
client_label: z35.string().min(1).max(128),
|
|
3433
3517
|
browser: BrowserKind,
|
|
3434
|
-
extension_version:
|
|
3518
|
+
extension_version: z35.string().min(1).max(32),
|
|
3435
3519
|
state: BrowserSessionState,
|
|
3436
3520
|
/** True only for `connected`: an agent's call can reach this session. */
|
|
3437
|
-
routable:
|
|
3521
|
+
routable: z35.boolean(),
|
|
3438
3522
|
/** The extension's account email from its token (null when signed out or unknown). */
|
|
3439
|
-
account_email:
|
|
3523
|
+
account_email: z35.string().max(320).nullable(),
|
|
3440
3524
|
connected_at_ms: epochMs,
|
|
3441
3525
|
last_call_at_ms: epochMs.nullable(),
|
|
3442
3526
|
calls: nonNegInt,
|
|
@@ -3445,119 +3529,119 @@ var BrowserSession = z34.strictObject({
|
|
|
3445
3529
|
p50_ms: nonNegInt.nullable(),
|
|
3446
3530
|
p95_ms: nonNegInt.nullable(),
|
|
3447
3531
|
/** A call is waiting for the person to confirm it in the browser. */
|
|
3448
|
-
awaiting_confirmation:
|
|
3532
|
+
awaiting_confirmation: z35.boolean()
|
|
3449
3533
|
});
|
|
3450
|
-
var BrowserRegisterParams =
|
|
3534
|
+
var BrowserRegisterParams = z35.strictObject({
|
|
3451
3535
|
client_instance: BrowserClientInstance,
|
|
3452
|
-
client_label:
|
|
3536
|
+
client_label: z35.string().min(1).max(128),
|
|
3453
3537
|
browser: BrowserKind,
|
|
3454
|
-
extension_version:
|
|
3538
|
+
extension_version: z35.string().min(1).max(32),
|
|
3455
3539
|
/** The extension's current AI Matrx access token, checked against the device owner; null when signed out. */
|
|
3456
|
-
account_token:
|
|
3540
|
+
account_token: z35.string().min(16).max(8192).nullable()
|
|
3457
3541
|
});
|
|
3458
|
-
var BrowserRegisterResult =
|
|
3459
|
-
var BrowserCallError =
|
|
3460
|
-
message:
|
|
3542
|
+
var BrowserRegisterResult = z35.strictObject({ session: BrowserSession });
|
|
3543
|
+
var BrowserCallError = z35.strictObject({
|
|
3544
|
+
message: z35.string().max(1e3),
|
|
3461
3545
|
/** The extension's own error code, when it has one ("tool_not_found", "denied"). */
|
|
3462
|
-
code:
|
|
3546
|
+
code: z35.string().max(64).nullable()
|
|
3463
3547
|
});
|
|
3464
|
-
var BrowserResultParams =
|
|
3465
|
-
call_id:
|
|
3466
|
-
ok:
|
|
3548
|
+
var BrowserResultParams = z35.strictObject({
|
|
3549
|
+
call_id: z35.string().min(1).max(64),
|
|
3550
|
+
ok: z35.boolean(),
|
|
3467
3551
|
/** The tool's result when ok (any JSON). */
|
|
3468
|
-
result:
|
|
3552
|
+
result: z35.unknown(),
|
|
3469
3553
|
error: BrowserCallError.nullable()
|
|
3470
3554
|
});
|
|
3471
|
-
var BrowserResultResult =
|
|
3472
|
-
var BrowserCallPhase =
|
|
3473
|
-
var BrowserProgressParams =
|
|
3474
|
-
var BrowserProgressResult =
|
|
3475
|
-
var BrowserSessionsParams =
|
|
3476
|
-
var BrowserSessionsResult =
|
|
3555
|
+
var BrowserResultResult = z35.strictObject({ accepted: z35.boolean() });
|
|
3556
|
+
var BrowserCallPhase = z35.enum(["awaiting_confirmation", "running"]);
|
|
3557
|
+
var BrowserProgressParams = z35.strictObject({ call_id: z35.string().min(1).max(64), phase: BrowserCallPhase });
|
|
3558
|
+
var BrowserProgressResult = z35.strictObject({ accepted: z35.boolean() });
|
|
3559
|
+
var BrowserSessionsParams = z35.strictObject({});
|
|
3560
|
+
var BrowserSessionsResult = z35.strictObject({
|
|
3477
3561
|
/** The person's Browser connection switch. Off: no pairing, no extension sessions. */
|
|
3478
|
-
enabled:
|
|
3562
|
+
enabled: z35.boolean(),
|
|
3479
3563
|
/** Whether Matrx 2 is signed in (without an owner no session is routable). */
|
|
3480
|
-
owner_signed_in:
|
|
3481
|
-
sessions:
|
|
3482
|
-
});
|
|
3483
|
-
var BrowserDisconnectParams =
|
|
3484
|
-
var BrowserDisconnectResult =
|
|
3485
|
-
var BrowserSetEnabledParams =
|
|
3486
|
-
var BrowserSetEnabledResult =
|
|
3487
|
-
var BrowserPairCodeParams =
|
|
3488
|
-
var BrowserPairCodeResult =
|
|
3489
|
-
var BrowserPairResetParams =
|
|
3490
|
-
var BrowserCallParams =
|
|
3491
|
-
tool:
|
|
3492
|
-
args:
|
|
3564
|
+
owner_signed_in: z35.boolean(),
|
|
3565
|
+
sessions: z35.array(BrowserSession).max(64)
|
|
3566
|
+
});
|
|
3567
|
+
var BrowserDisconnectParams = z35.strictObject({ client_instance: BrowserClientInstance });
|
|
3568
|
+
var BrowserDisconnectResult = z35.strictObject({ disconnected: z35.boolean() });
|
|
3569
|
+
var BrowserSetEnabledParams = z35.strictObject({ enabled: z35.boolean() });
|
|
3570
|
+
var BrowserSetEnabledResult = z35.strictObject({ enabled: z35.boolean() });
|
|
3571
|
+
var BrowserPairCodeParams = z35.strictObject({});
|
|
3572
|
+
var BrowserPairCodeResult = z35.strictObject({ code: z35.string().min(16).max(128) });
|
|
3573
|
+
var BrowserPairResetParams = z35.strictObject({});
|
|
3574
|
+
var BrowserCallParams = z35.strictObject({
|
|
3575
|
+
tool: z35.string().min(1).max(96).regex(/^[a-z][a-z0-9_]*$/),
|
|
3576
|
+
args: z35.record(z35.string(), z35.unknown()),
|
|
3493
3577
|
/** Which session; default: the most recently active routable one (BROWSER ambiguity → CONFLICT). */
|
|
3494
3578
|
client_instance: BrowserClientInstance.optional(),
|
|
3495
3579
|
/** How long to wait, including a person's confirmation; default 120 s. */
|
|
3496
|
-
timeout_ms:
|
|
3580
|
+
timeout_ms: z35.int().min(1e3).max(6e5).optional()
|
|
3497
3581
|
});
|
|
3498
|
-
var BrowserCallResult =
|
|
3582
|
+
var BrowserCallResult = z35.strictObject({
|
|
3499
3583
|
client_instance: BrowserClientInstance,
|
|
3500
|
-
result:
|
|
3584
|
+
result: z35.unknown(),
|
|
3501
3585
|
duration_ms: nonNegInt
|
|
3502
3586
|
});
|
|
3503
|
-
var BrowserToolMetricsParams =
|
|
3504
|
-
var BrowserToolMetric =
|
|
3505
|
-
tool:
|
|
3587
|
+
var BrowserToolMetricsParams = z35.strictObject({ client_instance: BrowserClientInstance });
|
|
3588
|
+
var BrowserToolMetric = z35.strictObject({
|
|
3589
|
+
tool: z35.string().max(256),
|
|
3506
3590
|
calls: nonNegInt,
|
|
3507
3591
|
errors: nonNegInt,
|
|
3508
3592
|
/** Over the last 200 answered calls; null before the first answer. */
|
|
3509
3593
|
p50_ms: nonNegInt.nullable(),
|
|
3510
3594
|
p95_ms: nonNegInt.nullable(),
|
|
3511
3595
|
last_call_at_ms: epochMs.nullable(),
|
|
3512
|
-
last_error:
|
|
3596
|
+
last_error: z35.string().max(2048).nullable()
|
|
3513
3597
|
});
|
|
3514
|
-
var BrowserToolMetricsResult =
|
|
3515
|
-
var BrowserResetCountersParams =
|
|
3516
|
-
var BrowserResetCountersResult =
|
|
3517
|
-
var BrowserLogParams =
|
|
3598
|
+
var BrowserToolMetricsResult = z35.strictObject({ client_instance: z35.string(), tools: z35.array(BrowserToolMetric) });
|
|
3599
|
+
var BrowserResetCountersParams = z35.strictObject({ client_instance: BrowserClientInstance });
|
|
3600
|
+
var BrowserResetCountersResult = z35.strictObject({ reset: z35.boolean() });
|
|
3601
|
+
var BrowserLogParams = z35.strictObject({
|
|
3518
3602
|
/** Only messages after this seq (0: from the oldest kept; the core keeps the last 500). */
|
|
3519
3603
|
after_seq: nonNegInt.default(0),
|
|
3520
|
-
limit:
|
|
3604
|
+
limit: z35.int().min(1).max(500).default(500)
|
|
3521
3605
|
});
|
|
3522
|
-
var BrowserLogMessage =
|
|
3606
|
+
var BrowserLogMessage = z35.strictObject({
|
|
3523
3607
|
seq: nonNegInt,
|
|
3524
3608
|
at_ms: epochMs,
|
|
3525
|
-
direction:
|
|
3526
|
-
client_instance:
|
|
3527
|
-
kind:
|
|
3528
|
-
tool:
|
|
3529
|
-
call_id:
|
|
3530
|
-
ok:
|
|
3531
|
-
detail:
|
|
3532
|
-
});
|
|
3533
|
-
var BrowserLogResult =
|
|
3534
|
-
messages:
|
|
3609
|
+
direction: z35.enum(["to_browser", "from_browser", "core"]),
|
|
3610
|
+
client_instance: z35.string(),
|
|
3611
|
+
kind: z35.enum(["register", "invoke", "result", "progress", "timeout", "closed"]),
|
|
3612
|
+
tool: z35.string().nullable(),
|
|
3613
|
+
call_id: z35.string().nullable(),
|
|
3614
|
+
ok: z35.boolean().nullable(),
|
|
3615
|
+
detail: z35.string().max(1024)
|
|
3616
|
+
});
|
|
3617
|
+
var BrowserLogResult = z35.strictObject({
|
|
3618
|
+
messages: z35.array(BrowserLogMessage),
|
|
3535
3619
|
/** The newest seq the core has written (pass it back as after_seq to follow the log). */
|
|
3536
3620
|
last_seq: nonNegInt
|
|
3537
3621
|
});
|
|
3538
|
-
var BrowserInvokeEvent =
|
|
3539
|
-
call_id:
|
|
3540
|
-
tool:
|
|
3541
|
-
args:
|
|
3622
|
+
var BrowserInvokeEvent = z35.strictObject({
|
|
3623
|
+
call_id: z35.string().min(1).max(64),
|
|
3624
|
+
tool: z35.string().min(1).max(96),
|
|
3625
|
+
args: z35.record(z35.string(), z35.unknown()),
|
|
3542
3626
|
deadline_ms: epochMs
|
|
3543
3627
|
});
|
|
3544
|
-
var BrowserSessionsChangedEvent =
|
|
3545
|
-
var BrowserProgressEvent =
|
|
3546
|
-
call_id:
|
|
3628
|
+
var BrowserSessionsChangedEvent = z35.strictObject({ count: nonNegInt, enabled: z35.boolean() });
|
|
3629
|
+
var BrowserProgressEvent = z35.strictObject({
|
|
3630
|
+
call_id: z35.string().min(1).max(64),
|
|
3547
3631
|
client_instance: BrowserClientInstance,
|
|
3548
3632
|
phase: BrowserCallPhase
|
|
3549
3633
|
});
|
|
3550
|
-
var DesktopHealth =
|
|
3551
|
-
status:
|
|
3552
|
-
service:
|
|
3553
|
-
version:
|
|
3554
|
-
protocol_version:
|
|
3555
|
-
ws_path:
|
|
3556
|
-
device_id:
|
|
3557
|
-
browser_connection:
|
|
3558
|
-
});
|
|
3559
|
-
var BrowserPairRequest =
|
|
3560
|
-
var BrowserPairResult =
|
|
3634
|
+
var DesktopHealth = z35.strictObject({
|
|
3635
|
+
status: z35.literal("ok"),
|
|
3636
|
+
service: z35.literal("matrx-desktop"),
|
|
3637
|
+
version: z35.string().max(32),
|
|
3638
|
+
protocol_version: z35.string().max(16),
|
|
3639
|
+
ws_path: z35.literal("/v1/connect"),
|
|
3640
|
+
device_id: z35.string().max(64),
|
|
3641
|
+
browser_connection: z35.enum(["on", "off"])
|
|
3642
|
+
});
|
|
3643
|
+
var BrowserPairRequest = z35.strictObject({ client_instance: BrowserClientInstance });
|
|
3644
|
+
var BrowserPairResult = z35.strictObject({ pair_token: z35.string().min(16).max(128), ws_path: z35.literal("/v1/connect") });
|
|
3561
3645
|
var MATRX_EXTENSION_IDS = {
|
|
3562
3646
|
store: "hnfolienncfklkgmdjjmhhegglimlamg",
|
|
3563
3647
|
development: "cihdmkcdjjckfhjpgoedmgfpoljebaml"
|
|
@@ -3565,641 +3649,641 @@ var MATRX_EXTENSION_IDS = {
|
|
|
3565
3649
|
var DISCOVERY_FILE = { live: "matrx2.json", development: "matrx2-dev.json" };
|
|
3566
3650
|
|
|
3567
3651
|
// src/schema/net.ts
|
|
3568
|
-
import { z as
|
|
3569
|
-
var NetInfoParams =
|
|
3570
|
-
var NetAddress =
|
|
3571
|
-
address:
|
|
3572
|
-
family:
|
|
3573
|
-
netmask:
|
|
3652
|
+
import { z as z36 } from "zod";
|
|
3653
|
+
var NetInfoParams = z36.strictObject({});
|
|
3654
|
+
var NetAddress = z36.strictObject({
|
|
3655
|
+
address: z36.string(),
|
|
3656
|
+
family: z36.enum(["ipv4", "ipv6"]),
|
|
3657
|
+
netmask: z36.string().nullable(),
|
|
3574
3658
|
/** CIDR form ("192.168.1.20/24"); null where the OS gives no prefix. */
|
|
3575
|
-
cidr:
|
|
3659
|
+
cidr: z36.string().nullable()
|
|
3576
3660
|
});
|
|
3577
|
-
var NetInterface =
|
|
3578
|
-
name:
|
|
3579
|
-
mac:
|
|
3661
|
+
var NetInterface = z36.strictObject({
|
|
3662
|
+
name: z36.string(),
|
|
3663
|
+
mac: z36.string().nullable(),
|
|
3580
3664
|
/** Loopback and other internal interfaces. */
|
|
3581
|
-
internal:
|
|
3582
|
-
addresses:
|
|
3665
|
+
internal: z36.boolean(),
|
|
3666
|
+
addresses: z36.array(NetAddress)
|
|
3583
3667
|
});
|
|
3584
|
-
var NetInfoResult =
|
|
3585
|
-
hostname:
|
|
3586
|
-
interfaces:
|
|
3668
|
+
var NetInfoResult = z36.strictObject({
|
|
3669
|
+
hostname: z36.string(),
|
|
3670
|
+
interfaces: z36.array(NetInterface),
|
|
3587
3671
|
/** The default route's gateway; null when the OS does not say (or there is none). */
|
|
3588
|
-
gateway:
|
|
3672
|
+
gateway: z36.string().nullable(),
|
|
3589
3673
|
/** The DNS servers the OS uses; empty when it does not say. */
|
|
3590
|
-
dns:
|
|
3674
|
+
dns: z36.array(z36.string())
|
|
3591
3675
|
});
|
|
3592
|
-
var NetWifiParams =
|
|
3593
|
-
var NetWifiNetwork =
|
|
3676
|
+
var NetWifiParams = z36.strictObject({});
|
|
3677
|
+
var NetWifiNetwork = z36.strictObject({
|
|
3594
3678
|
/** null: the OS hides the name (macOS without Location Services for this app). */
|
|
3595
|
-
ssid:
|
|
3679
|
+
ssid: z36.string().nullable(),
|
|
3596
3680
|
/** dBm; null where the OS does not say. */
|
|
3597
|
-
rssi:
|
|
3598
|
-
channel:
|
|
3599
|
-
security:
|
|
3681
|
+
rssi: z36.int().nullable(),
|
|
3682
|
+
channel: z36.string().nullable(),
|
|
3683
|
+
security: z36.string().nullable()
|
|
3600
3684
|
});
|
|
3601
|
-
var NetWifiResult =
|
|
3685
|
+
var NetWifiResult = z36.strictObject({
|
|
3602
3686
|
/** Whether the computer has a Wi-Fi interface at all. */
|
|
3603
|
-
available:
|
|
3687
|
+
available: z36.boolean(),
|
|
3604
3688
|
/** The network the computer is on; null when it is on none. */
|
|
3605
3689
|
current: NetWifiNetwork.nullable(),
|
|
3606
3690
|
/** Networks in range (may be empty where the OS lists none to apps). */
|
|
3607
|
-
networks:
|
|
3691
|
+
networks: z36.array(NetWifiNetwork)
|
|
3608
3692
|
});
|
|
3609
|
-
var NetBluetoothParams =
|
|
3610
|
-
var NetBluetoothDevice =
|
|
3611
|
-
name:
|
|
3612
|
-
address:
|
|
3613
|
-
connected:
|
|
3693
|
+
var NetBluetoothParams = z36.strictObject({});
|
|
3694
|
+
var NetBluetoothDevice = z36.strictObject({
|
|
3695
|
+
name: z36.string(),
|
|
3696
|
+
address: z36.string().nullable(),
|
|
3697
|
+
connected: z36.boolean(),
|
|
3614
3698
|
/** What it is, in the OS's words ("Headphones", "Keyboard"); null where it does not say. */
|
|
3615
|
-
kind:
|
|
3699
|
+
kind: z36.string().nullable(),
|
|
3616
3700
|
/** Battery percent, where the OS reports it. */
|
|
3617
|
-
battery:
|
|
3701
|
+
battery: z36.int().min(0).max(100).nullable()
|
|
3618
3702
|
});
|
|
3619
|
-
var NetBluetoothResult =
|
|
3703
|
+
var NetBluetoothResult = z36.strictObject({
|
|
3620
3704
|
/** Bluetooth is on; null where the OS does not say. */
|
|
3621
|
-
powered:
|
|
3622
|
-
devices:
|
|
3623
|
-
});
|
|
3624
|
-
var NetDevicesParams =
|
|
3625
|
-
var NetDevice =
|
|
3626
|
-
ip:
|
|
3627
|
-
mac:
|
|
3628
|
-
interface:
|
|
3705
|
+
powered: z36.boolean().nullable(),
|
|
3706
|
+
devices: z36.array(NetBluetoothDevice)
|
|
3707
|
+
});
|
|
3708
|
+
var NetDevicesParams = z36.strictObject({});
|
|
3709
|
+
var NetDevice = z36.strictObject({
|
|
3710
|
+
ip: z36.string(),
|
|
3711
|
+
mac: z36.string().nullable(),
|
|
3712
|
+
interface: z36.string().nullable(),
|
|
3629
3713
|
/** The name the local network gives it (reverse DNS / mDNS), when the table carries one. */
|
|
3630
|
-
hostname:
|
|
3714
|
+
hostname: z36.string().nullable()
|
|
3631
3715
|
});
|
|
3632
|
-
var NetDevicesResult =
|
|
3633
|
-
var NetMdnsParams =
|
|
3716
|
+
var NetDevicesResult = z36.strictObject({ devices: z36.array(NetDevice) });
|
|
3717
|
+
var NetMdnsParams = z36.strictObject({
|
|
3634
3718
|
/** A service type ("_http._tcp"); absent lists the service types found. */
|
|
3635
|
-
service_type:
|
|
3719
|
+
service_type: z36.string().min(1).max(64).regex(/^_[A-Za-z0-9-]+\._(tcp|udp)$/).optional(),
|
|
3636
3720
|
/** How long to listen. */
|
|
3637
|
-
timeout_s:
|
|
3721
|
+
timeout_s: z36.int().min(1).max(30).default(3)
|
|
3638
3722
|
});
|
|
3639
|
-
var NetMdnsService =
|
|
3640
|
-
name:
|
|
3641
|
-
type:
|
|
3642
|
-
domain:
|
|
3643
|
-
interface:
|
|
3723
|
+
var NetMdnsService = z36.strictObject({
|
|
3724
|
+
name: z36.string(),
|
|
3725
|
+
type: z36.string(),
|
|
3726
|
+
domain: z36.string(),
|
|
3727
|
+
interface: z36.string().nullable()
|
|
3644
3728
|
});
|
|
3645
|
-
var NetMdnsResult =
|
|
3646
|
-
var NetScanParams =
|
|
3729
|
+
var NetMdnsResult = z36.strictObject({ services: z36.array(NetMdnsService) });
|
|
3730
|
+
var NetScanParams = z36.strictObject({
|
|
3647
3731
|
/** A host name or address; a private or loopback address unless `allow_public`. */
|
|
3648
|
-
host:
|
|
3649
|
-
ports:
|
|
3650
|
-
timeout_ms:
|
|
3732
|
+
host: z36.string().min(1).max(253),
|
|
3733
|
+
ports: z36.array(z36.int().min(1).max(65535)).min(1).max(1024),
|
|
3734
|
+
timeout_ms: z36.int().min(50).max(1e4).default(800),
|
|
3651
3735
|
/** Scanning a host on the public internet needs saying so. */
|
|
3652
|
-
allow_public:
|
|
3736
|
+
allow_public: z36.boolean().default(false)
|
|
3653
3737
|
});
|
|
3654
|
-
var NetScanResult =
|
|
3655
|
-
host:
|
|
3738
|
+
var NetScanResult = z36.strictObject({
|
|
3739
|
+
host: z36.string(),
|
|
3656
3740
|
/** The address the host resolved to. */
|
|
3657
|
-
address:
|
|
3658
|
-
open:
|
|
3741
|
+
address: z36.string(),
|
|
3742
|
+
open: z36.array(z36.int().min(1).max(65535)),
|
|
3659
3743
|
closed: nonNegInt,
|
|
3660
3744
|
elapsed_ms: nonNegInt
|
|
3661
3745
|
});
|
|
3662
|
-
var NetDownloadParams =
|
|
3663
|
-
url:
|
|
3746
|
+
var NetDownloadParams = z36.strictObject({
|
|
3747
|
+
url: z36.string().min(1).max(8192).regex(/^https?:\/\//),
|
|
3664
3748
|
/** Where to save it: an absolute path (a folder keeps the URL's file name). */
|
|
3665
3749
|
path: AbsPath,
|
|
3666
|
-
overwrite:
|
|
3667
|
-
timeout_s:
|
|
3750
|
+
overwrite: z36.boolean().default(false),
|
|
3751
|
+
timeout_s: z36.int().min(1).max(3600).default(300),
|
|
3668
3752
|
/** Refuse anything larger. */
|
|
3669
|
-
max_bytes:
|
|
3753
|
+
max_bytes: z36.int().min(1).max(10737418240).default(2147483648)
|
|
3670
3754
|
});
|
|
3671
|
-
var NetDownloadResult =
|
|
3672
|
-
path:
|
|
3755
|
+
var NetDownloadResult = z36.strictObject({
|
|
3756
|
+
path: z36.string(),
|
|
3673
3757
|
bytes: nonNegInt,
|
|
3674
|
-
content_type:
|
|
3758
|
+
content_type: z36.string().nullable(),
|
|
3675
3759
|
/** The final URL after redirects. */
|
|
3676
|
-
url:
|
|
3760
|
+
url: z36.string(),
|
|
3677
3761
|
elapsed_ms: nonNegInt
|
|
3678
3762
|
});
|
|
3679
3763
|
|
|
3680
3764
|
// src/schema/personal.ts
|
|
3681
|
-
import { z as
|
|
3682
|
-
var Text =
|
|
3683
|
-
var AutomationScriptParams =
|
|
3765
|
+
import { z as z37 } from "zod";
|
|
3766
|
+
var Text = z37.string().max(65536);
|
|
3767
|
+
var AutomationScriptParams = z37.strictObject({
|
|
3684
3768
|
/** applescript and jxa: macOS (osascript); powershell: Windows (and pwsh where installed). */
|
|
3685
|
-
language:
|
|
3686
|
-
script:
|
|
3687
|
-
timeout_s:
|
|
3688
|
-
});
|
|
3689
|
-
var AutomationScriptResult =
|
|
3690
|
-
stdout:
|
|
3691
|
-
stderr:
|
|
3692
|
-
exit_code:
|
|
3693
|
-
timed_out:
|
|
3769
|
+
language: z37.enum(["applescript", "jxa", "powershell"]),
|
|
3770
|
+
script: z37.string().min(1).max(262144),
|
|
3771
|
+
timeout_s: z37.int().min(1).max(600).default(60)
|
|
3772
|
+
});
|
|
3773
|
+
var AutomationScriptResult = z37.strictObject({
|
|
3774
|
+
stdout: z37.string(),
|
|
3775
|
+
stderr: z37.string(),
|
|
3776
|
+
exit_code: z37.int(),
|
|
3777
|
+
timed_out: z37.boolean(),
|
|
3694
3778
|
/** stdout or stderr was cut at 1 MiB. */
|
|
3695
|
-
truncated:
|
|
3779
|
+
truncated: z37.boolean(),
|
|
3696
3780
|
elapsed_ms: nonNegInt
|
|
3697
3781
|
});
|
|
3698
|
-
var MailAccountsParams =
|
|
3699
|
-
var MailAccount =
|
|
3700
|
-
var MailAccountsResult =
|
|
3701
|
-
var MailListParams =
|
|
3782
|
+
var MailAccountsParams = z37.strictObject({});
|
|
3783
|
+
var MailAccount = z37.strictObject({ name: z37.string(), emails: z37.array(z37.string()), enabled: z37.boolean() });
|
|
3784
|
+
var MailAccountsResult = z37.strictObject({ accounts: z37.array(MailAccount) });
|
|
3785
|
+
var MailListParams = z37.strictObject({
|
|
3702
3786
|
/** The account's name in Mail; absent: every account. */
|
|
3703
|
-
account:
|
|
3787
|
+
account: z37.string().min(1).max(256).optional(),
|
|
3704
3788
|
/** The mailbox's name ("INBOX", "Sent Messages"). */
|
|
3705
|
-
mailbox:
|
|
3706
|
-
unread_only:
|
|
3707
|
-
limit:
|
|
3708
|
-
});
|
|
3709
|
-
var MailMessage =
|
|
3710
|
-
id:
|
|
3711
|
-
subject:
|
|
3712
|
-
sender:
|
|
3789
|
+
mailbox: z37.string().min(1).max(256).default("INBOX"),
|
|
3790
|
+
unread_only: z37.boolean().default(false),
|
|
3791
|
+
limit: z37.int().min(1).max(200).default(25)
|
|
3792
|
+
});
|
|
3793
|
+
var MailMessage = z37.strictObject({
|
|
3794
|
+
id: z37.string(),
|
|
3795
|
+
subject: z37.string(),
|
|
3796
|
+
sender: z37.string(),
|
|
3713
3797
|
received_at_ms: epochMs.nullable(),
|
|
3714
|
-
read:
|
|
3715
|
-
account:
|
|
3716
|
-
mailbox:
|
|
3798
|
+
read: z37.boolean(),
|
|
3799
|
+
account: z37.string(),
|
|
3800
|
+
mailbox: z37.string(),
|
|
3717
3801
|
/** The first lines of the message's text. */
|
|
3718
|
-
preview:
|
|
3802
|
+
preview: z37.string()
|
|
3719
3803
|
});
|
|
3720
|
-
var MailListResult =
|
|
3721
|
-
var MailSendParams =
|
|
3722
|
-
to:
|
|
3723
|
-
cc:
|
|
3724
|
-
subject:
|
|
3804
|
+
var MailListResult = z37.strictObject({ messages: z37.array(MailMessage) });
|
|
3805
|
+
var MailSendParams = z37.strictObject({
|
|
3806
|
+
to: z37.array(z37.string().min(3).max(320)).min(1).max(50),
|
|
3807
|
+
cc: z37.array(z37.string().min(3).max(320)).max(50).default([]),
|
|
3808
|
+
subject: z37.string().max(998),
|
|
3725
3809
|
body: Text,
|
|
3726
3810
|
/** The sending account's address; absent: Mail's default. */
|
|
3727
|
-
from:
|
|
3811
|
+
from: z37.string().min(3).max(320).optional(),
|
|
3728
3812
|
/** false leaves it open in Mail as a draft for the person to send. */
|
|
3729
|
-
send:
|
|
3813
|
+
send: z37.boolean().default(true)
|
|
3730
3814
|
});
|
|
3731
|
-
var MailSendResult =
|
|
3732
|
-
var OutlookStatusParams =
|
|
3733
|
-
var OutlookAccount =
|
|
3734
|
-
var OutlookStatusResult =
|
|
3815
|
+
var MailSendResult = z37.strictObject({ sent: z37.boolean() });
|
|
3816
|
+
var OutlookStatusParams = z37.strictObject({});
|
|
3817
|
+
var OutlookAccount = z37.strictObject({ name: z37.string(), email: z37.string().nullable() });
|
|
3818
|
+
var OutlookStatusResult = z37.strictObject({
|
|
3735
3819
|
/** classic_windows: scriptable. new_windows / mac: installed, not scriptable. none: not found. */
|
|
3736
|
-
client:
|
|
3737
|
-
scriptable:
|
|
3738
|
-
version:
|
|
3739
|
-
accounts:
|
|
3820
|
+
client: z37.enum(["classic_windows", "new_windows", "mac", "none"]),
|
|
3821
|
+
scriptable: z37.boolean(),
|
|
3822
|
+
version: z37.string().nullable(),
|
|
3823
|
+
accounts: z37.array(OutlookAccount),
|
|
3740
3824
|
/** Why it is not scriptable here, in a sentence the person can act on; null when it is. */
|
|
3741
|
-
reason:
|
|
3742
|
-
});
|
|
3743
|
-
var Address =
|
|
3744
|
-
var OutlookDraftParams =
|
|
3745
|
-
to:
|
|
3746
|
-
cc:
|
|
3747
|
-
bcc:
|
|
3748
|
-
subject:
|
|
3749
|
-
body:
|
|
3750
|
-
body_format:
|
|
3825
|
+
reason: z37.string().nullable()
|
|
3826
|
+
});
|
|
3827
|
+
var Address = z37.string().min(3).max(320);
|
|
3828
|
+
var OutlookDraftParams = z37.strictObject({
|
|
3829
|
+
to: z37.array(Address).max(100).default([]),
|
|
3830
|
+
cc: z37.array(Address).max(100).default([]),
|
|
3831
|
+
bcc: z37.array(Address).max(100).default([]),
|
|
3832
|
+
subject: z37.string().max(998).default(""),
|
|
3833
|
+
body: z37.string().max(1048576).default(""),
|
|
3834
|
+
body_format: z37.enum(["text", "html"]).default("text"),
|
|
3751
3835
|
/** Files on this computer to attach (absolute paths). */
|
|
3752
|
-
attachments:
|
|
3836
|
+
attachments: z37.array(z37.string().min(1).max(4096)).max(50).default([]),
|
|
3753
3837
|
/** The sending account's address (one of outlook.status's accounts); absent: Outlook's default. */
|
|
3754
3838
|
account: Address.optional(),
|
|
3755
3839
|
/** true also opens the draft in a window for the person. */
|
|
3756
|
-
display:
|
|
3840
|
+
display: z37.boolean().default(false)
|
|
3757
3841
|
});
|
|
3758
|
-
var OutlookDraftResult =
|
|
3842
|
+
var OutlookDraftResult = z37.strictObject({
|
|
3759
3843
|
/** The draft's id in Outlook (outlook.read takes it). */
|
|
3760
|
-
id:
|
|
3761
|
-
account:
|
|
3762
|
-
folder:
|
|
3844
|
+
id: z37.string(),
|
|
3845
|
+
account: z37.string().nullable(),
|
|
3846
|
+
folder: z37.string(),
|
|
3763
3847
|
attachments: nonNegInt,
|
|
3764
|
-
displayed:
|
|
3848
|
+
displayed: z37.boolean()
|
|
3765
3849
|
});
|
|
3766
|
-
var OutlookListParams =
|
|
3767
|
-
folder:
|
|
3850
|
+
var OutlookListParams = z37.strictObject({
|
|
3851
|
+
folder: z37.enum(["inbox", "sent", "drafts"]).default("inbox"),
|
|
3768
3852
|
/** The account's address; absent: the default account. */
|
|
3769
3853
|
account: Address.optional(),
|
|
3770
|
-
unread_only:
|
|
3771
|
-
limit:
|
|
3854
|
+
unread_only: z37.boolean().default(false),
|
|
3855
|
+
limit: z37.int().min(1).max(200).default(25)
|
|
3772
3856
|
});
|
|
3773
|
-
var OutlookMessage =
|
|
3774
|
-
id:
|
|
3775
|
-
subject:
|
|
3776
|
-
sender:
|
|
3857
|
+
var OutlookMessage = z37.strictObject({
|
|
3858
|
+
id: z37.string(),
|
|
3859
|
+
subject: z37.string(),
|
|
3860
|
+
sender: z37.string(),
|
|
3777
3861
|
received_at_ms: epochMs.nullable(),
|
|
3778
|
-
read:
|
|
3779
|
-
has_attachments:
|
|
3862
|
+
read: z37.boolean(),
|
|
3863
|
+
has_attachments: z37.boolean(),
|
|
3780
3864
|
/** The first lines of the message's text. */
|
|
3781
|
-
preview:
|
|
3782
|
-
});
|
|
3783
|
-
var OutlookListResult =
|
|
3784
|
-
var OutlookReadParams =
|
|
3785
|
-
var OutlookReadResult =
|
|
3786
|
-
id:
|
|
3787
|
-
subject:
|
|
3788
|
-
sender:
|
|
3789
|
-
to:
|
|
3790
|
-
cc:
|
|
3865
|
+
preview: z37.string()
|
|
3866
|
+
});
|
|
3867
|
+
var OutlookListResult = z37.strictObject({ folder: z37.string(), messages: z37.array(OutlookMessage) });
|
|
3868
|
+
var OutlookReadParams = z37.strictObject({ id: z37.string().min(1).max(1024) });
|
|
3869
|
+
var OutlookReadResult = z37.strictObject({
|
|
3870
|
+
id: z37.string(),
|
|
3871
|
+
subject: z37.string(),
|
|
3872
|
+
sender: z37.string(),
|
|
3873
|
+
to: z37.array(z37.string()),
|
|
3874
|
+
cc: z37.array(z37.string()),
|
|
3791
3875
|
received_at_ms: epochMs.nullable(),
|
|
3792
3876
|
/** The plain text body, cut at 1 MiB. */
|
|
3793
|
-
body:
|
|
3794
|
-
attachments:
|
|
3795
|
-
});
|
|
3796
|
-
var MessagesChatsParams =
|
|
3797
|
-
var MessagesChat =
|
|
3798
|
-
chat_id:
|
|
3799
|
-
name:
|
|
3800
|
-
participants:
|
|
3877
|
+
body: z37.string(),
|
|
3878
|
+
attachments: z37.array(z37.strictObject({ name: z37.string(), size: nonNegInt }))
|
|
3879
|
+
});
|
|
3880
|
+
var MessagesChatsParams = z37.strictObject({ limit: z37.int().min(1).max(200).default(25) });
|
|
3881
|
+
var MessagesChat = z37.strictObject({
|
|
3882
|
+
chat_id: z37.string(),
|
|
3883
|
+
name: z37.string().nullable(),
|
|
3884
|
+
participants: z37.array(z37.string()),
|
|
3801
3885
|
last_message_at_ms: epochMs.nullable(),
|
|
3802
|
-
service:
|
|
3886
|
+
service: z37.string().nullable()
|
|
3803
3887
|
});
|
|
3804
|
-
var MessagesChatsResult =
|
|
3805
|
-
var MessagesListParams =
|
|
3888
|
+
var MessagesChatsResult = z37.strictObject({ chats: z37.array(MessagesChat) });
|
|
3889
|
+
var MessagesListParams = z37.strictObject({
|
|
3806
3890
|
/** One chat (messages.chats' chat_id); absent: the newest across all. */
|
|
3807
|
-
chat_id:
|
|
3808
|
-
limit:
|
|
3809
|
-
});
|
|
3810
|
-
var MessagesMessage =
|
|
3811
|
-
id:
|
|
3812
|
-
chat_id:
|
|
3813
|
-
text:
|
|
3814
|
-
from_me:
|
|
3891
|
+
chat_id: z37.string().min(1).max(512).optional(),
|
|
3892
|
+
limit: z37.int().min(1).max(500).default(50)
|
|
3893
|
+
});
|
|
3894
|
+
var MessagesMessage = z37.strictObject({
|
|
3895
|
+
id: z37.string(),
|
|
3896
|
+
chat_id: z37.string().nullable(),
|
|
3897
|
+
text: z37.string(),
|
|
3898
|
+
from_me: z37.boolean(),
|
|
3815
3899
|
/** The other person's handle (phone or email); null for the person's own messages. */
|
|
3816
|
-
sender:
|
|
3900
|
+
sender: z37.string().nullable(),
|
|
3817
3901
|
sent_at_ms: epochMs.nullable()
|
|
3818
3902
|
});
|
|
3819
|
-
var MessagesListResult =
|
|
3820
|
-
var MessagesSendParams =
|
|
3903
|
+
var MessagesListResult = z37.strictObject({ messages: z37.array(MessagesMessage) });
|
|
3904
|
+
var MessagesSendParams = z37.strictObject({
|
|
3821
3905
|
/** A phone number or email the person can message. */
|
|
3822
|
-
to:
|
|
3823
|
-
text:
|
|
3906
|
+
to: z37.string().min(3).max(320),
|
|
3907
|
+
text: z37.string().min(1).max(2e4),
|
|
3824
3908
|
/**
|
|
3825
3909
|
* Send only over this service (Matrx Local's SendMessage `service`). Absent: iMessage first, and
|
|
3826
3910
|
* SMS when the recipient has no iMessage (since 1.42).
|
|
3827
3911
|
*/
|
|
3828
|
-
service:
|
|
3912
|
+
service: z37.enum(["iMessage", "SMS"]).optional()
|
|
3829
3913
|
});
|
|
3830
|
-
var MessagesSendResult =
|
|
3831
|
-
var ContactsSearchParams =
|
|
3914
|
+
var MessagesSendResult = z37.strictObject({ sent: z37.boolean() });
|
|
3915
|
+
var ContactsSearchParams = z37.strictObject({
|
|
3832
3916
|
/** Matched against names, organizations, emails and phone numbers. */
|
|
3833
|
-
query:
|
|
3834
|
-
limit:
|
|
3917
|
+
query: z37.string().min(1).max(256),
|
|
3918
|
+
limit: z37.int().min(1).max(200).default(25)
|
|
3835
3919
|
});
|
|
3836
|
-
var ContactLabeled =
|
|
3837
|
-
var ContactSummary =
|
|
3838
|
-
id:
|
|
3839
|
-
name:
|
|
3840
|
-
organization:
|
|
3841
|
-
emails:
|
|
3842
|
-
phones:
|
|
3843
|
-
});
|
|
3844
|
-
var ContactsSearchResult =
|
|
3845
|
-
var ContactsGetParams =
|
|
3846
|
-
var ContactDetail =
|
|
3847
|
-
id:
|
|
3848
|
-
name:
|
|
3849
|
-
organization:
|
|
3850
|
-
job_title:
|
|
3851
|
-
emails:
|
|
3852
|
-
phones:
|
|
3853
|
-
addresses:
|
|
3854
|
-
birthday:
|
|
3855
|
-
note:
|
|
3856
|
-
});
|
|
3857
|
-
var ContactsGetResult =
|
|
3858
|
-
var CalendarListParams =
|
|
3920
|
+
var ContactLabeled = z37.strictObject({ label: z37.string().nullable(), value: z37.string() });
|
|
3921
|
+
var ContactSummary = z37.strictObject({
|
|
3922
|
+
id: z37.string(),
|
|
3923
|
+
name: z37.string(),
|
|
3924
|
+
organization: z37.string().nullable(),
|
|
3925
|
+
emails: z37.array(ContactLabeled),
|
|
3926
|
+
phones: z37.array(ContactLabeled)
|
|
3927
|
+
});
|
|
3928
|
+
var ContactsSearchResult = z37.strictObject({ contacts: z37.array(ContactSummary) });
|
|
3929
|
+
var ContactsGetParams = z37.strictObject({ id: z37.string().min(1).max(256) });
|
|
3930
|
+
var ContactDetail = z37.strictObject({
|
|
3931
|
+
id: z37.string(),
|
|
3932
|
+
name: z37.string(),
|
|
3933
|
+
organization: z37.string().nullable(),
|
|
3934
|
+
job_title: z37.string().nullable(),
|
|
3935
|
+
emails: z37.array(ContactLabeled),
|
|
3936
|
+
phones: z37.array(ContactLabeled),
|
|
3937
|
+
addresses: z37.array(ContactLabeled),
|
|
3938
|
+
birthday: z37.string().nullable(),
|
|
3939
|
+
note: z37.string().nullable()
|
|
3940
|
+
});
|
|
3941
|
+
var ContactsGetResult = z37.strictObject({ contact: ContactDetail });
|
|
3942
|
+
var CalendarListParams = z37.strictObject({
|
|
3859
3943
|
from_ms: epochMs,
|
|
3860
3944
|
to_ms: epochMs,
|
|
3861
3945
|
/** One calendar's name; absent: every calendar. */
|
|
3862
|
-
calendar:
|
|
3863
|
-
limit:
|
|
3946
|
+
calendar: z37.string().min(1).max(256).optional(),
|
|
3947
|
+
limit: z37.int().min(1).max(500).default(100)
|
|
3864
3948
|
});
|
|
3865
|
-
var CalendarEvent =
|
|
3866
|
-
id:
|
|
3867
|
-
title:
|
|
3949
|
+
var CalendarEvent = z37.strictObject({
|
|
3950
|
+
id: z37.string(),
|
|
3951
|
+
title: z37.string(),
|
|
3868
3952
|
start_ms: epochMs,
|
|
3869
3953
|
end_ms: epochMs,
|
|
3870
|
-
all_day:
|
|
3871
|
-
calendar:
|
|
3872
|
-
location:
|
|
3873
|
-
notes:
|
|
3874
|
-
});
|
|
3875
|
-
var CalendarListResult =
|
|
3876
|
-
var CalendarCreateParams =
|
|
3877
|
-
title:
|
|
3954
|
+
all_day: z37.boolean(),
|
|
3955
|
+
calendar: z37.string(),
|
|
3956
|
+
location: z37.string().nullable(),
|
|
3957
|
+
notes: z37.string().nullable()
|
|
3958
|
+
});
|
|
3959
|
+
var CalendarListResult = z37.strictObject({ events: z37.array(CalendarEvent) });
|
|
3960
|
+
var CalendarCreateParams = z37.strictObject({
|
|
3961
|
+
title: z37.string().min(1).max(1024),
|
|
3878
3962
|
start_ms: epochMs,
|
|
3879
3963
|
end_ms: epochMs,
|
|
3880
|
-
all_day:
|
|
3964
|
+
all_day: z37.boolean().default(false),
|
|
3881
3965
|
/** The calendar's name; absent: the first writable calendar. */
|
|
3882
|
-
calendar:
|
|
3883
|
-
location:
|
|
3966
|
+
calendar: z37.string().min(1).max(256).optional(),
|
|
3967
|
+
location: z37.string().max(1024).optional(),
|
|
3884
3968
|
notes: Text.optional()
|
|
3885
3969
|
});
|
|
3886
|
-
var CalendarCreateResult =
|
|
3887
|
-
var RemindersListParams =
|
|
3970
|
+
var CalendarCreateResult = z37.strictObject({ id: z37.string(), calendar: z37.string() });
|
|
3971
|
+
var RemindersListParams = z37.strictObject({
|
|
3888
3972
|
/** One list's name; absent: every list. */
|
|
3889
|
-
list:
|
|
3890
|
-
include_completed:
|
|
3891
|
-
limit:
|
|
3892
|
-
});
|
|
3893
|
-
var Reminder =
|
|
3894
|
-
id:
|
|
3895
|
-
title:
|
|
3896
|
-
list:
|
|
3973
|
+
list: z37.string().min(1).max(256).optional(),
|
|
3974
|
+
include_completed: z37.boolean().default(false),
|
|
3975
|
+
limit: z37.int().min(1).max(500).default(100)
|
|
3976
|
+
});
|
|
3977
|
+
var Reminder = z37.strictObject({
|
|
3978
|
+
id: z37.string(),
|
|
3979
|
+
title: z37.string(),
|
|
3980
|
+
list: z37.string(),
|
|
3897
3981
|
due_ms: epochMs.nullable(),
|
|
3898
|
-
completed:
|
|
3899
|
-
notes:
|
|
3982
|
+
completed: z37.boolean(),
|
|
3983
|
+
notes: z37.string().nullable()
|
|
3900
3984
|
});
|
|
3901
|
-
var RemindersListResult =
|
|
3902
|
-
var RemindersCreateParams =
|
|
3903
|
-
title:
|
|
3985
|
+
var RemindersListResult = z37.strictObject({ reminders: z37.array(Reminder) });
|
|
3986
|
+
var RemindersCreateParams = z37.strictObject({
|
|
3987
|
+
title: z37.string().min(1).max(1024),
|
|
3904
3988
|
due_ms: epochMs.optional(),
|
|
3905
|
-
list:
|
|
3989
|
+
list: z37.string().min(1).max(256).optional(),
|
|
3906
3990
|
notes: Text.optional()
|
|
3907
3991
|
});
|
|
3908
|
-
var RemindersCreateResult =
|
|
3909
|
-
var PhotosSearchParams =
|
|
3992
|
+
var RemindersCreateResult = z37.strictObject({ id: z37.string(), list: z37.string() });
|
|
3993
|
+
var PhotosSearchParams = z37.strictObject({
|
|
3910
3994
|
/** Matched against file names, titles, descriptions and keywords; absent: the newest. */
|
|
3911
|
-
query:
|
|
3995
|
+
query: z37.string().min(1).max(256).optional(),
|
|
3912
3996
|
from_ms: epochMs.optional(),
|
|
3913
3997
|
to_ms: epochMs.optional(),
|
|
3914
|
-
favorites_only:
|
|
3915
|
-
limit:
|
|
3998
|
+
favorites_only: z37.boolean().default(false),
|
|
3999
|
+
limit: z37.int().min(1).max(200).default(25)
|
|
3916
4000
|
});
|
|
3917
|
-
var Photo =
|
|
3918
|
-
id:
|
|
3919
|
-
filename:
|
|
4001
|
+
var Photo = z37.strictObject({
|
|
4002
|
+
id: z37.string(),
|
|
4003
|
+
filename: z37.string(),
|
|
3920
4004
|
taken_at_ms: epochMs.nullable(),
|
|
3921
4005
|
width: nonNegInt.nullable(),
|
|
3922
4006
|
height: nonNegInt.nullable(),
|
|
3923
|
-
favorite:
|
|
3924
|
-
title:
|
|
4007
|
+
favorite: z37.boolean(),
|
|
4008
|
+
title: z37.string().nullable()
|
|
3925
4009
|
});
|
|
3926
|
-
var PhotosSearchResult =
|
|
3927
|
-
var PhotosGetParams =
|
|
3928
|
-
id:
|
|
4010
|
+
var PhotosSearchResult = z37.strictObject({ photos: z37.array(Photo) });
|
|
4011
|
+
var PhotosGetParams = z37.strictObject({
|
|
4012
|
+
id: z37.string().min(1).max(256),
|
|
3929
4013
|
/** Copy the original into a folder Matrx 2 owns and answer its path (then fs_read or desktop_documents reads it). */
|
|
3930
|
-
export:
|
|
4014
|
+
export: z37.boolean().default(false)
|
|
3931
4015
|
});
|
|
3932
|
-
var PhotosGetResult =
|
|
3933
|
-
var LocationGetParams =
|
|
3934
|
-
var LocationGetResult =
|
|
3935
|
-
latitude:
|
|
3936
|
-
longitude:
|
|
4016
|
+
var PhotosGetResult = z37.strictObject({ photo: Photo, path: z37.string().nullable() });
|
|
4017
|
+
var LocationGetParams = z37.strictObject({ timeout_s: z37.int().min(1).max(60).default(15) });
|
|
4018
|
+
var LocationGetResult = z37.strictObject({
|
|
4019
|
+
latitude: z37.number().min(-90).max(90),
|
|
4020
|
+
longitude: z37.number().min(-180).max(180),
|
|
3937
4021
|
/** Metres; null where the OS does not say. */
|
|
3938
|
-
accuracy_m:
|
|
4022
|
+
accuracy_m: z37.number().min(0).nullable(),
|
|
3939
4023
|
at_ms: epochMs,
|
|
3940
4024
|
/** Who answered: the OS's own location service. */
|
|
3941
|
-
source:
|
|
4025
|
+
source: z37.enum(["corelocation", "windows", "geoclue"])
|
|
3942
4026
|
});
|
|
3943
4027
|
|
|
3944
4028
|
// src/schema/windows.ts
|
|
3945
|
-
import { z as
|
|
3946
|
-
var RegistryKey =
|
|
3947
|
-
var RegistryValueType =
|
|
3948
|
-
var WindowsRegistryReadParams =
|
|
4029
|
+
import { z as z38 } from "zod";
|
|
4030
|
+
var RegistryKey = z38.string().min(6).max(1024).regex(/^(HKLM|HKCU|HKCR|HKU|HKCC|HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER|HKEY_CLASSES_ROOT|HKEY_USERS|HKEY_CURRENT_CONFIG)(\\.*)?$/);
|
|
4031
|
+
var RegistryValueType = z38.enum(["REG_SZ", "REG_EXPAND_SZ", "REG_MULTI_SZ", "REG_DWORD", "REG_QWORD", "REG_BINARY", "REG_NONE"]);
|
|
4032
|
+
var WindowsRegistryReadParams = z38.strictObject({
|
|
3949
4033
|
key: RegistryKey,
|
|
3950
4034
|
/** One value's name ("" is the key's default value); absent: every value and the subkeys. */
|
|
3951
|
-
name:
|
|
4035
|
+
name: z38.string().max(16383).optional()
|
|
3952
4036
|
});
|
|
3953
|
-
var RegistryValue =
|
|
3954
|
-
var WindowsRegistryReadResult =
|
|
3955
|
-
key:
|
|
3956
|
-
exists:
|
|
3957
|
-
values:
|
|
3958
|
-
subkeys:
|
|
4037
|
+
var RegistryValue = z38.strictObject({ name: z38.string(), type: RegistryValueType, data: z38.string() });
|
|
4038
|
+
var WindowsRegistryReadResult = z38.strictObject({
|
|
4039
|
+
key: z38.string(),
|
|
4040
|
+
exists: z38.boolean(),
|
|
4041
|
+
values: z38.array(RegistryValue),
|
|
4042
|
+
subkeys: z38.array(z38.string())
|
|
3959
4043
|
});
|
|
3960
|
-
var WindowsRegistryWriteParams =
|
|
4044
|
+
var WindowsRegistryWriteParams = z38.strictObject({
|
|
3961
4045
|
key: RegistryKey,
|
|
3962
|
-
name:
|
|
4046
|
+
name: z38.string().max(16383),
|
|
3963
4047
|
type: RegistryValueType.default("REG_SZ"),
|
|
3964
4048
|
/** As reg.exe takes it: text, a number, hex for binary, \\0 between the strings of a multi-string. */
|
|
3965
|
-
data:
|
|
4049
|
+
data: z38.string().max(1048576),
|
|
3966
4050
|
/** Remove the value instead of writing it. */
|
|
3967
|
-
delete:
|
|
4051
|
+
delete: z38.boolean().default(false)
|
|
3968
4052
|
});
|
|
3969
|
-
var WindowsRegistryWriteResult =
|
|
3970
|
-
var WindowsServicesParams =
|
|
4053
|
+
var WindowsRegistryWriteResult = z38.strictObject({ key: z38.string(), name: z38.string(), deleted: z38.boolean() });
|
|
4054
|
+
var WindowsServicesParams = z38.strictObject({
|
|
3971
4055
|
/** Matched against the service's name and display name. */
|
|
3972
|
-
filter:
|
|
3973
|
-
limit:
|
|
4056
|
+
filter: z38.string().min(1).max(256).optional(),
|
|
4057
|
+
limit: z38.int().min(1).max(1e3).default(200)
|
|
3974
4058
|
});
|
|
3975
|
-
var WindowsService =
|
|
3976
|
-
name:
|
|
3977
|
-
display_name:
|
|
4059
|
+
var WindowsService = z38.strictObject({
|
|
4060
|
+
name: z38.string(),
|
|
4061
|
+
display_name: z38.string(),
|
|
3978
4062
|
/** Running, Stopped, Paused… as Windows says it. */
|
|
3979
|
-
status:
|
|
4063
|
+
status: z38.string(),
|
|
3980
4064
|
/** Automatic, Manual, Disabled…; null where Windows does not say. */
|
|
3981
|
-
start_type:
|
|
4065
|
+
start_type: z38.string().nullable()
|
|
3982
4066
|
});
|
|
3983
|
-
var WindowsServicesResult =
|
|
3984
|
-
var WindowsServiceControlParams =
|
|
3985
|
-
name:
|
|
3986
|
-
action:
|
|
4067
|
+
var WindowsServicesResult = z38.strictObject({ services: z38.array(WindowsService) });
|
|
4068
|
+
var WindowsServiceControlParams = z38.strictObject({
|
|
4069
|
+
name: z38.string().min(1).max(256),
|
|
4070
|
+
action: z38.enum(["start", "stop", "restart"])
|
|
3987
4071
|
});
|
|
3988
|
-
var WindowsServiceControlResult =
|
|
3989
|
-
var WindowsEventLogParams =
|
|
3990
|
-
log:
|
|
4072
|
+
var WindowsServiceControlResult = z38.strictObject({ name: z38.string(), status: z38.string() });
|
|
4073
|
+
var WindowsEventLogParams = z38.strictObject({
|
|
4074
|
+
log: z38.string().min(1).max(256).default("System"),
|
|
3991
4075
|
/** Only these levels; absent: all. */
|
|
3992
|
-
levels:
|
|
4076
|
+
levels: z38.array(z38.enum(["critical", "error", "warning", "information", "verbose"])).max(5).optional(),
|
|
3993
4077
|
since_ms: epochMs.optional(),
|
|
3994
|
-
limit:
|
|
4078
|
+
limit: z38.int().min(1).max(500).default(50)
|
|
3995
4079
|
});
|
|
3996
|
-
var WindowsEvent =
|
|
3997
|
-
id:
|
|
3998
|
-
level:
|
|
3999
|
-
source:
|
|
4080
|
+
var WindowsEvent = z38.strictObject({
|
|
4081
|
+
id: z38.int(),
|
|
4082
|
+
level: z38.string(),
|
|
4083
|
+
source: z38.string(),
|
|
4000
4084
|
at_ms: epochMs,
|
|
4001
|
-
message:
|
|
4085
|
+
message: z38.string()
|
|
4002
4086
|
});
|
|
4003
|
-
var WindowsEventLogResult =
|
|
4004
|
-
var WindowsFeaturesParams =
|
|
4005
|
-
var WindowsFeature =
|
|
4006
|
-
var WindowsFeaturesResult =
|
|
4087
|
+
var WindowsEventLogResult = z38.strictObject({ log: z38.string(), events: z38.array(WindowsEvent) });
|
|
4088
|
+
var WindowsFeaturesParams = z38.strictObject({ filter: z38.string().min(1).max(256).optional() });
|
|
4089
|
+
var WindowsFeature = z38.strictObject({ name: z38.string(), state: z38.string() });
|
|
4090
|
+
var WindowsFeaturesResult = z38.strictObject({ features: z38.array(WindowsFeature) });
|
|
4007
4091
|
|
|
4008
4092
|
// src/schema/schedule.ts
|
|
4009
|
-
import { z as
|
|
4010
|
-
var OpRef =
|
|
4011
|
-
var ScheduleCreateParams =
|
|
4012
|
-
name:
|
|
4093
|
+
import { z as z39 } from "zod";
|
|
4094
|
+
var OpRef = z39.string().min(3).max(128).regex(/^[a-z_]+(\.[a-z_]+)+$/);
|
|
4095
|
+
var ScheduleCreateParams = z39.strictObject({
|
|
4096
|
+
name: z39.string().min(1).max(200),
|
|
4013
4097
|
op: OpRef,
|
|
4014
4098
|
/** The op's params, exactly as the op takes them; checked when the task is created. */
|
|
4015
|
-
params:
|
|
4016
|
-
interval_s:
|
|
4099
|
+
params: z39.record(z39.string(), z39.unknown()).default({}),
|
|
4100
|
+
interval_s: z39.int().min(10).max(2592e3),
|
|
4017
4101
|
/** Stop after this many runs; absent: until cancelled. */
|
|
4018
|
-
max_runs:
|
|
4102
|
+
max_runs: z39.int().min(1).max(1e5).optional(),
|
|
4019
4103
|
/** Run once now, before the first interval. */
|
|
4020
|
-
run_now:
|
|
4104
|
+
run_now: z39.boolean().default(false)
|
|
4021
4105
|
});
|
|
4022
|
-
var ScheduleRun =
|
|
4106
|
+
var ScheduleRun = z39.strictObject({
|
|
4023
4107
|
at_ms: epochMs,
|
|
4024
|
-
ok:
|
|
4108
|
+
ok: z39.boolean(),
|
|
4025
4109
|
elapsed_ms: nonNegInt,
|
|
4026
4110
|
/** The error's code and message when the run failed. */
|
|
4027
|
-
error:
|
|
4111
|
+
error: z39.string().nullable(),
|
|
4028
4112
|
/** The start of the answer, as JSON (cut at 4 KiB). */
|
|
4029
|
-
result_preview:
|
|
4113
|
+
result_preview: z39.string().nullable()
|
|
4030
4114
|
});
|
|
4031
|
-
var ScheduledTask =
|
|
4032
|
-
id:
|
|
4033
|
-
name:
|
|
4034
|
-
op:
|
|
4035
|
-
params:
|
|
4115
|
+
var ScheduledTask = z39.strictObject({
|
|
4116
|
+
id: z39.string(),
|
|
4117
|
+
name: z39.string(),
|
|
4118
|
+
op: z39.string(),
|
|
4119
|
+
params: z39.record(z39.string(), z39.unknown()),
|
|
4036
4120
|
interval_s: nonNegInt,
|
|
4037
4121
|
max_runs: nonNegInt.nullable(),
|
|
4038
4122
|
runs: nonNegInt,
|
|
4039
4123
|
created_at_ms: epochMs,
|
|
4040
4124
|
next_run_at_ms: epochMs.nullable(),
|
|
4041
4125
|
/** active, done (ran max_runs), cancelled. */
|
|
4042
|
-
state:
|
|
4126
|
+
state: z39.enum(["active", "done", "cancelled"]),
|
|
4043
4127
|
/** The newest runs, newest first (at most 10). */
|
|
4044
|
-
recent:
|
|
4128
|
+
recent: z39.array(ScheduleRun)
|
|
4045
4129
|
});
|
|
4046
|
-
var ScheduleCreateResult =
|
|
4047
|
-
var ScheduleListParams =
|
|
4048
|
-
var ScheduleListResult =
|
|
4049
|
-
var ScheduleCancelParams =
|
|
4050
|
-
var ScheduleCancelResult =
|
|
4130
|
+
var ScheduleCreateResult = z39.strictObject({ task: ScheduledTask });
|
|
4131
|
+
var ScheduleListParams = z39.strictObject({ include_finished: z39.boolean().default(false) });
|
|
4132
|
+
var ScheduleListResult = z39.strictObject({ tasks: z39.array(ScheduledTask) });
|
|
4133
|
+
var ScheduleCancelParams = z39.strictObject({ id: z39.string().min(1).max(64) });
|
|
4134
|
+
var ScheduleCancelResult = z39.strictObject({ task: ScheduledTask });
|
|
4051
4135
|
|
|
4052
4136
|
// src/schema/notes.ts
|
|
4053
|
-
import { z as
|
|
4054
|
-
var NoteFolder =
|
|
4055
|
-
var NotePath =
|
|
4056
|
-
var NotesFoldersParams =
|
|
4057
|
-
var NotesFolder =
|
|
4058
|
-
var NotesFoldersResult =
|
|
4137
|
+
import { z as z40 } from "zod";
|
|
4138
|
+
var NoteFolder = z40.string().min(1).max(512).regex(/^[^/\\:*?"<>|][^\\:*?"<>|]*$/);
|
|
4139
|
+
var NotePath = z40.string().min(4).max(1024).regex(/^[^/\\:*?"<>|][^\\:*?"<>|]*\.md$/);
|
|
4140
|
+
var NotesFoldersParams = z40.strictObject({});
|
|
4141
|
+
var NotesFolder = z40.strictObject({ folder: z40.string(), notes: nonNegInt });
|
|
4142
|
+
var NotesFoldersResult = z40.strictObject({
|
|
4059
4143
|
/** The notes root on this computer. */
|
|
4060
|
-
root:
|
|
4061
|
-
folders:
|
|
4144
|
+
root: z40.string(),
|
|
4145
|
+
folders: z40.array(NotesFolder)
|
|
4062
4146
|
});
|
|
4063
|
-
var NotesListParams =
|
|
4147
|
+
var NotesListParams = z40.strictObject({
|
|
4064
4148
|
folder: NoteFolder.optional(),
|
|
4065
|
-
limit:
|
|
4149
|
+
limit: z40.int().min(1).max(2e3).default(500)
|
|
4066
4150
|
});
|
|
4067
|
-
var NoteEntry =
|
|
4068
|
-
path:
|
|
4069
|
-
label:
|
|
4070
|
-
folder:
|
|
4151
|
+
var NoteEntry = z40.strictObject({
|
|
4152
|
+
path: z40.string(),
|
|
4153
|
+
label: z40.string(),
|
|
4154
|
+
folder: z40.string(),
|
|
4071
4155
|
bytes: nonNegInt,
|
|
4072
4156
|
modified_at_ms: epochMs
|
|
4073
4157
|
});
|
|
4074
|
-
var NotesListResult =
|
|
4075
|
-
var NotesReadParams =
|
|
4076
|
-
var NotesReadResult =
|
|
4077
|
-
path:
|
|
4078
|
-
content:
|
|
4158
|
+
var NotesListResult = z40.strictObject({ root: z40.string(), notes: z40.array(NoteEntry), total: nonNegInt });
|
|
4159
|
+
var NotesReadParams = z40.strictObject({ path: NotePath });
|
|
4160
|
+
var NotesReadResult = z40.strictObject({
|
|
4161
|
+
path: z40.string(),
|
|
4162
|
+
content: z40.string(),
|
|
4079
4163
|
bytes: nonNegInt,
|
|
4080
4164
|
modified_at_ms: epochMs,
|
|
4081
4165
|
/** SHA-256 of the content: pass it back as `if_hash` to write only over this version. */
|
|
4082
|
-
hash:
|
|
4166
|
+
hash: z40.string()
|
|
4083
4167
|
});
|
|
4084
|
-
var NotesWriteParams =
|
|
4168
|
+
var NotesWriteParams = z40.strictObject({
|
|
4085
4169
|
folder: NoteFolder.default("General"),
|
|
4086
4170
|
/** The note's name, without ".md". */
|
|
4087
|
-
label:
|
|
4088
|
-
content:
|
|
4171
|
+
label: z40.string().min(1).max(200).regex(/^[^/\\:*?"<>|]+$/),
|
|
4172
|
+
content: z40.string().max(10485760),
|
|
4089
4173
|
/** Write only when the note is still this version (notes.read's hash); a change since answers CONFLICT. */
|
|
4090
|
-
if_hash:
|
|
4174
|
+
if_hash: z40.string().length(64).optional()
|
|
4091
4175
|
});
|
|
4092
|
-
var NotesWriteResult =
|
|
4093
|
-
var NotesSearchParams =
|
|
4094
|
-
query:
|
|
4095
|
-
limit:
|
|
4176
|
+
var NotesWriteResult = z40.strictObject({ path: z40.string(), bytes: nonNegInt, created: z40.boolean(), hash: z40.string() });
|
|
4177
|
+
var NotesSearchParams = z40.strictObject({
|
|
4178
|
+
query: z40.string().min(1).max(512),
|
|
4179
|
+
limit: z40.int().min(1).max(200).default(50)
|
|
4096
4180
|
});
|
|
4097
|
-
var NotesMatch =
|
|
4098
|
-
path:
|
|
4099
|
-
label:
|
|
4100
|
-
folder:
|
|
4181
|
+
var NotesMatch = z40.strictObject({
|
|
4182
|
+
path: z40.string(),
|
|
4183
|
+
label: z40.string(),
|
|
4184
|
+
folder: z40.string(),
|
|
4101
4185
|
/** The matching lines (at most five), trimmed. */
|
|
4102
|
-
lines:
|
|
4186
|
+
lines: z40.array(z40.string())
|
|
4103
4187
|
});
|
|
4104
|
-
var NotesSearchResult =
|
|
4188
|
+
var NotesSearchResult = z40.strictObject({ matches: z40.array(NotesMatch), total: nonNegInt });
|
|
4105
4189
|
|
|
4106
4190
|
// src/schema/documents.ts
|
|
4107
|
-
import { z as
|
|
4191
|
+
import { z as z41 } from "zod";
|
|
4108
4192
|
var DOCUMENTS_MAX_TEXT_CHARS = 1048576;
|
|
4109
|
-
var DocumentsPdfTextParams =
|
|
4193
|
+
var DocumentsPdfTextParams = z41.strictObject({
|
|
4110
4194
|
path: AbsPath,
|
|
4111
4195
|
/** 1-based, inclusive. */
|
|
4112
|
-
first_page:
|
|
4113
|
-
last_page:
|
|
4114
|
-
max_chars:
|
|
4196
|
+
first_page: z41.int().min(1).optional(),
|
|
4197
|
+
last_page: z41.int().min(1).optional(),
|
|
4198
|
+
max_chars: z41.int().min(1).max(DOCUMENTS_MAX_TEXT_CHARS).default(2e5)
|
|
4115
4199
|
});
|
|
4116
|
-
var DocumentsPdfPage =
|
|
4117
|
-
var DocumentsPdfTextResult =
|
|
4200
|
+
var DocumentsPdfPage = z41.strictObject({ page: z41.int().min(1), text: z41.string() });
|
|
4201
|
+
var DocumentsPdfTextResult = z41.strictObject({
|
|
4118
4202
|
pages: nonNegInt,
|
|
4119
4203
|
/** Each page read, in order (an image-only page has empty text: OCR it). */
|
|
4120
|
-
read:
|
|
4121
|
-
truncated:
|
|
4122
|
-
title:
|
|
4123
|
-
author:
|
|
4204
|
+
read: z41.array(DocumentsPdfPage),
|
|
4205
|
+
truncated: z41.boolean(),
|
|
4206
|
+
title: z41.string().nullable(),
|
|
4207
|
+
author: z41.string().nullable()
|
|
4124
4208
|
});
|
|
4125
|
-
var DocumentsOcrParams =
|
|
4209
|
+
var DocumentsOcrParams = z41.strictObject({
|
|
4126
4210
|
path: AbsPath,
|
|
4127
4211
|
/** BCP-47 language hints ("en-US", "fr-FR"); absent: the OS's own choice. */
|
|
4128
|
-
languages:
|
|
4212
|
+
languages: z41.array(z41.string().min(2).max(16)).max(8).optional(),
|
|
4129
4213
|
/** Faster, less accurate. */
|
|
4130
|
-
fast:
|
|
4214
|
+
fast: z41.boolean().default(false)
|
|
4131
4215
|
});
|
|
4132
|
-
var DocumentsOcrLine =
|
|
4133
|
-
text:
|
|
4216
|
+
var DocumentsOcrLine = z41.strictObject({
|
|
4217
|
+
text: z41.string(),
|
|
4134
4218
|
/** 0–1; null where the engine does not say. */
|
|
4135
|
-
confidence:
|
|
4219
|
+
confidence: z41.number().min(0).max(1).nullable()
|
|
4136
4220
|
});
|
|
4137
|
-
var DocumentsOcrResult =
|
|
4138
|
-
text:
|
|
4139
|
-
lines:
|
|
4140
|
-
truncated:
|
|
4221
|
+
var DocumentsOcrResult = z41.strictObject({
|
|
4222
|
+
text: z41.string(),
|
|
4223
|
+
lines: z41.array(DocumentsOcrLine),
|
|
4224
|
+
truncated: z41.boolean(),
|
|
4141
4225
|
/** Which engine read it ("vision" on macOS, "windows-ocr", "tesseract"). */
|
|
4142
|
-
engine:
|
|
4226
|
+
engine: z41.string()
|
|
4143
4227
|
});
|
|
4144
|
-
var DocumentsImageResizeParams =
|
|
4228
|
+
var DocumentsImageResizeParams = z41.strictObject({
|
|
4145
4229
|
path: AbsPath,
|
|
4146
4230
|
/** Where to write it; absent: next to the original, "<name>-resized.<ext>". */
|
|
4147
4231
|
out_path: AbsPath.optional(),
|
|
4148
4232
|
/** The longest side, kept in proportion; absent: the size stays (a format change only). */
|
|
4149
|
-
max_size:
|
|
4150
|
-
format:
|
|
4151
|
-
overwrite:
|
|
4233
|
+
max_size: z41.int().min(1).max(32768).optional(),
|
|
4234
|
+
format: z41.enum(["png", "jpeg", "tiff", "heic", "bmp", "gif"]).optional(),
|
|
4235
|
+
overwrite: z41.boolean().default(false)
|
|
4152
4236
|
});
|
|
4153
|
-
var DocumentsImageResizeResult =
|
|
4154
|
-
path:
|
|
4237
|
+
var DocumentsImageResizeResult = z41.strictObject({
|
|
4238
|
+
path: z41.string(),
|
|
4155
4239
|
width: nonNegInt,
|
|
4156
4240
|
height: nonNegInt,
|
|
4157
4241
|
bytes: nonNegInt
|
|
4158
4242
|
});
|
|
4159
|
-
var DocumentsParagraph =
|
|
4160
|
-
style:
|
|
4161
|
-
text:
|
|
4243
|
+
var DocumentsParagraph = z41.strictObject({
|
|
4244
|
+
style: z41.enum(["title", "heading1", "heading2", "heading3", "body", "bullet", "numbered", "quote", "code"]).default("body"),
|
|
4245
|
+
text: z41.string().max(1e5)
|
|
4162
4246
|
});
|
|
4163
|
-
var DocumentsSheet =
|
|
4164
|
-
name:
|
|
4247
|
+
var DocumentsSheet = z41.strictObject({
|
|
4248
|
+
name: z41.string().min(1).max(31),
|
|
4165
4249
|
/** Rows of cells; the first row is the header when `header` is true. */
|
|
4166
|
-
rows:
|
|
4167
|
-
header:
|
|
4250
|
+
rows: z41.array(z41.array(z41.union([z41.string().max(32767), z41.number(), z41.boolean(), z41.null()])).max(16384)).max(1e5),
|
|
4251
|
+
header: z41.boolean().default(true)
|
|
4168
4252
|
});
|
|
4169
|
-
var DocumentsOfficeGenerateParams =
|
|
4170
|
-
kind:
|
|
4253
|
+
var DocumentsOfficeGenerateParams = z41.strictObject({
|
|
4254
|
+
kind: z41.enum(["docx", "xlsx"]),
|
|
4171
4255
|
path: AbsPath,
|
|
4172
|
-
title:
|
|
4256
|
+
title: z41.string().max(1024).optional(),
|
|
4173
4257
|
/** docx: the document's paragraphs, in order. */
|
|
4174
|
-
paragraphs:
|
|
4258
|
+
paragraphs: z41.array(DocumentsParagraph).max(5e4).optional(),
|
|
4175
4259
|
/** xlsx: the workbook's sheets, in order. */
|
|
4176
|
-
sheets:
|
|
4177
|
-
overwrite:
|
|
4260
|
+
sheets: z41.array(DocumentsSheet).min(1).max(64).optional(),
|
|
4261
|
+
overwrite: z41.boolean().default(false)
|
|
4178
4262
|
});
|
|
4179
|
-
var DocumentsOfficeGenerateResult =
|
|
4180
|
-
var EntitiesNerParams =
|
|
4181
|
-
text:
|
|
4263
|
+
var DocumentsOfficeGenerateResult = z41.strictObject({ path: z41.string(), bytes: nonNegInt });
|
|
4264
|
+
var EntitiesNerParams = z41.strictObject({
|
|
4265
|
+
text: z41.string().min(1).max(DOCUMENTS_MAX_TEXT_CHARS),
|
|
4182
4266
|
/** Which kinds to keep; absent: all three. */
|
|
4183
|
-
labels:
|
|
4267
|
+
labels: z41.array(z41.enum(["person", "place", "organization"])).min(1).max(3).optional()
|
|
4184
4268
|
});
|
|
4185
|
-
var EntitySpan =
|
|
4186
|
-
text:
|
|
4187
|
-
label:
|
|
4269
|
+
var EntitySpan = z41.strictObject({
|
|
4270
|
+
text: z41.string(),
|
|
4271
|
+
label: z41.string(),
|
|
4188
4272
|
/** Character offsets into the text (UTF-16, as JavaScript counts). */
|
|
4189
4273
|
start: nonNegInt,
|
|
4190
4274
|
end: nonNegInt
|
|
4191
4275
|
});
|
|
4192
|
-
var EntitiesNerResult =
|
|
4193
|
-
var PiiKind =
|
|
4194
|
-
var EntitiesPiiParams =
|
|
4195
|
-
text:
|
|
4196
|
-
kinds:
|
|
4276
|
+
var EntitiesNerResult = z41.strictObject({ entities: z41.array(EntitySpan), engine: z41.string() });
|
|
4277
|
+
var PiiKind = z41.enum(["email", "phone", "credit_card", "us_ssn", "iban", "ip_address", "url", "api_key"]);
|
|
4278
|
+
var EntitiesPiiParams = z41.strictObject({
|
|
4279
|
+
text: z41.string().min(1).max(DOCUMENTS_MAX_TEXT_CHARS),
|
|
4280
|
+
kinds: z41.array(PiiKind).min(1).max(8).optional(),
|
|
4197
4281
|
/** Also answer the text with each finding replaced by its kind ("[email]"). */
|
|
4198
|
-
redact:
|
|
4282
|
+
redact: z41.boolean().default(false)
|
|
4199
4283
|
});
|
|
4200
|
-
var EntitiesPiiResult =
|
|
4201
|
-
findings:
|
|
4202
|
-
redacted:
|
|
4284
|
+
var EntitiesPiiResult = z41.strictObject({
|
|
4285
|
+
findings: z41.array(z41.strictObject({ kind: PiiKind, text: z41.string(), start: nonNegInt, end: nonNegInt })),
|
|
4286
|
+
redacted: z41.string().nullable()
|
|
4203
4287
|
});
|
|
4204
4288
|
|
|
4205
4289
|
// src/schema/registry.ts
|
|
@@ -4266,6 +4350,9 @@ var OPS = {
|
|
|
4266
4350
|
"apps.windows.refresh_usage": { params: AppsWindowsRefreshUsageParams, result: AppsWindowActionResult, kind: "unary", since: "1.10", errors: ["NOT_FOUND", "TIMEOUT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
4267
4351
|
"apps.accounts.usage": { params: AppsAccountsUsageParams, result: AppsAccountsUsageResult, kind: "unary", since: "1.10", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
4268
4352
|
"apps.accounts.resets": { params: AppsAccountsResetsParams, result: AppsAccountsResetsResult, kind: "unary", since: "1.10", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
4353
|
+
// 1.47: instances and accounts kept apart — an account's usage is the account's, every instance shows it by id.
|
|
4354
|
+
"apps.instances.list": { params: AppsInstancesListParams, result: AppsInstancesListResult, kind: "unary", since: "1.47", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
4355
|
+
"apps.accounts.list": { params: AppsAccountsListParams, result: AppsAccountsListResult, kind: "unary", since: "1.47", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
4269
4356
|
"apps.projects.move": { params: AppsProjectsMoveParams, result: AppsProjectsMoveResult, kind: "unary", since: "1.10", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
4270
4357
|
"apps.projects.create": { params: AppsProjectsCreateParams, result: AppsProjectsCreateResult, kind: "unary", since: "1.10", errors: ["INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
4271
4358
|
"apps.projects.import_pins": { params: AppsProjectsImportPinsParams, result: AppsProjectsImportPinsResult, kind: "unary", since: "1.10", errors: ["CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
|
|
@@ -4526,6 +4613,16 @@ var SERVICES = {
|
|
|
4526
4613
|
}
|
|
4527
4614
|
};
|
|
4528
4615
|
var NAMED_SCHEMAS = {
|
|
4616
|
+
InstanceStatus,
|
|
4617
|
+
AppInstall,
|
|
4618
|
+
AppInstance,
|
|
4619
|
+
AccountResetSource,
|
|
4620
|
+
AccountGap,
|
|
4621
|
+
AppAccount,
|
|
4622
|
+
AppsInstancesListParams,
|
|
4623
|
+
AppsInstancesListResult,
|
|
4624
|
+
AppsAccountsListParams,
|
|
4625
|
+
AppsAccountsListResult,
|
|
4529
4626
|
ProtocolVersion,
|
|
4530
4627
|
RequestId,
|
|
4531
4628
|
ResourceId,
|
|
@@ -5320,7 +5417,8 @@ var FIELDS_SINCE = {
|
|
|
5320
5417
|
SysinfoGetResult: { requirements: "1.41" },
|
|
5321
5418
|
"SysinfoGetResult.permissions[]": { detail: "1.41" },
|
|
5322
5419
|
MessagesSendParams: { service: "1.42" },
|
|
5323
|
-
SysinfoHardwareResult: { graphics: "1.45" }
|
|
5420
|
+
SysinfoHardwareResult: { graphics: "1.45" },
|
|
5421
|
+
DownloadRow: { error: "1.46" }
|
|
5324
5422
|
};
|
|
5325
5423
|
var NULL_SINCE = {
|
|
5326
5424
|
"RelayDeviceStatusEvent.since_ms": { since: "1.1", olderPeersGet: 0 }
|
|
@@ -5423,6 +5521,7 @@ var NESTED_RESULTS = /* @__PURE__ */ new Map([
|
|
|
5423
5521
|
["account.agents.list", [["agents", "AccountAgent"]]],
|
|
5424
5522
|
["web.scrape", [["pages", "WebScrapePage"]]],
|
|
5425
5523
|
["sysinfo.get", [["permissions", "SysinfoGetResult.permissions[]"]]],
|
|
5524
|
+
["models.downloads.list", [["downloads", "DownloadRow"]]],
|
|
5426
5525
|
["apps.projects.to_window", [["group", "ProjectMoveGroup"]]]
|
|
5427
5526
|
]);
|
|
5428
5527
|
function stripNested(value, nested, version) {
|
|
@@ -5485,7 +5584,7 @@ function forPeer(op, part, value, version) {
|
|
|
5485
5584
|
var VERSIONED_RESULT_OPS = [.../* @__PURE__ */ new Set([...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys(), ...NESTED_RESULTS.keys()])];
|
|
5486
5585
|
|
|
5487
5586
|
// src/contract.ts
|
|
5488
|
-
var CONTRACT_SHA256 = "
|
|
5587
|
+
var CONTRACT_SHA256 = "502c8718b1d2fd0fde43daed047da5a7b158f81ffa3846c7d73cda879777fe37";
|
|
5489
5588
|
|
|
5490
5589
|
// src/close-policy.ts
|
|
5491
5590
|
var CLOSE_RULES = {
|
|
@@ -5896,16 +5995,21 @@ export {
|
|
|
5896
5995
|
AccountAgentsListResult,
|
|
5897
5996
|
AccountAgentsRunsParams,
|
|
5898
5997
|
AccountAgentsRunsResult,
|
|
5998
|
+
AccountGap,
|
|
5899
5999
|
AccountReadState,
|
|
5900
6000
|
AccountReset,
|
|
6001
|
+
AccountResetSource,
|
|
5901
6002
|
AccountRowId,
|
|
5902
6003
|
AccountUsage,
|
|
5903
6004
|
AccountVaultCopyParams,
|
|
5904
6005
|
AccountVaultCopyResult,
|
|
5905
6006
|
AccountVaultListParams,
|
|
5906
6007
|
AccountVaultListResult,
|
|
6008
|
+
AppAccount,
|
|
5907
6009
|
AppFeatureStatus,
|
|
5908
6010
|
AppInfo,
|
|
6011
|
+
AppInstall,
|
|
6012
|
+
AppInstance,
|
|
5909
6013
|
AppKey,
|
|
5910
6014
|
AppProfile,
|
|
5911
6015
|
AppProfileId,
|
|
@@ -5913,6 +6017,8 @@ export {
|
|
|
5913
6017
|
AppSupport,
|
|
5914
6018
|
AppUsageReading,
|
|
5915
6019
|
AppWindowInfo,
|
|
6020
|
+
AppsAccountsListParams,
|
|
6021
|
+
AppsAccountsListResult,
|
|
5916
6022
|
AppsAccountsResetsParams,
|
|
5917
6023
|
AppsAccountsResetsResult,
|
|
5918
6024
|
AppsAccountsUsageParams,
|
|
@@ -5934,6 +6040,8 @@ export {
|
|
|
5934
6040
|
AppsChatsWatchParams,
|
|
5935
6041
|
AppsChatsWatchResult,
|
|
5936
6042
|
AppsChatsWatchStateEvent,
|
|
6043
|
+
AppsInstancesListParams,
|
|
6044
|
+
AppsInstancesListResult,
|
|
5937
6045
|
AppsListParams,
|
|
5938
6046
|
AppsListResult,
|
|
5939
6047
|
AppsOpenParams,
|
|
@@ -6327,6 +6435,7 @@ export {
|
|
|
6327
6435
|
InputSetKeyboardSettingsParams,
|
|
6328
6436
|
InputTypeTextParams,
|
|
6329
6437
|
InputTypeTextResult,
|
|
6438
|
+
InstanceStatus,
|
|
6330
6439
|
LEGACY_ACTIONS,
|
|
6331
6440
|
LEGACY_DISPATCHERS,
|
|
6332
6441
|
Limits,
|