@ai-matrx/desktop-protocol 0.21.29 → 0.21.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -22,8 +22,19 @@ var src_exports = {};
22
22
  __export(src_exports, {
23
23
  AbsPath: () => AbsPath,
24
24
  AccountAgent: () => AccountAgent,
25
+ AccountAgentDetail: () => AccountAgentDetail,
26
+ AccountAgentRun: () => AccountAgentRun,
27
+ AccountAgentRunSort: () => AccountAgentRunSort,
28
+ AccountAgentRunStatus: () => AccountAgentRunStatus,
29
+ AccountAgentVariable: () => AccountAgentVariable,
30
+ AccountAgentsFavoriteParams: () => AccountAgentsFavoriteParams,
31
+ AccountAgentsFavoriteResult: () => AccountAgentsFavoriteResult,
32
+ AccountAgentsGetParams: () => AccountAgentsGetParams,
33
+ AccountAgentsGetResult: () => AccountAgentsGetResult,
25
34
  AccountAgentsListParams: () => AccountAgentsListParams,
26
35
  AccountAgentsListResult: () => AccountAgentsListResult,
36
+ AccountAgentsRunsParams: () => AccountAgentsRunsParams,
37
+ AccountAgentsRunsResult: () => AccountAgentsRunsResult,
27
38
  AccountReadState: () => AccountReadState,
28
39
  AccountReset: () => AccountReset,
29
40
  AccountRowId: () => AccountRowId,
@@ -192,17 +203,100 @@ __export(src_exports, {
192
203
  ClipboardWriteResult: () => ClipboardWriteResult,
193
204
  CloseCode: () => CloseCode,
194
205
  CloseCodeValue: () => CloseCodeValue,
206
+ CodingActiveElsewhere: () => CodingActiveElsewhere,
207
+ CodingActivityParams: () => CodingActivityParams,
208
+ CodingActivityResult: () => CodingActivityResult,
209
+ CodingAgentSelectionParams: () => CodingAgentSelectionParams,
210
+ CodingAgentSetParams: () => CodingAgentSetParams,
211
+ CodingAgentSetResult: () => CodingAgentSetResult,
212
+ CodingAgentsAccessParams: () => CodingAgentsAccessParams,
213
+ CodingAgentsAccessResult: () => CodingAgentsAccessResult,
214
+ CodingChangedEvent: () => CodingChangedEvent,
215
+ CodingChatPreference: () => CodingChatPreference,
216
+ CodingClientRequestId: () => CodingClientRequestId,
217
+ CodingDiscoverParams: () => CodingDiscoverParams,
218
+ CodingDiscoverResult: () => CodingDiscoverResult,
219
+ CodingDiscoveredChat: () => CodingDiscoveredChat,
220
+ CodingFolderCheck: () => CodingFolderCheck,
221
+ CodingFoldersCheckParams: () => CodingFoldersCheckParams,
222
+ CodingFoldersCheckResult: () => CodingFoldersCheckResult,
223
+ CodingFoldersCreateParams: () => CodingFoldersCreateParams,
224
+ CodingFoldersCreateResult: () => CodingFoldersCreateResult,
225
+ CodingFoldersRecentParams: () => CodingFoldersRecentParams,
226
+ CodingFoldersRecentResult: () => CodingFoldersRecentResult,
227
+ CodingGapEvent: () => CodingGapEvent,
195
228
  CodingHistoryBlocked: () => CodingHistoryBlocked,
196
229
  CodingHistoryFailure: () => CodingHistoryFailure,
197
230
  CodingHistoryImportMissingParams: () => CodingHistoryImportMissingParams,
198
231
  CodingHistoryImportMissingResult: () => CodingHistoryImportMissingResult,
232
+ CodingHistoryParams: () => CodingHistoryParams,
199
233
  CodingHistoryProgressEvent: () => CodingHistoryProgressEvent,
234
+ CodingHistoryRecord: () => CodingHistoryRecord,
235
+ CodingHistoryResult: () => CodingHistoryResult,
200
236
  CodingHistoryRun: () => CodingHistoryRun,
201
237
  CodingHistoryStep: () => CodingHistoryStep,
202
238
  CodingImportNextParams: () => CodingImportNextParams,
239
+ CodingItemEvent: () => CodingItemEvent,
240
+ CodingItemFullParams: () => CodingItemFullParams,
241
+ CodingItemFullResult: () => CodingItemFullResult,
242
+ CodingOptionsSetParams: () => CodingOptionsSetParams,
243
+ CodingOptionsSetResult: () => CodingOptionsSetResult,
203
244
  CodingPlanMissingParams: () => CodingPlanMissingParams,
245
+ CodingPrefsListParams: () => CodingPrefsListParams,
246
+ CodingPrefsListResult: () => CodingPrefsListResult,
247
+ CodingPrefsSetParams: () => CodingPrefsSetParams,
248
+ CodingPrefsSetResult: () => CodingPrefsSetResult,
249
+ CodingProviderBinary: () => CodingProviderBinary,
250
+ CodingProviderName: () => CodingProviderName,
251
+ CodingProviderProblem: () => CodingProviderProblem,
252
+ CodingProviderStatus: () => CodingProviderStatus,
253
+ CodingProvidersParams: () => CodingProvidersParams,
254
+ CodingProvidersResult: () => CodingProvidersResult,
255
+ CodingQuotaWindow: () => CodingQuotaWindow,
256
+ CodingRecentFolder: () => CodingRecentFolder,
257
+ CodingRecentRow: () => CodingRecentRow,
258
+ CodingRecentSeenParams: () => CodingRecentSeenParams,
259
+ CodingRecentSeenResult: () => CodingRecentSeenResult,
260
+ CodingReconcileParams: () => CodingReconcileParams,
261
+ CodingReconcileResult: () => CodingReconcileResult,
262
+ CodingRunRecord: () => CodingRunRecord,
263
+ CodingRunStatus: () => CodingRunStatus,
264
+ CodingRunUsage: () => CodingRunUsage,
265
+ CodingRunsListParams: () => CodingRunsListParams,
266
+ CodingRunsListResult: () => CodingRunsListResult,
267
+ CodingSearchParams: () => CodingSearchParams,
268
+ CodingSearchResult: () => CodingSearchResult,
269
+ CodingSendParams: () => CodingSendParams,
270
+ CodingSendResult: () => CodingSendResult,
204
271
  CodingServiceCredentials: () => CodingServiceCredentials,
205
272
  CodingServiceProgress: () => CodingServiceProgress,
273
+ CodingSessionAgent: () => CodingSessionAgent,
274
+ CodingSessionAgentPart: () => CodingSessionAgentPart,
275
+ CodingSessionRecord: () => CodingSessionRecord,
276
+ CodingSessionWatchParams: () => CodingSessionWatchParams,
277
+ CodingSessionWatchResult: () => CodingSessionWatchResult,
278
+ CodingSessionsListParams: () => CodingSessionsListParams,
279
+ CodingSessionsListResult: () => CodingSessionsListResult,
280
+ CodingStartParams: () => CodingStartParams,
281
+ CodingStartResult: () => CodingStartResult,
282
+ CodingStartedBy: () => CodingStartedBy,
283
+ CodingStopElsewhereParams: () => CodingStopElsewhereParams,
284
+ CodingStopElsewhereResult: () => CodingStopElsewhereResult,
285
+ CodingStopParams: () => CodingStopParams,
286
+ CodingStopResult: () => CodingStopResult,
287
+ CodingTakeoverParams: () => CodingTakeoverParams,
288
+ CodingTakeoverResult: () => CodingTakeoverResult,
289
+ CodingTitleStatus: () => CodingTitleStatus,
290
+ CodingTitlesStatusParams: () => CodingTitlesStatusParams,
291
+ CodingTitlesStatusResult: () => CodingTitlesStatusResult,
292
+ CodingTranscriptItem: () => CodingTranscriptItem,
293
+ CodingTranscriptRawParams: () => CodingTranscriptRawParams,
294
+ CodingTranscriptRawResult: () => CodingTranscriptRawResult,
295
+ CodingTranscriptReadParams: () => CodingTranscriptReadParams,
296
+ CodingTranscriptReadResult: () => CodingTranscriptReadResult,
297
+ CodingWatchParams: () => CodingWatchParams,
298
+ CodingWatchResult: () => CodingWatchResult,
299
+ CodingWatchStateEvent: () => CodingWatchStateEvent,
206
300
  ColdChat: () => ColdChat,
207
301
  ContactDetail: () => ContactDetail,
208
302
  ContactLabeled: () => ContactLabeled,
@@ -452,7 +546,10 @@ __export(src_exports, {
452
546
  NotesWriteResult: () => NotesWriteResult,
453
547
  OPS: () => OPS,
454
548
  OpDescriptor: () => OpDescriptor,
549
+ OsGrantState: () => OsGrantState,
455
550
  OsPermissionName: () => OsPermissionName,
551
+ OsRequirementName: () => OsRequirementName,
552
+ PERMISSIONS_SINCE: () => PERMISSIONS_SINCE,
456
553
  PING_TEXT: () => PING_TEXT,
457
554
  PONG_TEXT: () => PONG_TEXT,
458
555
  PROTOCOL_MAJOR: () => PROTOCOL_MAJOR,
@@ -565,6 +662,8 @@ __export(src_exports, {
565
662
  SessionControlChangedEvent: () => SessionControlChangedEvent,
566
663
  SessionDetachParams: () => SessionDetachParams,
567
664
  SessionDetachResult: () => SessionDetachResult,
665
+ SessionIdentifyParams: () => SessionIdentifyParams,
666
+ SessionIdentifyResult: () => SessionIdentifyResult,
568
667
  SessionListParams: () => SessionListParams,
569
668
  SessionListResult: () => SessionListResult,
570
669
  SessionReleaseParams: () => SessionReleaseParams,
@@ -628,7 +727,13 @@ __export(src_exports, {
628
727
  ToolPlatform: () => ToolPlatform,
629
728
  ToolResultsFile: () => ToolResultsFile,
630
729
  ToolTransport: () => ToolTransport,
730
+ ToolsParseFile: () => ToolsParseFile,
631
731
  ToolsServiceProgress: () => ToolsServiceProgress,
732
+ ToolsWebBrowserFetchParams: () => ToolsWebBrowserFetchParams,
733
+ ToolsWebBrowserFetchResult: () => ToolsWebBrowserFetchResult,
734
+ ToolsWebScrapePage: () => ToolsWebScrapePage,
735
+ ToolsWebScrapeParams: () => ToolsWebScrapeParams,
736
+ ToolsWebScrapeResult: () => ToolsWebScrapeResult,
632
737
  ToolsWebSearchParams: () => ToolsWebSearchParams,
633
738
  TranscriptSegment: () => TranscriptSegment,
634
739
  TranscriptionModelId: () => TranscriptionModelId,
@@ -638,11 +743,39 @@ __export(src_exports, {
638
743
  VaultItemKind: () => VaultItemKind,
639
744
  VaultItemSummary: () => VaultItemSummary,
640
745
  WEB_MAX_TEXT_CHARS: () => WEB_MAX_TEXT_CHARS,
746
+ WebAttachTarget: () => WebAttachTarget,
641
747
  WebBrowserFetchParams: () => WebBrowserFetchParams,
642
748
  WebBrowserFetchResult: () => WebBrowserFetchResult,
643
749
  WebFetchParams: () => WebFetchParams,
644
750
  WebFetchResult: () => WebFetchResult,
645
751
  WebHeader: () => WebHeader,
752
+ WebLand: () => WebLand,
753
+ WebLogCaller: () => WebLogCaller,
754
+ WebLogClearParams: () => WebLogClearParams,
755
+ WebLogClearResult: () => WebLogClearResult,
756
+ WebLogEntry: () => WebLogEntry,
757
+ WebLogListParams: () => WebLogListParams,
758
+ WebLogListResult: () => WebLogListResult,
759
+ WebLogResult: () => WebLogResult,
760
+ WebLogVia: () => WebLogVia,
761
+ WebNotSavedReason: () => WebNotSavedReason,
762
+ WebOutboxDiscardParams: () => WebOutboxDiscardParams,
763
+ WebOutboxDiscardResult: () => WebOutboxDiscardResult,
764
+ WebOutboxItem: () => WebOutboxItem,
765
+ WebOutboxListParams: () => WebOutboxListParams,
766
+ WebOutboxListResult: () => WebOutboxListResult,
767
+ WebOutboxRetryParams: () => WebOutboxRetryParams,
768
+ WebOutboxRetryResult: () => WebOutboxRetryResult,
769
+ WebProgressEvent: () => WebProgressEvent,
770
+ WebResearchFetchParams: () => WebResearchFetchParams,
771
+ WebResearchFetchResult: () => WebResearchFetchResult,
772
+ WebResearchItem: () => WebResearchItem,
773
+ WebResearchItemState: () => WebResearchItemState,
774
+ WebResearchQueueParams: () => WebResearchQueueParams,
775
+ WebResearchQueueResult: () => WebResearchQueueResult,
776
+ WebRuntimeParams: () => WebRuntimeParams,
777
+ WebRuntimeState: () => WebRuntimeState,
778
+ WebRuntimeStateName: () => WebRuntimeStateName,
646
779
  WebScrapePage: () => WebScrapePage,
647
780
  WebScrapeParams: () => WebScrapeParams,
648
781
  WebScrapeResult: () => WebScrapeResult,
@@ -650,6 +783,8 @@ __export(src_exports, {
650
783
  WebSearchParams: () => WebSearchParams,
651
784
  WebSearchQueryResult: () => WebSearchQueryResult,
652
785
  WebSearchResult: () => WebSearchResult,
786
+ WebSourceNotice: () => WebSourceNotice,
787
+ WebSourceState: () => WebSourceState,
653
788
  Welcome: () => Welcome,
654
789
  WindowFocusParams: () => WindowFocusParams,
655
790
  WindowFocusResult: () => WindowFocusResult,
@@ -709,7 +844,7 @@ module.exports = __toCommonJS(src_exports);
709
844
  var import_zod = require("zod");
710
845
  var import_uuid = require("@ai-matrx/kit/uuid");
711
846
  var PROTOCOL_MAJOR = 1;
712
- var PROTOCOL_MINOR = 37;
847
+ var PROTOCOL_MINOR = 41;
713
848
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
714
849
  var ProtocolVersion = import_zod.z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
715
850
  var RequestId = import_zod.z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -1101,8 +1236,17 @@ var OsPermissionName = import_zod5.z.enum([
1101
1236
  "location",
1102
1237
  "local_network",
1103
1238
  "bluetooth",
1104
- "notifications"
1239
+ "notifications",
1240
+ // (1.41) Matrx Local's remaining kinds, checked on every OS (its permissions checker): a peer
1241
+ // older than 1.41 is never sent these rows (versioning.ts PERMISSIONS_SINCE).
1242
+ "reminders",
1243
+ "speech_recognition",
1244
+ "messages",
1245
+ "mail",
1246
+ "wifi"
1105
1247
  ]);
1248
+ var OsGrantState = import_zod5.z.enum(["granted", "denied", "not_determined", "not_applicable"]);
1249
+ var OsRequirementName = import_zod5.z.enum(["secret_storage", "tray", "display_server", "helper_programs", "smart_app_control", "path_length"]);
1106
1250
  var SysinfoGetParams = import_zod5.z.strictObject({});
1107
1251
  var SysinfoGetResult = import_zod5.z.strictObject({
1108
1252
  device_id: DeviceId,
@@ -1132,9 +1276,20 @@ var SysinfoGetResult = import_zod5.z.strictObject({
1132
1276
  import_zod5.z.strictObject({
1133
1277
  name: OsPermissionName,
1134
1278
  state: import_zod5.z.enum(["granted", "denied", "not_determined", "not_applicable"]),
1135
- settings_url: import_zod5.z.string().max(512).nullable()
1279
+ settings_url: import_zod5.z.string().max(512).nullable(),
1280
+ /** (1.41) One short fact when the state alone does not say it ("No camera", "Bluetooth is off"); absent when there is none. */
1281
+ detail: import_zod5.z.string().max(256).optional()
1136
1282
  })
1137
- )
1283
+ ),
1284
+ /** (1.41) The requirements beyond the grants (OsRequirementName), each read when asked. */
1285
+ requirements: import_zod5.z.array(
1286
+ import_zod5.z.strictObject({
1287
+ name: OsRequirementName,
1288
+ state: OsGrantState,
1289
+ settings_url: import_zod5.z.string().max(512).nullable(),
1290
+ detail: import_zod5.z.string().max(256).nullable()
1291
+ })
1292
+ ).optional()
1138
1293
  });
1139
1294
  var SysinfoHardwareParams = import_zod5.z.strictObject({});
1140
1295
  var SysinfoHardwareResult = import_zod5.z.strictObject({
@@ -1633,7 +1788,22 @@ var AccountAgent = import_zod11.z.strictObject({
1633
1788
  shared_by: import_zod11.z.string().max(320).nullable(),
1634
1789
  /** The organization it belongs to. */
1635
1790
  organization: import_zod11.z.string().max(200).nullable(),
1636
- updated_at_ms: epochMs
1791
+ updated_at_ms: epochMs,
1792
+ // 1.39: the catalogue's own row (agx_get_list_full, read whole through @ai-matrx/agents/catalog).
1793
+ /** The agent's tags (the library's search and its inspector). */
1794
+ tags: import_zod11.z.array(import_zod11.z.string().max(120)).max(50).optional(),
1795
+ /** The model it runs (a model catalogue id); absent when it names none. */
1796
+ model_id: AccountRowId.optional(),
1797
+ /** The person's access: owner, admin, editor, viewer or system (the database's own words); absent when unknown. */
1798
+ access_level: import_zod11.z.string().min(1).max(40).optional(),
1799
+ /** The organization's id (the label is `organization`); absent when it has none. */
1800
+ organization_id: AccountRowId.optional(),
1801
+ /** Whose it is: the person's own, shared with them, or one AI Matrx ships (Gallery). */
1802
+ origin: import_zod11.z.enum(["mine", "shared", "system"]).optional(),
1803
+ /** Archived (the catalogue's archive filter decides whether the library lists it). */
1804
+ is_archived: import_zod11.z.boolean().optional(),
1805
+ /** An orchestra: it conducts other agents. */
1806
+ orchestra: import_zod11.z.boolean().optional()
1637
1807
  });
1638
1808
  var AccountAgentsListParams = import_zod11.z.strictObject({});
1639
1809
  var AccountAgentsListResult = import_zod11.z.strictObject({
@@ -1642,6 +1812,70 @@ var AccountAgentsListResult = import_zod11.z.strictObject({
1642
1812
  problem: import_zod11.z.string().max(300).nullable(),
1643
1813
  agents: import_zod11.z.array(AccountAgent).max(2e3)
1644
1814
  });
1815
+ var AccountAgentVariable = import_zod11.z.strictObject({
1816
+ name: import_zod11.z.string().min(1).max(200),
1817
+ /** The default value as text ("" when it has none). */
1818
+ default_value: import_zod11.z.string().max(4e3),
1819
+ required: import_zod11.z.boolean(),
1820
+ help: import_zod11.z.string().max(1e3)
1821
+ });
1822
+ var AccountAgentDetail = import_zod11.z.strictObject({
1823
+ agent: AccountAgent,
1824
+ /** The inputs a run asks for (the agent's variables). */
1825
+ variables: import_zod11.z.array(AccountAgentVariable).max(100),
1826
+ /** How many tools, custom tools, skills and connections it may use. */
1827
+ tool_count: import_zod11.z.int().min(0),
1828
+ custom_tool_count: import_zod11.z.int().min(0),
1829
+ skill_count: import_zod11.z.int().min(0),
1830
+ connection_count: import_zod11.z.int().min(0),
1831
+ /** The model's display name when the catalogue knows it. */
1832
+ model_name: import_zod11.z.string().max(200).nullable()
1833
+ });
1834
+ var AccountAgentsGetParams = import_zod11.z.strictObject({ agent_id: AccountRowId });
1835
+ var AccountAgentsGetResult = import_zod11.z.strictObject({
1836
+ state: AccountReadState,
1837
+ problem: import_zod11.z.string().max(300).nullable(),
1838
+ /** Null when the person cannot open it (not theirs, not shared with them, or gone). */
1839
+ detail: AccountAgentDetail.nullable()
1840
+ });
1841
+ var AccountAgentRunStatus = import_zod11.z.enum(["succeeded", "warned", "failed", "stopped", "waiting", "running"]);
1842
+ var AccountAgentRun = import_zod11.z.strictObject({
1843
+ run_id: AccountRowId,
1844
+ status: AccountAgentRunStatus,
1845
+ started_at_ms: epochMs,
1846
+ completed_at_ms: epochMs.nullable(),
1847
+ duration_ms: import_zod11.z.int().min(0).nullable(),
1848
+ cost: import_zod11.z.number().min(0).nullable(),
1849
+ tokens: import_zod11.z.int().min(0).nullable(),
1850
+ /** One line of the answer (at most 240 characters), when the run kept one. */
1851
+ output_preview: import_zod11.z.string().max(240).nullable(),
1852
+ /** The run's error, one line. */
1853
+ error: import_zod11.z.string().max(300).nullable(),
1854
+ /** The mandate it served, when one named it. */
1855
+ mandate_key: import_zod11.z.string().max(200).nullable(),
1856
+ organization: import_zod11.z.string().max(200).nullable(),
1857
+ /** The conversation that holds its transcript, when it kept one. */
1858
+ conversation_id: AccountRowId.nullable(),
1859
+ has_transcript: import_zod11.z.boolean()
1860
+ });
1861
+ var AccountAgentRunSort = import_zod11.z.enum(["started_at", "duration", "cost", "status"]);
1862
+ var AccountAgentsRunsParams = import_zod11.z.strictObject({
1863
+ agent_id: AccountRowId,
1864
+ status: AccountAgentRunStatus.optional(),
1865
+ sort: AccountAgentRunSort.optional(),
1866
+ descending: import_zod11.z.boolean().optional(),
1867
+ offset: import_zod11.z.int().min(0).max(1e5).optional(),
1868
+ limit: import_zod11.z.int().min(1).max(100).optional()
1869
+ });
1870
+ var AccountAgentsRunsResult = import_zod11.z.strictObject({
1871
+ state: AccountReadState,
1872
+ problem: import_zod11.z.string().max(300).nullable(),
1873
+ /** Every run of this agent the person may see (rows is one page of it). */
1874
+ total: import_zod11.z.int().min(0),
1875
+ rows: import_zod11.z.array(AccountAgentRun).max(100)
1876
+ });
1877
+ var AccountAgentsFavoriteParams = import_zod11.z.strictObject({ agent_id: AccountRowId, favorite: import_zod11.z.boolean() });
1878
+ var AccountAgentsFavoriteResult = import_zod11.z.strictObject({ favorite: import_zod11.z.boolean() });
1645
1879
  var VaultItemKind = import_zod11.z.enum(["login", "passkey", "key", "other"]);
1646
1880
  var VaultFieldSummary = import_zod11.z.strictObject({
1647
1881
  key: import_zod11.z.string().min(1).max(120),
@@ -2494,10 +2728,12 @@ var GitCloneParams = import_zod19.z.strictObject({
2494
2728
  });
2495
2729
 
2496
2730
  // src/schema/web.ts
2731
+ var import_uuid4 = require("@ai-matrx/kit/uuid");
2497
2732
  var import_zod20 = require("zod");
2498
2733
  var WEB_MAX_TEXT_CHARS = 524288;
2499
2734
  var WebUrl = import_zod20.z.string().min(1).max(8192).regex(/^https?:\/\//);
2500
2735
  var WebText = import_zod20.z.string().max(WEB_MAX_TEXT_CHARS);
2736
+ var OrgId = import_zod20.z.string().regex(import_uuid4.UUID_SHAPE_PATTERN);
2501
2737
  var WebHeader = import_zod20.z.strictObject({ name: import_zod20.z.string().min(1).max(256), value: import_zod20.z.string().max(8192) });
2502
2738
  var WebFetchParams = import_zod20.z.strictObject({
2503
2739
  url: WebUrl,
@@ -2519,10 +2755,65 @@ var WebFetchResult = import_zod20.z.strictObject({
2519
2755
  bytes: nonNegInt,
2520
2756
  elapsed_ms: nonNegInt
2521
2757
  });
2758
+ var WebAttachTarget = import_zod20.z.strictObject({
2759
+ entity_type: import_zod20.z.string().min(1).max(64),
2760
+ entity_id: import_zod20.z.string().min(1).max(128),
2761
+ label: import_zod20.z.string().max(200).optional()
2762
+ });
2763
+ var WebLand = import_zod20.z.strictObject({
2764
+ /** The organization the page is saved in; absent: this computer's active organization. */
2765
+ organization_id: OrgId.optional(),
2766
+ /** Keep it: AI processing starts (chunks, search). Unkept pages are saved and wait. */
2767
+ keep: import_zod20.z.boolean().default(false),
2768
+ attach_to: import_zod20.z.array(WebAttachTarget).max(8).default([])
2769
+ });
2770
+ var WebNotSavedReason = import_zod20.z.enum([
2771
+ /** Nobody is signed in on this computer. Saved on sign-in. */
2772
+ "signed_out",
2773
+ /** AI Matrx could not be reached. Retried on its own. */
2774
+ "offline",
2775
+ /** AI Matrx refused it (the message says why). Kept until the person retries or discards it. */
2776
+ "rejected",
2777
+ /** Waiting its turn behind other pages (retried on its own). */
2778
+ "queued"
2779
+ ]);
2780
+ var WebSourceNotice = import_zod20.z.strictObject({ code: import_zod20.z.string().max(120), message: import_zod20.z.string().max(2e3), remedy: import_zod20.z.string().max(120) });
2781
+ var WebSourceState = import_zod20.z.discriminatedUnion("state", [
2782
+ import_zod20.z.strictObject({
2783
+ state: import_zod20.z.literal("saved"),
2784
+ processed_document_id: import_zod20.z.string().min(1).max(64),
2785
+ source_id: import_zod20.z.string().min(1).max(128),
2786
+ /** The page was already saved and nothing changed ("Already saved, no change"). */
2787
+ reused_existing: import_zod20.z.boolean(),
2788
+ /** The page changed: this is a new version of that Source. */
2789
+ new_version_of: import_zod20.z.string().max(64).nullable(),
2790
+ kept: import_zod20.z.boolean(),
2791
+ intelligence: import_zod20.z.enum(["queued", "deferred", "never"]),
2792
+ /** The original page as captured, kept by AI Matrx (null: the organization keeps none). */
2793
+ original_file_id: import_zod20.z.string().max(128).nullable(),
2794
+ /** The organization it was saved in. */
2795
+ organization_id: OrgId,
2796
+ notices: import_zod20.z.array(WebSourceNotice).max(20)
2797
+ }),
2798
+ import_zod20.z.strictObject({
2799
+ state: import_zod20.z.literal("not_saved"),
2800
+ outbox_id: import_zod20.z.string().min(1).max(64),
2801
+ reason: WebNotSavedReason,
2802
+ message: import_zod20.z.string().max(2e3)
2803
+ })
2804
+ ]);
2522
2805
  var WebScrapeParams = import_zod20.z.strictObject({
2523
2806
  urls: import_zod20.z.array(WebUrl).min(1).max(20),
2524
2807
  use_cache: import_zod20.z.boolean().default(true),
2525
- get_links: import_zod20.z.boolean().default(false)
2808
+ get_links: import_zod20.z.boolean().default(false),
2809
+ /**
2810
+ * Since 1.38. `auto` (absent): this computer's scraper (HTTP, its browser only when a page needs
2811
+ * it). `browser`: this computer's own browser renders every page. `server`: AI Matrx's servers
2812
+ * read it (their connection, not this computer's; saved there as a web capture).
2813
+ */
2814
+ engine: import_zod20.z.enum(["auto", "browser", "server"]).optional(),
2815
+ /** Since 1.38: where the pages are saved (see WebLand). */
2816
+ land: WebLand.optional()
2526
2817
  });
2527
2818
  var WebScrapePage = import_zod20.z.strictObject({
2528
2819
  url: import_zod20.z.string(),
@@ -2537,7 +2828,9 @@ var WebScrapePage = import_zod20.z.strictObject({
2537
2828
  /** Why the page failed (blocked, timeout, not found…), in the scraper's words; null when ok. */
2538
2829
  error: import_zod20.z.string().nullable(),
2539
2830
  /** How the page was fetched (http, browser, cache). */
2540
- via: import_zod20.z.string().nullable()
2831
+ via: import_zod20.z.string().nullable(),
2832
+ /** Since 1.38: the page's Source (absent from a 1.37 core, and for a page that failed). */
2833
+ source: WebSourceState.optional()
2541
2834
  });
2542
2835
  var WebScrapeResult = import_zod20.z.strictObject({ pages: import_zod20.z.array(WebScrapePage), elapsed_ms: nonNegInt });
2543
2836
  var WebSearchParams = import_zod20.z.strictObject({
@@ -2561,7 +2854,9 @@ var WebBrowserFetchParams = import_zod20.z.strictObject({
2561
2854
  wait_for: import_zod20.z.string().max(1024).optional(),
2562
2855
  wait_timeout_ms: import_zod20.z.int().min(100).max(12e4).default(3e4),
2563
2856
  /** true: readable text; false: the rendered HTML. */
2564
- extract_text: import_zod20.z.boolean().default(true)
2857
+ extract_text: import_zod20.z.boolean().default(true),
2858
+ /** Since 1.38: where the rendered page is saved (see WebLand). */
2859
+ land: WebLand.optional()
2565
2860
  });
2566
2861
  var WebBrowserFetchResult = import_zod20.z.strictObject({
2567
2862
  url: import_zod20.z.string(),
@@ -2569,7 +2864,137 @@ var WebBrowserFetchResult = import_zod20.z.strictObject({
2569
2864
  title: import_zod20.z.string().nullable(),
2570
2865
  content: WebText,
2571
2866
  truncated: import_zod20.z.boolean(),
2572
- elapsed_ms: nonNegInt
2867
+ elapsed_ms: nonNegInt,
2868
+ /** Since 1.38: the rendered page's Source (absent from a 1.37 core). */
2869
+ source: WebSourceState.optional()
2870
+ });
2871
+ var ToolsParseFile = import_zod20.z.strictObject({
2872
+ /** Absolute path of the gzipped JSON the core reads, saves and then removes. */
2873
+ path: import_zod20.z.string().min(1).max(4096),
2874
+ bytes: nonNegInt
2875
+ });
2876
+ var ToolsWebScrapeParams = import_zod20.z.strictObject({
2877
+ urls: import_zod20.z.array(WebUrl).min(1).max(20),
2878
+ use_cache: import_zod20.z.boolean().default(true),
2879
+ get_links: import_zod20.z.boolean().default(false),
2880
+ /** `browser`: render every page in this computer's browser, then parse it. */
2881
+ engine: import_zod20.z.enum(["auto", "browser"]).default("auto"),
2882
+ /** Pages read at once (desktop.web/scrape_concurrency). */
2883
+ concurrency: import_zod20.z.int().min(1).max(20).default(5),
2884
+ /** The wait between pages from the same site (desktop.web/request_delay_ms). */
2885
+ delay_ms: import_zod20.z.int().min(0).max(3e4).default(0),
2886
+ /** Where the parse files go (the core's spool folder). */
2887
+ spool_dir: import_zod20.z.string().min(1).max(4096)
2888
+ });
2889
+ var ToolsWebScrapePage = import_zod20.z.strictObject({
2890
+ page: WebScrapePage,
2891
+ /** The page's whole parse, for the door; null when the page failed or had no words. */
2892
+ parse: ToolsParseFile.nullable(),
2893
+ /** The page as fetched, for research (rendered HTML or the HTTP body); null when not kept. */
2894
+ html: ToolsParseFile.nullable()
2895
+ });
2896
+ var ToolsWebScrapeResult = import_zod20.z.strictObject({ pages: import_zod20.z.array(ToolsWebScrapePage), elapsed_ms: nonNegInt });
2897
+ var ToolsWebBrowserFetchParams = import_zod20.z.strictObject({
2898
+ url: WebUrl,
2899
+ wait_for: import_zod20.z.string().max(1024).optional(),
2900
+ wait_timeout_ms: import_zod20.z.int().min(100).max(12e4).default(3e4),
2901
+ extract_text: import_zod20.z.boolean().default(true),
2902
+ spool_dir: import_zod20.z.string().min(1).max(4096)
2903
+ });
2904
+ var ToolsWebBrowserFetchResult = import_zod20.z.strictObject({ result: WebBrowserFetchResult, parse: ToolsParseFile.nullable() });
2905
+ var WebRuntimeStateName = import_zod20.z.enum(["not_installed", "installing", "installed", "failed"]);
2906
+ var WebRuntimeParams = import_zod20.z.strictObject({});
2907
+ var WebRuntimeState = import_zod20.z.strictObject({
2908
+ state: WebRuntimeStateName,
2909
+ /** Why it failed, in the installer's words; null otherwise. */
2910
+ error: import_zod20.z.string().max(2e3).nullable(),
2911
+ /** Bytes the browser takes on this computer (its packages and Chromium); null when unknown. */
2912
+ size_bytes: nonNegInt.nullable(),
2913
+ /** Whether it can show a window while it works (false: only the headless shell is installed). */
2914
+ can_show_window: import_zod20.z.boolean()
2915
+ });
2916
+ var WebOutboxItem = import_zod20.z.strictObject({
2917
+ outbox_id: import_zod20.z.string().min(1).max(64),
2918
+ url: import_zod20.z.string().max(8192),
2919
+ title: import_zod20.z.string().max(500).nullable(),
2920
+ organization_id: OrgId.nullable(),
2921
+ reason: WebNotSavedReason,
2922
+ message: import_zod20.z.string().max(2e3),
2923
+ attempts: nonNegInt,
2924
+ created_at_ms: nonNegInt,
2925
+ last_attempt_at_ms: nonNegInt.nullable(),
2926
+ bytes: nonNegInt
2927
+ });
2928
+ var WebOutboxListParams = import_zod20.z.strictObject({});
2929
+ var WebOutboxListResult = import_zod20.z.strictObject({
2930
+ items: import_zod20.z.array(WebOutboxItem),
2931
+ bytes: nonNegInt,
2932
+ /** The most the outbox holds; past it the oldest pages are dropped (and the log says so). */
2933
+ cap_bytes: nonNegInt
2934
+ });
2935
+ var WebOutboxRetryParams = import_zod20.z.strictObject({ outbox_id: import_zod20.z.string().min(1).max(64).optional() });
2936
+ var WebOutboxRetryResult = import_zod20.z.strictObject({ saved: nonNegInt, waiting: nonNegInt });
2937
+ var WebOutboxDiscardParams = import_zod20.z.strictObject({ outbox_id: import_zod20.z.string().min(1).max(64) });
2938
+ var WebOutboxDiscardResult = import_zod20.z.strictObject({ discarded: import_zod20.z.boolean() });
2939
+ var WebLogVia = import_zod20.z.enum(["this_computer", "browser", "server"]);
2940
+ var WebLogCaller = import_zod20.z.enum(["person", "agent", "research", "phone", "other"]);
2941
+ var WebLogResult = import_zod20.z.enum(["saved", "not_saved", "failed", "blocked", "read"]);
2942
+ var WebLogEntry = import_zod20.z.strictObject({
2943
+ id: import_zod20.z.string().min(1).max(64),
2944
+ at_ms: nonNegInt,
2945
+ caller: WebLogCaller,
2946
+ url: import_zod20.z.string().max(8192),
2947
+ title: import_zod20.z.string().max(500).nullable(),
2948
+ result: WebLogResult,
2949
+ /** One sentence: why it failed or was blocked, or the save's notice. Never page text. */
2950
+ detail: import_zod20.z.string().max(1e3).nullable(),
2951
+ via: WebLogVia,
2952
+ duration_ms: nonNegInt,
2953
+ processed_document_id: import_zod20.z.string().max(64).nullable()
2954
+ });
2955
+ var WebLogListParams = import_zod20.z.strictObject({ since_ms: nonNegInt.optional(), limit: import_zod20.z.int().min(1).max(1e3).default(200) });
2956
+ var WebLogListResult = import_zod20.z.strictObject({ entries: import_zod20.z.array(WebLogEntry) });
2957
+ var WebLogClearParams = import_zod20.z.strictObject({});
2958
+ var WebLogClearResult = import_zod20.z.strictObject({ cleared: nonNegInt });
2959
+ var WebProgressEvent = import_zod20.z.strictObject({
2960
+ request_id: RequestId,
2961
+ phase: import_zod20.z.enum(["installing", "fetching", "saving"]),
2962
+ done: nonNegInt,
2963
+ total: nonNegInt
2964
+ });
2965
+ var WebResearchItemState = import_zod20.z.enum(["waiting", "fetching", "saved", "thin", "failed", "cannot_edit", "blocked"]);
2966
+ var WebResearchItem = import_zod20.z.strictObject({
2967
+ topic_id: import_zod20.z.string().min(1).max(64),
2968
+ topic_name: import_zod20.z.string().max(500),
2969
+ source_id: import_zod20.z.string().min(1).max(64),
2970
+ url: import_zod20.z.string().max(8192),
2971
+ title: import_zod20.z.string().max(500).nullable(),
2972
+ /** The capture level this computer would try (1 quick, 2 scroll); 3+ is the extension's. */
2973
+ level: import_zod20.z.int().min(1).max(4),
2974
+ last_failure: import_zod20.z.string().max(1e3).nullable(),
2975
+ state: WebResearchItemState,
2976
+ /** One sentence after a fetch: what happened. */
2977
+ message: import_zod20.z.string().max(1e3).nullable()
2978
+ });
2979
+ var WebResearchQueueParams = import_zod20.z.strictObject({ topic_id: import_zod20.z.string().min(1).max(64).optional() });
2980
+ var WebResearchQueueResult = import_zod20.z.strictObject({
2981
+ state: import_zod20.z.enum(["ready", "signed_out", "unavailable"]),
2982
+ problem: import_zod20.z.string().max(1e3).nullable(),
2983
+ /** L1/L2 items on topics this person can edit: what this computer can fetch. */
2984
+ items: import_zod20.z.array(WebResearchItem),
2985
+ /** Items on topics the person can view but not add to (shown, never fetched). */
2986
+ view_only: nonNegInt
2987
+ });
2988
+ var WebResearchFetchParams = import_zod20.z.strictObject({
2989
+ topic_id: import_zod20.z.string().min(1).max(64).optional(),
2990
+ source_ids: import_zod20.z.array(import_zod20.z.string().min(1).max(64)).max(200).optional()
2991
+ });
2992
+ var WebResearchFetchResult = import_zod20.z.strictObject({
2993
+ items: import_zod20.z.array(WebResearchItem),
2994
+ saved: nonNegInt,
2995
+ thin: nonNegInt,
2996
+ failed: nonNegInt,
2997
+ cannot_edit: nonNegInt
2573
2998
  });
2574
2999
  var ToolsServiceProgress = import_zod20.z.strictObject({ phase: import_zod20.z.enum(["fetching", "installing"]), done: nonNegInt, total: nonNegInt });
2575
3000
 
@@ -2607,7 +3032,27 @@ var SystemSettingsPane = import_zod21.z.enum([
2607
3032
  "storage",
2608
3033
  "system_report",
2609
3034
  /** (1.35) Privacy & Security › Microphone: where the person allows Matrx 2 the microphone. */
2610
- "microphone"
3035
+ "microphone",
3036
+ // (1.41) Each other privacy grant's own page (Settings › Permissions and privacy's buttons), named
3037
+ // as sysinfo's OsPermissionName so a row opens its pane by its own name. A 1.40 core refuses these
3038
+ // as INVALID_PARAMS, so a client asks only a 1.41 core for them.
3039
+ "full_disk_access",
3040
+ "accessibility",
3041
+ "screen_recording",
3042
+ "camera",
3043
+ "automation",
3044
+ "contacts",
3045
+ "calendars",
3046
+ "reminders",
3047
+ "photos",
3048
+ "location",
3049
+ "local_network",
3050
+ "bluetooth",
3051
+ "wifi",
3052
+ "notifications",
3053
+ "speech_recognition",
3054
+ "messages",
3055
+ "mail"
2611
3056
  ]);
2612
3057
  var SystemOpenSettingsParams = import_zod21.z.strictObject({ pane: SystemSettingsPane });
2613
3058
  var SystemOpenSettingsResult = import_zod21.z.strictObject({ pane: SystemSettingsPane });
@@ -3313,10 +3758,10 @@ var ExecJobListResult = import_zod31.z.strictObject({ jobs: import_zod31.z.array
3313
3758
 
3314
3759
  // src/schema/coding.ts
3315
3760
  var import_zod32 = require("zod");
3316
- var import_uuid4 = require("@ai-matrx/kit/uuid");
3761
+ var import_uuid5 = require("@ai-matrx/kit/uuid");
3317
3762
  var CodingServiceCredentials = import_zod32.z.strictObject({
3318
3763
  access_token: import_zod32.z.string().min(16).max(16384),
3319
- user_id: import_zod32.z.string().regex(import_uuid4.UUID_SHAPE_PATTERN),
3764
+ user_id: import_zod32.z.string().regex(import_uuid5.UUID_SHAPE_PATTERN),
3320
3765
  /** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
3321
3766
  server_url: import_zod32.z.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
3322
3767
  });
@@ -3387,22 +3832,387 @@ var CodingHistoryProgressEvent = import_zod32.z.strictObject({
3387
3832
  failed: nonNegInt
3388
3833
  });
3389
3834
 
3390
- // src/schema/browser.ts
3835
+ // src/schema/coding-sessions.ts
3391
3836
  var import_zod33 = require("zod");
3392
- var BrowserClientInstance = import_zod33.z.string().min(1).max(64).regex(/^[A-Za-z0-9_.:-]+$/);
3393
- var BrowserKind = import_zod33.z.enum(["chrome", "edge", "brave", "arc", "opera", "vivaldi", "chromium", "firefox", "other"]);
3394
- var BrowserSessionState = import_zod33.z.enum(["connected", "different_account", "extension_signed_out", "device_signed_out", "unverified"]);
3395
- var BrowserSession = import_zod33.z.strictObject({
3837
+ var CodingProviderName = import_zod33.z.enum(["claude", "codex"]);
3838
+ var CodingRunStatus = import_zod33.z.enum(["starting", "running", "completed", "stopped", "failed"]);
3839
+ var SessionKey = import_zod33.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/);
3840
+ var IsoTime = import_zod33.z.string().min(10).max(40);
3841
+ var LocalPath = import_zod33.z.string().min(1).max(4096);
3842
+ var CodingClientRequestId = import_zod33.z.string().regex(/^[A-Za-z0-9_-]{8,64}$/);
3843
+ var ShortText = import_zod33.z.string().max(500);
3844
+ var CodingRunUsage = import_zod33.z.strictObject({
3845
+ inputTokens: nonNegInt,
3846
+ outputTokens: nonNegInt,
3847
+ cachedInputTokens: nonNegInt
3848
+ });
3849
+ var CodingStartedBy = import_zod33.z.strictObject({
3850
+ kind: import_zod33.z.enum(["this_computer", "web", "phone", "agent", "other"]),
3851
+ label: import_zod33.z.string().min(1).max(80)
3852
+ });
3853
+ var CodingRunRecord = import_zod33.z.strictObject({
3854
+ runId: import_zod33.z.string().min(1).max(64),
3855
+ sessionId: SessionKey,
3856
+ provider: CodingProviderName,
3857
+ cwd: LocalPath,
3858
+ prompt: import_zod33.z.string().max(1048576),
3859
+ model: import_zod33.z.string().max(200).nullable(),
3860
+ status: CodingRunStatus,
3861
+ startedAt: IsoTime,
3862
+ endedAt: IsoTime.nullable(),
3863
+ error: import_zod33.z.string().max(65536).nullable(),
3864
+ usage: CodingRunUsage.nullable(),
3865
+ costUsd: import_zod33.z.number().nullable(),
3866
+ billing: import_zod33.z.enum(["subscription", "api", "unknown"]).nullable(),
3867
+ startedBy: CodingStartedBy.nullable()
3868
+ });
3869
+ var CodingSessionAgentPart = import_zod33.z.strictObject({
3870
+ part: import_zod33.z.enum(["instructions", "skills", "tools"]),
3871
+ loaded: nonNegInt,
3872
+ total: nonNegInt
3873
+ });
3874
+ var CodingSessionAgent = import_zod33.z.strictObject({
3875
+ agentId: import_zod33.z.string().min(1).max(64),
3876
+ versionId: import_zod33.z.string().max(64).nullable(),
3877
+ versionNumber: nonNegInt.nullable(),
3878
+ name: import_zod33.z.string().max(300),
3879
+ definitionHash: import_zod33.z.string().max(200),
3880
+ loaded: import_zod33.z.array(CodingSessionAgentPart).max(3),
3881
+ unavailable: import_zod33.z.array(import_zod33.z.strictObject({ kind: import_zod33.z.string().max(60), name: import_zod33.z.string().max(300), reason: ShortText })).max(500),
3882
+ skills: import_zod33.z.array(import_zod33.z.string().max(300)).max(500),
3883
+ tools: import_zod33.z.array(import_zod33.z.string().max(300)).max(500),
3884
+ variables: import_zod33.z.record(import_zod33.z.string().max(200), import_zod33.z.unknown()),
3885
+ blockDue: import_zod33.z.boolean(),
3886
+ deliveredAt: IsoTime.nullable(),
3887
+ replaces: import_zod33.z.string().max(300).nullable()
3888
+ });
3889
+ var CodingSessionRecord = import_zod33.z.strictObject({
3890
+ id: SessionKey,
3891
+ provider: CodingProviderName,
3892
+ providerSessionId: SessionKey.nullable(),
3893
+ cwd: LocalPath,
3894
+ title: import_zod33.z.string().max(500),
3895
+ model: import_zod33.z.string().max(200).nullable(),
3896
+ effort: import_zod33.z.string().max(40).nullable(),
3897
+ origin: import_zod33.z.enum(["started", "takeover"]),
3898
+ createdAt: IsoTime,
3899
+ updatedAt: IsoTime,
3900
+ lastRunId: import_zod33.z.string().max(64).nullable(),
3901
+ lastRunStatus: CodingRunStatus.nullable(),
3902
+ queued: import_zod33.z.array(import_zod33.z.string().max(1048576)).max(100),
3903
+ agent: CodingSessionAgent.nullable(),
3904
+ agentRemovedDue: import_zod33.z.boolean()
3905
+ });
3906
+ var CodingActiveElsewhere = import_zod33.z.strictObject({
3907
+ reason: import_zod33.z.enum(["process", "recent-write", "open-tool-call", "open"]),
3908
+ message: ShortText,
3909
+ /** The process driving it, when the evidence is a process (re-checked before any stop). */
3910
+ pid: import_zod33.z.int().min(1).nullable()
3911
+ });
3912
+ var CodingTitleSource = import_zod33.z.enum(["app", "app-remembered", "custom-title", "ai-title", "agent-name", "summary", "first-prompt", "last-prompt", "unknown"]);
3913
+ var CodingDiscoveredChat = import_zod33.z.strictObject({
3914
+ provider: CodingProviderName,
3915
+ providerSessionId: SessionKey,
3916
+ cwd: LocalPath.nullable(),
3917
+ title: import_zod33.z.string().max(500),
3918
+ titleSource: CodingTitleSource.optional(),
3919
+ titlePending: import_zod33.z.boolean().optional(),
3920
+ archived: import_zod33.z.boolean().optional(),
3921
+ scheduled: import_zod33.z.boolean().optional(),
3922
+ unlisted: import_zod33.z.boolean().optional(),
3923
+ unavailable: ShortText.nullable(),
3924
+ updatedAt: IsoTime,
3925
+ source: import_zod33.z.string().max(60).nullable(),
3926
+ activeElsewhere: CodingActiveElsewhere.nullable()
3927
+ });
3928
+ var CodingTranscriptItem = import_zod33.z.discriminatedUnion("kind", [
3929
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("user"), id: import_zod33.z.string().max(200), text: import_zod33.z.string(), at: IsoTime.nullable() }),
3930
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("text"), id: import_zod33.z.string().max(200), text: import_zod33.z.string() }),
3931
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("text-delta"), id: import_zod33.z.string().max(200), text: import_zod33.z.string() }),
3932
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("reasoning"), id: import_zod33.z.string().max(200), text: import_zod33.z.string() }),
3933
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("tool-call"), id: import_zod33.z.string().max(200), name: import_zod33.z.string().max(300), input: import_zod33.z.unknown() }),
3934
+ import_zod33.z.strictObject({
3935
+ kind: import_zod33.z.literal("tool-result"),
3936
+ id: import_zod33.z.string().max(200),
3937
+ output: import_zod33.z.string(),
3938
+ isError: import_zod33.z.boolean(),
3939
+ /** The output's full size when only its start is here; `coding.item.full` reads the rest. */
3940
+ fullBytes: nonNegInt.optional()
3941
+ }),
3942
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("usage"), usage: CodingRunUsage, costUsd: import_zod33.z.number().nullable() }),
3943
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("notice"), id: import_zod33.z.string().max(200), level: import_zod33.z.enum(["info", "warning"]), text: import_zod33.z.string() }),
3944
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("error"), id: import_zod33.z.string().max(200), text: import_zod33.z.string() })
3945
+ ]);
3946
+ var CodingHistoryRecord = import_zod33.z.strictObject({
3947
+ items: import_zod33.z.array(CodingTranscriptItem),
3948
+ /** Only the end of the chat is here; "Show earlier" reads more (a bigger `max_bytes`). */
3949
+ truncated: import_zod33.z.boolean(),
3950
+ unavailable: ShortText.nullable(),
3951
+ /** The last live item `seq` this read already contains; a watch applies only newer ones. */
3952
+ seq: nonNegInt
3953
+ });
3954
+ var CodingQuotaWindow = import_zod33.z.strictObject({
3955
+ label: import_zod33.z.string().max(120),
3956
+ usedPercent: import_zod33.z.number().nullable(),
3957
+ resetsAt: import_zod33.z.string().max(80).nullable(),
3958
+ valueLabel: import_zod33.z.string().max(120).nullable()
3959
+ });
3960
+ var CodingProviderProblem = import_zod33.z.strictObject({
3961
+ kind: import_zod33.z.enum(["usage-limit", "signed-out"]),
3962
+ message: import_zod33.z.string().max(2e3),
3963
+ until: import_zod33.z.string().max(120).nullable(),
3964
+ at: IsoTime
3965
+ });
3966
+ var CodingProviderBinary = import_zod33.z.strictObject({
3967
+ path: LocalPath,
3968
+ version: import_zod33.z.string().max(80).nullable(),
3969
+ source: import_zod33.z.enum(["desktop-app", "path", "npm-global", "configured"]),
3970
+ sourceLabel: import_zod33.z.string().max(120),
3971
+ newer: import_zod33.z.strictObject({ path: LocalPath, version: import_zod33.z.string().max(80), sourceLabel: import_zod33.z.string().max(120) }).nullable()
3972
+ });
3973
+ var CodingProviderStatus = import_zod33.z.strictObject({
3974
+ provider: CodingProviderName,
3975
+ label: import_zod33.z.string().max(60),
3976
+ installed: import_zod33.z.boolean(),
3977
+ version: import_zod33.z.string().max(80).nullable(),
3978
+ loggedIn: import_zod33.z.boolean(),
3979
+ billing: import_zod33.z.enum(["subscription", "api", "unknown"]),
3980
+ plan: import_zod33.z.string().max(80).nullable(),
3981
+ account: import_zod33.z.string().max(320).nullable(),
3982
+ problem: ShortText.nullable(),
3983
+ fix: ShortText.nullable(),
3984
+ ready: import_zod33.z.boolean(),
3985
+ lastProblem: CodingProviderProblem.nullable(),
3986
+ quota: import_zod33.z.array(CodingQuotaWindow).max(20),
3987
+ models: import_zod33.z.array(import_zod33.z.strictObject({ id: import_zod33.z.string().max(200), label: import_zod33.z.string().max(200) })).max(200),
3988
+ efforts: import_zod33.z.array(import_zod33.z.string().max(40)).max(20),
3989
+ defaultModel: import_zod33.z.strictObject({ id: import_zod33.z.string().max(200), source: import_zod33.z.enum(["settings", "driver"]) }).nullable(),
3990
+ defaultEffort: import_zod33.z.string().max(40).nullable(),
3991
+ binary: CodingProviderBinary.nullable()
3992
+ });
3993
+ var CodingChatPreference = import_zod33.z.strictObject({
3994
+ title: import_zod33.z.string().max(500).nullable(),
3995
+ pinned: import_zod33.z.boolean(),
3996
+ hidden: import_zod33.z.boolean(),
3997
+ /** When the person last had this chat open on any screen of this computer (the "New output" dot). */
3998
+ lastSeenAt: IsoTime.nullable(),
3999
+ updatedAt: IsoTime.nullable()
4000
+ });
4001
+ var CodingTitleStatus = import_zod33.z.strictObject({
4002
+ owner: import_zod33.z.boolean(),
4003
+ pending: import_zod33.z.boolean(),
4004
+ problem: ShortText.nullable(),
4005
+ renames: ShortText.nullable()
4006
+ });
4007
+ var CodingRecentRow = import_zod33.z.strictObject({
4008
+ target: import_zod33.z.string().min(3).max(200),
4009
+ title: import_zod33.z.string().max(500),
4010
+ provider: CodingProviderName,
4011
+ sessionId: SessionKey.nullable(),
4012
+ providerSessionId: SessionKey.nullable(),
4013
+ cwd: LocalPath.nullable(),
4014
+ updatedAt: IsoTime,
4015
+ state: import_zod33.z.enum(["running", "needs_attention", "new_output", "elsewhere", "idle"]),
4016
+ stateLabel: import_zod33.z.string().max(120).nullable(),
4017
+ pinned: import_zod33.z.boolean(),
4018
+ startedBy: CodingStartedBy.nullable()
4019
+ });
4020
+ var CodingFolderCheck = import_zod33.z.strictObject({
4021
+ path: import_zod33.z.string().max(4096),
4022
+ exists: import_zod33.z.boolean(),
4023
+ isDirectory: import_zod33.z.boolean()
4024
+ });
4025
+ var CodingRecentFolder = import_zod33.z.strictObject({ path: LocalPath, lastUsedAt: IsoTime, exists: import_zod33.z.boolean() });
4026
+ var CodingAgentSelectionParams = import_zod33.z.strictObject({
4027
+ agent_id: import_zod33.z.string().min(1).max(64),
4028
+ version_id: import_zod33.z.string().min(1).max(64).optional(),
4029
+ variables: import_zod33.z.record(import_zod33.z.string().max(200), import_zod33.z.unknown()).optional()
4030
+ });
4031
+ var CodingSendResult = import_zod33.z.strictObject({
4032
+ session: CodingSessionRecord,
4033
+ run: CodingRunRecord.nullable(),
4034
+ /** The prompt waits behind a live run (it shows as a queued bubble). */
4035
+ queued: import_zod33.z.boolean()
4036
+ });
4037
+ var CodingProvidersParams = import_zod33.z.strictObject({});
4038
+ var CodingProvidersResult = import_zod33.z.strictObject({ providers: import_zod33.z.array(CodingProviderStatus).max(4) });
4039
+ var CodingSessionsListParams = import_zod33.z.strictObject({});
4040
+ var CodingSessionsListResult = import_zod33.z.strictObject({
4041
+ sessions: import_zod33.z.array(CodingSessionRecord),
4042
+ /** The latest run of each session, by session id. */
4043
+ runs: import_zod33.z.record(import_zod33.z.string().max(128), CodingRunRecord),
4044
+ recent: import_zod33.z.array(CodingRecentRow),
4045
+ title_status: CodingTitleStatus
4046
+ });
4047
+ var CodingDiscoverParams = import_zod33.z.strictObject({ limit: import_zod33.z.int().min(1).max(1e3).optional() });
4048
+ var CodingDiscoverResult = import_zod33.z.strictObject({ chats: import_zod33.z.array(CodingDiscoveredChat) });
4049
+ var CodingRunsListParams = import_zod33.z.strictObject({ session_id: SessionKey });
4050
+ var CodingRunsListResult = import_zod33.z.strictObject({ runs: import_zod33.z.array(CodingRunRecord) });
4051
+ var CodingHistoryParams = import_zod33.z.strictObject({ session_id: SessionKey, max_bytes: import_zod33.z.int().min(1024).max(209715200).optional() });
4052
+ var CodingHistoryResult = CodingHistoryRecord;
4053
+ var CodingTranscriptReadParams = import_zod33.z.strictObject({
4054
+ provider: CodingProviderName,
4055
+ provider_session_id: SessionKey,
4056
+ max_bytes: import_zod33.z.int().min(1024).max(209715200).optional()
4057
+ });
4058
+ var CodingTranscriptReadResult = CodingHistoryRecord;
4059
+ var CodingItemFullParams = import_zod33.z.strictObject({
4060
+ provider: CodingProviderName,
4061
+ provider_session_id: SessionKey,
4062
+ item_id: import_zod33.z.string().min(1).max(200)
4063
+ });
4064
+ var CodingItemFullResult = import_zod33.z.strictObject({ output: import_zod33.z.string(), bytes: nonNegInt });
4065
+ var CodingActivityParams = import_zod33.z.strictObject({ provider: CodingProviderName, provider_session_id: SessionKey });
4066
+ var CodingActivityResult = import_zod33.z.strictObject({ active: CodingActiveElsewhere.nullable() });
4067
+ var CodingFoldersRecentParams = import_zod33.z.strictObject({});
4068
+ var CodingFoldersRecentResult = import_zod33.z.strictObject({ folders: import_zod33.z.array(CodingRecentFolder).max(100) });
4069
+ var CodingFoldersCheckParams = import_zod33.z.strictObject({ path: import_zod33.z.string().min(1).max(4096) });
4070
+ var CodingFoldersCheckResult = CodingFolderCheck;
4071
+ var CodingFoldersCreateParams = import_zod33.z.strictObject({ path: import_zod33.z.string().min(1).max(4096) });
4072
+ var CodingFoldersCreateResult = CodingFolderCheck;
4073
+ var CodingStartParams = import_zod33.z.strictObject({
4074
+ provider: CodingProviderName,
4075
+ cwd: import_zod33.z.string().min(1).max(4096),
4076
+ prompt: import_zod33.z.string().min(1).max(1048576),
4077
+ model: import_zod33.z.string().min(1).max(200).optional(),
4078
+ effort: import_zod33.z.string().min(1).max(40).optional(),
4079
+ agent: CodingAgentSelectionParams.optional(),
4080
+ /** One of the person's coding accounts on this computer (Accounts); absent = the default login. */
4081
+ account_profile_id: import_zod33.z.string().min(1).max(64).optional(),
4082
+ client_request_id: CodingClientRequestId
4083
+ });
4084
+ var CodingStartResult = CodingSendResult;
4085
+ var CodingTakeoverParams = import_zod33.z.strictObject({
4086
+ provider: CodingProviderName,
4087
+ provider_session_id: SessionKey,
4088
+ cwd: import_zod33.z.string().min(1).max(4096),
4089
+ title: import_zod33.z.string().max(500).optional(),
4090
+ agent: CodingAgentSelectionParams.optional(),
4091
+ confirm_elsewhere: import_zod33.z.boolean().optional()
4092
+ });
4093
+ var CodingTakeoverResult = import_zod33.z.strictObject({ session: CodingSessionRecord });
4094
+ var CodingSendParams = import_zod33.z.strictObject({
4095
+ session_id: SessionKey,
4096
+ prompt: import_zod33.z.string().min(1).max(1048576),
4097
+ client_request_id: CodingClientRequestId
4098
+ });
4099
+ var CodingStopParams = import_zod33.z.strictObject({ run_id: import_zod33.z.string().min(1).max(64) });
4100
+ var CodingStopResult = import_zod33.z.strictObject({ run: CodingRunRecord.nullable() });
4101
+ var CodingStopElsewhereParams = import_zod33.z.strictObject({
4102
+ provider: CodingProviderName,
4103
+ provider_session_id: SessionKey,
4104
+ pid: import_zod33.z.int().min(1)
4105
+ });
4106
+ var CodingStopElsewhereResult = import_zod33.z.strictObject({ stopped: import_zod33.z.boolean(), message: ShortText });
4107
+ var CodingOptionsSetParams = import_zod33.z.strictObject({
4108
+ session_id: SessionKey,
4109
+ model: import_zod33.z.string().max(200).optional(),
4110
+ effort: import_zod33.z.string().max(40).optional()
4111
+ });
4112
+ var CodingOptionsSetResult = import_zod33.z.strictObject({ session: CodingSessionRecord });
4113
+ var CodingAgentSetParams = import_zod33.z.strictObject({ session_id: SessionKey, agent: CodingAgentSelectionParams.optional() });
4114
+ var CodingAgentSetResult = import_zod33.z.strictObject({ session: CodingSessionRecord });
4115
+ var CodingAgentsAccessParams = import_zod33.z.strictObject({});
4116
+ var CodingAgentsAccessResult = import_zod33.z.strictObject({
4117
+ signedIn: import_zod33.z.boolean(),
4118
+ userId: import_zod33.z.string().max(64).nullable(),
4119
+ organizationId: import_zod33.z.string().max(64).nullable(),
4120
+ configured: import_zod33.z.boolean()
4121
+ });
4122
+ var CodingTitlesStatusParams = import_zod33.z.strictObject({});
4123
+ var CodingTitlesStatusResult = CodingTitleStatus;
4124
+ var CodingPrefsListParams = import_zod33.z.strictObject({});
4125
+ var CodingPrefsListResult = import_zod33.z.strictObject({ preferences: import_zod33.z.record(import_zod33.z.string().max(200), CodingChatPreference) });
4126
+ var CodingPrefsSetParams = import_zod33.z.strictObject({
4127
+ key: import_zod33.z.string().min(1).max(200),
4128
+ title: import_zod33.z.string().min(1).max(500).optional(),
4129
+ clear_title: import_zod33.z.boolean().optional(),
4130
+ pinned: import_zod33.z.boolean().optional(),
4131
+ hidden: import_zod33.z.boolean().optional()
4132
+ });
4133
+ var CodingPrefsSetResult = CodingPrefsListResult;
4134
+ var CodingRecentSeenParams = import_zod33.z.strictObject({ target: import_zod33.z.string().min(3).max(200) });
4135
+ var CodingRecentSeenResult = import_zod33.z.strictObject({ recent: import_zod33.z.array(CodingRecentRow) });
4136
+ var CodingSearchParams = import_zod33.z.strictObject({
4137
+ query: import_zod33.z.string().min(1).max(500),
4138
+ cursor: nonNegInt.optional(),
4139
+ limit: import_zod33.z.int().min(1).max(100).optional()
4140
+ });
4141
+ var CodingSearchResult = import_zod33.z.strictObject({
4142
+ query: import_zod33.z.string().max(500),
4143
+ hits: import_zod33.z.array(
4144
+ import_zod33.z.strictObject({
4145
+ provider: CodingProviderName,
4146
+ providerSessionId: SessionKey,
4147
+ title: import_zod33.z.string().max(500),
4148
+ cwd: LocalPath.nullable(),
4149
+ updatedAt: IsoTime,
4150
+ where: import_zod33.z.enum(["title", "content"]),
4151
+ snippet: import_zod33.z.string().max(2e3).nullable()
4152
+ })
4153
+ ),
4154
+ scanned: nonNegInt,
4155
+ total: nonNegInt,
4156
+ nextCursor: nonNegInt.nullable()
4157
+ });
4158
+ var CodingReconcileParams = import_zod33.z.strictObject({ provider: CodingProviderName, provider_session_id: SessionKey });
4159
+ var CodingReconcileResult = import_zod33.z.strictObject({
4160
+ state: import_zod33.z.enum(["done", "blocked", "nothing_to_do"]),
4161
+ summary: import_zod33.z.string().max(400)
4162
+ });
4163
+ var CodingTranscriptRawParams = import_zod33.z.strictObject({ provider: CodingProviderName, provider_session_id: SessionKey });
4164
+ var CodingTranscriptRawResult = import_zod33.z.strictObject({
4165
+ available: import_zod33.z.boolean(),
4166
+ reason: ShortText.nullable(),
4167
+ file_name: import_zod33.z.string().max(300).nullable(),
4168
+ bytes: nonNegInt,
4169
+ /** The opt-in cloud backup was refreshed (false: off, unchanged, or signed out). */
4170
+ backup_refreshed: import_zod33.z.boolean(),
4171
+ /** Subagent transcripts beside the chat (Claude Code), downloaded separately. */
4172
+ subagents: nonNegInt
4173
+ });
4174
+ var CodingWatchParams = import_zod33.z.strictObject({});
4175
+ var CodingWatchResult = import_zod33.z.strictObject({ resource_id: ResourceId });
4176
+ var CodingSessionWatchParams = import_zod33.z.strictObject({ session_id: SessionKey, since_seq: nonNegInt.optional() });
4177
+ var CodingSessionWatchResult = import_zod33.z.strictObject({
4178
+ resource_id: ResourceId,
4179
+ /** The newest item seq the device has for this session right now. */
4180
+ seq: nonNegInt
4181
+ });
4182
+ var CodingChangedEvent = import_zod33.z.discriminatedUnion("kind", [
4183
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("session"), session: CodingSessionRecord }),
4184
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("run"), run: CodingRunRecord }),
4185
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("preferences"), preferences: import_zod33.z.record(import_zod33.z.string().max(200), CodingChatPreference) }),
4186
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("titles") }),
4187
+ import_zod33.z.strictObject({ kind: import_zod33.z.literal("recent"), recent: import_zod33.z.array(CodingRecentRow) })
4188
+ ]);
4189
+ var CodingWatchStateEvent = import_zod33.z.strictObject({ live: import_zod33.z.boolean(), reason: ShortText.nullable(), beat_ms: import_zod33.z.int().min(1e3) });
4190
+ var CodingItemEvent = import_zod33.z.strictObject({
4191
+ session_id: SessionKey,
4192
+ run_id: import_zod33.z.string().min(1).max(64),
4193
+ seq: nonNegInt,
4194
+ item: CodingTranscriptItem
4195
+ });
4196
+ var CodingGapEvent = import_zod33.z.strictObject({ session_id: SessionKey, since_seq: nonNegInt, seq: nonNegInt });
4197
+ var SessionIdentifyParams = import_zod33.z.strictObject({ label: import_zod33.z.string().min(1).max(60) });
4198
+ var SessionIdentifyResult = import_zod33.z.strictObject({ label: import_zod33.z.string().max(60) });
4199
+
4200
+ // src/schema/browser.ts
4201
+ var import_zod34 = require("zod");
4202
+ var BrowserClientInstance = import_zod34.z.string().min(1).max(64).regex(/^[A-Za-z0-9_.:-]+$/);
4203
+ var BrowserKind = import_zod34.z.enum(["chrome", "edge", "brave", "arc", "opera", "vivaldi", "chromium", "firefox", "other"]);
4204
+ var BrowserSessionState = import_zod34.z.enum(["connected", "different_account", "extension_signed_out", "device_signed_out", "unverified"]);
4205
+ var BrowserSession = import_zod34.z.strictObject({
3396
4206
  client_instance: BrowserClientInstance,
3397
4207
  /** What the person sees ("Chrome — Work"), set by the extension. */
3398
- client_label: import_zod33.z.string().min(1).max(128),
4208
+ client_label: import_zod34.z.string().min(1).max(128),
3399
4209
  browser: BrowserKind,
3400
- extension_version: import_zod33.z.string().min(1).max(32),
4210
+ extension_version: import_zod34.z.string().min(1).max(32),
3401
4211
  state: BrowserSessionState,
3402
4212
  /** True only for `connected`: an agent's call can reach this session. */
3403
- routable: import_zod33.z.boolean(),
4213
+ routable: import_zod34.z.boolean(),
3404
4214
  /** The extension's account email from its token (null when signed out or unknown). */
3405
- account_email: import_zod33.z.string().max(320).nullable(),
4215
+ account_email: import_zod34.z.string().max(320).nullable(),
3406
4216
  connected_at_ms: epochMs,
3407
4217
  last_call_at_ms: epochMs.nullable(),
3408
4218
  calls: nonNegInt,
@@ -3411,119 +4221,119 @@ var BrowserSession = import_zod33.z.strictObject({
3411
4221
  p50_ms: nonNegInt.nullable(),
3412
4222
  p95_ms: nonNegInt.nullable(),
3413
4223
  /** A call is waiting for the person to confirm it in the browser. */
3414
- awaiting_confirmation: import_zod33.z.boolean()
4224
+ awaiting_confirmation: import_zod34.z.boolean()
3415
4225
  });
3416
- var BrowserRegisterParams = import_zod33.z.strictObject({
4226
+ var BrowserRegisterParams = import_zod34.z.strictObject({
3417
4227
  client_instance: BrowserClientInstance,
3418
- client_label: import_zod33.z.string().min(1).max(128),
4228
+ client_label: import_zod34.z.string().min(1).max(128),
3419
4229
  browser: BrowserKind,
3420
- extension_version: import_zod33.z.string().min(1).max(32),
4230
+ extension_version: import_zod34.z.string().min(1).max(32),
3421
4231
  /** The extension's current AI Matrx access token, checked against the device owner; null when signed out. */
3422
- account_token: import_zod33.z.string().min(16).max(8192).nullable()
4232
+ account_token: import_zod34.z.string().min(16).max(8192).nullable()
3423
4233
  });
3424
- var BrowserRegisterResult = import_zod33.z.strictObject({ session: BrowserSession });
3425
- var BrowserCallError = import_zod33.z.strictObject({
3426
- message: import_zod33.z.string().max(1e3),
4234
+ var BrowserRegisterResult = import_zod34.z.strictObject({ session: BrowserSession });
4235
+ var BrowserCallError = import_zod34.z.strictObject({
4236
+ message: import_zod34.z.string().max(1e3),
3427
4237
  /** The extension's own error code, when it has one ("tool_not_found", "denied"). */
3428
- code: import_zod33.z.string().max(64).nullable()
4238
+ code: import_zod34.z.string().max(64).nullable()
3429
4239
  });
3430
- var BrowserResultParams = import_zod33.z.strictObject({
3431
- call_id: import_zod33.z.string().min(1).max(64),
3432
- ok: import_zod33.z.boolean(),
4240
+ var BrowserResultParams = import_zod34.z.strictObject({
4241
+ call_id: import_zod34.z.string().min(1).max(64),
4242
+ ok: import_zod34.z.boolean(),
3433
4243
  /** The tool's result when ok (any JSON). */
3434
- result: import_zod33.z.unknown(),
4244
+ result: import_zod34.z.unknown(),
3435
4245
  error: BrowserCallError.nullable()
3436
4246
  });
3437
- var BrowserResultResult = import_zod33.z.strictObject({ accepted: import_zod33.z.boolean() });
3438
- var BrowserCallPhase = import_zod33.z.enum(["awaiting_confirmation", "running"]);
3439
- var BrowserProgressParams = import_zod33.z.strictObject({ call_id: import_zod33.z.string().min(1).max(64), phase: BrowserCallPhase });
3440
- var BrowserProgressResult = import_zod33.z.strictObject({ accepted: import_zod33.z.boolean() });
3441
- var BrowserSessionsParams = import_zod33.z.strictObject({});
3442
- var BrowserSessionsResult = import_zod33.z.strictObject({
4247
+ var BrowserResultResult = import_zod34.z.strictObject({ accepted: import_zod34.z.boolean() });
4248
+ var BrowserCallPhase = import_zod34.z.enum(["awaiting_confirmation", "running"]);
4249
+ var BrowserProgressParams = import_zod34.z.strictObject({ call_id: import_zod34.z.string().min(1).max(64), phase: BrowserCallPhase });
4250
+ var BrowserProgressResult = import_zod34.z.strictObject({ accepted: import_zod34.z.boolean() });
4251
+ var BrowserSessionsParams = import_zod34.z.strictObject({});
4252
+ var BrowserSessionsResult = import_zod34.z.strictObject({
3443
4253
  /** The person's Browser connection switch. Off: no pairing, no extension sessions. */
3444
- enabled: import_zod33.z.boolean(),
4254
+ enabled: import_zod34.z.boolean(),
3445
4255
  /** Whether Matrx 2 is signed in (without an owner no session is routable). */
3446
- owner_signed_in: import_zod33.z.boolean(),
3447
- sessions: import_zod33.z.array(BrowserSession).max(64)
3448
- });
3449
- var BrowserDisconnectParams = import_zod33.z.strictObject({ client_instance: BrowserClientInstance });
3450
- var BrowserDisconnectResult = import_zod33.z.strictObject({ disconnected: import_zod33.z.boolean() });
3451
- var BrowserSetEnabledParams = import_zod33.z.strictObject({ enabled: import_zod33.z.boolean() });
3452
- var BrowserSetEnabledResult = import_zod33.z.strictObject({ enabled: import_zod33.z.boolean() });
3453
- var BrowserPairCodeParams = import_zod33.z.strictObject({});
3454
- var BrowserPairCodeResult = import_zod33.z.strictObject({ code: import_zod33.z.string().min(16).max(128) });
3455
- var BrowserPairResetParams = import_zod33.z.strictObject({});
3456
- var BrowserCallParams = import_zod33.z.strictObject({
3457
- tool: import_zod33.z.string().min(1).max(96).regex(/^[a-z][a-z0-9_]*$/),
3458
- args: import_zod33.z.record(import_zod33.z.string(), import_zod33.z.unknown()),
4256
+ owner_signed_in: import_zod34.z.boolean(),
4257
+ sessions: import_zod34.z.array(BrowserSession).max(64)
4258
+ });
4259
+ var BrowserDisconnectParams = import_zod34.z.strictObject({ client_instance: BrowserClientInstance });
4260
+ var BrowserDisconnectResult = import_zod34.z.strictObject({ disconnected: import_zod34.z.boolean() });
4261
+ var BrowserSetEnabledParams = import_zod34.z.strictObject({ enabled: import_zod34.z.boolean() });
4262
+ var BrowserSetEnabledResult = import_zod34.z.strictObject({ enabled: import_zod34.z.boolean() });
4263
+ var BrowserPairCodeParams = import_zod34.z.strictObject({});
4264
+ var BrowserPairCodeResult = import_zod34.z.strictObject({ code: import_zod34.z.string().min(16).max(128) });
4265
+ var BrowserPairResetParams = import_zod34.z.strictObject({});
4266
+ var BrowserCallParams = import_zod34.z.strictObject({
4267
+ tool: import_zod34.z.string().min(1).max(96).regex(/^[a-z][a-z0-9_]*$/),
4268
+ args: import_zod34.z.record(import_zod34.z.string(), import_zod34.z.unknown()),
3459
4269
  /** Which session; default: the most recently active routable one (BROWSER ambiguity → CONFLICT). */
3460
4270
  client_instance: BrowserClientInstance.optional(),
3461
4271
  /** How long to wait, including a person's confirmation; default 120 s. */
3462
- timeout_ms: import_zod33.z.int().min(1e3).max(6e5).optional()
4272
+ timeout_ms: import_zod34.z.int().min(1e3).max(6e5).optional()
3463
4273
  });
3464
- var BrowserCallResult = import_zod33.z.strictObject({
4274
+ var BrowserCallResult = import_zod34.z.strictObject({
3465
4275
  client_instance: BrowserClientInstance,
3466
- result: import_zod33.z.unknown(),
4276
+ result: import_zod34.z.unknown(),
3467
4277
  duration_ms: nonNegInt
3468
4278
  });
3469
- var BrowserToolMetricsParams = import_zod33.z.strictObject({ client_instance: BrowserClientInstance });
3470
- var BrowserToolMetric = import_zod33.z.strictObject({
3471
- tool: import_zod33.z.string().max(256),
4279
+ var BrowserToolMetricsParams = import_zod34.z.strictObject({ client_instance: BrowserClientInstance });
4280
+ var BrowserToolMetric = import_zod34.z.strictObject({
4281
+ tool: import_zod34.z.string().max(256),
3472
4282
  calls: nonNegInt,
3473
4283
  errors: nonNegInt,
3474
4284
  /** Over the last 200 answered calls; null before the first answer. */
3475
4285
  p50_ms: nonNegInt.nullable(),
3476
4286
  p95_ms: nonNegInt.nullable(),
3477
4287
  last_call_at_ms: epochMs.nullable(),
3478
- last_error: import_zod33.z.string().max(2048).nullable()
4288
+ last_error: import_zod34.z.string().max(2048).nullable()
3479
4289
  });
3480
- var BrowserToolMetricsResult = import_zod33.z.strictObject({ client_instance: import_zod33.z.string(), tools: import_zod33.z.array(BrowserToolMetric) });
3481
- var BrowserResetCountersParams = import_zod33.z.strictObject({ client_instance: BrowserClientInstance });
3482
- var BrowserResetCountersResult = import_zod33.z.strictObject({ reset: import_zod33.z.boolean() });
3483
- var BrowserLogParams = import_zod33.z.strictObject({
4290
+ var BrowserToolMetricsResult = import_zod34.z.strictObject({ client_instance: import_zod34.z.string(), tools: import_zod34.z.array(BrowserToolMetric) });
4291
+ var BrowserResetCountersParams = import_zod34.z.strictObject({ client_instance: BrowserClientInstance });
4292
+ var BrowserResetCountersResult = import_zod34.z.strictObject({ reset: import_zod34.z.boolean() });
4293
+ var BrowserLogParams = import_zod34.z.strictObject({
3484
4294
  /** Only messages after this seq (0: from the oldest kept; the core keeps the last 500). */
3485
4295
  after_seq: nonNegInt.default(0),
3486
- limit: import_zod33.z.int().min(1).max(500).default(500)
4296
+ limit: import_zod34.z.int().min(1).max(500).default(500)
3487
4297
  });
3488
- var BrowserLogMessage = import_zod33.z.strictObject({
4298
+ var BrowserLogMessage = import_zod34.z.strictObject({
3489
4299
  seq: nonNegInt,
3490
4300
  at_ms: epochMs,
3491
- direction: import_zod33.z.enum(["to_browser", "from_browser", "core"]),
3492
- client_instance: import_zod33.z.string(),
3493
- kind: import_zod33.z.enum(["register", "invoke", "result", "progress", "timeout", "closed"]),
3494
- tool: import_zod33.z.string().nullable(),
3495
- call_id: import_zod33.z.string().nullable(),
3496
- ok: import_zod33.z.boolean().nullable(),
3497
- detail: import_zod33.z.string().max(1024)
3498
- });
3499
- var BrowserLogResult = import_zod33.z.strictObject({
3500
- messages: import_zod33.z.array(BrowserLogMessage),
4301
+ direction: import_zod34.z.enum(["to_browser", "from_browser", "core"]),
4302
+ client_instance: import_zod34.z.string(),
4303
+ kind: import_zod34.z.enum(["register", "invoke", "result", "progress", "timeout", "closed"]),
4304
+ tool: import_zod34.z.string().nullable(),
4305
+ call_id: import_zod34.z.string().nullable(),
4306
+ ok: import_zod34.z.boolean().nullable(),
4307
+ detail: import_zod34.z.string().max(1024)
4308
+ });
4309
+ var BrowserLogResult = import_zod34.z.strictObject({
4310
+ messages: import_zod34.z.array(BrowserLogMessage),
3501
4311
  /** The newest seq the core has written (pass it back as after_seq to follow the log). */
3502
4312
  last_seq: nonNegInt
3503
4313
  });
3504
- var BrowserInvokeEvent = import_zod33.z.strictObject({
3505
- call_id: import_zod33.z.string().min(1).max(64),
3506
- tool: import_zod33.z.string().min(1).max(96),
3507
- args: import_zod33.z.record(import_zod33.z.string(), import_zod33.z.unknown()),
4314
+ var BrowserInvokeEvent = import_zod34.z.strictObject({
4315
+ call_id: import_zod34.z.string().min(1).max(64),
4316
+ tool: import_zod34.z.string().min(1).max(96),
4317
+ args: import_zod34.z.record(import_zod34.z.string(), import_zod34.z.unknown()),
3508
4318
  deadline_ms: epochMs
3509
4319
  });
3510
- var BrowserSessionsChangedEvent = import_zod33.z.strictObject({ count: nonNegInt, enabled: import_zod33.z.boolean() });
3511
- var BrowserProgressEvent = import_zod33.z.strictObject({
3512
- call_id: import_zod33.z.string().min(1).max(64),
4320
+ var BrowserSessionsChangedEvent = import_zod34.z.strictObject({ count: nonNegInt, enabled: import_zod34.z.boolean() });
4321
+ var BrowserProgressEvent = import_zod34.z.strictObject({
4322
+ call_id: import_zod34.z.string().min(1).max(64),
3513
4323
  client_instance: BrowserClientInstance,
3514
4324
  phase: BrowserCallPhase
3515
4325
  });
3516
- var DesktopHealth = import_zod33.z.strictObject({
3517
- status: import_zod33.z.literal("ok"),
3518
- service: import_zod33.z.literal("matrx-desktop"),
3519
- version: import_zod33.z.string().max(32),
3520
- protocol_version: import_zod33.z.string().max(16),
3521
- ws_path: import_zod33.z.literal("/v1/connect"),
3522
- device_id: import_zod33.z.string().max(64),
3523
- browser_connection: import_zod33.z.enum(["on", "off"])
3524
- });
3525
- var BrowserPairRequest = import_zod33.z.strictObject({ client_instance: BrowserClientInstance });
3526
- var BrowserPairResult = import_zod33.z.strictObject({ pair_token: import_zod33.z.string().min(16).max(128), ws_path: import_zod33.z.literal("/v1/connect") });
4326
+ var DesktopHealth = import_zod34.z.strictObject({
4327
+ status: import_zod34.z.literal("ok"),
4328
+ service: import_zod34.z.literal("matrx-desktop"),
4329
+ version: import_zod34.z.string().max(32),
4330
+ protocol_version: import_zod34.z.string().max(16),
4331
+ ws_path: import_zod34.z.literal("/v1/connect"),
4332
+ device_id: import_zod34.z.string().max(64),
4333
+ browser_connection: import_zod34.z.enum(["on", "off"])
4334
+ });
4335
+ var BrowserPairRequest = import_zod34.z.strictObject({ client_instance: BrowserClientInstance });
4336
+ var BrowserPairResult = import_zod34.z.strictObject({ pair_token: import_zod34.z.string().min(16).max(128), ws_path: import_zod34.z.literal("/v1/connect") });
3527
4337
  var MATRX_EXTENSION_IDS = {
3528
4338
  store: "hnfolienncfklkgmdjjmhhegglimlamg",
3529
4339
  development: "cihdmkcdjjckfhjpgoedmgfpoljebaml"
@@ -3531,572 +4341,572 @@ var MATRX_EXTENSION_IDS = {
3531
4341
  var DISCOVERY_FILE = { live: "matrx2.json", development: "matrx2-dev.json" };
3532
4342
 
3533
4343
  // src/schema/net.ts
3534
- var import_zod34 = require("zod");
3535
- var NetInfoParams = import_zod34.z.strictObject({});
3536
- var NetAddress = import_zod34.z.strictObject({
3537
- address: import_zod34.z.string(),
3538
- family: import_zod34.z.enum(["ipv4", "ipv6"]),
3539
- netmask: import_zod34.z.string().nullable(),
4344
+ var import_zod35 = require("zod");
4345
+ var NetInfoParams = import_zod35.z.strictObject({});
4346
+ var NetAddress = import_zod35.z.strictObject({
4347
+ address: import_zod35.z.string(),
4348
+ family: import_zod35.z.enum(["ipv4", "ipv6"]),
4349
+ netmask: import_zod35.z.string().nullable(),
3540
4350
  /** CIDR form ("192.168.1.20/24"); null where the OS gives no prefix. */
3541
- cidr: import_zod34.z.string().nullable()
4351
+ cidr: import_zod35.z.string().nullable()
3542
4352
  });
3543
- var NetInterface = import_zod34.z.strictObject({
3544
- name: import_zod34.z.string(),
3545
- mac: import_zod34.z.string().nullable(),
4353
+ var NetInterface = import_zod35.z.strictObject({
4354
+ name: import_zod35.z.string(),
4355
+ mac: import_zod35.z.string().nullable(),
3546
4356
  /** Loopback and other internal interfaces. */
3547
- internal: import_zod34.z.boolean(),
3548
- addresses: import_zod34.z.array(NetAddress)
4357
+ internal: import_zod35.z.boolean(),
4358
+ addresses: import_zod35.z.array(NetAddress)
3549
4359
  });
3550
- var NetInfoResult = import_zod34.z.strictObject({
3551
- hostname: import_zod34.z.string(),
3552
- interfaces: import_zod34.z.array(NetInterface),
4360
+ var NetInfoResult = import_zod35.z.strictObject({
4361
+ hostname: import_zod35.z.string(),
4362
+ interfaces: import_zod35.z.array(NetInterface),
3553
4363
  /** The default route's gateway; null when the OS does not say (or there is none). */
3554
- gateway: import_zod34.z.string().nullable(),
4364
+ gateway: import_zod35.z.string().nullable(),
3555
4365
  /** The DNS servers the OS uses; empty when it does not say. */
3556
- dns: import_zod34.z.array(import_zod34.z.string())
4366
+ dns: import_zod35.z.array(import_zod35.z.string())
3557
4367
  });
3558
- var NetWifiParams = import_zod34.z.strictObject({});
3559
- var NetWifiNetwork = import_zod34.z.strictObject({
4368
+ var NetWifiParams = import_zod35.z.strictObject({});
4369
+ var NetWifiNetwork = import_zod35.z.strictObject({
3560
4370
  /** null: the OS hides the name (macOS without Location Services for this app). */
3561
- ssid: import_zod34.z.string().nullable(),
4371
+ ssid: import_zod35.z.string().nullable(),
3562
4372
  /** dBm; null where the OS does not say. */
3563
- rssi: import_zod34.z.int().nullable(),
3564
- channel: import_zod34.z.string().nullable(),
3565
- security: import_zod34.z.string().nullable()
4373
+ rssi: import_zod35.z.int().nullable(),
4374
+ channel: import_zod35.z.string().nullable(),
4375
+ security: import_zod35.z.string().nullable()
3566
4376
  });
3567
- var NetWifiResult = import_zod34.z.strictObject({
4377
+ var NetWifiResult = import_zod35.z.strictObject({
3568
4378
  /** Whether the computer has a Wi-Fi interface at all. */
3569
- available: import_zod34.z.boolean(),
4379
+ available: import_zod35.z.boolean(),
3570
4380
  /** The network the computer is on; null when it is on none. */
3571
4381
  current: NetWifiNetwork.nullable(),
3572
4382
  /** Networks in range (may be empty where the OS lists none to apps). */
3573
- networks: import_zod34.z.array(NetWifiNetwork)
4383
+ networks: import_zod35.z.array(NetWifiNetwork)
3574
4384
  });
3575
- var NetBluetoothParams = import_zod34.z.strictObject({});
3576
- var NetBluetoothDevice = import_zod34.z.strictObject({
3577
- name: import_zod34.z.string(),
3578
- address: import_zod34.z.string().nullable(),
3579
- connected: import_zod34.z.boolean(),
4385
+ var NetBluetoothParams = import_zod35.z.strictObject({});
4386
+ var NetBluetoothDevice = import_zod35.z.strictObject({
4387
+ name: import_zod35.z.string(),
4388
+ address: import_zod35.z.string().nullable(),
4389
+ connected: import_zod35.z.boolean(),
3580
4390
  /** What it is, in the OS's words ("Headphones", "Keyboard"); null where it does not say. */
3581
- kind: import_zod34.z.string().nullable(),
4391
+ kind: import_zod35.z.string().nullable(),
3582
4392
  /** Battery percent, where the OS reports it. */
3583
- battery: import_zod34.z.int().min(0).max(100).nullable()
4393
+ battery: import_zod35.z.int().min(0).max(100).nullable()
3584
4394
  });
3585
- var NetBluetoothResult = import_zod34.z.strictObject({
4395
+ var NetBluetoothResult = import_zod35.z.strictObject({
3586
4396
  /** Bluetooth is on; null where the OS does not say. */
3587
- powered: import_zod34.z.boolean().nullable(),
3588
- devices: import_zod34.z.array(NetBluetoothDevice)
3589
- });
3590
- var NetDevicesParams = import_zod34.z.strictObject({});
3591
- var NetDevice = import_zod34.z.strictObject({
3592
- ip: import_zod34.z.string(),
3593
- mac: import_zod34.z.string().nullable(),
3594
- interface: import_zod34.z.string().nullable(),
4397
+ powered: import_zod35.z.boolean().nullable(),
4398
+ devices: import_zod35.z.array(NetBluetoothDevice)
4399
+ });
4400
+ var NetDevicesParams = import_zod35.z.strictObject({});
4401
+ var NetDevice = import_zod35.z.strictObject({
4402
+ ip: import_zod35.z.string(),
4403
+ mac: import_zod35.z.string().nullable(),
4404
+ interface: import_zod35.z.string().nullable(),
3595
4405
  /** The name the local network gives it (reverse DNS / mDNS), when the table carries one. */
3596
- hostname: import_zod34.z.string().nullable()
4406
+ hostname: import_zod35.z.string().nullable()
3597
4407
  });
3598
- var NetDevicesResult = import_zod34.z.strictObject({ devices: import_zod34.z.array(NetDevice) });
3599
- var NetMdnsParams = import_zod34.z.strictObject({
4408
+ var NetDevicesResult = import_zod35.z.strictObject({ devices: import_zod35.z.array(NetDevice) });
4409
+ var NetMdnsParams = import_zod35.z.strictObject({
3600
4410
  /** A service type ("_http._tcp"); absent lists the service types found. */
3601
- service_type: import_zod34.z.string().min(1).max(64).regex(/^_[A-Za-z0-9-]+\._(tcp|udp)$/).optional(),
4411
+ service_type: import_zod35.z.string().min(1).max(64).regex(/^_[A-Za-z0-9-]+\._(tcp|udp)$/).optional(),
3602
4412
  /** How long to listen. */
3603
- timeout_s: import_zod34.z.int().min(1).max(30).default(3)
4413
+ timeout_s: import_zod35.z.int().min(1).max(30).default(3)
3604
4414
  });
3605
- var NetMdnsService = import_zod34.z.strictObject({
3606
- name: import_zod34.z.string(),
3607
- type: import_zod34.z.string(),
3608
- domain: import_zod34.z.string(),
3609
- interface: import_zod34.z.string().nullable()
4415
+ var NetMdnsService = import_zod35.z.strictObject({
4416
+ name: import_zod35.z.string(),
4417
+ type: import_zod35.z.string(),
4418
+ domain: import_zod35.z.string(),
4419
+ interface: import_zod35.z.string().nullable()
3610
4420
  });
3611
- var NetMdnsResult = import_zod34.z.strictObject({ services: import_zod34.z.array(NetMdnsService) });
3612
- var NetScanParams = import_zod34.z.strictObject({
4421
+ var NetMdnsResult = import_zod35.z.strictObject({ services: import_zod35.z.array(NetMdnsService) });
4422
+ var NetScanParams = import_zod35.z.strictObject({
3613
4423
  /** A host name or address; a private or loopback address unless `allow_public`. */
3614
- host: import_zod34.z.string().min(1).max(253),
3615
- ports: import_zod34.z.array(import_zod34.z.int().min(1).max(65535)).min(1).max(1024),
3616
- timeout_ms: import_zod34.z.int().min(50).max(1e4).default(800),
4424
+ host: import_zod35.z.string().min(1).max(253),
4425
+ ports: import_zod35.z.array(import_zod35.z.int().min(1).max(65535)).min(1).max(1024),
4426
+ timeout_ms: import_zod35.z.int().min(50).max(1e4).default(800),
3617
4427
  /** Scanning a host on the public internet needs saying so. */
3618
- allow_public: import_zod34.z.boolean().default(false)
4428
+ allow_public: import_zod35.z.boolean().default(false)
3619
4429
  });
3620
- var NetScanResult = import_zod34.z.strictObject({
3621
- host: import_zod34.z.string(),
4430
+ var NetScanResult = import_zod35.z.strictObject({
4431
+ host: import_zod35.z.string(),
3622
4432
  /** The address the host resolved to. */
3623
- address: import_zod34.z.string(),
3624
- open: import_zod34.z.array(import_zod34.z.int().min(1).max(65535)),
4433
+ address: import_zod35.z.string(),
4434
+ open: import_zod35.z.array(import_zod35.z.int().min(1).max(65535)),
3625
4435
  closed: nonNegInt,
3626
4436
  elapsed_ms: nonNegInt
3627
4437
  });
3628
- var NetDownloadParams = import_zod34.z.strictObject({
3629
- url: import_zod34.z.string().min(1).max(8192).regex(/^https?:\/\//),
4438
+ var NetDownloadParams = import_zod35.z.strictObject({
4439
+ url: import_zod35.z.string().min(1).max(8192).regex(/^https?:\/\//),
3630
4440
  /** Where to save it: an absolute path (a folder keeps the URL's file name). */
3631
4441
  path: AbsPath,
3632
- overwrite: import_zod34.z.boolean().default(false),
3633
- timeout_s: import_zod34.z.int().min(1).max(3600).default(300),
4442
+ overwrite: import_zod35.z.boolean().default(false),
4443
+ timeout_s: import_zod35.z.int().min(1).max(3600).default(300),
3634
4444
  /** Refuse anything larger. */
3635
- max_bytes: import_zod34.z.int().min(1).max(10737418240).default(2147483648)
4445
+ max_bytes: import_zod35.z.int().min(1).max(10737418240).default(2147483648)
3636
4446
  });
3637
- var NetDownloadResult = import_zod34.z.strictObject({
3638
- path: import_zod34.z.string(),
4447
+ var NetDownloadResult = import_zod35.z.strictObject({
4448
+ path: import_zod35.z.string(),
3639
4449
  bytes: nonNegInt,
3640
- content_type: import_zod34.z.string().nullable(),
4450
+ content_type: import_zod35.z.string().nullable(),
3641
4451
  /** The final URL after redirects. */
3642
- url: import_zod34.z.string(),
4452
+ url: import_zod35.z.string(),
3643
4453
  elapsed_ms: nonNegInt
3644
4454
  });
3645
4455
 
3646
4456
  // src/schema/personal.ts
3647
- var import_zod35 = require("zod");
3648
- var Text = import_zod35.z.string().max(65536);
3649
- var AutomationScriptParams = import_zod35.z.strictObject({
4457
+ var import_zod36 = require("zod");
4458
+ var Text = import_zod36.z.string().max(65536);
4459
+ var AutomationScriptParams = import_zod36.z.strictObject({
3650
4460
  /** applescript and jxa: macOS (osascript); powershell: Windows (and pwsh where installed). */
3651
- language: import_zod35.z.enum(["applescript", "jxa", "powershell"]),
3652
- script: import_zod35.z.string().min(1).max(262144),
3653
- timeout_s: import_zod35.z.int().min(1).max(600).default(60)
3654
- });
3655
- var AutomationScriptResult = import_zod35.z.strictObject({
3656
- stdout: import_zod35.z.string(),
3657
- stderr: import_zod35.z.string(),
3658
- exit_code: import_zod35.z.int(),
3659
- timed_out: import_zod35.z.boolean(),
4461
+ language: import_zod36.z.enum(["applescript", "jxa", "powershell"]),
4462
+ script: import_zod36.z.string().min(1).max(262144),
4463
+ timeout_s: import_zod36.z.int().min(1).max(600).default(60)
4464
+ });
4465
+ var AutomationScriptResult = import_zod36.z.strictObject({
4466
+ stdout: import_zod36.z.string(),
4467
+ stderr: import_zod36.z.string(),
4468
+ exit_code: import_zod36.z.int(),
4469
+ timed_out: import_zod36.z.boolean(),
3660
4470
  /** stdout or stderr was cut at 1 MiB. */
3661
- truncated: import_zod35.z.boolean(),
4471
+ truncated: import_zod36.z.boolean(),
3662
4472
  elapsed_ms: nonNegInt
3663
4473
  });
3664
- var MailAccountsParams = import_zod35.z.strictObject({});
3665
- var MailAccount = import_zod35.z.strictObject({ name: import_zod35.z.string(), emails: import_zod35.z.array(import_zod35.z.string()), enabled: import_zod35.z.boolean() });
3666
- var MailAccountsResult = import_zod35.z.strictObject({ accounts: import_zod35.z.array(MailAccount) });
3667
- var MailListParams = import_zod35.z.strictObject({
4474
+ var MailAccountsParams = import_zod36.z.strictObject({});
4475
+ var MailAccount = import_zod36.z.strictObject({ name: import_zod36.z.string(), emails: import_zod36.z.array(import_zod36.z.string()), enabled: import_zod36.z.boolean() });
4476
+ var MailAccountsResult = import_zod36.z.strictObject({ accounts: import_zod36.z.array(MailAccount) });
4477
+ var MailListParams = import_zod36.z.strictObject({
3668
4478
  /** The account's name in Mail; absent: every account. */
3669
- account: import_zod35.z.string().min(1).max(256).optional(),
4479
+ account: import_zod36.z.string().min(1).max(256).optional(),
3670
4480
  /** The mailbox's name ("INBOX", "Sent Messages"). */
3671
- mailbox: import_zod35.z.string().min(1).max(256).default("INBOX"),
3672
- unread_only: import_zod35.z.boolean().default(false),
3673
- limit: import_zod35.z.int().min(1).max(200).default(25)
3674
- });
3675
- var MailMessage = import_zod35.z.strictObject({
3676
- id: import_zod35.z.string(),
3677
- subject: import_zod35.z.string(),
3678
- sender: import_zod35.z.string(),
4481
+ mailbox: import_zod36.z.string().min(1).max(256).default("INBOX"),
4482
+ unread_only: import_zod36.z.boolean().default(false),
4483
+ limit: import_zod36.z.int().min(1).max(200).default(25)
4484
+ });
4485
+ var MailMessage = import_zod36.z.strictObject({
4486
+ id: import_zod36.z.string(),
4487
+ subject: import_zod36.z.string(),
4488
+ sender: import_zod36.z.string(),
3679
4489
  received_at_ms: epochMs.nullable(),
3680
- read: import_zod35.z.boolean(),
3681
- account: import_zod35.z.string(),
3682
- mailbox: import_zod35.z.string(),
4490
+ read: import_zod36.z.boolean(),
4491
+ account: import_zod36.z.string(),
4492
+ mailbox: import_zod36.z.string(),
3683
4493
  /** The first lines of the message's text. */
3684
- preview: import_zod35.z.string()
4494
+ preview: import_zod36.z.string()
3685
4495
  });
3686
- var MailListResult = import_zod35.z.strictObject({ messages: import_zod35.z.array(MailMessage) });
3687
- var MailSendParams = import_zod35.z.strictObject({
3688
- to: import_zod35.z.array(import_zod35.z.string().min(3).max(320)).min(1).max(50),
3689
- cc: import_zod35.z.array(import_zod35.z.string().min(3).max(320)).max(50).default([]),
3690
- subject: import_zod35.z.string().max(998),
4496
+ var MailListResult = import_zod36.z.strictObject({ messages: import_zod36.z.array(MailMessage) });
4497
+ var MailSendParams = import_zod36.z.strictObject({
4498
+ to: import_zod36.z.array(import_zod36.z.string().min(3).max(320)).min(1).max(50),
4499
+ cc: import_zod36.z.array(import_zod36.z.string().min(3).max(320)).max(50).default([]),
4500
+ subject: import_zod36.z.string().max(998),
3691
4501
  body: Text,
3692
4502
  /** The sending account's address; absent: Mail's default. */
3693
- from: import_zod35.z.string().min(3).max(320).optional(),
4503
+ from: import_zod36.z.string().min(3).max(320).optional(),
3694
4504
  /** false leaves it open in Mail as a draft for the person to send. */
3695
- send: import_zod35.z.boolean().default(true)
3696
- });
3697
- var MailSendResult = import_zod35.z.strictObject({ sent: import_zod35.z.boolean() });
3698
- var MessagesChatsParams = import_zod35.z.strictObject({ limit: import_zod35.z.int().min(1).max(200).default(25) });
3699
- var MessagesChat = import_zod35.z.strictObject({
3700
- chat_id: import_zod35.z.string(),
3701
- name: import_zod35.z.string().nullable(),
3702
- participants: import_zod35.z.array(import_zod35.z.string()),
4505
+ send: import_zod36.z.boolean().default(true)
4506
+ });
4507
+ var MailSendResult = import_zod36.z.strictObject({ sent: import_zod36.z.boolean() });
4508
+ var MessagesChatsParams = import_zod36.z.strictObject({ limit: import_zod36.z.int().min(1).max(200).default(25) });
4509
+ var MessagesChat = import_zod36.z.strictObject({
4510
+ chat_id: import_zod36.z.string(),
4511
+ name: import_zod36.z.string().nullable(),
4512
+ participants: import_zod36.z.array(import_zod36.z.string()),
3703
4513
  last_message_at_ms: epochMs.nullable(),
3704
- service: import_zod35.z.string().nullable()
4514
+ service: import_zod36.z.string().nullable()
3705
4515
  });
3706
- var MessagesChatsResult = import_zod35.z.strictObject({ chats: import_zod35.z.array(MessagesChat) });
3707
- var MessagesListParams = import_zod35.z.strictObject({
4516
+ var MessagesChatsResult = import_zod36.z.strictObject({ chats: import_zod36.z.array(MessagesChat) });
4517
+ var MessagesListParams = import_zod36.z.strictObject({
3708
4518
  /** One chat (messages.chats' chat_id); absent: the newest across all. */
3709
- chat_id: import_zod35.z.string().min(1).max(512).optional(),
3710
- limit: import_zod35.z.int().min(1).max(500).default(50)
3711
- });
3712
- var MessagesMessage = import_zod35.z.strictObject({
3713
- id: import_zod35.z.string(),
3714
- chat_id: import_zod35.z.string().nullable(),
3715
- text: import_zod35.z.string(),
3716
- from_me: import_zod35.z.boolean(),
4519
+ chat_id: import_zod36.z.string().min(1).max(512).optional(),
4520
+ limit: import_zod36.z.int().min(1).max(500).default(50)
4521
+ });
4522
+ var MessagesMessage = import_zod36.z.strictObject({
4523
+ id: import_zod36.z.string(),
4524
+ chat_id: import_zod36.z.string().nullable(),
4525
+ text: import_zod36.z.string(),
4526
+ from_me: import_zod36.z.boolean(),
3717
4527
  /** The other person's handle (phone or email); null for the person's own messages. */
3718
- sender: import_zod35.z.string().nullable(),
4528
+ sender: import_zod36.z.string().nullable(),
3719
4529
  sent_at_ms: epochMs.nullable()
3720
4530
  });
3721
- var MessagesListResult = import_zod35.z.strictObject({ messages: import_zod35.z.array(MessagesMessage) });
3722
- var MessagesSendParams = import_zod35.z.strictObject({
4531
+ var MessagesListResult = import_zod36.z.strictObject({ messages: import_zod36.z.array(MessagesMessage) });
4532
+ var MessagesSendParams = import_zod36.z.strictObject({
3723
4533
  /** A phone number or email the person can message. */
3724
- to: import_zod35.z.string().min(3).max(320),
3725
- text: import_zod35.z.string().min(1).max(2e4)
4534
+ to: import_zod36.z.string().min(3).max(320),
4535
+ text: import_zod36.z.string().min(1).max(2e4)
3726
4536
  });
3727
- var MessagesSendResult = import_zod35.z.strictObject({ sent: import_zod35.z.boolean() });
3728
- var ContactsSearchParams = import_zod35.z.strictObject({
4537
+ var MessagesSendResult = import_zod36.z.strictObject({ sent: import_zod36.z.boolean() });
4538
+ var ContactsSearchParams = import_zod36.z.strictObject({
3729
4539
  /** Matched against names, organizations, emails and phone numbers. */
3730
- query: import_zod35.z.string().min(1).max(256),
3731
- limit: import_zod35.z.int().min(1).max(200).default(25)
4540
+ query: import_zod36.z.string().min(1).max(256),
4541
+ limit: import_zod36.z.int().min(1).max(200).default(25)
3732
4542
  });
3733
- var ContactLabeled = import_zod35.z.strictObject({ label: import_zod35.z.string().nullable(), value: import_zod35.z.string() });
3734
- var ContactSummary = import_zod35.z.strictObject({
3735
- id: import_zod35.z.string(),
3736
- name: import_zod35.z.string(),
3737
- organization: import_zod35.z.string().nullable(),
3738
- emails: import_zod35.z.array(ContactLabeled),
3739
- phones: import_zod35.z.array(ContactLabeled)
3740
- });
3741
- var ContactsSearchResult = import_zod35.z.strictObject({ contacts: import_zod35.z.array(ContactSummary) });
3742
- var ContactsGetParams = import_zod35.z.strictObject({ id: import_zod35.z.string().min(1).max(256) });
3743
- var ContactDetail = import_zod35.z.strictObject({
3744
- id: import_zod35.z.string(),
3745
- name: import_zod35.z.string(),
3746
- organization: import_zod35.z.string().nullable(),
3747
- job_title: import_zod35.z.string().nullable(),
3748
- emails: import_zod35.z.array(ContactLabeled),
3749
- phones: import_zod35.z.array(ContactLabeled),
3750
- addresses: import_zod35.z.array(ContactLabeled),
3751
- birthday: import_zod35.z.string().nullable(),
3752
- note: import_zod35.z.string().nullable()
3753
- });
3754
- var ContactsGetResult = import_zod35.z.strictObject({ contact: ContactDetail });
3755
- var CalendarListParams = import_zod35.z.strictObject({
4543
+ var ContactLabeled = import_zod36.z.strictObject({ label: import_zod36.z.string().nullable(), value: import_zod36.z.string() });
4544
+ var ContactSummary = import_zod36.z.strictObject({
4545
+ id: import_zod36.z.string(),
4546
+ name: import_zod36.z.string(),
4547
+ organization: import_zod36.z.string().nullable(),
4548
+ emails: import_zod36.z.array(ContactLabeled),
4549
+ phones: import_zod36.z.array(ContactLabeled)
4550
+ });
4551
+ var ContactsSearchResult = import_zod36.z.strictObject({ contacts: import_zod36.z.array(ContactSummary) });
4552
+ var ContactsGetParams = import_zod36.z.strictObject({ id: import_zod36.z.string().min(1).max(256) });
4553
+ var ContactDetail = import_zod36.z.strictObject({
4554
+ id: import_zod36.z.string(),
4555
+ name: import_zod36.z.string(),
4556
+ organization: import_zod36.z.string().nullable(),
4557
+ job_title: import_zod36.z.string().nullable(),
4558
+ emails: import_zod36.z.array(ContactLabeled),
4559
+ phones: import_zod36.z.array(ContactLabeled),
4560
+ addresses: import_zod36.z.array(ContactLabeled),
4561
+ birthday: import_zod36.z.string().nullable(),
4562
+ note: import_zod36.z.string().nullable()
4563
+ });
4564
+ var ContactsGetResult = import_zod36.z.strictObject({ contact: ContactDetail });
4565
+ var CalendarListParams = import_zod36.z.strictObject({
3756
4566
  from_ms: epochMs,
3757
4567
  to_ms: epochMs,
3758
4568
  /** One calendar's name; absent: every calendar. */
3759
- calendar: import_zod35.z.string().min(1).max(256).optional(),
3760
- limit: import_zod35.z.int().min(1).max(500).default(100)
4569
+ calendar: import_zod36.z.string().min(1).max(256).optional(),
4570
+ limit: import_zod36.z.int().min(1).max(500).default(100)
3761
4571
  });
3762
- var CalendarEvent = import_zod35.z.strictObject({
3763
- id: import_zod35.z.string(),
3764
- title: import_zod35.z.string(),
4572
+ var CalendarEvent = import_zod36.z.strictObject({
4573
+ id: import_zod36.z.string(),
4574
+ title: import_zod36.z.string(),
3765
4575
  start_ms: epochMs,
3766
4576
  end_ms: epochMs,
3767
- all_day: import_zod35.z.boolean(),
3768
- calendar: import_zod35.z.string(),
3769
- location: import_zod35.z.string().nullable(),
3770
- notes: import_zod35.z.string().nullable()
3771
- });
3772
- var CalendarListResult = import_zod35.z.strictObject({ events: import_zod35.z.array(CalendarEvent) });
3773
- var CalendarCreateParams = import_zod35.z.strictObject({
3774
- title: import_zod35.z.string().min(1).max(1024),
4577
+ all_day: import_zod36.z.boolean(),
4578
+ calendar: import_zod36.z.string(),
4579
+ location: import_zod36.z.string().nullable(),
4580
+ notes: import_zod36.z.string().nullable()
4581
+ });
4582
+ var CalendarListResult = import_zod36.z.strictObject({ events: import_zod36.z.array(CalendarEvent) });
4583
+ var CalendarCreateParams = import_zod36.z.strictObject({
4584
+ title: import_zod36.z.string().min(1).max(1024),
3775
4585
  start_ms: epochMs,
3776
4586
  end_ms: epochMs,
3777
- all_day: import_zod35.z.boolean().default(false),
4587
+ all_day: import_zod36.z.boolean().default(false),
3778
4588
  /** The calendar's name; absent: the first writable calendar. */
3779
- calendar: import_zod35.z.string().min(1).max(256).optional(),
3780
- location: import_zod35.z.string().max(1024).optional(),
4589
+ calendar: import_zod36.z.string().min(1).max(256).optional(),
4590
+ location: import_zod36.z.string().max(1024).optional(),
3781
4591
  notes: Text.optional()
3782
4592
  });
3783
- var CalendarCreateResult = import_zod35.z.strictObject({ id: import_zod35.z.string(), calendar: import_zod35.z.string() });
3784
- var RemindersListParams = import_zod35.z.strictObject({
4593
+ var CalendarCreateResult = import_zod36.z.strictObject({ id: import_zod36.z.string(), calendar: import_zod36.z.string() });
4594
+ var RemindersListParams = import_zod36.z.strictObject({
3785
4595
  /** One list's name; absent: every list. */
3786
- list: import_zod35.z.string().min(1).max(256).optional(),
3787
- include_completed: import_zod35.z.boolean().default(false),
3788
- limit: import_zod35.z.int().min(1).max(500).default(100)
3789
- });
3790
- var Reminder = import_zod35.z.strictObject({
3791
- id: import_zod35.z.string(),
3792
- title: import_zod35.z.string(),
3793
- list: import_zod35.z.string(),
4596
+ list: import_zod36.z.string().min(1).max(256).optional(),
4597
+ include_completed: import_zod36.z.boolean().default(false),
4598
+ limit: import_zod36.z.int().min(1).max(500).default(100)
4599
+ });
4600
+ var Reminder = import_zod36.z.strictObject({
4601
+ id: import_zod36.z.string(),
4602
+ title: import_zod36.z.string(),
4603
+ list: import_zod36.z.string(),
3794
4604
  due_ms: epochMs.nullable(),
3795
- completed: import_zod35.z.boolean(),
3796
- notes: import_zod35.z.string().nullable()
4605
+ completed: import_zod36.z.boolean(),
4606
+ notes: import_zod36.z.string().nullable()
3797
4607
  });
3798
- var RemindersListResult = import_zod35.z.strictObject({ reminders: import_zod35.z.array(Reminder) });
3799
- var RemindersCreateParams = import_zod35.z.strictObject({
3800
- title: import_zod35.z.string().min(1).max(1024),
4608
+ var RemindersListResult = import_zod36.z.strictObject({ reminders: import_zod36.z.array(Reminder) });
4609
+ var RemindersCreateParams = import_zod36.z.strictObject({
4610
+ title: import_zod36.z.string().min(1).max(1024),
3801
4611
  due_ms: epochMs.optional(),
3802
- list: import_zod35.z.string().min(1).max(256).optional(),
4612
+ list: import_zod36.z.string().min(1).max(256).optional(),
3803
4613
  notes: Text.optional()
3804
4614
  });
3805
- var RemindersCreateResult = import_zod35.z.strictObject({ id: import_zod35.z.string(), list: import_zod35.z.string() });
3806
- var PhotosSearchParams = import_zod35.z.strictObject({
4615
+ var RemindersCreateResult = import_zod36.z.strictObject({ id: import_zod36.z.string(), list: import_zod36.z.string() });
4616
+ var PhotosSearchParams = import_zod36.z.strictObject({
3807
4617
  /** Matched against file names, titles, descriptions and keywords; absent: the newest. */
3808
- query: import_zod35.z.string().min(1).max(256).optional(),
4618
+ query: import_zod36.z.string().min(1).max(256).optional(),
3809
4619
  from_ms: epochMs.optional(),
3810
4620
  to_ms: epochMs.optional(),
3811
- favorites_only: import_zod35.z.boolean().default(false),
3812
- limit: import_zod35.z.int().min(1).max(200).default(25)
4621
+ favorites_only: import_zod36.z.boolean().default(false),
4622
+ limit: import_zod36.z.int().min(1).max(200).default(25)
3813
4623
  });
3814
- var Photo = import_zod35.z.strictObject({
3815
- id: import_zod35.z.string(),
3816
- filename: import_zod35.z.string(),
4624
+ var Photo = import_zod36.z.strictObject({
4625
+ id: import_zod36.z.string(),
4626
+ filename: import_zod36.z.string(),
3817
4627
  taken_at_ms: epochMs.nullable(),
3818
4628
  width: nonNegInt.nullable(),
3819
4629
  height: nonNegInt.nullable(),
3820
- favorite: import_zod35.z.boolean(),
3821
- title: import_zod35.z.string().nullable()
4630
+ favorite: import_zod36.z.boolean(),
4631
+ title: import_zod36.z.string().nullable()
3822
4632
  });
3823
- var PhotosSearchResult = import_zod35.z.strictObject({ photos: import_zod35.z.array(Photo) });
3824
- var PhotosGetParams = import_zod35.z.strictObject({
3825
- id: import_zod35.z.string().min(1).max(256),
4633
+ var PhotosSearchResult = import_zod36.z.strictObject({ photos: import_zod36.z.array(Photo) });
4634
+ var PhotosGetParams = import_zod36.z.strictObject({
4635
+ id: import_zod36.z.string().min(1).max(256),
3826
4636
  /** Copy the original into a folder Matrx 2 owns and answer its path (then fs_read or desktop_documents reads it). */
3827
- export: import_zod35.z.boolean().default(false)
4637
+ export: import_zod36.z.boolean().default(false)
3828
4638
  });
3829
- var PhotosGetResult = import_zod35.z.strictObject({ photo: Photo, path: import_zod35.z.string().nullable() });
3830
- var LocationGetParams = import_zod35.z.strictObject({ timeout_s: import_zod35.z.int().min(1).max(60).default(15) });
3831
- var LocationGetResult = import_zod35.z.strictObject({
3832
- latitude: import_zod35.z.number().min(-90).max(90),
3833
- longitude: import_zod35.z.number().min(-180).max(180),
4639
+ var PhotosGetResult = import_zod36.z.strictObject({ photo: Photo, path: import_zod36.z.string().nullable() });
4640
+ var LocationGetParams = import_zod36.z.strictObject({ timeout_s: import_zod36.z.int().min(1).max(60).default(15) });
4641
+ var LocationGetResult = import_zod36.z.strictObject({
4642
+ latitude: import_zod36.z.number().min(-90).max(90),
4643
+ longitude: import_zod36.z.number().min(-180).max(180),
3834
4644
  /** Metres; null where the OS does not say. */
3835
- accuracy_m: import_zod35.z.number().min(0).nullable(),
4645
+ accuracy_m: import_zod36.z.number().min(0).nullable(),
3836
4646
  at_ms: epochMs,
3837
4647
  /** Who answered: the OS's own location service. */
3838
- source: import_zod35.z.enum(["corelocation", "windows", "geoclue"])
4648
+ source: import_zod36.z.enum(["corelocation", "windows", "geoclue"])
3839
4649
  });
3840
4650
 
3841
4651
  // src/schema/windows.ts
3842
- var import_zod36 = require("zod");
3843
- var RegistryKey = import_zod36.z.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)(\\.*)?$/);
3844
- var RegistryValueType = import_zod36.z.enum(["REG_SZ", "REG_EXPAND_SZ", "REG_MULTI_SZ", "REG_DWORD", "REG_QWORD", "REG_BINARY", "REG_NONE"]);
3845
- var WindowsRegistryReadParams = import_zod36.z.strictObject({
4652
+ var import_zod37 = require("zod");
4653
+ var RegistryKey = import_zod37.z.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)(\\.*)?$/);
4654
+ var RegistryValueType = import_zod37.z.enum(["REG_SZ", "REG_EXPAND_SZ", "REG_MULTI_SZ", "REG_DWORD", "REG_QWORD", "REG_BINARY", "REG_NONE"]);
4655
+ var WindowsRegistryReadParams = import_zod37.z.strictObject({
3846
4656
  key: RegistryKey,
3847
4657
  /** One value's name ("" is the key's default value); absent: every value and the subkeys. */
3848
- name: import_zod36.z.string().max(16383).optional()
4658
+ name: import_zod37.z.string().max(16383).optional()
3849
4659
  });
3850
- var RegistryValue = import_zod36.z.strictObject({ name: import_zod36.z.string(), type: RegistryValueType, data: import_zod36.z.string() });
3851
- var WindowsRegistryReadResult = import_zod36.z.strictObject({
3852
- key: import_zod36.z.string(),
3853
- exists: import_zod36.z.boolean(),
3854
- values: import_zod36.z.array(RegistryValue),
3855
- subkeys: import_zod36.z.array(import_zod36.z.string())
4660
+ var RegistryValue = import_zod37.z.strictObject({ name: import_zod37.z.string(), type: RegistryValueType, data: import_zod37.z.string() });
4661
+ var WindowsRegistryReadResult = import_zod37.z.strictObject({
4662
+ key: import_zod37.z.string(),
4663
+ exists: import_zod37.z.boolean(),
4664
+ values: import_zod37.z.array(RegistryValue),
4665
+ subkeys: import_zod37.z.array(import_zod37.z.string())
3856
4666
  });
3857
- var WindowsRegistryWriteParams = import_zod36.z.strictObject({
4667
+ var WindowsRegistryWriteParams = import_zod37.z.strictObject({
3858
4668
  key: RegistryKey,
3859
- name: import_zod36.z.string().max(16383),
4669
+ name: import_zod37.z.string().max(16383),
3860
4670
  type: RegistryValueType.default("REG_SZ"),
3861
4671
  /** As reg.exe takes it: text, a number, hex for binary, \\0 between the strings of a multi-string. */
3862
- data: import_zod36.z.string().max(1048576),
4672
+ data: import_zod37.z.string().max(1048576),
3863
4673
  /** Remove the value instead of writing it. */
3864
- delete: import_zod36.z.boolean().default(false)
4674
+ delete: import_zod37.z.boolean().default(false)
3865
4675
  });
3866
- var WindowsRegistryWriteResult = import_zod36.z.strictObject({ key: import_zod36.z.string(), name: import_zod36.z.string(), deleted: import_zod36.z.boolean() });
3867
- var WindowsServicesParams = import_zod36.z.strictObject({
4676
+ var WindowsRegistryWriteResult = import_zod37.z.strictObject({ key: import_zod37.z.string(), name: import_zod37.z.string(), deleted: import_zod37.z.boolean() });
4677
+ var WindowsServicesParams = import_zod37.z.strictObject({
3868
4678
  /** Matched against the service's name and display name. */
3869
- filter: import_zod36.z.string().min(1).max(256).optional(),
3870
- limit: import_zod36.z.int().min(1).max(1e3).default(200)
4679
+ filter: import_zod37.z.string().min(1).max(256).optional(),
4680
+ limit: import_zod37.z.int().min(1).max(1e3).default(200)
3871
4681
  });
3872
- var WindowsService = import_zod36.z.strictObject({
3873
- name: import_zod36.z.string(),
3874
- display_name: import_zod36.z.string(),
4682
+ var WindowsService = import_zod37.z.strictObject({
4683
+ name: import_zod37.z.string(),
4684
+ display_name: import_zod37.z.string(),
3875
4685
  /** Running, Stopped, Paused… as Windows says it. */
3876
- status: import_zod36.z.string(),
4686
+ status: import_zod37.z.string(),
3877
4687
  /** Automatic, Manual, Disabled…; null where Windows does not say. */
3878
- start_type: import_zod36.z.string().nullable()
4688
+ start_type: import_zod37.z.string().nullable()
3879
4689
  });
3880
- var WindowsServicesResult = import_zod36.z.strictObject({ services: import_zod36.z.array(WindowsService) });
3881
- var WindowsServiceControlParams = import_zod36.z.strictObject({
3882
- name: import_zod36.z.string().min(1).max(256),
3883
- action: import_zod36.z.enum(["start", "stop", "restart"])
4690
+ var WindowsServicesResult = import_zod37.z.strictObject({ services: import_zod37.z.array(WindowsService) });
4691
+ var WindowsServiceControlParams = import_zod37.z.strictObject({
4692
+ name: import_zod37.z.string().min(1).max(256),
4693
+ action: import_zod37.z.enum(["start", "stop", "restart"])
3884
4694
  });
3885
- var WindowsServiceControlResult = import_zod36.z.strictObject({ name: import_zod36.z.string(), status: import_zod36.z.string() });
3886
- var WindowsEventLogParams = import_zod36.z.strictObject({
3887
- log: import_zod36.z.string().min(1).max(256).default("System"),
4695
+ var WindowsServiceControlResult = import_zod37.z.strictObject({ name: import_zod37.z.string(), status: import_zod37.z.string() });
4696
+ var WindowsEventLogParams = import_zod37.z.strictObject({
4697
+ log: import_zod37.z.string().min(1).max(256).default("System"),
3888
4698
  /** Only these levels; absent: all. */
3889
- levels: import_zod36.z.array(import_zod36.z.enum(["critical", "error", "warning", "information", "verbose"])).max(5).optional(),
4699
+ levels: import_zod37.z.array(import_zod37.z.enum(["critical", "error", "warning", "information", "verbose"])).max(5).optional(),
3890
4700
  since_ms: epochMs.optional(),
3891
- limit: import_zod36.z.int().min(1).max(500).default(50)
4701
+ limit: import_zod37.z.int().min(1).max(500).default(50)
3892
4702
  });
3893
- var WindowsEvent = import_zod36.z.strictObject({
3894
- id: import_zod36.z.int(),
3895
- level: import_zod36.z.string(),
3896
- source: import_zod36.z.string(),
4703
+ var WindowsEvent = import_zod37.z.strictObject({
4704
+ id: import_zod37.z.int(),
4705
+ level: import_zod37.z.string(),
4706
+ source: import_zod37.z.string(),
3897
4707
  at_ms: epochMs,
3898
- message: import_zod36.z.string()
4708
+ message: import_zod37.z.string()
3899
4709
  });
3900
- var WindowsEventLogResult = import_zod36.z.strictObject({ log: import_zod36.z.string(), events: import_zod36.z.array(WindowsEvent) });
3901
- var WindowsFeaturesParams = import_zod36.z.strictObject({ filter: import_zod36.z.string().min(1).max(256).optional() });
3902
- var WindowsFeature = import_zod36.z.strictObject({ name: import_zod36.z.string(), state: import_zod36.z.string() });
3903
- var WindowsFeaturesResult = import_zod36.z.strictObject({ features: import_zod36.z.array(WindowsFeature) });
4710
+ var WindowsEventLogResult = import_zod37.z.strictObject({ log: import_zod37.z.string(), events: import_zod37.z.array(WindowsEvent) });
4711
+ var WindowsFeaturesParams = import_zod37.z.strictObject({ filter: import_zod37.z.string().min(1).max(256).optional() });
4712
+ var WindowsFeature = import_zod37.z.strictObject({ name: import_zod37.z.string(), state: import_zod37.z.string() });
4713
+ var WindowsFeaturesResult = import_zod37.z.strictObject({ features: import_zod37.z.array(WindowsFeature) });
3904
4714
 
3905
4715
  // src/schema/schedule.ts
3906
- var import_zod37 = require("zod");
3907
- var OpRef = import_zod37.z.string().min(3).max(128).regex(/^[a-z_]+(\.[a-z_]+)+$/);
3908
- var ScheduleCreateParams = import_zod37.z.strictObject({
3909
- name: import_zod37.z.string().min(1).max(200),
4716
+ var import_zod38 = require("zod");
4717
+ var OpRef = import_zod38.z.string().min(3).max(128).regex(/^[a-z_]+(\.[a-z_]+)+$/);
4718
+ var ScheduleCreateParams = import_zod38.z.strictObject({
4719
+ name: import_zod38.z.string().min(1).max(200),
3910
4720
  op: OpRef,
3911
4721
  /** The op's params, exactly as the op takes them; checked when the task is created. */
3912
- params: import_zod37.z.record(import_zod37.z.string(), import_zod37.z.unknown()).default({}),
3913
- interval_s: import_zod37.z.int().min(10).max(2592e3),
4722
+ params: import_zod38.z.record(import_zod38.z.string(), import_zod38.z.unknown()).default({}),
4723
+ interval_s: import_zod38.z.int().min(10).max(2592e3),
3914
4724
  /** Stop after this many runs; absent: until cancelled. */
3915
- max_runs: import_zod37.z.int().min(1).max(1e5).optional(),
4725
+ max_runs: import_zod38.z.int().min(1).max(1e5).optional(),
3916
4726
  /** Run once now, before the first interval. */
3917
- run_now: import_zod37.z.boolean().default(false)
4727
+ run_now: import_zod38.z.boolean().default(false)
3918
4728
  });
3919
- var ScheduleRun = import_zod37.z.strictObject({
4729
+ var ScheduleRun = import_zod38.z.strictObject({
3920
4730
  at_ms: epochMs,
3921
- ok: import_zod37.z.boolean(),
4731
+ ok: import_zod38.z.boolean(),
3922
4732
  elapsed_ms: nonNegInt,
3923
4733
  /** The error's code and message when the run failed. */
3924
- error: import_zod37.z.string().nullable(),
4734
+ error: import_zod38.z.string().nullable(),
3925
4735
  /** The start of the answer, as JSON (cut at 4 KiB). */
3926
- result_preview: import_zod37.z.string().nullable()
4736
+ result_preview: import_zod38.z.string().nullable()
3927
4737
  });
3928
- var ScheduledTask = import_zod37.z.strictObject({
3929
- id: import_zod37.z.string(),
3930
- name: import_zod37.z.string(),
3931
- op: import_zod37.z.string(),
3932
- params: import_zod37.z.record(import_zod37.z.string(), import_zod37.z.unknown()),
4738
+ var ScheduledTask = import_zod38.z.strictObject({
4739
+ id: import_zod38.z.string(),
4740
+ name: import_zod38.z.string(),
4741
+ op: import_zod38.z.string(),
4742
+ params: import_zod38.z.record(import_zod38.z.string(), import_zod38.z.unknown()),
3933
4743
  interval_s: nonNegInt,
3934
4744
  max_runs: nonNegInt.nullable(),
3935
4745
  runs: nonNegInt,
3936
4746
  created_at_ms: epochMs,
3937
4747
  next_run_at_ms: epochMs.nullable(),
3938
4748
  /** active, done (ran max_runs), cancelled. */
3939
- state: import_zod37.z.enum(["active", "done", "cancelled"]),
4749
+ state: import_zod38.z.enum(["active", "done", "cancelled"]),
3940
4750
  /** The newest runs, newest first (at most 10). */
3941
- recent: import_zod37.z.array(ScheduleRun)
4751
+ recent: import_zod38.z.array(ScheduleRun)
3942
4752
  });
3943
- var ScheduleCreateResult = import_zod37.z.strictObject({ task: ScheduledTask });
3944
- var ScheduleListParams = import_zod37.z.strictObject({ include_finished: import_zod37.z.boolean().default(false) });
3945
- var ScheduleListResult = import_zod37.z.strictObject({ tasks: import_zod37.z.array(ScheduledTask) });
3946
- var ScheduleCancelParams = import_zod37.z.strictObject({ id: import_zod37.z.string().min(1).max(64) });
3947
- var ScheduleCancelResult = import_zod37.z.strictObject({ task: ScheduledTask });
4753
+ var ScheduleCreateResult = import_zod38.z.strictObject({ task: ScheduledTask });
4754
+ var ScheduleListParams = import_zod38.z.strictObject({ include_finished: import_zod38.z.boolean().default(false) });
4755
+ var ScheduleListResult = import_zod38.z.strictObject({ tasks: import_zod38.z.array(ScheduledTask) });
4756
+ var ScheduleCancelParams = import_zod38.z.strictObject({ id: import_zod38.z.string().min(1).max(64) });
4757
+ var ScheduleCancelResult = import_zod38.z.strictObject({ task: ScheduledTask });
3948
4758
 
3949
4759
  // src/schema/notes.ts
3950
- var import_zod38 = require("zod");
3951
- var NoteFolder = import_zod38.z.string().min(1).max(512).regex(/^[^/\\:*?"<>|][^\\:*?"<>|]*$/);
3952
- var NotePath = import_zod38.z.string().min(4).max(1024).regex(/^[^/\\:*?"<>|][^\\:*?"<>|]*\.md$/);
3953
- var NotesFoldersParams = import_zod38.z.strictObject({});
3954
- var NotesFolder = import_zod38.z.strictObject({ folder: import_zod38.z.string(), notes: nonNegInt });
3955
- var NotesFoldersResult = import_zod38.z.strictObject({
4760
+ var import_zod39 = require("zod");
4761
+ var NoteFolder = import_zod39.z.string().min(1).max(512).regex(/^[^/\\:*?"<>|][^\\:*?"<>|]*$/);
4762
+ var NotePath = import_zod39.z.string().min(4).max(1024).regex(/^[^/\\:*?"<>|][^\\:*?"<>|]*\.md$/);
4763
+ var NotesFoldersParams = import_zod39.z.strictObject({});
4764
+ var NotesFolder = import_zod39.z.strictObject({ folder: import_zod39.z.string(), notes: nonNegInt });
4765
+ var NotesFoldersResult = import_zod39.z.strictObject({
3956
4766
  /** The notes root on this computer. */
3957
- root: import_zod38.z.string(),
3958
- folders: import_zod38.z.array(NotesFolder)
4767
+ root: import_zod39.z.string(),
4768
+ folders: import_zod39.z.array(NotesFolder)
3959
4769
  });
3960
- var NotesListParams = import_zod38.z.strictObject({
4770
+ var NotesListParams = import_zod39.z.strictObject({
3961
4771
  folder: NoteFolder.optional(),
3962
- limit: import_zod38.z.int().min(1).max(2e3).default(500)
4772
+ limit: import_zod39.z.int().min(1).max(2e3).default(500)
3963
4773
  });
3964
- var NoteEntry = import_zod38.z.strictObject({
3965
- path: import_zod38.z.string(),
3966
- label: import_zod38.z.string(),
3967
- folder: import_zod38.z.string(),
4774
+ var NoteEntry = import_zod39.z.strictObject({
4775
+ path: import_zod39.z.string(),
4776
+ label: import_zod39.z.string(),
4777
+ folder: import_zod39.z.string(),
3968
4778
  bytes: nonNegInt,
3969
4779
  modified_at_ms: epochMs
3970
4780
  });
3971
- var NotesListResult = import_zod38.z.strictObject({ root: import_zod38.z.string(), notes: import_zod38.z.array(NoteEntry), total: nonNegInt });
3972
- var NotesReadParams = import_zod38.z.strictObject({ path: NotePath });
3973
- var NotesReadResult = import_zod38.z.strictObject({
3974
- path: import_zod38.z.string(),
3975
- content: import_zod38.z.string(),
4781
+ var NotesListResult = import_zod39.z.strictObject({ root: import_zod39.z.string(), notes: import_zod39.z.array(NoteEntry), total: nonNegInt });
4782
+ var NotesReadParams = import_zod39.z.strictObject({ path: NotePath });
4783
+ var NotesReadResult = import_zod39.z.strictObject({
4784
+ path: import_zod39.z.string(),
4785
+ content: import_zod39.z.string(),
3976
4786
  bytes: nonNegInt,
3977
4787
  modified_at_ms: epochMs,
3978
4788
  /** SHA-256 of the content: pass it back as `if_hash` to write only over this version. */
3979
- hash: import_zod38.z.string()
4789
+ hash: import_zod39.z.string()
3980
4790
  });
3981
- var NotesWriteParams = import_zod38.z.strictObject({
4791
+ var NotesWriteParams = import_zod39.z.strictObject({
3982
4792
  folder: NoteFolder.default("General"),
3983
4793
  /** The note's name, without ".md". */
3984
- label: import_zod38.z.string().min(1).max(200).regex(/^[^/\\:*?"<>|]+$/),
3985
- content: import_zod38.z.string().max(10485760),
4794
+ label: import_zod39.z.string().min(1).max(200).regex(/^[^/\\:*?"<>|]+$/),
4795
+ content: import_zod39.z.string().max(10485760),
3986
4796
  /** Write only when the note is still this version (notes.read's hash); a change since answers CONFLICT. */
3987
- if_hash: import_zod38.z.string().length(64).optional()
4797
+ if_hash: import_zod39.z.string().length(64).optional()
3988
4798
  });
3989
- var NotesWriteResult = import_zod38.z.strictObject({ path: import_zod38.z.string(), bytes: nonNegInt, created: import_zod38.z.boolean(), hash: import_zod38.z.string() });
3990
- var NotesSearchParams = import_zod38.z.strictObject({
3991
- query: import_zod38.z.string().min(1).max(512),
3992
- limit: import_zod38.z.int().min(1).max(200).default(50)
4799
+ var NotesWriteResult = import_zod39.z.strictObject({ path: import_zod39.z.string(), bytes: nonNegInt, created: import_zod39.z.boolean(), hash: import_zod39.z.string() });
4800
+ var NotesSearchParams = import_zod39.z.strictObject({
4801
+ query: import_zod39.z.string().min(1).max(512),
4802
+ limit: import_zod39.z.int().min(1).max(200).default(50)
3993
4803
  });
3994
- var NotesMatch = import_zod38.z.strictObject({
3995
- path: import_zod38.z.string(),
3996
- label: import_zod38.z.string(),
3997
- folder: import_zod38.z.string(),
4804
+ var NotesMatch = import_zod39.z.strictObject({
4805
+ path: import_zod39.z.string(),
4806
+ label: import_zod39.z.string(),
4807
+ folder: import_zod39.z.string(),
3998
4808
  /** The matching lines (at most five), trimmed. */
3999
- lines: import_zod38.z.array(import_zod38.z.string())
4809
+ lines: import_zod39.z.array(import_zod39.z.string())
4000
4810
  });
4001
- var NotesSearchResult = import_zod38.z.strictObject({ matches: import_zod38.z.array(NotesMatch), total: nonNegInt });
4811
+ var NotesSearchResult = import_zod39.z.strictObject({ matches: import_zod39.z.array(NotesMatch), total: nonNegInt });
4002
4812
 
4003
4813
  // src/schema/documents.ts
4004
- var import_zod39 = require("zod");
4814
+ var import_zod40 = require("zod");
4005
4815
  var DOCUMENTS_MAX_TEXT_CHARS = 1048576;
4006
- var DocumentsPdfTextParams = import_zod39.z.strictObject({
4816
+ var DocumentsPdfTextParams = import_zod40.z.strictObject({
4007
4817
  path: AbsPath,
4008
4818
  /** 1-based, inclusive. */
4009
- first_page: import_zod39.z.int().min(1).optional(),
4010
- last_page: import_zod39.z.int().min(1).optional(),
4011
- max_chars: import_zod39.z.int().min(1).max(DOCUMENTS_MAX_TEXT_CHARS).default(2e5)
4819
+ first_page: import_zod40.z.int().min(1).optional(),
4820
+ last_page: import_zod40.z.int().min(1).optional(),
4821
+ max_chars: import_zod40.z.int().min(1).max(DOCUMENTS_MAX_TEXT_CHARS).default(2e5)
4012
4822
  });
4013
- var DocumentsPdfPage = import_zod39.z.strictObject({ page: import_zod39.z.int().min(1), text: import_zod39.z.string() });
4014
- var DocumentsPdfTextResult = import_zod39.z.strictObject({
4823
+ var DocumentsPdfPage = import_zod40.z.strictObject({ page: import_zod40.z.int().min(1), text: import_zod40.z.string() });
4824
+ var DocumentsPdfTextResult = import_zod40.z.strictObject({
4015
4825
  pages: nonNegInt,
4016
4826
  /** Each page read, in order (an image-only page has empty text: OCR it). */
4017
- read: import_zod39.z.array(DocumentsPdfPage),
4018
- truncated: import_zod39.z.boolean(),
4019
- title: import_zod39.z.string().nullable(),
4020
- author: import_zod39.z.string().nullable()
4827
+ read: import_zod40.z.array(DocumentsPdfPage),
4828
+ truncated: import_zod40.z.boolean(),
4829
+ title: import_zod40.z.string().nullable(),
4830
+ author: import_zod40.z.string().nullable()
4021
4831
  });
4022
- var DocumentsOcrParams = import_zod39.z.strictObject({
4832
+ var DocumentsOcrParams = import_zod40.z.strictObject({
4023
4833
  path: AbsPath,
4024
4834
  /** BCP-47 language hints ("en-US", "fr-FR"); absent: the OS's own choice. */
4025
- languages: import_zod39.z.array(import_zod39.z.string().min(2).max(16)).max(8).optional(),
4835
+ languages: import_zod40.z.array(import_zod40.z.string().min(2).max(16)).max(8).optional(),
4026
4836
  /** Faster, less accurate. */
4027
- fast: import_zod39.z.boolean().default(false)
4837
+ fast: import_zod40.z.boolean().default(false)
4028
4838
  });
4029
- var DocumentsOcrLine = import_zod39.z.strictObject({
4030
- text: import_zod39.z.string(),
4839
+ var DocumentsOcrLine = import_zod40.z.strictObject({
4840
+ text: import_zod40.z.string(),
4031
4841
  /** 0–1; null where the engine does not say. */
4032
- confidence: import_zod39.z.number().min(0).max(1).nullable()
4842
+ confidence: import_zod40.z.number().min(0).max(1).nullable()
4033
4843
  });
4034
- var DocumentsOcrResult = import_zod39.z.strictObject({
4035
- text: import_zod39.z.string(),
4036
- lines: import_zod39.z.array(DocumentsOcrLine),
4037
- truncated: import_zod39.z.boolean(),
4844
+ var DocumentsOcrResult = import_zod40.z.strictObject({
4845
+ text: import_zod40.z.string(),
4846
+ lines: import_zod40.z.array(DocumentsOcrLine),
4847
+ truncated: import_zod40.z.boolean(),
4038
4848
  /** Which engine read it ("vision" on macOS, "windows-ocr", "tesseract"). */
4039
- engine: import_zod39.z.string()
4849
+ engine: import_zod40.z.string()
4040
4850
  });
4041
- var DocumentsImageResizeParams = import_zod39.z.strictObject({
4851
+ var DocumentsImageResizeParams = import_zod40.z.strictObject({
4042
4852
  path: AbsPath,
4043
4853
  /** Where to write it; absent: next to the original, "<name>-resized.<ext>". */
4044
4854
  out_path: AbsPath.optional(),
4045
4855
  /** The longest side, kept in proportion; absent: the size stays (a format change only). */
4046
- max_size: import_zod39.z.int().min(1).max(32768).optional(),
4047
- format: import_zod39.z.enum(["png", "jpeg", "tiff", "heic", "bmp", "gif"]).optional(),
4048
- overwrite: import_zod39.z.boolean().default(false)
4856
+ max_size: import_zod40.z.int().min(1).max(32768).optional(),
4857
+ format: import_zod40.z.enum(["png", "jpeg", "tiff", "heic", "bmp", "gif"]).optional(),
4858
+ overwrite: import_zod40.z.boolean().default(false)
4049
4859
  });
4050
- var DocumentsImageResizeResult = import_zod39.z.strictObject({
4051
- path: import_zod39.z.string(),
4860
+ var DocumentsImageResizeResult = import_zod40.z.strictObject({
4861
+ path: import_zod40.z.string(),
4052
4862
  width: nonNegInt,
4053
4863
  height: nonNegInt,
4054
4864
  bytes: nonNegInt
4055
4865
  });
4056
- var DocumentsParagraph = import_zod39.z.strictObject({
4057
- style: import_zod39.z.enum(["title", "heading1", "heading2", "heading3", "body", "bullet", "numbered", "quote", "code"]).default("body"),
4058
- text: import_zod39.z.string().max(1e5)
4866
+ var DocumentsParagraph = import_zod40.z.strictObject({
4867
+ style: import_zod40.z.enum(["title", "heading1", "heading2", "heading3", "body", "bullet", "numbered", "quote", "code"]).default("body"),
4868
+ text: import_zod40.z.string().max(1e5)
4059
4869
  });
4060
- var DocumentsSheet = import_zod39.z.strictObject({
4061
- name: import_zod39.z.string().min(1).max(31),
4870
+ var DocumentsSheet = import_zod40.z.strictObject({
4871
+ name: import_zod40.z.string().min(1).max(31),
4062
4872
  /** Rows of cells; the first row is the header when `header` is true. */
4063
- rows: import_zod39.z.array(import_zod39.z.array(import_zod39.z.union([import_zod39.z.string().max(32767), import_zod39.z.number(), import_zod39.z.boolean(), import_zod39.z.null()])).max(16384)).max(1e5),
4064
- header: import_zod39.z.boolean().default(true)
4873
+ rows: import_zod40.z.array(import_zod40.z.array(import_zod40.z.union([import_zod40.z.string().max(32767), import_zod40.z.number(), import_zod40.z.boolean(), import_zod40.z.null()])).max(16384)).max(1e5),
4874
+ header: import_zod40.z.boolean().default(true)
4065
4875
  });
4066
- var DocumentsOfficeGenerateParams = import_zod39.z.strictObject({
4067
- kind: import_zod39.z.enum(["docx", "xlsx"]),
4876
+ var DocumentsOfficeGenerateParams = import_zod40.z.strictObject({
4877
+ kind: import_zod40.z.enum(["docx", "xlsx"]),
4068
4878
  path: AbsPath,
4069
- title: import_zod39.z.string().max(1024).optional(),
4879
+ title: import_zod40.z.string().max(1024).optional(),
4070
4880
  /** docx: the document's paragraphs, in order. */
4071
- paragraphs: import_zod39.z.array(DocumentsParagraph).max(5e4).optional(),
4881
+ paragraphs: import_zod40.z.array(DocumentsParagraph).max(5e4).optional(),
4072
4882
  /** xlsx: the workbook's sheets, in order. */
4073
- sheets: import_zod39.z.array(DocumentsSheet).min(1).max(64).optional(),
4074
- overwrite: import_zod39.z.boolean().default(false)
4883
+ sheets: import_zod40.z.array(DocumentsSheet).min(1).max(64).optional(),
4884
+ overwrite: import_zod40.z.boolean().default(false)
4075
4885
  });
4076
- var DocumentsOfficeGenerateResult = import_zod39.z.strictObject({ path: import_zod39.z.string(), bytes: nonNegInt });
4077
- var EntitiesNerParams = import_zod39.z.strictObject({
4078
- text: import_zod39.z.string().min(1).max(DOCUMENTS_MAX_TEXT_CHARS),
4886
+ var DocumentsOfficeGenerateResult = import_zod40.z.strictObject({ path: import_zod40.z.string(), bytes: nonNegInt });
4887
+ var EntitiesNerParams = import_zod40.z.strictObject({
4888
+ text: import_zod40.z.string().min(1).max(DOCUMENTS_MAX_TEXT_CHARS),
4079
4889
  /** Which kinds to keep; absent: all three. */
4080
- labels: import_zod39.z.array(import_zod39.z.enum(["person", "place", "organization"])).min(1).max(3).optional()
4890
+ labels: import_zod40.z.array(import_zod40.z.enum(["person", "place", "organization"])).min(1).max(3).optional()
4081
4891
  });
4082
- var EntitySpan = import_zod39.z.strictObject({
4083
- text: import_zod39.z.string(),
4084
- label: import_zod39.z.string(),
4892
+ var EntitySpan = import_zod40.z.strictObject({
4893
+ text: import_zod40.z.string(),
4894
+ label: import_zod40.z.string(),
4085
4895
  /** Character offsets into the text (UTF-16, as JavaScript counts). */
4086
4896
  start: nonNegInt,
4087
4897
  end: nonNegInt
4088
4898
  });
4089
- var EntitiesNerResult = import_zod39.z.strictObject({ entities: import_zod39.z.array(EntitySpan), engine: import_zod39.z.string() });
4090
- var PiiKind = import_zod39.z.enum(["email", "phone", "credit_card", "us_ssn", "iban", "ip_address", "url", "api_key"]);
4091
- var EntitiesPiiParams = import_zod39.z.strictObject({
4092
- text: import_zod39.z.string().min(1).max(DOCUMENTS_MAX_TEXT_CHARS),
4093
- kinds: import_zod39.z.array(PiiKind).min(1).max(8).optional(),
4899
+ var EntitiesNerResult = import_zod40.z.strictObject({ entities: import_zod40.z.array(EntitySpan), engine: import_zod40.z.string() });
4900
+ var PiiKind = import_zod40.z.enum(["email", "phone", "credit_card", "us_ssn", "iban", "ip_address", "url", "api_key"]);
4901
+ var EntitiesPiiParams = import_zod40.z.strictObject({
4902
+ text: import_zod40.z.string().min(1).max(DOCUMENTS_MAX_TEXT_CHARS),
4903
+ kinds: import_zod40.z.array(PiiKind).min(1).max(8).optional(),
4094
4904
  /** Also answer the text with each finding replaced by its kind ("[email]"). */
4095
- redact: import_zod39.z.boolean().default(false)
4905
+ redact: import_zod40.z.boolean().default(false)
4096
4906
  });
4097
- var EntitiesPiiResult = import_zod39.z.strictObject({
4098
- findings: import_zod39.z.array(import_zod39.z.strictObject({ kind: PiiKind, text: import_zod39.z.string(), start: nonNegInt, end: nonNegInt })),
4099
- redacted: import_zod39.z.string().nullable()
4907
+ var EntitiesPiiResult = import_zod40.z.strictObject({
4908
+ findings: import_zod40.z.array(import_zod40.z.strictObject({ kind: PiiKind, text: import_zod40.z.string(), start: nonNegInt, end: nonNegInt })),
4909
+ redacted: import_zod40.z.string().nullable()
4100
4910
  });
4101
4911
 
4102
4912
  // src/schema/registry.ts
@@ -4230,6 +5040,36 @@ var OPS = {
4230
5040
  "apps.windows.shown": { params: AppsWindowsShownParams, result: AppsWindowsShownResult, kind: "unary", since: "1.21", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
4231
5041
  // Claude Code history (SPEC §6 coding): served by the `coding` Python service through SERVICES below.
4232
5042
  "coding.history.import_missing": { params: CodingHistoryImportMissingParams, result: CodingHistoryImportMissingResult, kind: "unary", since: "1.5", errors: ["RESOURCE_BUSY", "RESOURCE_GONE", "CANCELLED", "INTERNAL"] },
5043
+ // Code from anywhere (1.38): the coding engine's sessions, read and driven over any transport.
5044
+ "coding.providers": { params: CodingProvidersParams, result: CodingProvidersResult, kind: "unary", since: "1.38", errors: ["INTERNAL"] },
5045
+ "coding.sessions.list": { params: CodingSessionsListParams, result: CodingSessionsListResult, kind: "unary", since: "1.38", errors: ["PLATFORM_UNSUPPORTED", "INTERNAL"] },
5046
+ "coding.discover": { params: CodingDiscoverParams, result: CodingDiscoverResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
5047
+ "coding.runs.list": { params: CodingRunsListParams, result: CodingRunsListResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "INTERNAL"] },
5048
+ "coding.history": { params: CodingHistoryParams, result: CodingHistoryResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "INTERNAL"] },
5049
+ "coding.transcript.read": { params: CodingTranscriptReadParams, result: CodingTranscriptReadResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "INTERNAL"] },
5050
+ "coding.item.full": { params: CodingItemFullParams, result: CodingItemFullResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "PAYLOAD_TOO_LARGE", "INTERNAL"] },
5051
+ "coding.activity": { params: CodingActivityParams, result: CodingActivityResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "INTERNAL"] },
5052
+ "coding.folders.recent": { params: CodingFoldersRecentParams, result: CodingFoldersRecentResult, kind: "unary", since: "1.38", errors: ["INTERNAL"] },
5053
+ "coding.folders.check": { params: CodingFoldersCheckParams, result: CodingFoldersCheckResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "AUTH_FORBIDDEN", "INTERNAL"] },
5054
+ "coding.folders.create": { params: CodingFoldersCreateParams, result: CodingFoldersCreateResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "AUTH_FORBIDDEN", "PERMISSION_DENIED_OS", "INTERNAL"] },
5055
+ "coding.start": { params: CodingStartParams, result: CodingStartResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "AUTH_FORBIDDEN", "RATE_LIMITED", "INTERNAL"] },
5056
+ "coding.takeover": { params: CodingTakeoverParams, result: CodingTakeoverResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "RESOURCE_BUSY", "AUTH_FORBIDDEN", "INTERNAL"] },
5057
+ "coding.send": { params: CodingSendParams, result: CodingSendResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "RATE_LIMITED", "INTERNAL"] },
5058
+ "coding.stop": { params: CodingStopParams, result: CodingStopResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "INTERNAL"] },
5059
+ "coding.stop_elsewhere": { params: CodingStopElsewhereParams, result: CodingStopElsewhereResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "CONFLICT", "PERMISSION_DENIED_OS", "INTERNAL"] },
5060
+ "coding.options.set": { params: CodingOptionsSetParams, result: CodingOptionsSetResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "INTERNAL"] },
5061
+ "coding.agent.set": { params: CodingAgentSetParams, result: CodingAgentSetResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "AUTH_FORBIDDEN", "INTERNAL"] },
5062
+ "coding.agents.access": { params: CodingAgentsAccessParams, result: CodingAgentsAccessResult, kind: "unary", since: "1.38", errors: ["INTERNAL"] },
5063
+ "coding.titles.status": { params: CodingTitlesStatusParams, result: CodingTitlesStatusResult, kind: "unary", since: "1.38", errors: ["INTERNAL"] },
5064
+ "coding.prefs.list": { params: CodingPrefsListParams, result: CodingPrefsListResult, kind: "unary", since: "1.38", errors: ["INTERNAL"] },
5065
+ "coding.prefs.set": { params: CodingPrefsSetParams, result: CodingPrefsSetResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "INTERNAL"] },
5066
+ "coding.recent.seen": { params: CodingRecentSeenParams, result: CodingRecentSeenResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "INTERNAL"] },
5067
+ "coding.search": { params: CodingSearchParams, result: CodingSearchResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "TIMEOUT", "INTERNAL"] },
5068
+ "coding.reconcile": { params: CodingReconcileParams, result: CodingReconcileResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "RESOURCE_BUSY", "CANCELLED", "INTERNAL"] },
5069
+ "coding.transcript.raw": { params: CodingTranscriptRawParams, result: CodingTranscriptRawResult, kind: "stream", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "CANCELLED", "INTERNAL"] },
5070
+ "coding.watch": { params: CodingWatchParams, result: CodingWatchResult, kind: "resource", since: "1.38", errors: ["PLATFORM_UNSUPPORTED", "RATE_LIMITED", "INTERNAL"] },
5071
+ "coding.session.watch": { params: CodingSessionWatchParams, result: CodingSessionWatchResult, kind: "resource", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "RATE_LIMITED", "INTERNAL"] },
5072
+ "session.identify": { params: SessionIdentifyParams, result: SessionIdentifyResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS"] },
4233
5073
  // 1.22: git for agents (core `git`, the system git; the cloud sandbox's /git/* set, SPEC 6.1).
4234
5074
  "git.status": { params: GitStatusParams, result: GitStatusResult, kind: "unary", since: "1.22", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "TIMEOUT", "INTERNAL"] },
4235
5075
  "git.diff": { params: GitDiffParams, result: GitDiffResult, kind: "unary", since: "1.22", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "TIMEOUT", "INTERNAL"] },
@@ -4246,10 +5086,24 @@ var OPS = {
4246
5086
  "web.scrape": { params: WebScrapeParams, result: WebScrapeResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
4247
5087
  "web.search": { params: WebSearchParams, result: WebSearchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
4248
5088
  "web.fetch_with_browser": { params: WebBrowserFetchParams, result: WebBrowserFetchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
5089
+ "web.runtime.state": { params: WebRuntimeParams, result: WebRuntimeState, kind: "unary", since: "1.40", errors: ["INTERNAL"] },
5090
+ "web.runtime.install": { params: WebRuntimeParams, result: WebRuntimeState, kind: "unary", since: "1.40", errors: ["TIMEOUT", "RESOURCE_BUSY", "CANCELLED", "INTERNAL"] },
5091
+ "web.runtime.remove": { params: WebRuntimeParams, result: WebRuntimeState, kind: "unary", since: "1.40", errors: ["RESOURCE_BUSY", "INTERNAL"] },
5092
+ "web.outbox.list": { params: WebOutboxListParams, result: WebOutboxListResult, kind: "unary", since: "1.40", errors: ["INTERNAL"] },
5093
+ "web.outbox.retry": { params: WebOutboxRetryParams, result: WebOutboxRetryResult, kind: "unary", since: "1.40", errors: ["NOT_FOUND", "AUTH_REQUIRED", "INTERNAL"] },
5094
+ "web.outbox.discard": { params: WebOutboxDiscardParams, result: WebOutboxDiscardResult, kind: "unary", since: "1.40", errors: ["NOT_FOUND", "INTERNAL"] },
5095
+ "web.log.list": { params: WebLogListParams, result: WebLogListResult, kind: "unary", since: "1.40", errors: ["INVALID_PARAMS"] },
5096
+ "web.log.clear": { params: WebLogClearParams, result: WebLogClearResult, kind: "unary", since: "1.40", errors: ["INTERNAL"] },
5097
+ "web.research.queue": { params: WebResearchQueueParams, result: WebResearchQueueResult, kind: "unary", since: "1.40", errors: ["INVALID_PARAMS", "INTERNAL"] },
5098
+ "web.research.fetch": { params: WebResearchFetchParams, result: WebResearchFetchResult, kind: "unary", since: "1.40", errors: ["INVALID_PARAMS", "AUTH_REQUIRED", "RESOURCE_BUSY", "CANCELLED", "INTERNAL"] },
4249
5099
  // 1.23: the signed-in person's own agents and Vault, read as them (the desktop's Agents library and Vault).
4250
5100
  "account.agents.list": { params: AccountAgentsListParams, result: AccountAgentsListResult, kind: "unary", since: "1.23", errors: ["INTERNAL"] },
4251
5101
  "account.vault.list": { params: AccountVaultListParams, result: AccountVaultListResult, kind: "unary", since: "1.23", errors: ["INTERNAL"] },
4252
5102
  "account.vault.copy": { params: AccountVaultCopyParams, result: AccountVaultCopyResult, kind: "unary", since: "1.23", errors: ["AUTH_REQUIRED", "AUTH_FORBIDDEN", "NOT_FOUND", "INVALID_PARAMS", "DEVICE_OFFLINE", "INTERNAL"] },
5103
+ // 1.39: one agent opened (its inputs and what it uses), its runs (mandate.run_history, one agent at a time) and its star.
5104
+ "account.agents.get": { params: AccountAgentsGetParams, result: AccountAgentsGetResult, kind: "unary", since: "1.39", errors: ["INVALID_PARAMS", "INTERNAL"] },
5105
+ "account.agents.runs": { params: AccountAgentsRunsParams, result: AccountAgentsRunsResult, kind: "unary", since: "1.39", errors: ["INVALID_PARAMS", "INTERNAL"] },
5106
+ "account.agents.favorite": { params: AccountAgentsFavoriteParams, result: AccountAgentsFavoriteResult, kind: "unary", since: "1.39", errors: ["AUTH_REQUIRED", "NOT_FOUND", "INVALID_PARAMS", "DEVICE_OFFLINE", "INTERNAL"] },
4253
5107
  // 1.26: the app's own update (it installs only once every window quit) and bringing the windows back.
4254
5108
  "apps.windows.update_state": { params: AppsWindowsUpdateStateParams, result: AppsWindowsUpdateStateResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
4255
5109
  "apps.windows.reopen": { params: AppsWindowsReopenParams, result: AppsWindowsReopenResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
@@ -4323,12 +5177,18 @@ var EVENTS = {
4323
5177
  "session.control_changed": SessionControlChangedEvent,
4324
5178
  "models.progress": ModelsProgressEvent,
4325
5179
  "coding.history.progress": CodingHistoryProgressEvent,
5180
+ "coding.changed": CodingChangedEvent,
5181
+ "coding.watch_state": CodingWatchStateEvent,
5182
+ "coding.item": CodingItemEvent,
5183
+ "coding.gap": CodingGapEvent,
4326
5184
  "relay.device_status": RelayDeviceStatusEvent,
4327
5185
  "relay.auth_expiring": RelayAuthExpiringEvent,
4328
5186
  "diag.errors.changed": DiagErrorsChangedEvent,
4329
5187
  "browser.invoke": BrowserInvokeEvent,
4330
5188
  "browser.sessions_changed": BrowserSessionsChangedEvent,
4331
- "browser.progress": BrowserProgressEvent
5189
+ "browser.progress": BrowserProgressEvent,
5190
+ "web.log.entry": WebLogEntry,
5191
+ "web.progress": WebProgressEvent
4332
5192
  };
4333
5193
  var SERVICES = {
4334
5194
  ml: {
@@ -4354,9 +5214,12 @@ var SERVICES = {
4354
5214
  progress: ToolsServiceProgress,
4355
5215
  ops: {
4356
5216
  "tools.web_fetch": { params: WebFetchParams, result: WebFetchResult },
4357
- "tools.web_scrape": { params: WebScrapeParams, result: WebScrapeResult },
5217
+ "tools.web_scrape": { params: ToolsWebScrapeParams, result: ToolsWebScrapeResult },
4358
5218
  "tools.web_search": { params: ToolsWebSearchParams, result: WebSearchResult },
4359
- "tools.web_browser_fetch": { params: WebBrowserFetchParams, result: WebBrowserFetchResult }
5219
+ "tools.web_browser_fetch": { params: ToolsWebBrowserFetchParams, result: ToolsWebBrowserFetchResult },
5220
+ "tools.web_runtime_state": { params: WebRuntimeParams, result: WebRuntimeState },
5221
+ "tools.web_runtime_install": { params: WebRuntimeParams, result: WebRuntimeState },
5222
+ "tools.web_runtime_remove": { params: WebRuntimeParams, result: WebRuntimeState }
4360
5223
  }
4361
5224
  }
4362
5225
  };
@@ -4389,7 +5252,9 @@ var NAMED_SCHEMAS = {
4389
5252
  RelayMsg,
4390
5253
  ClientToCoreMsg,
4391
5254
  CoreToClientMsg,
5255
+ OsGrantState,
4392
5256
  OsPermissionName,
5257
+ OsRequirementName,
4393
5258
  SysinfoGetParams,
4394
5259
  SysinfoGetResult,
4395
5260
  SysinfoHardwareParams,
@@ -4497,6 +5362,91 @@ var NAMED_SCHEMAS = {
4497
5362
  CodingHistoryImportMissingParams,
4498
5363
  CodingHistoryImportMissingResult,
4499
5364
  CodingHistoryProgressEvent,
5365
+ CodingProviderName,
5366
+ CodingRunStatus,
5367
+ CodingClientRequestId,
5368
+ CodingRunUsage,
5369
+ CodingStartedBy,
5370
+ CodingRunRecord,
5371
+ CodingSessionAgentPart,
5372
+ CodingSessionAgent,
5373
+ CodingSessionRecord,
5374
+ CodingActiveElsewhere,
5375
+ CodingDiscoveredChat,
5376
+ CodingTranscriptItem,
5377
+ CodingHistoryRecord,
5378
+ CodingQuotaWindow,
5379
+ CodingProviderProblem,
5380
+ CodingProviderBinary,
5381
+ CodingProviderStatus,
5382
+ CodingChatPreference,
5383
+ CodingTitleStatus,
5384
+ CodingRecentRow,
5385
+ CodingFolderCheck,
5386
+ CodingRecentFolder,
5387
+ CodingAgentSelectionParams,
5388
+ CodingSendResult,
5389
+ CodingProvidersParams,
5390
+ CodingProvidersResult,
5391
+ CodingSessionsListParams,
5392
+ CodingSessionsListResult,
5393
+ CodingDiscoverParams,
5394
+ CodingDiscoverResult,
5395
+ CodingRunsListParams,
5396
+ CodingRunsListResult,
5397
+ CodingHistoryParams,
5398
+ CodingHistoryResult,
5399
+ CodingTranscriptReadParams,
5400
+ CodingTranscriptReadResult,
5401
+ CodingItemFullParams,
5402
+ CodingItemFullResult,
5403
+ CodingActivityParams,
5404
+ CodingActivityResult,
5405
+ CodingFoldersRecentParams,
5406
+ CodingFoldersRecentResult,
5407
+ CodingFoldersCheckParams,
5408
+ CodingFoldersCheckResult,
5409
+ CodingFoldersCreateParams,
5410
+ CodingFoldersCreateResult,
5411
+ CodingStartParams,
5412
+ CodingStartResult,
5413
+ CodingTakeoverParams,
5414
+ CodingTakeoverResult,
5415
+ CodingSendParams,
5416
+ CodingStopParams,
5417
+ CodingStopResult,
5418
+ CodingStopElsewhereParams,
5419
+ CodingStopElsewhereResult,
5420
+ CodingOptionsSetParams,
5421
+ CodingOptionsSetResult,
5422
+ CodingAgentSetParams,
5423
+ CodingAgentSetResult,
5424
+ CodingAgentsAccessParams,
5425
+ CodingAgentsAccessResult,
5426
+ CodingTitlesStatusParams,
5427
+ CodingTitlesStatusResult,
5428
+ CodingPrefsListParams,
5429
+ CodingPrefsListResult,
5430
+ CodingPrefsSetParams,
5431
+ CodingPrefsSetResult,
5432
+ CodingRecentSeenParams,
5433
+ CodingRecentSeenResult,
5434
+ CodingSearchParams,
5435
+ CodingSearchResult,
5436
+ CodingReconcileParams,
5437
+ CodingReconcileResult,
5438
+ CodingTranscriptRawParams,
5439
+ CodingTranscriptRawResult,
5440
+ CodingWatchParams,
5441
+ CodingWatchResult,
5442
+ CodingSessionWatchParams,
5443
+ CodingSessionWatchResult,
5444
+ SessionIdentifyParams,
5445
+ SessionIdentifyResult,
5446
+ CodingChangedEvent,
5447
+ CodingWatchStateEvent,
5448
+ CodingItemEvent,
5449
+ CodingGapEvent,
4500
5450
  ServiceName,
4501
5451
  ContractHash,
4502
5452
  ServiceToken,
@@ -4793,6 +5743,42 @@ var NAMED_SCHEMAS = {
4793
5743
  ToolsWebSearchParams,
4794
5744
  WebBrowserFetchParams,
4795
5745
  WebBrowserFetchResult,
5746
+ WebAttachTarget,
5747
+ WebLand,
5748
+ WebNotSavedReason,
5749
+ WebSourceNotice,
5750
+ WebSourceState,
5751
+ ToolsParseFile,
5752
+ ToolsWebScrapeParams,
5753
+ ToolsWebScrapePage,
5754
+ ToolsWebScrapeResult,
5755
+ ToolsWebBrowserFetchParams,
5756
+ ToolsWebBrowserFetchResult,
5757
+ WebRuntimeStateName,
5758
+ WebRuntimeParams,
5759
+ WebRuntimeState,
5760
+ WebOutboxItem,
5761
+ WebOutboxListParams,
5762
+ WebOutboxListResult,
5763
+ WebOutboxRetryParams,
5764
+ WebOutboxRetryResult,
5765
+ WebOutboxDiscardParams,
5766
+ WebOutboxDiscardResult,
5767
+ WebLogVia,
5768
+ WebLogCaller,
5769
+ WebLogResult,
5770
+ WebLogEntry,
5771
+ WebLogListParams,
5772
+ WebLogListResult,
5773
+ WebLogClearParams,
5774
+ WebLogClearResult,
5775
+ WebProgressEvent,
5776
+ WebResearchItemState,
5777
+ WebResearchItem,
5778
+ WebResearchQueueParams,
5779
+ WebResearchQueueResult,
5780
+ WebResearchFetchParams,
5781
+ WebResearchFetchResult,
4796
5782
  ToolsServiceProgress,
4797
5783
  AccountRowId,
4798
5784
  AccountReadState,
@@ -4806,6 +5792,17 @@ var NAMED_SCHEMAS = {
4806
5792
  AccountVaultListResult,
4807
5793
  AccountVaultCopyParams,
4808
5794
  AccountVaultCopyResult,
5795
+ AccountAgentVariable,
5796
+ AccountAgentDetail,
5797
+ AccountAgentsGetParams,
5798
+ AccountAgentsGetResult,
5799
+ AccountAgentRunStatus,
5800
+ AccountAgentRun,
5801
+ AccountAgentRunSort,
5802
+ AccountAgentsRunsParams,
5803
+ AccountAgentsRunsResult,
5804
+ AccountAgentsFavoriteParams,
5805
+ AccountAgentsFavoriteResult,
4809
5806
  AppsWindowsUpdateStateParams,
4810
5807
  AppsWindowsUpdateStateResult,
4811
5808
  AppsWindowsReopenParams,
@@ -4990,7 +5987,14 @@ var FIELDS_SINCE = {
4990
5987
  AppsWindowsUpdateStateResult: { closed_by_update: "1.27" },
4991
5988
  AppsProjectsToWindowParams: { pin: "1.32", chat_ids: "1.36", take_off_from: "1.36" },
4992
5989
  AppsProjectsToWindowResult: { pin: "1.32" },
4993
- AppsChatsTitlesCheckResult: { stale_windows: "1.33" }
5990
+ AppsChatsTitlesCheckResult: { stale_windows: "1.33" },
5991
+ AccountAgent: { tags: "1.39", model_id: "1.39", access_level: "1.39", organization_id: "1.39", origin: "1.39", is_archived: "1.39", orchestra: "1.39" },
5992
+ WebScrapeParams: { engine: "1.40", land: "1.40" },
5993
+ WebScrapePage: { source: "1.40" },
5994
+ WebBrowserFetchParams: { land: "1.40" },
5995
+ WebBrowserFetchResult: { source: "1.40" },
5996
+ SysinfoGetResult: { requirements: "1.41" },
5997
+ "SysinfoGetResult.permissions[]": { detail: "1.41" }
4994
5998
  };
4995
5999
  var NULL_SINCE = {
4996
6000
  "RelayDeviceStatusEvent.since_ms": { since: "1.1", olderPeersGet: 0 }
@@ -5010,6 +6014,25 @@ var REASONS_SINCE = {
5010
6014
  awaiting_confirmation: "1.28",
5011
6015
  tool_disabled_on_device: "1.34"
5012
6016
  };
6017
+ var PERMISSIONS_SINCE = {
6018
+ reminders: "1.41",
6019
+ speech_recognition: "1.41",
6020
+ messages: "1.41",
6021
+ mail: "1.41",
6022
+ wifi: "1.41"
6023
+ };
6024
+ function permissionsForPeer(value, version) {
6025
+ if (value === null || typeof value !== "object" || Array.isArray(value)) return value;
6026
+ const body = value;
6027
+ if (!Array.isArray(body.permissions)) return value;
6028
+ const since = PERMISSIONS_SINCE;
6029
+ const kept = body.permissions.filter((p) => {
6030
+ const name = p?.name;
6031
+ const added = typeof name === "string" ? since[name] : void 0;
6032
+ return !added || knows(version, added);
6033
+ });
6034
+ return kept.length === body.permissions.length ? value : { ...body, permissions: kept };
6035
+ }
5013
6036
  function statusForPeer(status, version) {
5014
6037
  const rule = NULL_SINCE["RelayDeviceStatusEvent.since_ms"];
5015
6038
  return status.since_ms === null && !knows(version, rule.since) ? { ...status, since_ms: rule.olderPeersGet } : status;
@@ -5054,7 +6077,9 @@ var RESULT_PATH = /* @__PURE__ */ new Map([
5054
6077
  ["apps.chats.list", "AppsChatsListResult"],
5055
6078
  ["apps.accounts.usage", "AppsAccountsUsageResult"],
5056
6079
  ["apps.accounts.resets", "AppsAccountsResetsResult"],
5057
- ["apps.windows.update_state", "AppsWindowsUpdateStateResult"]
6080
+ ["apps.windows.update_state", "AppsWindowsUpdateStateResult"],
6081
+ ["web.fetch_with_browser", "WebBrowserFetchResult"],
6082
+ ["sysinfo.get", "SysinfoGetResult"]
5058
6083
  ]);
5059
6084
  var NESTED_RESULTS = /* @__PURE__ */ new Map([
5060
6085
  ["apps.chats.list", [["chats", "ChatRow"]]],
@@ -5066,7 +6091,10 @@ var NESTED_RESULTS = /* @__PURE__ */ new Map([
5066
6091
  ["apps.chats.place", [["chat", "ChatRow"]]],
5067
6092
  ["apps.accounts.usage", [["accounts", "AccountUsage"]]],
5068
6093
  ["resources.snapshot", [["disks", "ResourcesDisk"]]],
5069
- ["stack.state", [["servers", "StackServer"]]]
6094
+ ["stack.state", [["servers", "StackServer"]]],
6095
+ ["account.agents.list", [["agents", "AccountAgent"]]],
6096
+ ["web.scrape", [["pages", "WebScrapePage"]]],
6097
+ ["sysinfo.get", [["permissions", "SysinfoGetResult.permissions[]"]]]
5070
6098
  ]);
5071
6099
  function stripNested(value, nested, version) {
5072
6100
  if (value === null || typeof value !== "object" || Array.isArray(value)) return value;
@@ -5108,7 +6136,8 @@ function forPeer(op, part, value, version) {
5108
6136
  const windowKey = op ? WINDOW_RESULTS.get(op) : void 0;
5109
6137
  if (windowKey) return stripWindows(value, windowKey, version);
5110
6138
  const path = op ? RESULT_PATH.get(op) : void 0;
5111
- const top = path ? strip(value, FIELDS_SINCE[path], version) : value;
6139
+ const known = op === "sysinfo.get" ? permissionsForPeer(value, version) : value;
6140
+ const top = path ? strip(known, FIELDS_SINCE[path], version) : known;
5112
6141
  const nested = op ? NESTED_RESULTS.get(op) : void 0;
5113
6142
  return nested ? stripNested(top, nested, version) : top;
5114
6143
  }
@@ -5127,7 +6156,7 @@ function forPeer(op, part, value, version) {
5127
6156
  var VERSIONED_RESULT_OPS = [.../* @__PURE__ */ new Set([...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys(), ...NESTED_RESULTS.keys()])];
5128
6157
 
5129
6158
  // src/contract.ts
5130
- var CONTRACT_SHA256 = "1091ef68a5cb45a35a85998fc34560b4ddc035fe67d2d34594e935e92a2081dd";
6159
+ var CONTRACT_SHA256 = "a2ea77f45ed3f5421e4c722442205e48fce2bbc5bccc892b54403304eca55443";
5131
6160
 
5132
6161
  // src/close-policy.ts
5133
6162
  var CLOSE_RULES = {
@@ -5201,6 +6230,10 @@ var TOOL_CATALOG = [
5201
6230
  { name: "desktop_location", group: "personal_automation", state: "built", path: "device_op", ops: ["location.get"], platforms: ["darwin", "win32"], summary: "Where the computer is (the OS's location service)" },
5202
6231
  { name: "desktop_net", group: "personal_automation", state: "built", path: "device_op", ops: ["net.info", "net.wifi", "net.bluetooth", "net.devices", "net.mdns", "net.scan", "net.download"], platforms: ALL, summary: "Local network, Wi-Fi, Bluetooth, open ports and downloads" },
5203
6232
  { name: "desktop_schedule", group: "personal_automation", state: "built", path: "device_op", ops: ["schedule.create", "schedule.list", "schedule.cancel"], platforms: ALL, summary: "Run a tool's op on this computer on an interval; list and cancel" },
6233
+ // 1.38, code from anywhere: the person's Claude Code and Codex sessions on this computer. Turning
6234
+ // either off in Agents › Tools refuses its ops on every relay connection (the existing switch).
6235
+ { name: "coding_sessions_read", group: "personal_automation", state: "built", path: "device_op", ops: ["coding.providers", "coding.sessions.list", "coding.discover", "coding.runs.list", "coding.history", "coding.transcript.read", "coding.item.full", "coding.activity", "coding.folders.recent", "coding.folders.check", "coding.agents.access", "coding.titles.status", "coding.prefs.list", "coding.recent.seen", "coding.search", "coding.transcript.raw", "coding.watch", "coding.session.watch"], platforms: ALL, summary: "Claude Code and Codex sessions: list, read live, search, download" },
6236
+ { name: "coding_sessions_drive", group: "personal_automation", state: "built", path: "device_op", ops: ["coding.start", "coding.takeover", "coding.send", "coding.stop", "coding.stop_elsewhere", "coding.options.set", "coding.agent.set", "coding.folders.create", "coding.prefs.set", "coding.reconcile"], platforms: ALL, summary: "Claude Code and Codex sessions: start, send, stop, take over, rename" },
5204
6237
  // ── 4. Documents, notes and entities (1.37: the core's `documents` and `notes` owners; desktop_web is the `tools` service) ──
5205
6238
  { name: "desktop_documents", group: "tools_service", state: "built", path: "device_op", ops: ["documents.pdf_text", "documents.ocr", "documents.image_resize", "documents.office_generate"], platforms: ALL, summary: "PDF text, OCR, images, Word and Excel files" },
5206
6239
  { name: "desktop_web", group: "tools_service", state: "built", path: "device_op", ops: ["web.fetch", "web.scrape", "web.search", "web.fetch_with_browser"], platforms: ALL, summary: "Fetch, scrape and search the web from this computer's own connection" },