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