@ai-matrx/desktop-protocol 0.21.15 → 0.21.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { z } from "zod";
3
3
  import { UUID_SHAPE_PATTERN } from "@ai-matrx/kit/uuid";
4
4
  var PROTOCOL_MAJOR = 1;
5
- var PROTOCOL_MINOR = 22;
5
+ var PROTOCOL_MINOR = 23;
6
6
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
7
7
  var ProtocolVersion = z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
8
8
  var RequestId = z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -800,24 +800,96 @@ var ModelsStatusResult = z10.strictObject({
800
800
  });
801
801
  var ModelsProgressEvent = z10.strictObject({ request_id: RequestId, progress: MlProgress });
802
802
 
803
- // src/schema/apps.ts
803
+ // src/schema/account.ts
804
804
  import { z as z11 } from "zod";
805
805
  import { UUID_SHAPE_PATTERN as UUID_SHAPE_PATTERN2 } from "@ai-matrx/kit/uuid";
806
- var AppKey = z11.string().regex(/^[a-z][a-z0-9_-]{0,39}$/);
807
- var AppProfileId = z11.string().regex(UUID_SHAPE_PATTERN2);
808
- var AppProfileLocator = z11.string().min(1).max(512).regex(/^[A-Za-z0-9 _()+@,-][A-Za-z0-9 ._()+@,-]{0,127}(\/[A-Za-z0-9 _()+@,-][A-Za-z0-9 ._()+@,-]{0,127}){0,7}$/);
809
- var AppSupport = z11.enum(["supported", "partial", "unsupported"]);
810
- var AppFeatureStatus = z11.strictObject({
806
+ var AccountRowId = z11.string().regex(UUID_SHAPE_PATTERN2);
807
+ var AccountReadState = z11.enum(["ok", "signed_out", "unavailable"]);
808
+ var AccountAgent = z11.strictObject({
809
+ id: AccountRowId,
810
+ name: z11.string().min(1).max(200),
811
+ description: z11.string().max(2e3),
812
+ /** The agent's category ("" when it has none): the library's folders. */
813
+ category: z11.string().max(120),
814
+ /** The agent's kind as the platform names it (user, builtin, orchestra…). */
815
+ agent_type: z11.string().max(40),
816
+ is_favorite: z11.boolean(),
817
+ /** The person owns it (false: shared with them). */
818
+ is_owner: z11.boolean(),
819
+ /** Who shared it, when it is shared with the person. */
820
+ shared_by: z11.string().max(320).nullable(),
821
+ /** The organization it belongs to. */
822
+ organization: z11.string().max(200).nullable(),
823
+ updated_at_ms: epochMs
824
+ });
825
+ var AccountAgentsListParams = z11.strictObject({});
826
+ var AccountAgentsListResult = z11.strictObject({
827
+ state: AccountReadState,
828
+ /** One line when state is not "ok" (what went wrong, in plain words); null otherwise. */
829
+ problem: z11.string().max(300).nullable(),
830
+ agents: z11.array(AccountAgent).max(2e3)
831
+ });
832
+ var VaultItemKind = z11.enum(["login", "passkey", "key", "other"]);
833
+ var VaultFieldSummary = z11.strictObject({
834
+ key: z11.string().min(1).max(120),
835
+ /** visible: shown as written; revealable: copyable on request; sealed: never leaves the server. */
836
+ handling: z11.enum(["visible", "revealable", "sealed"]),
837
+ /** The masked hint the server keeps ("••••ab12"), or "" when it keeps none. */
838
+ hint: z11.string().max(200)
839
+ });
840
+ var VaultItemSummary = z11.strictObject({
841
+ id: AccountRowId,
842
+ name: z11.string().min(1).max(200),
843
+ kind: VaultItemKind,
844
+ /** The platform's definition ("website_login", "native_passkey", "custom"…). */
845
+ definition: z11.string().max(80),
846
+ /** The sign-in's user name hint (its "username" field's hint); null when it has none. */
847
+ username: z11.string().max(200).nullable(),
848
+ /** The sites a sign-in is for. */
849
+ urls: z11.array(z11.string().max(2048)).max(20),
850
+ notes: z11.string().max(4e3).nullable(),
851
+ fields: z11.array(VaultFieldSummary).max(50),
852
+ /** Shared with the person by someone else (Passwords' shared groups). */
853
+ shared: z11.boolean(),
854
+ /** active, or the server's other states (a deleted item waits in "deleted"). */
855
+ status: z11.string().max(40),
856
+ created_at_ms: epochMs,
857
+ updated_at_ms: epochMs
858
+ });
859
+ var AccountVaultListParams = z11.strictObject({});
860
+ var AccountVaultListResult = z11.strictObject({
861
+ state: AccountReadState,
862
+ problem: z11.string().max(300).nullable(),
863
+ items: z11.array(VaultItemSummary).max(5e3)
864
+ });
865
+ var AccountVaultCopyParams = z11.strictObject({
866
+ item_id: AccountRowId,
867
+ field_key: z11.string().min(1).max(120)
868
+ });
869
+ var AccountVaultCopyResult = z11.strictObject({
870
+ copied: z11.boolean(),
871
+ /** When the clipboard is cleared again if it still holds the value (Passwords clears a copied password). */
872
+ clears_at_ms: epochMs
873
+ });
874
+
875
+ // src/schema/apps.ts
876
+ import { z as z12 } from "zod";
877
+ import { UUID_SHAPE_PATTERN as UUID_SHAPE_PATTERN3 } from "@ai-matrx/kit/uuid";
878
+ var AppKey = z12.string().regex(/^[a-z][a-z0-9_-]{0,39}$/);
879
+ var AppProfileId = z12.string().regex(UUID_SHAPE_PATTERN3);
880
+ var AppProfileLocator = z12.string().min(1).max(512).regex(/^[A-Za-z0-9 _()+@,-][A-Za-z0-9 ._()+@,-]{0,127}(\/[A-Za-z0-9 _()+@,-][A-Za-z0-9 ._()+@,-]{0,127}){0,7}$/);
881
+ var AppSupport = z12.enum(["supported", "partial", "unsupported"]);
882
+ var AppFeatureStatus = z12.strictObject({
811
883
  status: AppSupport,
812
884
  /** One line, set whenever status is not "supported". */
813
- reason: z11.string().max(140).nullable()
885
+ reason: z12.string().max(140).nullable()
814
886
  });
815
- var AppInfo = z11.strictObject({
887
+ var AppInfo = z12.strictObject({
816
888
  app_key: AppKey,
817
- name: z11.string().max(64),
818
- installed: z11.boolean(),
889
+ name: z12.string().max(64),
890
+ installed: z12.boolean(),
819
891
  /** The app's own version string, or null when it is not installed or does not say. */
820
- version: z11.string().max(64).nullable(),
892
+ version: z12.string().max(64).nullable(),
821
893
  /** The install found (an .app bundle, an .exe, a binary), or null. */
822
894
  location: AbsPath.nullable(),
823
895
  /** Open the app at all on this OS. */
@@ -827,148 +899,148 @@ var AppInfo = z11.strictObject({
827
899
  /** Plan usage read from the app's own files on this OS. */
828
900
  usage: AppFeatureStatus
829
901
  });
830
- var AppUsageReading = z11.strictObject({
831
- window: z11.enum(["five_hour", "weekly", "extra"]),
902
+ var AppUsageReading = z12.strictObject({
903
+ window: z12.enum(["five_hour", "weekly", "extra"]),
832
904
  /** 0–100 for five_hour and weekly; extra-usage spend as a percent of its cap (may pass 100). */
833
- percent: z11.number().min(0).max(1e4),
905
+ percent: z12.number().min(0).max(1e4),
834
906
  /** When the app recorded it. */
835
907
  sampled_at_ms: epochMs,
836
908
  /** True when the window has rolled over since the sample, so the figure has reset. */
837
- reset_since: z11.boolean()
909
+ reset_since: z12.boolean()
838
910
  });
839
- var AppProfile = z11.strictObject({
911
+ var AppProfile = z12.strictObject({
840
912
  /** The row's id; null for a folder found on disk that no row names yet. */
841
913
  id: AppProfileId.nullable(),
842
914
  app_key: AppKey,
843
- display_name: z11.string().min(1).max(120),
915
+ display_name: z12.string().min(1).max(120),
844
916
  /** The account the person means to be signed in here; null when not stated (never guessed). */
845
- account_identity: z11.string().min(3).max(320).nullable(),
917
+ account_identity: z12.string().min(3).max(320).nullable(),
846
918
  profile_locator: AppProfileLocator.nullable(),
847
919
  /** The device the row is tied to; null when the row names none. */
848
920
  device_id: DeviceId.nullable(),
849
921
  /** The folder this profile resolves to on this device; null for a row tied to another device. */
850
922
  folder: AbsPath.nullable(),
851
923
  /** The folder exists on this device. */
852
- on_disk: z11.boolean(),
924
+ on_disk: z12.boolean(),
853
925
  /** An instance with this profile is running; null when it could not be determined. */
854
- running: z11.boolean().nullable(),
926
+ running: z12.boolean().nullable(),
855
927
  /** Usage the app recorded for this profile; null when the app exposes none here. */
856
- usage: z11.array(AppUsageReading).nullable(),
928
+ usage: z12.array(AppUsageReading).nullable(),
857
929
  last_opened_ms: epochMs.nullable()
858
930
  });
859
- var AppsListParams = z11.strictObject({});
860
- var AppsListResult = z11.strictObject({ apps: z11.array(AppInfo) });
861
- var AppsProfilesListParams = z11.strictObject({
931
+ var AppsListParams = z12.strictObject({});
932
+ var AppsListResult = z12.strictObject({ apps: z12.array(AppInfo) });
933
+ var AppsProfilesListParams = z12.strictObject({
862
934
  /** Only this app's profiles; every app's when absent. */
863
935
  app_key: AppKey.optional()
864
936
  });
865
- var AppsProfilesListResult = z11.strictObject({
866
- profiles: z11.array(AppProfile),
937
+ var AppsProfilesListResult = z12.strictObject({
938
+ profiles: z12.array(AppProfile),
867
939
  /**
868
940
  * Whether the saved rows could be read: false while signed out or offline, when only folders
869
941
  * found on disk are listed.
870
942
  */
871
- registry: z11.enum(["ok", "signed_out", "unavailable"])
943
+ registry: z12.enum(["ok", "signed_out", "unavailable"])
872
944
  });
873
- var AppsProfilesSaveParams = z11.strictObject({
945
+ var AppsProfilesSaveParams = z12.strictObject({
874
946
  id: AppProfileId.optional(),
875
947
  app_key: AppKey,
876
- display_name: z11.string().min(1).max(120),
877
- account_identity: z11.string().min(3).max(320).nullable(),
948
+ display_name: z12.string().min(1).max(120),
949
+ account_identity: z12.string().min(3).max(320).nullable(),
878
950
  /** On create: the folder to use (one found on disk), or null for the app's default profile. Ignored on update. */
879
951
  profile_locator: AppProfileLocator.nullable(),
880
952
  /** On create with profile_locator null: make a new folder named after display_name instead. */
881
- new_folder: z11.boolean().default(false)
953
+ new_folder: z12.boolean().default(false)
882
954
  });
883
955
  var AppsProfilesSaveResult = AppProfile;
884
- var AppsProfilesRemoveParams = z11.strictObject({ id: AppProfileId });
885
- var AppsProfilesRemoveResult = z11.strictObject({ removed: z11.boolean() });
886
- var AppsOpenParams = z11.strictObject({
956
+ var AppsProfilesRemoveParams = z12.strictObject({ id: AppProfileId });
957
+ var AppsProfilesRemoveResult = z12.strictObject({ removed: z12.boolean() });
958
+ var AppsOpenParams = z12.strictObject({
887
959
  app_key: AppKey,
888
960
  profile_id: AppProfileId.optional()
889
961
  });
890
- var AppsOpenResult = z11.strictObject({
962
+ var AppsOpenResult = z12.strictObject({
891
963
  /** True when an instance with this profile was already running; it is brought forward. */
892
- already_running: z11.boolean(),
964
+ already_running: z12.boolean(),
893
965
  folder: AbsPath.nullable()
894
966
  });
895
967
 
896
968
  // src/schema/apps-chats.ts
897
- import { z as z12 } from "zod";
898
- var ChatId = z12.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/);
899
- var ChatPlace = z12.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/);
900
- var ChatProjectId = z12.string().regex(/^[a-z0-9][a-z0-9-]{0,63}$/);
901
- var ChatWindow = z12.strictObject({
969
+ import { z as z13 } from "zod";
970
+ var ChatId = z13.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/);
971
+ var ChatPlace = z13.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/);
972
+ var ChatProjectId = z13.string().regex(/^[a-z0-9][a-z0-9-]{0,63}$/);
973
+ var ChatWindow = z13.strictObject({
902
974
  key: ChatPlace,
903
975
  /** The app's default profile (Claude: the main window, which lists every account's chats). */
904
- main: z12.boolean(),
976
+ main: z13.boolean(),
905
977
  /** The account the window is signed into, when known. */
906
- account: z12.string().max(320).nullable()
978
+ account: z13.string().max(320).nullable()
907
979
  });
908
- var ChatProject = z12.strictObject({
980
+ var ChatProject = z13.strictObject({
909
981
  id: ChatProjectId,
910
- name: z12.string().min(1).max(200),
911
- archived: z12.boolean(),
982
+ name: z13.string().min(1).max(200),
983
+ archived: z13.boolean(),
912
984
  /** Chats in it. */
913
985
  count: nonNegInt
914
986
  });
915
- var ChatPin = z12.strictObject({
987
+ var ChatPin = z13.strictObject({
916
988
  /** The window whose account pins it; an account with no window of its own is named by its email. */
917
- window: z12.string().min(1).max(320),
989
+ window: z13.string().min(1).max(320),
918
990
  /** When that account's pin list was last read; null when the reading has no time. */
919
991
  observed_at_ms: epochMs.nullable()
920
992
  });
921
- var ChatRunning = z12.strictObject({
993
+ var ChatRunning = z13.strictObject({
922
994
  window: ChatPlace,
923
995
  /** process: a live process resumed this chat there (exact); activity: that window's own record moved in the last 3 minutes. */
924
- how: z12.enum(["process", "activity"])
996
+ how: z13.enum(["process", "activity"])
925
997
  });
926
- var ChatHidden = z12.strictObject({
998
+ var ChatHidden = z13.strictObject({
927
999
  window: ChatPlace,
928
- reason: z12.string().max(200)
1000
+ reason: z13.string().max(200)
929
1001
  });
930
- var ChatLastUse = z12.strictObject({
1002
+ var ChatLastUse = z13.strictObject({
931
1003
  /** The conversation's last reply. */
932
1004
  at_ms: epochMs,
933
1005
  window: ChatPlace.nullable(),
934
- account: z12.string().max(320).nullable(),
1006
+ account: z13.string().max(320).nullable(),
935
1007
  /** How the window was decided (one short line). */
936
- how: z12.string().max(120).nullable(),
1008
+ how: z13.string().max(120).nullable(),
937
1009
  /** The account's 1-hour prompt cache is still warm. */
938
- cache_warm: z12.boolean(),
1010
+ cache_warm: z13.boolean(),
939
1011
  cache_minutes_left: nonNegInt
940
1012
  });
941
- var ChatAppProject = z12.strictObject({
942
- id: z12.string().min(1).max(200),
943
- name: z12.string().max(200)
1013
+ var ChatAppProject = z13.strictObject({
1014
+ id: z13.string().min(1).max(200),
1015
+ name: z13.string().max(200)
944
1016
  });
945
- var ChatTitleSource = z12.enum(["app", "app-remembered", "custom-title", "ai-title", "agent-name", "summary", "first-prompt", "last-prompt"]);
946
- var ChatRow = z12.strictObject({
1017
+ var ChatTitleSource = z13.enum(["app", "app-remembered", "custom-title", "ai-title", "agent-name", "summary", "first-prompt", "last-prompt"]);
1018
+ var ChatRow = z13.strictObject({
947
1019
  id: ChatId,
948
1020
  /** The short id people see (the listing's first 8 characters). */
949
- short_id: z12.string().max(16),
1021
+ short_id: z13.string().max(16),
950
1022
  /** The listing's own name (Claude: local_<id>), null for a chat only in the holder. */
951
- record: z12.string().max(160).nullable(),
952
- title: z12.string().max(1e3),
1023
+ record: z13.string().max(160).nullable(),
1024
+ title: z13.string().max(1e3),
953
1025
  last_active_ms: epochMs.nullable(),
954
1026
  created_ms: epochMs.nullable(),
955
- projects: z12.array(ChatProjectId).max(500),
956
- starred: z12.boolean(),
957
- pinned_in: z12.array(ChatPin).max(200),
1027
+ projects: z13.array(ChatProjectId).max(500),
1028
+ starred: z13.boolean(),
1029
+ pinned_in: z13.array(ChatPin).max(200),
958
1030
  /** Every place it is listed now: window keys, plus "holder". */
959
- places: z12.array(ChatPlace).max(200),
960
- held: z12.boolean(),
961
- running: z12.array(ChatRunning).max(200),
962
- hidden_in: z12.array(ChatHidden).max(200),
1031
+ places: z13.array(ChatPlace).max(200),
1032
+ held: z13.boolean(),
1033
+ running: z13.array(ChatRunning).max(200),
1034
+ hidden_in: z13.array(ChatHidden).max(200),
963
1035
  /** Kept out of the main window on purpose. */
964
- hidden_from_main: z12.boolean(),
1036
+ hidden_from_main: z13.boolean(),
965
1037
  /** Listed in a side window and not yet copied into main. */
966
- main_pending: z12.boolean(),
1038
+ main_pending: z13.boolean(),
967
1039
  /** A scheduled routine's run (its task id). */
968
- scheduled: z12.string().max(200).nullable(),
1040
+ scheduled: z13.string().max(200).nullable(),
969
1041
  /** Created recently and in no project: offered for filing. */
970
- new_unfiled: z12.boolean(),
971
- warnings: z12.array(z12.string().max(400)).max(20),
1042
+ new_unfiled: z13.boolean(),
1043
+ warnings: z13.array(z13.string().max(400)).max(20),
972
1044
  last_use: ChatLastUse.nullable(),
973
1045
  /** 1.13: the app's own project the chat is grouped under in the app (Codex), read only; absent = none or not an app that groups. */
974
1046
  app_project: ChatAppProject.optional(),
@@ -978,718 +1050,718 @@ var ChatRow = z12.strictObject({
978
1050
  * 1.14: the chat's own title before the person's rename (the one title rule, `@ai-matrx/coding-sessions/sessions`);
979
1051
  * `title` is what to show (`title_override` when set, else this).
980
1052
  */
981
- original_title: z12.string().max(1e3).optional(),
1053
+ original_title: z13.string().max(1e3).optional(),
982
1054
  /** 1.14: where `original_title` came from (the one rule's sources, strongest first; 1.15: a closed set). */
983
1055
  title_source: ChatTitleSource.optional(),
984
1056
  /** 1.14: the person's rename inside Matrx (Coding Sessions), applied once by the row builder; absent = none. */
985
- title_override: z12.string().min(1).max(300).optional(),
1057
+ title_override: z13.string().min(1).max(300).optional(),
986
1058
  /** 1.15: the app itself archived it (hidden_in says where and why, in words for people; this is the typed fact). */
987
- archived: z12.boolean().optional()
1059
+ archived: z13.boolean().optional()
988
1060
  });
989
- var ChatFamily = z12.strictObject({
1061
+ var ChatFamily = z13.strictObject({
990
1062
  id: ChatId,
991
1063
  fork_of: ChatId.nullable(),
992
1064
  copy_of: ChatId.nullable()
993
1065
  });
994
- var AppsChatsListParams = z12.strictObject({
1066
+ var AppsChatsListParams = z13.strictObject({
995
1067
  app_key: AppKey,
996
1068
  /** Only these chats (a live update re-reads just what changed). */
997
- ids: z12.array(ChatId).max(500).optional()
1069
+ ids: z13.array(ChatId).max(500).optional()
998
1070
  });
999
- var AppsChatsListResult = z12.strictObject({
1071
+ var AppsChatsListResult = z13.strictObject({
1000
1072
  app_key: AppKey,
1001
1073
  /** Bumps on every change the index sees; `apps.chats.changed` carries the same number. */
1002
1074
  version: nonNegInt,
1003
- windows: z12.array(ChatWindow).max(200),
1004
- projects: z12.array(ChatProject).max(5e3),
1005
- chats: z12.array(ChatRow).max(2e4),
1075
+ windows: z13.array(ChatWindow).max(200),
1076
+ projects: z13.array(ChatProject).max(5e3),
1077
+ chats: z13.array(ChatRow).max(2e4),
1006
1078
  /** How long a chat in no project counts as new. */
1007
1079
  new_window_ms: nonNegInt,
1008
1080
  /** 1.9: this is the copy saved at the last read, shown while everything is read again. */
1009
- updating: z12.boolean().optional(),
1081
+ updating: z13.boolean().optional(),
1010
1082
  /** 1.9: false while the folder watches are down (changes are not arriving); `apps.chats.watch_state` says when it changes. */
1011
- live: z12.boolean().optional(),
1083
+ live: z13.boolean().optional(),
1012
1084
  /** 1.10: every listed chat that is a fork or a copy of another (read from the conversations' first lines). */
1013
- families: z12.array(ChatFamily).max(2e4).optional()
1085
+ families: z13.array(ChatFamily).max(2e4).optional()
1014
1086
  });
1015
- var AppsChatsWatchParams = z12.strictObject({ app_key: AppKey });
1016
- var AppsChatsWatchResult = z12.strictObject({ resource_id: ResourceId, version: nonNegInt });
1017
- var AppsChatsChangedEvent = z12.strictObject({
1087
+ var AppsChatsWatchParams = z13.strictObject({ app_key: AppKey });
1088
+ var AppsChatsWatchResult = z13.strictObject({ resource_id: ResourceId, version: nonNegInt });
1089
+ var AppsChatsChangedEvent = z13.strictObject({
1018
1090
  app_key: AppKey,
1019
1091
  version: nonNegInt,
1020
- ids: z12.array(ChatId).max(1e3),
1021
- all: z12.boolean()
1092
+ ids: z13.array(ChatId).max(1e3),
1093
+ all: z13.boolean()
1022
1094
  });
1023
- var AppsChatsWatchStateEvent = z12.strictObject({
1095
+ var AppsChatsWatchStateEvent = z13.strictObject({
1024
1096
  app_key: AppKey,
1025
- live: z12.boolean(),
1026
- updating: z12.boolean(),
1027
- reason: z12.string().max(300).nullable()
1097
+ live: z13.boolean(),
1098
+ updating: z13.boolean(),
1099
+ reason: z13.string().max(300).nullable()
1028
1100
  });
1029
- var AppsChatsPlaceParams = z12.strictObject({
1101
+ var AppsChatsPlaceParams = z13.strictObject({
1030
1102
  app_key: AppKey,
1031
1103
  chat_id: ChatId,
1032
- action: z12.enum(["place", "take_off", "hold"]),
1104
+ action: z13.enum(["place", "take_off", "hold"]),
1033
1105
  /** The window (for place and take_off). */
1034
1106
  window: ChatPlace.optional(),
1035
1107
  /** take_off where it is open: stop it there first (the person confirmed). */
1036
- stop_if_open: z12.boolean().default(false)
1108
+ stop_if_open: z13.boolean().default(false)
1037
1109
  });
1038
- var AppsChatsPlaceResult = z12.strictObject({ chat: ChatRow, message: z12.string().max(400) });
1039
- var AppsProjectsFileManyParams = z12.strictObject({
1110
+ var AppsChatsPlaceResult = z13.strictObject({ chat: ChatRow, message: z13.string().max(400) });
1111
+ var AppsProjectsFileManyParams = z13.strictObject({
1040
1112
  app_key: AppKey,
1041
- chat_ids: z12.array(ChatId).min(1).max(500),
1113
+ chat_ids: z13.array(ChatId).min(1).max(500),
1042
1114
  project_id: ChatProjectId.optional(),
1043
- new_project_name: z12.string().min(1).max(200).optional()
1115
+ new_project_name: z13.string().min(1).max(200).optional()
1044
1116
  });
1045
- var AppsProjectsFileManyResult = z12.strictObject({ chats: z12.array(ChatRow).max(500), project: ChatProject });
1046
- var AppsProjectsUpdateParams = z12.strictObject({
1117
+ var AppsProjectsFileManyResult = z13.strictObject({ chats: z13.array(ChatRow).max(500), project: ChatProject });
1118
+ var AppsProjectsUpdateParams = z13.strictObject({
1047
1119
  app_key: AppKey,
1048
1120
  project_id: ChatProjectId,
1049
- name: z12.string().min(1).max(200).optional(),
1050
- archived: z12.boolean().optional()
1121
+ name: z13.string().min(1).max(200).optional(),
1122
+ archived: z13.boolean().optional()
1051
1123
  });
1052
- var AppsProjectsUpdateResult = z12.strictObject({ project: ChatProject });
1053
- var AppsProjectsCopyParams = z12.strictObject({ app_key: AppKey, project_id: ChatProjectId, new_project_name: z12.string().min(1).max(200) });
1054
- var AppsProjectsCopyResult = z12.strictObject({ project: ChatProject });
1055
- var AppsProjectsFileParams = z12.strictObject({
1124
+ var AppsProjectsUpdateResult = z13.strictObject({ project: ChatProject });
1125
+ var AppsProjectsCopyParams = z13.strictObject({ app_key: AppKey, project_id: ChatProjectId, new_project_name: z13.string().min(1).max(200) });
1126
+ var AppsProjectsCopyResult = z13.strictObject({ project: ChatProject });
1127
+ var AppsProjectsFileParams = z13.strictObject({
1056
1128
  app_key: AppKey,
1057
1129
  chat_id: ChatId,
1058
1130
  project_id: ChatProjectId.optional(),
1059
- new_project_name: z12.string().min(1).max(200).optional()
1131
+ new_project_name: z13.string().min(1).max(200).optional()
1060
1132
  });
1061
- var AppsProjectsFileResult = z12.strictObject({ chat: ChatRow, project: ChatProject });
1062
- var AppsProjectsUnfileParams = z12.strictObject({ app_key: AppKey, chat_id: ChatId, project_id: ChatProjectId });
1063
- var AppsProjectsUnfileResult = z12.strictObject({ chat: ChatRow });
1064
- var AppsChatsStarParams = z12.strictObject({ app_key: AppKey, chat_id: ChatId, starred: z12.boolean() });
1065
- var AppsChatsStarResult = z12.strictObject({ chat: ChatRow });
1133
+ var AppsProjectsFileResult = z13.strictObject({ chat: ChatRow, project: ChatProject });
1134
+ var AppsProjectsUnfileParams = z13.strictObject({ app_key: AppKey, chat_id: ChatId, project_id: ChatProjectId });
1135
+ var AppsProjectsUnfileResult = z13.strictObject({ chat: ChatRow });
1136
+ var AppsChatsStarParams = z13.strictObject({ app_key: AppKey, chat_id: ChatId, starred: z13.boolean() });
1137
+ var AppsChatsStarResult = z13.strictObject({ chat: ChatRow });
1066
1138
 
1067
1139
  // src/schema/apps-accounts.ts
1068
- import { z as z13 } from "zod";
1069
- var AppWindowInfo = z13.strictObject({
1140
+ import { z as z14 } from "zod";
1141
+ var AppWindowInfo = z14.strictObject({
1070
1142
  key: ChatPlace,
1071
1143
  /** The app's default profile (Claude: main, which may sign into any account). */
1072
- main: z13.boolean(),
1144
+ main: z14.boolean(),
1073
1145
  /** The account the window is meant for (null for main). */
1074
- account: z13.string().max(320).nullable(),
1146
+ account: z14.string().max(320).nullable(),
1075
1147
  /** The account signed in there now: an email, or the account id while it has no saved name. */
1076
- signed_in: z13.string().max(320).nullable(),
1077
- signed_in_is_email: z13.boolean(),
1148
+ signed_in: z14.string().max(320).nullable(),
1149
+ signed_in_is_email: z14.boolean(),
1078
1150
  /** Signed into another account than the one it is meant for. */
1079
- mismatch: z13.boolean(),
1151
+ mismatch: z14.boolean(),
1080
1152
  /** Its folder exists. */
1081
- created: z13.boolean(),
1153
+ created: z14.boolean(),
1082
1154
  /** Open now. */
1083
- running: z13.boolean(),
1155
+ running: z14.boolean(),
1084
1156
  /** Chats open in it now (a process resuming each one). */
1085
1157
  open_chats: nonNegInt
1086
1158
  });
1087
- var AccountUsage = z13.strictObject({
1159
+ var AccountUsage = z14.strictObject({
1088
1160
  /** The account's email, or "org <8 chars>" when no window has ever sampled that org. */
1089
- account: z13.string().max(320),
1090
- org: z13.string().max(80).nullable(),
1161
+ account: z14.string().max(320),
1162
+ org: z14.string().max(80).nullable(),
1091
1163
  /** False when the org was sampled in several accounts' windows and the vote is not clear (≥ 75 %). */
1092
- account_certain: z13.boolean(),
1164
+ account_certain: z14.boolean(),
1093
1165
  /** 5-hour use in percent (0 once the reading is over 5 hours old). */
1094
- five_hour: z13.number().nullable(),
1095
- five_hour_reset_since: z13.boolean(),
1166
+ five_hour: z14.number().nullable(),
1167
+ five_hour_reset_since: z14.boolean(),
1096
1168
  /** Weekly use in percent (0 once the week reset after the reading). */
1097
- weekly: z13.number().nullable(),
1098
- weekly_reset_since: z13.boolean(),
1169
+ weekly: z14.number().nullable(),
1170
+ weekly_reset_since: z14.boolean(),
1099
1171
  /** Extra-usage spend in percent of its cap, when on. */
1100
- extra_usage: z13.number().nullable(),
1172
+ extra_usage: z14.number().nullable(),
1101
1173
  extra_usage_as_of_ms: epochMs.nullable(),
1102
1174
  as_of_ms: epochMs,
1103
1175
  /** The windows meant for this account (and main when main took the reading). */
1104
- windows: z13.array(ChatPlace).max(200),
1176
+ windows: z14.array(ChatPlace).max(200),
1105
1177
  /** The window that took the reading is open now and the reading is under 30 minutes old. */
1106
- live: z13.boolean(),
1178
+ live: z14.boolean(),
1107
1179
  /** The next weekly reset, when known. */
1108
1180
  weekly_resets_at_ms: epochMs.nullable(),
1109
1181
  /** That reset time is Claude's own (its reading, or a reset seen in its usage history). */
1110
- weekly_reset_official: z13.boolean().nullable(),
1182
+ weekly_reset_official: z14.boolean().nullable(),
1111
1183
  /** 1.13: the account's plan as the app names it (Codex: "pro", "prolite"), when recorded. */
1112
- plan: z13.string().max(80).optional(),
1184
+ plan: z14.string().max(80).optional(),
1113
1185
  /** 1.13: the account's credit balance as the app records it (Codex), when recorded. */
1114
- credits: z13.string().max(40).optional()
1186
+ credits: z14.string().max(40).optional()
1115
1187
  });
1116
- var AccountReset = z13.strictObject({
1188
+ var AccountReset = z14.strictObject({
1117
1189
  window: ChatPlace,
1118
- account: z13.string().max(320).nullable(),
1190
+ account: z14.string().max(320).nullable(),
1119
1191
  next_reset_ms: epochMs.nullable(),
1120
1192
  /** claude: the app's own reading; usage_history: a weekly drop seen in its usage record; your_list: the person's own entry. */
1121
- source: z13.enum(["claude", "usage_history", "your_list"]).nullable(),
1193
+ source: z14.enum(["claude", "usage_history", "your_list"]).nullable(),
1122
1194
  /** claude or usage_history. */
1123
- official: z13.boolean(),
1195
+ official: z14.boolean(),
1124
1196
  /** Set when the person's list disagrees with the official time. */
1125
- note: z13.string().max(200).nullable()
1197
+ note: z14.string().max(200).nullable()
1126
1198
  });
1127
- var AppsWindowsListParams = z13.strictObject({ app_key: AppKey });
1128
- var AppsWindowsListResult = z13.strictObject({ app_key: AppKey, windows: z13.array(AppWindowInfo).max(200) });
1129
- var AppsAccountsUsageParams = z13.strictObject({ app_key: AppKey });
1130
- var AppsAccountsUsageResult = z13.strictObject({
1199
+ var AppsWindowsListParams = z14.strictObject({ app_key: AppKey });
1200
+ var AppsWindowsListResult = z14.strictObject({ app_key: AppKey, windows: z14.array(AppWindowInfo).max(200) });
1201
+ var AppsAccountsUsageParams = z14.strictObject({ app_key: AppKey });
1202
+ var AppsAccountsUsageResult = z14.strictObject({
1131
1203
  app_key: AppKey,
1132
- accounts: z13.array(AccountUsage).max(500),
1204
+ accounts: z14.array(AccountUsage).max(500),
1133
1205
  /** 1.12: the rows are right but something around them failed (a newly read reset time could not be saved); shown, never hidden. */
1134
- problem: z13.string().max(400).optional()
1206
+ problem: z14.string().max(400).optional()
1135
1207
  });
1136
- var AppsAccountsResetsParams = z13.strictObject({ app_key: AppKey });
1137
- var AppsAccountsResetsResult = z13.strictObject({
1208
+ var AppsAccountsResetsParams = z14.strictObject({ app_key: AppKey });
1209
+ var AppsAccountsResetsResult = z14.strictObject({
1138
1210
  app_key: AppKey,
1139
- resets: z13.array(AccountReset).max(200),
1211
+ resets: z14.array(AccountReset).max(200),
1140
1212
  /** 1.12: as on `apps.accounts.usage`. */
1141
- problem: z13.string().max(400).optional()
1213
+ problem: z14.string().max(400).optional()
1142
1214
  });
1143
- var AppsWindowActionResult = z13.strictObject({ message: z13.string().max(400) });
1144
- var AppsWindowsOpenParams = z13.strictObject({ app_key: AppKey, window: ChatPlace });
1145
- var AppsWindowsReloadParams = z13.strictObject({ app_key: AppKey, window: ChatPlace });
1146
- var ShownSection = z13.strictObject({
1147
- title: z13.string().max(300),
1215
+ var AppsWindowActionResult = z14.strictObject({ message: z14.string().max(400) });
1216
+ var AppsWindowsOpenParams = z14.strictObject({ app_key: AppKey, window: ChatPlace });
1217
+ var AppsWindowsReloadParams = z14.strictObject({ app_key: AppKey, window: ChatPlace });
1218
+ var ShownSection = z14.strictObject({
1219
+ title: z14.string().max(300),
1148
1220
  /** Rows drawn under it (a collapsed section draws none). */
1149
- rows: z13.number().int().nonnegative(),
1150
- expanded: z13.boolean()
1221
+ rows: z14.number().int().nonnegative(),
1222
+ expanded: z14.boolean()
1151
1223
  });
1152
- var AppsWindowsShownParams = z13.strictObject({ app_key: AppKey, window: ChatPlace });
1153
- var AppsWindowsShownResult = z13.strictObject({
1224
+ var AppsWindowsShownParams = z14.strictObject({ app_key: AppKey, window: ChatPlace });
1225
+ var AppsWindowsShownResult = z14.strictObject({
1154
1226
  window: ChatPlace,
1155
- open: z13.boolean(),
1156
- sections: z13.array(ShownSection).max(200),
1157
- problem: z13.string().max(400).nullable()
1227
+ open: z14.boolean(),
1228
+ sections: z14.array(ShownSection).max(200),
1229
+ problem: z14.string().max(400).nullable()
1158
1230
  });
1159
- var AppsWindowsRestartParams = z13.strictObject({ app_key: AppKey, window: ChatPlace, force: z13.boolean().default(false) });
1160
- var AppsWindowsRefreshUsageParams = z13.strictObject({ app_key: AppKey, window: ChatPlace });
1161
- var AppsProjectsMoveParams = z13.strictObject({
1231
+ var AppsWindowsRestartParams = z14.strictObject({ app_key: AppKey, window: ChatPlace, force: z14.boolean().default(false) });
1232
+ var AppsWindowsRefreshUsageParams = z14.strictObject({ app_key: AppKey, window: ChatPlace });
1233
+ var AppsProjectsMoveParams = z14.strictObject({
1162
1234
  app_key: AppKey,
1163
1235
  chat_id: ChatId,
1164
1236
  from_project_id: ChatProjectId,
1165
1237
  to_project_id: ChatProjectId.optional(),
1166
- new_project_name: z13.string().min(1).max(200).optional()
1167
- });
1168
- var AppsProjectsMoveResult = z13.strictObject({ chat: ChatRow, project: ChatProject });
1169
- var AppsProjectsCreateParams = z13.strictObject({ app_key: AppKey, name: z13.string().min(1).max(200) });
1170
- var AppsProjectsCreateResult = z13.strictObject({ project: ChatProject });
1171
- var AppsProjectsImportPinsParams = z13.strictObject({ app_key: AppKey });
1172
- var AppsProjectsImportPinsResult = z13.strictObject({ message: z13.string().max(400) });
1173
- var ProjectMoveChat = z13.strictObject({ chat_id: ChatId, title: z13.string().max(300) });
1174
- var ProjectMoveSkip = z13.strictObject({ chat_id: ChatId, title: z13.string().max(300), window: ChatPlace.nullable(), reason: z13.string().max(400) });
1175
- var ProjectMoveGroup = z13.strictObject({
1176
- ok: z13.boolean(),
1177
- name: z13.string().max(200),
1238
+ new_project_name: z14.string().min(1).max(200).optional()
1239
+ });
1240
+ var AppsProjectsMoveResult = z14.strictObject({ chat: ChatRow, project: ChatProject });
1241
+ var AppsProjectsCreateParams = z14.strictObject({ app_key: AppKey, name: z14.string().min(1).max(200) });
1242
+ var AppsProjectsCreateResult = z14.strictObject({ project: ChatProject });
1243
+ var AppsProjectsImportPinsParams = z14.strictObject({ app_key: AppKey });
1244
+ var AppsProjectsImportPinsResult = z14.strictObject({ message: z14.string().max(400) });
1245
+ var ProjectMoveChat = z14.strictObject({ chat_id: ChatId, title: z14.string().max(300) });
1246
+ var ProjectMoveSkip = z14.strictObject({ chat_id: ChatId, title: z14.string().max(300), window: ChatPlace.nullable(), reason: z14.string().max(400) });
1247
+ var ProjectMoveGroup = z14.strictObject({
1248
+ ok: z14.boolean(),
1249
+ name: z14.string().max(200),
1178
1250
  /** Why it is not (or was not) grouped — e.g. the window is open. */
1179
- reason: z13.string().max(400).optional(),
1251
+ reason: z14.string().max(400).optional(),
1180
1252
  /** Chats that get (or got) the group; already in it; taken from another group of the window. */
1181
1253
  assign: nonNegInt.optional(),
1182
1254
  already: nonNegInt.optional(),
1183
1255
  from_other_groups: nonNegInt.optional(),
1184
1256
  /** A group of that name was already there (reused, never doubled). */
1185
- group_exists: z13.boolean().optional()
1257
+ group_exists: z14.boolean().optional()
1186
1258
  });
1187
- var AppsProjectsToWindowParams = z13.strictObject({
1259
+ var AppsProjectsToWindowParams = z14.strictObject({
1188
1260
  app_key: AppKey,
1189
1261
  project_id: ChatProjectId,
1190
1262
  window: ChatPlace,
1191
1263
  /** Also take each chat off its other side windows where safe (never main, the holder, an open window). */
1192
- take_off: z13.boolean().default(false),
1264
+ take_off: z14.boolean().default(false),
1193
1265
  /** Also group them under the project's name in that window's sidebar (closed windows only). */
1194
- group: z13.boolean().default(false),
1195
- dry_run: z13.boolean().default(false)
1266
+ group: z14.boolean().default(false),
1267
+ dry_run: z14.boolean().default(false)
1196
1268
  });
1197
- var AppsProjectsToWindowResult = z13.strictObject({
1269
+ var AppsProjectsToWindowResult = z14.strictObject({
1198
1270
  project_id: ChatProjectId,
1199
1271
  window: ChatPlace,
1200
- dry_run: z13.boolean(),
1201
- place: z13.array(ProjectMoveChat).max(5e3),
1202
- already: z13.array(ProjectMoveChat).max(5e3),
1203
- take_off: z13.array(ProjectMoveChat.extend({ window: ChatPlace })).max(2e4),
1204
- skipped: z13.array(ProjectMoveSkip).max(2e4),
1272
+ dry_run: z14.boolean(),
1273
+ place: z14.array(ProjectMoveChat).max(5e3),
1274
+ already: z14.array(ProjectMoveChat).max(5e3),
1275
+ take_off: z14.array(ProjectMoveChat.extend({ window: ChatPlace })).max(2e4),
1276
+ skipped: z14.array(ProjectMoveSkip).max(2e4),
1205
1277
  /** Chats of the project from other apps (no windows to place into), left as they are. */
1206
1278
  other_apps: nonNegInt,
1207
1279
  group: ProjectMoveGroup.nullable(),
1208
- message: z13.string().max(400)
1280
+ message: z14.string().max(400)
1209
1281
  });
1210
- var ColdChat = z13.strictObject({
1282
+ var ColdChat = z14.strictObject({
1211
1283
  id: ChatId,
1212
- title: z13.string().max(1e3),
1213
- repo: z13.string().max(200).nullable(),
1214
- window: z13.string().max(64).nullable(),
1215
- account: z13.string().max(320).nullable(),
1216
- model_name: z13.string().max(120).nullable(),
1284
+ title: z14.string().max(1e3),
1285
+ repo: z14.string().max(200).nullable(),
1286
+ window: z14.string().max(64).nullable(),
1287
+ account: z14.string().max(320).nullable(),
1288
+ model_name: z14.string().max(120).nullable(),
1217
1289
  context_tokens: nonNegInt,
1218
1290
  cold_at_ms: epochMs,
1219
1291
  /** Waking it once the cache is cold. */
1220
- cold_cost: z13.number().nullable(),
1292
+ cold_cost: z14.number().nullable(),
1221
1293
  /** Waking it while the cache is warm. */
1222
- warm_cost: z13.number().nullable(),
1294
+ warm_cost: z14.number().nullable(),
1223
1295
  /** Its account is on extra usage (a 5-minute cache, and real money). */
1224
- extra_usage: z13.boolean(),
1296
+ extra_usage: z14.boolean(),
1225
1297
  /** A scheduled routine's run. */
1226
- scheduled: z13.boolean(),
1298
+ scheduled: z14.boolean(),
1227
1299
  /** It can be shown in its window (started in the desktop app). */
1228
- openable: z13.boolean(),
1300
+ openable: z14.boolean(),
1229
1301
  /** How its window was decided, or why it can't be opened. */
1230
- how: z13.string().max(200).nullable()
1302
+ how: z14.string().max(200).nullable()
1231
1303
  });
1232
- var AppsChatsColdParams = z13.strictObject({ app_key: AppKey });
1233
- var AppsChatsColdResult = z13.strictObject({
1304
+ var AppsChatsColdParams = z14.strictObject({ app_key: AppKey });
1305
+ var AppsChatsColdResult = z14.strictObject({
1234
1306
  app_key: AppKey,
1235
1307
  /** Waiting for the person with a warm cache, most urgent first. */
1236
- waiting: z13.array(ColdChat).max(2e3),
1308
+ waiting: z14.array(ColdChat).max(2e3),
1237
1309
  /** Went cold in the last while. */
1238
- recently_cold: z13.array(ColdChat).max(2e3),
1310
+ recently_cold: z14.array(ColdChat).max(2e3),
1239
1311
  /** Chats working right now (not waiting). */
1240
1312
  working: nonNegInt
1241
1313
  });
1242
- var AppsChatsOpenParams = z13.strictObject({ app_key: AppKey, chat_id: ChatId, window: ChatPlace.optional() });
1243
- var SpendSplit = z13.strictObject({ main: z13.number(), helpers: z13.number() });
1244
- var SpendScopes = z13.strictObject({ today: SpendSplit, week: SpendSplit });
1245
- var SpendAccount = z13.strictObject({
1246
- account: z13.string().max(320),
1314
+ var AppsChatsOpenParams = z14.strictObject({ app_key: AppKey, chat_id: ChatId, window: ChatPlace.optional() });
1315
+ var SpendSplit = z14.strictObject({ main: z14.number(), helpers: z14.number() });
1316
+ var SpendScopes = z14.strictObject({ today: SpendSplit, week: SpendSplit });
1317
+ var SpendAccount = z14.strictObject({
1318
+ account: z14.string().max(320),
1247
1319
  spend: SpendScopes,
1248
- last_hour: z13.number().nullable(),
1249
- last_5h: z13.number().nullable(),
1250
- five_hour: z13.number().nullable(),
1251
- weekly: z13.number().nullable(),
1320
+ last_hour: z14.number().nullable(),
1321
+ last_5h: z14.number().nullable(),
1322
+ five_hour: z14.number().nullable(),
1323
+ weekly: z14.number().nullable(),
1252
1324
  as_of_ms: epochMs.nullable(),
1253
1325
  weekly_resets_at_ms: epochMs.nullable(),
1254
1326
  /** When the 5-hour or weekly limit is projected to be reached at the current burn. */
1255
1327
  five_hour_full_at_ms: epochMs.nullable(),
1256
1328
  weekly_full_at_ms: epochMs.nullable(),
1257
1329
  /** The reading is too old to project. */
1258
- stale: z13.boolean()
1330
+ stale: z14.boolean()
1259
1331
  });
1260
- var SpendModel = z13.strictObject({ model: z13.string().max(120), name: z13.string().max(120), spend: SpendScopes });
1261
- var SpendChat = z13.strictObject({
1332
+ var SpendModel = z14.strictObject({ model: z14.string().max(120), name: z14.string().max(120), spend: SpendScopes });
1333
+ var SpendChat = z14.strictObject({
1262
1334
  id: ChatId,
1263
- title: z13.string().max(1e3),
1264
- repo: z13.string().max(200).nullable(),
1265
- window: z13.string().max(64).nullable(),
1335
+ title: z14.string().max(1e3),
1336
+ repo: z14.string().max(200).nullable(),
1337
+ window: z14.string().max(64).nullable(),
1266
1338
  spend: SpendScopes,
1267
1339
  helpers: nonNegInt
1268
1340
  });
1269
- var SpendHelper = z13.strictObject({ model: z13.string().max(120), steps: nonNegInt, over_steps: z13.boolean(), description: z13.string().max(400) });
1270
- var SpendLive = z13.strictObject({ id: ChatId, title: z13.string().max(1e3), window: z13.string().max(64).nullable(), helpers: z13.array(SpendHelper).max(200) });
1271
- var SpendIdleScope = z13.strictObject({ count: nonNegInt, tokens: nonNegInt, cost: z13.number(), avoidable: z13.number() });
1272
- var SpendIdle = z13.strictObject({ id: ChatId, chat: z13.string().max(1e3), who: z13.string().max(400), today: SpendIdleScope, week: SpendIdleScope, last_ms: epochMs });
1273
- var SpendStart = z13.strictObject({ repo: z13.string().max(200), count: nonNegInt, median: nonNegInt, latest: z13.array(nonNegInt).max(20), alarm: z13.string().max(400).nullable() });
1274
- var AppsSpendParams = z13.strictObject({ app_key: AppKey });
1275
- var AppsSpendResult = z13.strictObject({
1341
+ var SpendHelper = z14.strictObject({ model: z14.string().max(120), steps: nonNegInt, over_steps: z14.boolean(), description: z14.string().max(400) });
1342
+ var SpendLive = z14.strictObject({ id: ChatId, title: z14.string().max(1e3), window: z14.string().max(64).nullable(), helpers: z14.array(SpendHelper).max(200) });
1343
+ var SpendIdleScope = z14.strictObject({ count: nonNegInt, tokens: nonNegInt, cost: z14.number(), avoidable: z14.number() });
1344
+ var SpendIdle = z14.strictObject({ id: ChatId, chat: z14.string().max(1e3), who: z14.string().max(400), today: SpendIdleScope, week: SpendIdleScope, last_ms: epochMs });
1345
+ var SpendStart = z14.strictObject({ repo: z14.string().max(200), count: nonNegInt, median: nonNegInt, latest: z14.array(nonNegInt).max(20), alarm: z14.string().max(400).nullable() });
1346
+ var AppsSpendParams = z14.strictObject({ app_key: AppKey });
1347
+ var AppsSpendResult = z14.strictObject({
1276
1348
  app_key: AppKey,
1277
1349
  /** False while older chats are still being read. */
1278
- complete: z13.boolean(),
1279
- today_total: z13.number(),
1280
- week_total: z13.number(),
1281
- idle_today: z13.number(),
1282
- idle_week: z13.number(),
1350
+ complete: z14.boolean(),
1351
+ today_total: z14.number(),
1352
+ week_total: z14.number(),
1353
+ idle_today: z14.number(),
1354
+ idle_week: z14.number(),
1283
1355
  /** Models with no known list price. */
1284
- unpriced: z13.array(z13.string().max(120)).max(100),
1356
+ unpriced: z14.array(z14.string().max(120)).max(100),
1285
1357
  /** Helpers past their step budget, unusual starting sizes. */
1286
- alarms: z13.array(z13.string().max(400)).max(200),
1287
- live: z13.array(SpendLive).max(200),
1288
- accounts: z13.array(SpendAccount).max(200),
1289
- models: z13.array(SpendModel).max(100),
1290
- chats: z13.array(SpendChat).max(500),
1291
- idle: z13.array(SpendIdle).max(500),
1292
- starts: z13.array(SpendStart).max(200)
1293
- });
1294
- var AppsSyncStatusParams = z13.strictObject({ app_key: AppKey });
1295
- var AppsSyncStatusResult = z13.strictObject({
1296
- healthy: z13.boolean(),
1297
- summary: z13.string().max(400),
1298
- problems: z13.array(z13.string().max(400)).max(200),
1299
- warnings: z13.array(z13.string().max(400)).max(200),
1358
+ alarms: z14.array(z14.string().max(400)).max(200),
1359
+ live: z14.array(SpendLive).max(200),
1360
+ accounts: z14.array(SpendAccount).max(200),
1361
+ models: z14.array(SpendModel).max(100),
1362
+ chats: z14.array(SpendChat).max(500),
1363
+ idle: z14.array(SpendIdle).max(500),
1364
+ starts: z14.array(SpendStart).max(200)
1365
+ });
1366
+ var AppsSyncStatusParams = z14.strictObject({ app_key: AppKey });
1367
+ var AppsSyncStatusResult = z14.strictObject({
1368
+ healthy: z14.boolean(),
1369
+ summary: z14.string().max(400),
1370
+ problems: z14.array(z14.string().max(400)).max(200),
1371
+ warnings: z14.array(z14.string().max(400)).max(200),
1300
1372
  /** Accounts seen with no saved name yet (Save account names fixes them). */
1301
- unnamed_accounts: z13.array(z13.string().max(80)).max(200),
1373
+ unnamed_accounts: z14.array(z14.string().max(80)).max(200),
1302
1374
  /** The full report. */
1303
- output: z13.string().max(2e5)
1375
+ output: z14.string().max(2e5)
1304
1376
  });
1305
- var AppsSyncRunParams = z13.strictObject({ app_key: AppKey });
1306
- var AppsWindowsProcessesParams = z13.strictObject({ app_key: AppKey });
1307
- var AppsWindowsProcessesResult = z13.strictObject({ processes: z13.array(z13.string().max(2e3)).max(2e3) });
1308
- var AppsWindowsAddParams = z13.strictObject({ app_key: AppKey, window: ChatPlace, email: z13.string().min(3).max(320) });
1309
- var AppsWindowsSaveNamesParams = z13.strictObject({ app_key: AppKey });
1377
+ var AppsSyncRunParams = z14.strictObject({ app_key: AppKey });
1378
+ var AppsWindowsProcessesParams = z14.strictObject({ app_key: AppKey });
1379
+ var AppsWindowsProcessesResult = z14.strictObject({ processes: z14.array(z14.string().max(2e3)).max(2e3) });
1380
+ var AppsWindowsAddParams = z14.strictObject({ app_key: AppKey, window: ChatPlace, email: z14.string().min(3).max(320) });
1381
+ var AppsWindowsSaveNamesParams = z14.strictObject({ app_key: AppKey });
1310
1382
 
1311
1383
  // src/schema/service.ts
1312
- import { z as z14 } from "zod";
1384
+ import { z as z15 } from "zod";
1313
1385
  var SERVICE_MAX_FRAME_BYTES = 16777216;
1314
- var ServiceName = z14.enum(["ml", "coding", "tools"]);
1315
- var ContractHash = z14.string().regex(/^[0-9a-f]{64}$/);
1316
- var ServiceToken = z14.string().regex(/^[A-Za-z0-9_-]{43}$/);
1386
+ var ServiceName = z15.enum(["ml", "coding", "tools"]);
1387
+ var ContractHash = z15.string().regex(/^[0-9a-f]{64}$/);
1388
+ var ServiceToken = z15.string().regex(/^[A-Za-z0-9_-]{43}$/);
1317
1389
  var ServiceRequestId = u32;
1318
- var ServiceHello = z14.strictObject({ type: z14.literal("hello"), token: ServiceToken, contract: ContractHash });
1319
- var ServiceWelcome = z14.strictObject({
1320
- type: z14.literal("welcome"),
1390
+ var ServiceHello = z15.strictObject({ type: z15.literal("hello"), token: ServiceToken, contract: ContractHash });
1391
+ var ServiceWelcome = z15.strictObject({
1392
+ type: z15.literal("welcome"),
1321
1393
  service: ServiceName,
1322
1394
  contract: ContractHash,
1323
1395
  pid: nonNegInt,
1324
1396
  /** The interpreter's version, e.g. "3.13.15". */
1325
- python: z14.string().max(32),
1397
+ python: z15.string().max(32),
1326
1398
  /** Every op this service serves; must equal SERVICES[service] exactly. */
1327
- ops: z14.array(z14.string().min(1).max(64)).max(64)
1399
+ ops: z15.array(z15.string().min(1).max(64)).max(64)
1328
1400
  });
1329
- var ServiceRequest = z14.strictObject({
1330
- type: z14.literal("request"),
1401
+ var ServiceRequest = z15.strictObject({
1402
+ type: z15.literal("request"),
1331
1403
  id: ServiceRequestId,
1332
- op: z14.string().min(1).max(64),
1333
- params: z14.unknown()
1404
+ op: z15.string().min(1).max(64),
1405
+ params: z15.unknown()
1334
1406
  // validated by the service against SERVICES[service][op].params
1335
1407
  });
1336
- var ServiceResponse = z14.strictObject({
1337
- type: z14.literal("response"),
1408
+ var ServiceResponse = z15.strictObject({
1409
+ type: z15.literal("response"),
1338
1410
  id: ServiceRequestId,
1339
- result: z14.unknown()
1411
+ result: z15.unknown()
1340
1412
  // validated by the core against SERVICES[service][op].result
1341
1413
  });
1342
- var ServiceErrorMsg = z14.strictObject({ type: z14.literal("error"), id: ServiceRequestId, error: ProtocolErrorBody });
1343
- var ServiceProgressMsg = z14.strictObject({ type: z14.literal("progress"), id: ServiceRequestId, progress: z14.unknown() });
1344
- var ServiceCancel = z14.strictObject({ type: z14.literal("cancel"), id: ServiceRequestId });
1345
- var ServicePing = z14.strictObject({ type: z14.literal("ping"), id: ServiceRequestId });
1346
- var ServicePong = z14.strictObject({
1347
- type: z14.literal("pong"),
1414
+ var ServiceErrorMsg = z15.strictObject({ type: z15.literal("error"), id: ServiceRequestId, error: ProtocolErrorBody });
1415
+ var ServiceProgressMsg = z15.strictObject({ type: z15.literal("progress"), id: ServiceRequestId, progress: z15.unknown() });
1416
+ var ServiceCancel = z15.strictObject({ type: z15.literal("cancel"), id: ServiceRequestId });
1417
+ var ServicePing = z15.strictObject({ type: z15.literal("ping"), id: ServiceRequestId });
1418
+ var ServicePong = z15.strictObject({
1419
+ type: z15.literal("pong"),
1348
1420
  id: ServiceRequestId,
1349
1421
  /** Requests running now. */
1350
1422
  busy: nonNegInt
1351
1423
  });
1352
- var ServiceShutdown = z14.strictObject({ type: z14.literal("shutdown") });
1353
- var CoreToServiceMsg = z14.discriminatedUnion("type", [ServiceHello, ServiceRequest, ServiceCancel, ServicePing, ServiceShutdown]);
1354
- var ServiceToCoreMsg = z14.discriminatedUnion("type", [ServiceWelcome, ServiceResponse, ServiceErrorMsg, ServiceProgressMsg, ServicePong]);
1424
+ var ServiceShutdown = z15.strictObject({ type: z15.literal("shutdown") });
1425
+ var CoreToServiceMsg = z15.discriminatedUnion("type", [ServiceHello, ServiceRequest, ServiceCancel, ServicePing, ServiceShutdown]);
1426
+ var ServiceToCoreMsg = z15.discriminatedUnion("type", [ServiceWelcome, ServiceResponse, ServiceErrorMsg, ServiceProgressMsg, ServicePong]);
1355
1427
 
1356
1428
  // src/schema/tools.ts
1357
- import { z as z15 } from "zod";
1358
- var ToolLevel = z15.enum(["programmatic", "protocol", "chat"]);
1359
- var ToolOutcome = z15.enum(["pass", "fail", "skip"]);
1360
- var ToolPlatform = z15.enum(["darwin", "win32", "linux"]);
1361
- var ToolTransport = z15.enum(["in_process", "localhost", "relay", "agent"]);
1362
- var ToolName = z15.string().min(1).max(64).regex(/^[a-z][a-z0-9_]*$/);
1363
- var ToolLevelResult = z15.strictObject({
1429
+ import { z as z16 } from "zod";
1430
+ var ToolLevel = z16.enum(["programmatic", "protocol", "chat"]);
1431
+ var ToolOutcome = z16.enum(["pass", "fail", "skip"]);
1432
+ var ToolPlatform = z16.enum(["darwin", "win32", "linux"]);
1433
+ var ToolTransport = z16.enum(["in_process", "localhost", "relay", "agent"]);
1434
+ var ToolName = z16.string().min(1).max(64).regex(/^[a-z][a-z0-9_]*$/);
1435
+ var ToolLevelResult = z16.strictObject({
1364
1436
  tool: ToolName,
1365
1437
  level: ToolLevel,
1366
1438
  platform: ToolPlatform,
1367
1439
  transport: ToolTransport,
1368
1440
  outcome: ToolOutcome,
1369
1441
  /** True when the caller sat on a different network from the device (a phone on cellular, CI). */
1370
- remote_network: z15.boolean(),
1442
+ remote_network: z16.boolean(),
1371
1443
  /** One line: what was asserted, or why it failed. Never a token, a file's contents or a path under a real home. */
1372
- detail: z15.string().max(500),
1444
+ detail: z16.string().max(500),
1373
1445
  /** The harness that produced it, e.g. `matrx-desktop test/tools/programmatic.test.ts`. */
1374
- suite: z15.string().min(1).max(200),
1446
+ suite: z16.string().min(1).max(200),
1375
1447
  /** The test case inside the suite. */
1376
- test: z15.string().min(1).max(300),
1377
- run_at_ms: z15.int().min(0)
1448
+ test: z16.string().min(1).max(300),
1449
+ run_at_ms: z16.int().min(0)
1378
1450
  });
1379
- var ToolResultsFile = z15.strictObject({
1380
- schema: z15.literal("matrx.tool-results.v1"),
1451
+ var ToolResultsFile = z16.strictObject({
1452
+ schema: z16.literal("matrx.tool-results.v1"),
1381
1453
  /** The producing repo's commit (short or full SHA). */
1382
- commit: z15.string().min(4).max(64),
1383
- results: z15.array(ToolLevelResult).max(1e4)
1454
+ commit: z16.string().min(4).max(64),
1455
+ results: z16.array(ToolLevelResult).max(1e4)
1384
1456
  });
1385
1457
 
1386
1458
  // src/schema/proc.ts
1387
- import { z as z16 } from "zod";
1388
- var ProcSort = z16.enum(["cpu", "memory", "pid", "name"]);
1389
- var ProcListParams = z16.strictObject({
1459
+ import { z as z17 } from "zod";
1460
+ var ProcSort = z17.enum(["cpu", "memory", "pid", "name"]);
1461
+ var ProcListParams = z17.strictObject({
1390
1462
  /** Case-insensitive substring of the process name or its command line. */
1391
- name: z16.string().min(1).max(128).optional(),
1463
+ name: z17.string().min(1).max(128).optional(),
1392
1464
  sort: ProcSort.default("cpu"),
1393
- limit: z16.int().min(1).max(500).default(50)
1465
+ limit: z17.int().min(1).max(500).default(50)
1394
1466
  });
1395
- var ProcInfo = z16.strictObject({
1396
- pid: z16.int().min(0),
1467
+ var ProcInfo = z17.strictObject({
1468
+ pid: z17.int().min(0),
1397
1469
  /** Parent process id; null where the OS does not report it. */
1398
- ppid: z16.int().min(0).nullable(),
1399
- name: z16.string().max(256),
1470
+ ppid: z17.int().min(0).nullable(),
1471
+ name: z17.string().max(256),
1400
1472
  /** The command line, cut to 1024 characters. */
1401
- command: z16.string().max(1024),
1473
+ command: z17.string().max(1024),
1402
1474
  /** Share of one core, as `ps` and Task Manager report it; null where the OS does not say. */
1403
- cpu_percent: z16.number().min(0).nullable(),
1475
+ cpu_percent: z17.number().min(0).nullable(),
1404
1476
  memory_bytes: nonNegInt.nullable(),
1405
- user: z16.string().max(128).nullable()
1477
+ user: z17.string().max(128).nullable()
1406
1478
  });
1407
- var ProcListResult = z16.strictObject({
1408
- processes: z16.array(ProcInfo).max(500),
1479
+ var ProcListResult = z17.strictObject({
1480
+ processes: z17.array(ProcInfo).max(500),
1409
1481
  /** Processes that matched before `limit`. */
1410
1482
  total: nonNegInt,
1411
- truncated: z16.boolean()
1483
+ truncated: z17.boolean()
1412
1484
  });
1413
- var ProcPortsParams = z16.strictObject({
1485
+ var ProcPortsParams = z17.strictObject({
1414
1486
  /** Only this port. */
1415
- port: z16.int().min(1).max(65535).optional()
1487
+ port: z17.int().min(1).max(65535).optional()
1416
1488
  });
1417
- var ProcPort = z16.strictObject({
1418
- port: z16.int().min(1).max(65535),
1419
- protocol: z16.enum(["tcp", "udp"]),
1489
+ var ProcPort = z17.strictObject({
1490
+ port: z17.int().min(1).max(65535),
1491
+ protocol: z17.enum(["tcp", "udp"]),
1420
1492
  /** The local address it listens on ("127.0.0.1", "*", "::"). */
1421
- address: z16.string().max(64),
1422
- pid: z16.int().min(0).nullable(),
1423
- process: z16.string().max(256).nullable()
1493
+ address: z17.string().max(64),
1494
+ pid: z17.int().min(0).nullable(),
1495
+ process: z17.string().max(256).nullable()
1424
1496
  });
1425
- var ProcPortsResult = z16.strictObject({ ports: z16.array(ProcPort).max(4e3) });
1426
- var ProcKillParams = z16.strictObject({
1427
- pid: z16.int().min(1),
1497
+ var ProcPortsResult = z17.strictObject({ ports: z17.array(ProcPort).max(4e3) });
1498
+ var ProcKillParams = z17.strictObject({
1499
+ pid: z17.int().min(1),
1428
1500
  /** Kill outright (SIGKILL; on Windows the same /F) instead of asking it to quit. */
1429
- force: z16.boolean().default(false)
1501
+ force: z17.boolean().default(false)
1430
1502
  });
1431
- var ProcKillResult = z16.strictObject({
1432
- pid: z16.int().min(1),
1433
- signal: z16.enum(["SIGTERM", "SIGKILL"]),
1503
+ var ProcKillResult = z17.strictObject({
1504
+ pid: z17.int().min(1),
1505
+ signal: z17.enum(["SIGTERM", "SIGKILL"]),
1434
1506
  /** True when the process was gone within 3 s. */
1435
- exited: z16.boolean()
1507
+ exited: z17.boolean()
1436
1508
  });
1437
1509
 
1438
1510
  // src/schema/clipboard.ts
1439
- import { z as z17 } from "zod";
1440
- var ClipboardReadParams = z17.strictObject({});
1441
- var ClipboardReadResult = z17.strictObject({
1511
+ import { z as z18 } from "zod";
1512
+ var ClipboardReadParams = z18.strictObject({});
1513
+ var ClipboardReadResult = z18.strictObject({
1442
1514
  /** The clipboard's text ("" when it holds none), cut to 1 MiB. */
1443
- text: z17.string().max(1048576),
1444
- truncated: z17.boolean()
1515
+ text: z18.string().max(1048576),
1516
+ truncated: z18.boolean()
1445
1517
  });
1446
- var ClipboardWriteParams = z17.strictObject({ text: z17.string().max(1048576) });
1447
- var ClipboardWriteResult = z17.strictObject({ bytes: nonNegInt });
1518
+ var ClipboardWriteParams = z18.strictObject({ text: z18.string().max(1048576) });
1519
+ var ClipboardWriteResult = z18.strictObject({ bytes: nonNegInt });
1448
1520
 
1449
1521
  // src/schema/git.ts
1450
- import { z as z18 } from "zod";
1522
+ import { z as z19 } from "zod";
1451
1523
  var GIT_MAX_OUTPUT_CHARS = 262144;
1452
- var GitText = z18.string().max(GIT_MAX_OUTPUT_CHARS);
1453
- var GitName = z18.string().min(1).max(255).regex(/^[^-\s][^\s]*$/);
1454
- var GitOutputResult = z18.strictObject({ output: GitText, truncated: z18.boolean() });
1455
- var GitStatusParams = z18.strictObject({ cwd: AbsPath });
1456
- var GitStatusFile = z18.strictObject({
1457
- path: z18.string(),
1524
+ var GitText = z19.string().max(GIT_MAX_OUTPUT_CHARS);
1525
+ var GitName = z19.string().min(1).max(255).regex(/^[^-\s][^\s]*$/);
1526
+ var GitOutputResult = z19.strictObject({ output: GitText, truncated: z19.boolean() });
1527
+ var GitStatusParams = z19.strictObject({ cwd: AbsPath });
1528
+ var GitStatusFile = z19.strictObject({
1529
+ path: z19.string(),
1458
1530
  /** Porcelain v1 status letters: index (staged) and worktree; "?" for untracked. */
1459
- index: z18.string().length(1),
1460
- worktree: z18.string().length(1)
1531
+ index: z19.string().length(1),
1532
+ worktree: z19.string().length(1)
1461
1533
  });
1462
- var GitStatusResult = z18.strictObject({
1534
+ var GitStatusResult = z19.strictObject({
1463
1535
  /** The checked-out branch; null when HEAD is detached. */
1464
- branch: z18.string().nullable(),
1465
- upstream: z18.string().nullable(),
1536
+ branch: z19.string().nullable(),
1537
+ upstream: z19.string().nullable(),
1466
1538
  ahead: nonNegInt,
1467
1539
  behind: nonNegInt,
1468
- files: z18.array(GitStatusFile).max(5e3),
1469
- clean: z18.boolean(),
1540
+ files: z19.array(GitStatusFile).max(5e3),
1541
+ clean: z19.boolean(),
1470
1542
  /** More than 5000 changed files: the list is cut. */
1471
- truncated: z18.boolean()
1472
- });
1473
- var GitDiffParams = z18.strictObject({ cwd: AbsPath, path: z18.string().max(4096).optional(), staged: z18.boolean().default(false) });
1474
- var GitDiffResult = z18.strictObject({ diff: GitText, truncated: z18.boolean() });
1475
- var GitLogParams = z18.strictObject({ cwd: AbsPath, limit: z18.int().min(1).max(500).default(50) });
1476
- var GitLogCommit = z18.strictObject({ sha: z18.string(), short: z18.string(), author: z18.string(), date: z18.string(), subject: z18.string() });
1477
- var GitLogResult = z18.strictObject({ commits: z18.array(GitLogCommit).max(500) });
1478
- var GitAddParams = z18.strictObject({ cwd: AbsPath, paths: z18.array(z18.string().min(1).max(4096)).min(1).max(1e3) });
1479
- var GitCommitParams = z18.strictObject({
1543
+ truncated: z19.boolean()
1544
+ });
1545
+ var GitDiffParams = z19.strictObject({ cwd: AbsPath, path: z19.string().max(4096).optional(), staged: z19.boolean().default(false) });
1546
+ var GitDiffResult = z19.strictObject({ diff: GitText, truncated: z19.boolean() });
1547
+ var GitLogParams = z19.strictObject({ cwd: AbsPath, limit: z19.int().min(1).max(500).default(50) });
1548
+ var GitLogCommit = z19.strictObject({ sha: z19.string(), short: z19.string(), author: z19.string(), date: z19.string(), subject: z19.string() });
1549
+ var GitLogResult = z19.strictObject({ commits: z19.array(GitLogCommit).max(500) });
1550
+ var GitAddParams = z19.strictObject({ cwd: AbsPath, paths: z19.array(z19.string().min(1).max(4096)).min(1).max(1e3) });
1551
+ var GitCommitParams = z19.strictObject({
1480
1552
  cwd: AbsPath,
1481
- message: z18.string().min(1).max(65536),
1482
- amend: z18.boolean().default(false),
1553
+ message: z19.string().min(1).max(65536),
1554
+ amend: z19.boolean().default(false),
1483
1555
  /** "Name <email>"; absent = the computer's own git identity. */
1484
- author: z18.string().max(512).optional()
1556
+ author: z19.string().max(512).optional()
1485
1557
  });
1486
- var GitCommitResult = z18.strictObject({ sha: z18.string(), output: GitText, truncated: z18.boolean() });
1487
- var GitPushParams = z18.strictObject({ cwd: AbsPath, remote: GitName.default("origin"), branch: GitName.optional(), force_with_lease: z18.boolean().default(false) });
1488
- var GitPullParams = z18.strictObject({ cwd: AbsPath, remote: GitName.default("origin"), branch: GitName.optional(), rebase: z18.boolean().default(false) });
1489
- var GitBranchParams = z18.strictObject({ cwd: AbsPath, action: z18.enum(["list", "create", "delete", "switch"]), name: GitName.optional() });
1490
- var GitBranchResult = z18.strictObject({
1558
+ var GitCommitResult = z19.strictObject({ sha: z19.string(), output: GitText, truncated: z19.boolean() });
1559
+ var GitPushParams = z19.strictObject({ cwd: AbsPath, remote: GitName.default("origin"), branch: GitName.optional(), force_with_lease: z19.boolean().default(false) });
1560
+ var GitPullParams = z19.strictObject({ cwd: AbsPath, remote: GitName.default("origin"), branch: GitName.optional(), rebase: z19.boolean().default(false) });
1561
+ var GitBranchParams = z19.strictObject({ cwd: AbsPath, action: z19.enum(["list", "create", "delete", "switch"]), name: GitName.optional() });
1562
+ var GitBranchResult = z19.strictObject({
1491
1563
  /** The branch checked out after the action; null when detached. */
1492
- current: z18.string().nullable(),
1564
+ current: z19.string().nullable(),
1493
1565
  /** Local branches (filled by `list`; empty otherwise). */
1494
- branches: z18.array(z18.string()).max(5e3),
1566
+ branches: z19.array(z19.string()).max(5e3),
1495
1567
  output: GitText,
1496
- truncated: z18.boolean()
1568
+ truncated: z19.boolean()
1497
1569
  });
1498
- var GitStashParams = z18.strictObject({ cwd: AbsPath, action: z18.enum(["push", "pop", "list", "drop"]), message: z18.string().max(4096).optional() });
1499
- var GitCloneParams = z18.strictObject({
1500
- url: z18.string().min(1).max(4096).regex(/^[^-]/),
1570
+ var GitStashParams = z19.strictObject({ cwd: AbsPath, action: z19.enum(["push", "pop", "list", "drop"]), message: z19.string().max(4096).optional() });
1571
+ var GitCloneParams = z19.strictObject({
1572
+ url: z19.string().min(1).max(4096).regex(/^[^-]/),
1501
1573
  /** The folder to create; must not exist yet (or be empty). */
1502
1574
  dest: AbsPath,
1503
1575
  branch: GitName.optional(),
1504
- depth: z18.int().min(1).max(1e6).optional()
1576
+ depth: z19.int().min(1).max(1e6).optional()
1505
1577
  });
1506
1578
 
1507
1579
  // src/schema/web.ts
1508
- import { z as z19 } from "zod";
1580
+ import { z as z20 } from "zod";
1509
1581
  var WEB_MAX_TEXT_CHARS = 524288;
1510
- var WebUrl = z19.string().min(1).max(8192).regex(/^https?:\/\//);
1511
- var WebText = z19.string().max(WEB_MAX_TEXT_CHARS);
1512
- var WebHeader = z19.strictObject({ name: z19.string().min(1).max(256), value: z19.string().max(8192) });
1513
- var WebFetchParams = z19.strictObject({
1582
+ var WebUrl = z20.string().min(1).max(8192).regex(/^https?:\/\//);
1583
+ var WebText = z20.string().max(WEB_MAX_TEXT_CHARS);
1584
+ var WebHeader = z20.strictObject({ name: z20.string().min(1).max(256), value: z20.string().max(8192) });
1585
+ var WebFetchParams = z20.strictObject({
1514
1586
  url: WebUrl,
1515
- method: z19.enum(["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"]).default("GET"),
1516
- headers: z19.array(WebHeader).max(64).default([]),
1517
- body: z19.string().max(1048576).optional(),
1518
- follow_redirects: z19.boolean().default(true),
1519
- timeout_s: z19.int().min(1).max(300).default(30)
1520
- });
1521
- var WebFetchResult = z19.strictObject({
1522
- status: z19.int().min(100).max(999),
1523
- reason: z19.string(),
1587
+ method: z20.enum(["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"]).default("GET"),
1588
+ headers: z20.array(WebHeader).max(64).default([]),
1589
+ body: z20.string().max(1048576).optional(),
1590
+ follow_redirects: z20.boolean().default(true),
1591
+ timeout_s: z20.int().min(1).max(300).default(30)
1592
+ });
1593
+ var WebFetchResult = z20.strictObject({
1594
+ status: z20.int().min(100).max(999),
1595
+ reason: z20.string(),
1524
1596
  /** The final URL after redirects. */
1525
- url: z19.string(),
1526
- content_type: z19.string().nullable(),
1527
- headers: z19.array(WebHeader),
1597
+ url: z20.string(),
1598
+ content_type: z20.string().nullable(),
1599
+ headers: z20.array(WebHeader),
1528
1600
  body: WebText,
1529
- truncated: z19.boolean(),
1601
+ truncated: z20.boolean(),
1530
1602
  bytes: nonNegInt,
1531
1603
  elapsed_ms: nonNegInt
1532
1604
  });
1533
- var WebScrapeParams = z19.strictObject({
1534
- urls: z19.array(WebUrl).min(1).max(20),
1535
- use_cache: z19.boolean().default(true),
1536
- get_links: z19.boolean().default(false)
1605
+ var WebScrapeParams = z20.strictObject({
1606
+ urls: z20.array(WebUrl).min(1).max(20),
1607
+ use_cache: z20.boolean().default(true),
1608
+ get_links: z20.boolean().default(false)
1537
1609
  });
1538
- var WebScrapePage = z19.strictObject({
1539
- url: z19.string(),
1540
- ok: z19.boolean(),
1541
- status: z19.int().min(0).max(999).nullable(),
1542
- title: z19.string().nullable(),
1610
+ var WebScrapePage = z20.strictObject({
1611
+ url: z20.string(),
1612
+ ok: z20.boolean(),
1613
+ status: z20.int().min(0).max(999).nullable(),
1614
+ title: z20.string().nullable(),
1543
1615
  /** The page's readable content (markdown-like text from the scraper's parse). */
1544
1616
  text: WebText,
1545
- truncated: z19.boolean(),
1617
+ truncated: z20.boolean(),
1546
1618
  /** Links found on the page (only with get_links). */
1547
- links: z19.array(z19.string()).max(2e3),
1619
+ links: z20.array(z20.string()).max(2e3),
1548
1620
  /** Why the page failed (blocked, timeout, not found…), in the scraper's words; null when ok. */
1549
- error: z19.string().nullable(),
1621
+ error: z20.string().nullable(),
1550
1622
  /** How the page was fetched (http, browser, cache). */
1551
- via: z19.string().nullable()
1552
- });
1553
- var WebScrapeResult = z19.strictObject({ pages: z19.array(WebScrapePage), elapsed_ms: nonNegInt });
1554
- var WebSearchParams = z19.strictObject({
1555
- keywords: z19.array(z19.string().min(1).max(400)).min(1).max(5),
1556
- country: z19.string().min(2).max(2).default("us"),
1557
- count: z19.int().min(1).max(20).default(10),
1558
- freshness: z19.enum(["pd", "pw", "pm", "py"]).optional()
1559
- });
1560
- var WebSearchHit = z19.strictObject({ title: z19.string(), url: z19.string(), description: z19.string() });
1561
- var WebSearchQueryResult = z19.strictObject({ keyword: z19.string(), hits: z19.array(WebSearchHit), error: z19.string().nullable() });
1562
- var WebSearchResult = z19.strictObject({ queries: z19.array(WebSearchQueryResult), elapsed_ms: nonNegInt });
1563
- var ToolsWebSearchParams = z19.strictObject({
1564
- keywords: z19.array(z19.string().min(1).max(400)).min(1).max(5),
1565
- country: z19.string().min(2).max(2).default("us"),
1566
- count: z19.int().min(1).max(20).default(10),
1567
- freshness: z19.enum(["pd", "pw", "pm", "py"]).optional()
1568
- });
1569
- var WebBrowserFetchParams = z19.strictObject({
1623
+ via: z20.string().nullable()
1624
+ });
1625
+ var WebScrapeResult = z20.strictObject({ pages: z20.array(WebScrapePage), elapsed_ms: nonNegInt });
1626
+ var WebSearchParams = z20.strictObject({
1627
+ keywords: z20.array(z20.string().min(1).max(400)).min(1).max(5),
1628
+ country: z20.string().min(2).max(2).default("us"),
1629
+ count: z20.int().min(1).max(20).default(10),
1630
+ freshness: z20.enum(["pd", "pw", "pm", "py"]).optional()
1631
+ });
1632
+ var WebSearchHit = z20.strictObject({ title: z20.string(), url: z20.string(), description: z20.string() });
1633
+ var WebSearchQueryResult = z20.strictObject({ keyword: z20.string(), hits: z20.array(WebSearchHit), error: z20.string().nullable() });
1634
+ var WebSearchResult = z20.strictObject({ queries: z20.array(WebSearchQueryResult), elapsed_ms: nonNegInt });
1635
+ var ToolsWebSearchParams = z20.strictObject({
1636
+ keywords: z20.array(z20.string().min(1).max(400)).min(1).max(5),
1637
+ country: z20.string().min(2).max(2).default("us"),
1638
+ count: z20.int().min(1).max(20).default(10),
1639
+ freshness: z20.enum(["pd", "pw", "pm", "py"]).optional()
1640
+ });
1641
+ var WebBrowserFetchParams = z20.strictObject({
1570
1642
  url: WebUrl,
1571
1643
  /** A CSS selector to wait for before reading the page. */
1572
- wait_for: z19.string().max(1024).optional(),
1573
- wait_timeout_ms: z19.int().min(100).max(12e4).default(3e4),
1644
+ wait_for: z20.string().max(1024).optional(),
1645
+ wait_timeout_ms: z20.int().min(100).max(12e4).default(3e4),
1574
1646
  /** true: readable text; false: the rendered HTML. */
1575
- extract_text: z19.boolean().default(true)
1647
+ extract_text: z20.boolean().default(true)
1576
1648
  });
1577
- var WebBrowserFetchResult = z19.strictObject({
1578
- url: z19.string(),
1579
- status: z19.int().min(0).max(999).nullable(),
1580
- title: z19.string().nullable(),
1649
+ var WebBrowserFetchResult = z20.strictObject({
1650
+ url: z20.string(),
1651
+ status: z20.int().min(0).max(999).nullable(),
1652
+ title: z20.string().nullable(),
1581
1653
  content: WebText,
1582
- truncated: z19.boolean(),
1654
+ truncated: z20.boolean(),
1583
1655
  elapsed_ms: nonNegInt
1584
1656
  });
1585
- var ToolsServiceProgress = z19.strictObject({ phase: z19.enum(["fetching", "installing"]), done: nonNegInt, total: nonNegInt });
1657
+ var ToolsServiceProgress = z20.strictObject({ phase: z20.enum(["fetching", "installing"]), done: nonNegInt, total: nonNegInt });
1586
1658
 
1587
1659
  // src/schema/system.ts
1588
- import { z as z20 } from "zod";
1589
- var SystemOpenUrlParams = z20.strictObject({
1660
+ import { z as z21 } from "zod";
1661
+ var SystemOpenUrlParams = z21.strictObject({
1590
1662
  /** http, https or mailto; opened in the person's default app for it. */
1591
- url: z20.string().min(1).max(4096)
1663
+ url: z21.string().min(1).max(4096)
1592
1664
  });
1593
- var SystemOpenUrlResult = z20.strictObject({ url: z20.string().max(4096) });
1594
- var SystemOpenPathParams = z20.strictObject({
1665
+ var SystemOpenUrlResult = z21.strictObject({ url: z21.string().max(4096) });
1666
+ var SystemOpenPathParams = z21.strictObject({
1595
1667
  path: AbsPath,
1596
1668
  /** Show it in the file manager (Finder, Explorer) instead of opening it. */
1597
- reveal: z20.boolean().default(false)
1669
+ reveal: z21.boolean().default(false)
1598
1670
  });
1599
- var SystemOpenPathResult = z20.strictObject({ path: AbsPath, revealed: z20.boolean() });
1600
- var SystemNotifyParams = z20.strictObject({
1601
- title: z20.string().min(1).max(128),
1602
- body: z20.string().max(1024).default("")
1671
+ var SystemOpenPathResult = z21.strictObject({ path: AbsPath, revealed: z21.boolean() });
1672
+ var SystemNotifyParams = z21.strictObject({
1673
+ title: z21.string().min(1).max(128),
1674
+ body: z21.string().max(1024).default("")
1603
1675
  });
1604
- var SystemNotifyResult = z20.strictObject({
1676
+ var SystemNotifyResult = z21.strictObject({
1605
1677
  /** False when this computer has no notification service to show it (a bare Linux box). */
1606
- shown: z20.boolean()
1678
+ shown: z21.boolean()
1607
1679
  });
1608
1680
 
1609
1681
  // src/schema/screen.ts
1610
- import { z as z21 } from "zod";
1611
- var ScreenDisplay = z21.strictObject({
1682
+ import { z as z22 } from "zod";
1683
+ var ScreenDisplay = z22.strictObject({
1612
1684
  /** The OS's display id; pass it to screen.capture. */
1613
1685
  id: nonNegInt,
1614
- name: z21.string().max(128),
1686
+ name: z22.string().max(128),
1615
1687
  /** Position and size in the OS's logical points (x and y may be negative left of or above the main display). */
1616
- x: z21.int(),
1617
- y: z21.int(),
1618
- width: z21.int().min(1),
1619
- height: z21.int().min(1),
1688
+ x: z22.int(),
1689
+ y: z22.int(),
1690
+ width: z22.int().min(1),
1691
+ height: z22.int().min(1),
1620
1692
  /** Pixels per point (2 on a Retina display). */
1621
- scale: z21.number().min(0.1).max(8),
1622
- primary: z21.boolean()
1693
+ scale: z22.number().min(0.1).max(8),
1694
+ primary: z22.boolean()
1623
1695
  });
1624
- var ScreenListParams = z21.strictObject({});
1625
- var ScreenListResult = z21.strictObject({ displays: z21.array(ScreenDisplay).max(32) });
1626
- var ScreenCaptureParams = z21.strictObject({
1696
+ var ScreenListParams = z22.strictObject({});
1697
+ var ScreenListResult = z22.strictObject({ displays: z22.array(ScreenDisplay).max(32) });
1698
+ var ScreenCaptureParams = z22.strictObject({
1627
1699
  /** The display (from screen.list); the primary display when absent. */
1628
1700
  display_id: nonNegInt.optional(),
1629
- format: z21.enum(["jpeg", "png"]).default("jpeg"),
1701
+ format: z22.enum(["jpeg", "png"]).default("jpeg"),
1630
1702
  /** Scale the picture down to at most this width in pixels (kept when already smaller). */
1631
- max_width: z21.int().min(160).max(7680).default(1600)
1703
+ max_width: z22.int().min(160).max(7680).default(1600)
1632
1704
  });
1633
- var ScreenCaptureResult = z21.strictObject({
1705
+ var ScreenCaptureResult = z22.strictObject({
1634
1706
  display_id: nonNegInt,
1635
- mime_type: z21.enum(["image/jpeg", "image/png"]),
1636
- width: z21.int().min(1),
1637
- height: z21.int().min(1),
1707
+ mime_type: z22.enum(["image/jpeg", "image/png"]),
1708
+ width: z22.int().min(1),
1709
+ height: z22.int().min(1),
1638
1710
  /** The display's full resolution in pixels, before scaling. */
1639
- source_width: z21.int().min(1),
1640
- source_height: z21.int().min(1),
1711
+ source_width: z22.int().min(1),
1712
+ source_height: z22.int().min(1),
1641
1713
  /** The image, base64 (at most 6 MiB of text). */
1642
- data_base64: z21.string().max(6291456)
1714
+ data_base64: z22.string().max(6291456)
1643
1715
  });
1644
1716
 
1645
1717
  // src/schema/window.ts
1646
- import { z as z22 } from "zod";
1647
- var WindowInfo = z22.strictObject({
1718
+ import { z as z23 } from "zod";
1719
+ var WindowInfo = z23.strictObject({
1648
1720
  /** The OS's window handle (macOS window number, Windows HWND, X11 window id). */
1649
1721
  id: nonNegInt,
1650
- title: z22.string().max(512),
1722
+ title: z23.string().max(512),
1651
1723
  /** Position and size in logical points. */
1652
- x: z22.int(),
1653
- y: z22.int(),
1654
- width: z22.int().min(0),
1655
- height: z22.int().min(0),
1724
+ x: z23.int(),
1725
+ y: z23.int(),
1726
+ width: z23.int().min(0),
1727
+ height: z23.int().min(0),
1656
1728
  /**
1657
1729
  * The application that owns the window, by the name the OS shows people; absent when the OS does
1658
1730
  * not say. Optional (never null, the schema rule) because it was added in protocol 1.7: an older
1659
1731
  * app's answer has no such field (FIELDS_SINCE).
1660
1732
  */
1661
- app: z22.string().max(256).optional(),
1733
+ app: z23.string().max(256).optional(),
1662
1734
  /** The owning process id; absent when the OS does not say. Added in protocol 1.7. */
1663
- pid: z22.int().min(0).optional()
1735
+ pid: z23.int().min(0).optional()
1664
1736
  });
1665
- var WindowListParams = z22.strictObject({
1737
+ var WindowListParams = z23.strictObject({
1666
1738
  /** Case-insensitive substring of the window title. */
1667
- title: z22.string().min(1).max(256).optional(),
1668
- limit: z22.int().min(1).max(500).default(100)
1739
+ title: z23.string().min(1).max(256).optional(),
1740
+ limit: z23.int().min(1).max(500).default(100)
1669
1741
  });
1670
- var WindowListResult = z22.strictObject({
1671
- windows: z22.array(WindowInfo).max(500),
1742
+ var WindowListResult = z23.strictObject({
1743
+ windows: z23.array(WindowInfo).max(500),
1672
1744
  total: nonNegInt,
1673
- truncated: z22.boolean()
1745
+ truncated: z23.boolean()
1674
1746
  });
1675
- var WindowFocusParams = z22.strictObject({ id: nonNegInt });
1676
- var WindowFocusResult = z22.strictObject({ window: WindowInfo });
1677
- var WindowMoveParams = z22.strictObject({
1747
+ var WindowFocusParams = z23.strictObject({ id: nonNegInt });
1748
+ var WindowFocusResult = z23.strictObject({ window: WindowInfo });
1749
+ var WindowMoveParams = z23.strictObject({
1678
1750
  id: nonNegInt,
1679
1751
  /** New top-left corner; unchanged when absent. */
1680
- x: z22.int().optional(),
1681
- y: z22.int().optional(),
1752
+ x: z23.int().optional(),
1753
+ y: z23.int().optional(),
1682
1754
  /** New size; unchanged when absent. */
1683
- width: z22.int().min(50).max(16384).optional(),
1684
- height: z22.int().min(50).max(16384).optional()
1755
+ width: z23.int().min(50).max(16384).optional(),
1756
+ height: z23.int().min(50).max(16384).optional()
1685
1757
  });
1686
- var WindowMoveResult = z22.strictObject({ window: WindowInfo });
1687
- var WindowMinimizeParams = z22.strictObject({ id: nonNegInt });
1688
- var WindowMinimizeResult = z22.strictObject({ id: nonNegInt });
1758
+ var WindowMoveResult = z23.strictObject({ window: WindowInfo });
1759
+ var WindowMinimizeParams = z23.strictObject({ id: nonNegInt });
1760
+ var WindowMinimizeResult = z23.strictObject({ id: nonNegInt });
1689
1761
 
1690
1762
  // src/schema/input.ts
1691
- import { z as z23 } from "zod";
1692
- var InputKey = z23.enum([
1763
+ import { z as z24 } from "zod";
1764
+ var InputKey = z24.enum([
1693
1765
  "cmd",
1694
1766
  "ctrl",
1695
1767
  "alt",
@@ -1769,65 +1841,65 @@ var InputKey = z23.enum([
1769
1841
  "backslash",
1770
1842
  "grave"
1771
1843
  ]);
1772
- var InputTypeTextParams = z23.strictObject({ text: z23.string().min(1).max(1e4) });
1773
- var InputTypeTextResult = z23.strictObject({ characters: z23.int().min(1) });
1774
- var InputHotkeyParams = z23.strictObject({
1844
+ var InputTypeTextParams = z24.strictObject({ text: z24.string().min(1).max(1e4) });
1845
+ var InputTypeTextResult = z24.strictObject({ characters: z24.int().min(1) });
1846
+ var InputHotkeyParams = z24.strictObject({
1775
1847
  /** Pressed together in order and released in reverse: ["cmd", "shift", "t"]. */
1776
- keys: z23.array(InputKey).min(1).max(6)
1848
+ keys: z24.array(InputKey).min(1).max(6)
1777
1849
  });
1778
- var InputHotkeyResult = z23.strictObject({ keys: z23.array(InputKey) });
1779
- var InputPoint = z23.strictObject({ x: z23.int(), y: z23.int() });
1780
- var InputMouseMoveParams = z23.strictObject({
1850
+ var InputHotkeyResult = z24.strictObject({ keys: z24.array(InputKey) });
1851
+ var InputPoint = z24.strictObject({ x: z24.int(), y: z24.int() });
1852
+ var InputMouseMoveParams = z24.strictObject({
1781
1853
  /** Screen position in logical points (the coordinates screen.list and window.list report). */
1782
- x: z23.int(),
1783
- y: z23.int()
1854
+ x: z24.int(),
1855
+ y: z24.int()
1784
1856
  });
1785
- var InputMouseMoveResult = z23.strictObject({
1857
+ var InputMouseMoveResult = z24.strictObject({
1786
1858
  /** Where the pointer is now, read back from the OS. */
1787
1859
  position: InputPoint
1788
1860
  });
1789
- var InputMouseClickParams = z23.strictObject({
1861
+ var InputMouseClickParams = z24.strictObject({
1790
1862
  /** Move here first; clicks where the pointer is when absent. */
1791
- x: z23.int().optional(),
1792
- y: z23.int().optional(),
1793
- button: z23.enum(["left", "right", "middle"]).default("left"),
1794
- double: z23.boolean().default(false)
1863
+ x: z24.int().optional(),
1864
+ y: z24.int().optional(),
1865
+ button: z24.enum(["left", "right", "middle"]).default("left"),
1866
+ double: z24.boolean().default(false)
1795
1867
  });
1796
- var InputMouseClickResult = z23.strictObject({
1868
+ var InputMouseClickResult = z24.strictObject({
1797
1869
  position: InputPoint,
1798
- button: z23.enum(["left", "right", "middle"]),
1799
- double: z23.boolean()
1870
+ button: z24.enum(["left", "right", "middle"]),
1871
+ double: z24.boolean()
1800
1872
  });
1801
1873
 
1802
1874
  // src/schema/power.ts
1803
- import { z as z24 } from "zod";
1804
- var PowerStatusParams = z24.strictObject({});
1805
- var PowerStatusResult = z24.strictObject({
1806
- has_battery: z24.boolean(),
1875
+ import { z as z25 } from "zod";
1876
+ var PowerStatusParams = z25.strictObject({});
1877
+ var PowerStatusResult = z25.strictObject({
1878
+ has_battery: z25.boolean(),
1807
1879
  /** 0–100; null without a battery. */
1808
- percent: z24.number().min(0).max(100).nullable(),
1809
- charging: z24.boolean().nullable(),
1880
+ percent: z25.number().min(0).max(100).nullable(),
1881
+ charging: z25.boolean().nullable(),
1810
1882
  /** On wall power; null where the OS does not say. */
1811
- plugged_in: z24.boolean().nullable(),
1883
+ plugged_in: z25.boolean().nullable(),
1812
1884
  /** Minutes of battery left; null when charging, unknown or without a battery. */
1813
1885
  minutes_left: nonNegInt.nullable(),
1814
1886
  /** Matrx 2 is keeping the computer awake (power.prevent_sleep) until this time; null when it is not. */
1815
1887
  awake_until_ms: epochMs.nullable()
1816
1888
  });
1817
- var PowerPreventSleepParams = z24.strictObject({
1889
+ var PowerPreventSleepParams = z25.strictObject({
1818
1890
  /** Keep the computer awake this long; 0 lets it sleep again now. */
1819
- seconds: z24.int().min(0).max(86400),
1891
+ seconds: z25.int().min(0).max(86400),
1820
1892
  /** Shown where the OS lists what keeps it awake. */
1821
- reason: z24.string().min(1).max(128).default("Matrx 2 is working")
1893
+ reason: z25.string().min(1).max(128).default("Matrx 2 is working")
1822
1894
  });
1823
- var PowerPreventSleepResult = z24.strictObject({
1895
+ var PowerPreventSleepResult = z25.strictObject({
1824
1896
  /** When it may sleep again; null after seconds 0. */
1825
1897
  awake_until_ms: epochMs.nullable()
1826
1898
  });
1827
1899
 
1828
1900
  // src/schema/diag.ts
1829
- import { z as z25 } from "zod";
1830
- var DiagProcess = z25.enum([
1901
+ import { z as z26 } from "zod";
1902
+ var DiagProcess = z26.enum([
1831
1903
  "main",
1832
1904
  "renderer",
1833
1905
  "hosted_page",
@@ -1840,7 +1912,7 @@ var DiagProcess = z25.enum([
1840
1912
  "coding_sessions",
1841
1913
  "claude_accounts"
1842
1914
  ]);
1843
- var DiagErrorKind = z25.enum([
1915
+ var DiagErrorKind = z26.enum([
1844
1916
  "uncaught_exception",
1845
1917
  "unhandled_rejection",
1846
1918
  "renderer_crash",
@@ -1852,148 +1924,148 @@ var DiagErrorKind = z25.enum([
1852
1924
  "banner",
1853
1925
  "logged_error"
1854
1926
  ]);
1855
- var DiagErrorStatus = z25.enum(["waiting", "sent", "resolved"]);
1856
- var DiagErrorEntry = z25.strictObject({
1927
+ var DiagErrorStatus = z26.enum(["waiting", "sent", "resolved"]);
1928
+ var DiagErrorEntry = z26.strictObject({
1857
1929
  /** sha256 prefix over process, kind, source, code and the normalized message. */
1858
- signature: z25.string().regex(/^[0-9a-f]{32}$/),
1930
+ signature: z26.string().regex(/^[0-9a-f]{32}$/),
1859
1931
  process: DiagProcess,
1860
1932
  kind: DiagErrorKind,
1861
1933
  /** Where: a cap.op, a log event, a screen or page name. */
1862
- source: z25.string().min(1).max(128),
1934
+ source: z26.string().min(1).max(128),
1863
1935
  /** An ErrorCode, an exit code or signal, an error class; null when there is none. */
1864
- code: z25.string().max(64).nullable(),
1936
+ code: z26.string().max(64).nullable(),
1865
1937
  /** The first occurrence's message, personal data removed. */
1866
- message: z25.string().max(500),
1938
+ message: z26.string().max(500),
1867
1939
  count: nonNegInt,
1868
1940
  first_seen_ms: epochMs,
1869
1941
  last_seen_ms: epochMs,
1870
1942
  status: DiagErrorStatus,
1871
1943
  /** What the agent who resolved it wrote; null until resolved. */
1872
- resolution_note: z25.string().max(500).nullable(),
1873
- app_version: z25.string().max(64)
1944
+ resolution_note: z26.string().max(500).nullable(),
1945
+ app_version: z26.string().max(64)
1874
1946
  });
1875
- var DiagErrorsListParams = z25.strictObject({
1947
+ var DiagErrorsListParams = z26.strictObject({
1876
1948
  /** open = waiting or sent; all includes resolved. */
1877
- status: z25.enum(["open", "all"]).default("open"),
1878
- limit: z25.int().min(1).max(500).default(200)
1949
+ status: z26.enum(["open", "all"]).default("open"),
1950
+ limit: z26.int().min(1).max(500).default(200)
1879
1951
  });
1880
- var DiagErrorsListResult = z25.strictObject({
1952
+ var DiagErrorsListResult = z26.strictObject({
1881
1953
  /** Newest last_seen first. */
1882
- entries: z25.array(DiagErrorEntry).max(500),
1954
+ entries: z26.array(DiagErrorEntry).max(500),
1883
1955
  total_signatures: nonNegInt,
1884
1956
  total_occurrences: nonNegInt,
1885
1957
  /** Signatures with occurrences not yet delivered. */
1886
1958
  waiting: nonNegInt,
1887
1959
  /** signed_out = kept until sign-in; ok = the last delivery worked; failing = the last delivery failed (kept, retried). */
1888
- delivery: z25.enum(["signed_out", "ok", "failing"]),
1960
+ delivery: z26.enum(["signed_out", "ok", "failing"]),
1889
1961
  last_delivery_ms: epochMs.nullable()
1890
1962
  });
1891
- var DiagErrorsReportParams = z25.strictObject({
1892
- process: z25.enum(["renderer", "hosted_page"]),
1893
- kind: z25.enum(["uncaught_exception", "unhandled_rejection", "console_error", "banner"]),
1963
+ var DiagErrorsReportParams = z26.strictObject({
1964
+ process: z26.enum(["renderer", "hosted_page"]),
1965
+ kind: z26.enum(["uncaught_exception", "unhandled_rejection", "console_error", "banner"]),
1894
1966
  /** The screen or page, e.g. "code.chats". */
1895
- source: z25.string().min(1).max(128),
1896
- message: z25.string().min(1).max(2e3),
1897
- code: z25.string().max(64).optional(),
1898
- stack: z25.string().max(8e3).optional()
1967
+ source: z26.string().min(1).max(128),
1968
+ message: z26.string().min(1).max(2e3),
1969
+ code: z26.string().max(64).optional(),
1970
+ stack: z26.string().max(8e3).optional()
1899
1971
  });
1900
- var DiagErrorsReportResult = z25.strictObject({
1901
- signature: z25.string().regex(/^[0-9a-f]{32}$/)
1972
+ var DiagErrorsReportResult = z26.strictObject({
1973
+ signature: z26.string().regex(/^[0-9a-f]{32}$/)
1902
1974
  });
1903
- var DiagErrorsChangedEvent = z25.strictObject({
1975
+ var DiagErrorsChangedEvent = z26.strictObject({
1904
1976
  total_signatures: nonNegInt,
1905
1977
  waiting: nonNegInt
1906
1978
  });
1907
1979
 
1908
1980
  // src/schema/resources.ts
1909
- import { z as z26 } from "zod";
1910
- var ResourcesDisk = z26.strictObject({
1981
+ import { z as z27 } from "zod";
1982
+ var ResourcesDisk = z27.strictObject({
1911
1983
  /** Where it is mounted ("/", "C:"). */
1912
- mount: z26.string().max(512),
1984
+ mount: z27.string().max(512),
1913
1985
  /** The volume's name as the file manager shows it ("Macintosh HD", "Local Disk (C:)"). Since 1.17. */
1914
- name: z26.string().max(256).optional(),
1986
+ name: z27.string().max(256).optional(),
1915
1987
  /** The file system ("apfs", "NTFS", "ext4"). */
1916
- fs: z26.string().max(64),
1988
+ fs: z27.string().max(64),
1917
1989
  size_bytes: nonNegInt,
1918
1990
  used_bytes: nonNegInt,
1919
1991
  available_bytes: nonNegInt
1920
1992
  });
1921
- var ResourcesSnapshotParams = z26.strictObject({});
1922
- var ResourcesSnapshotResult = z26.strictObject({
1923
- cpu: z26.strictObject({
1993
+ var ResourcesSnapshotParams = z27.strictObject({});
1994
+ var ResourcesSnapshotResult = z27.strictObject({
1995
+ cpu: z27.strictObject({
1924
1996
  /** Busy share of all cores, 0–100, measured now. */
1925
- percent: z26.number().min(0).max(100),
1926
- cores: z26.int().min(1),
1997
+ percent: z27.number().min(0).max(100),
1998
+ cores: z27.int().min(1),
1927
1999
  /** 1, 5 and 15 minute load averages; null on Windows. */
1928
- load: z26.array(z26.number().min(0)).length(3).nullable()
2000
+ load: z27.array(z27.number().min(0)).length(3).nullable()
1929
2001
  }),
1930
- memory: z26.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
1931
- swap: z26.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
1932
- disks: z26.array(ResourcesDisk).max(64),
2002
+ memory: z27.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
2003
+ swap: z27.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
2004
+ disks: z27.array(ResourcesDisk).max(64),
1933
2005
  uptime_seconds: nonNegInt
1934
2006
  });
1935
- var ResourcesJobKind = z26.enum(["type-check", "tests", "build", "lint", "dev server", "language server", "search"]);
1936
- var ResourcesStrain = z26.enum(["good", "strain", "overloaded"]);
1937
- var ResourcesPressure = z26.enum(["normal", "warning", "critical"]);
1938
- var ResourcesJob = z26.strictObject({
2007
+ var ResourcesJobKind = z27.enum(["type-check", "tests", "build", "lint", "dev server", "language server", "search"]);
2008
+ var ResourcesStrain = z27.enum(["good", "strain", "overloaded"]);
2009
+ var ResourcesPressure = z27.enum(["normal", "warning", "critical"]);
2010
+ var ResourcesJob = z27.strictObject({
1939
2011
  /** The job's root process (Stop takes its whole tree). */
1940
- pid: z26.int().min(0),
2012
+ pid: z27.int().min(0),
1941
2013
  kind: ResourcesJobKind,
1942
2014
  /** Its heaviest process's command line, shortened ("…/lib/tsc --noEmit -p tsconfig.json"). */
1943
- command: z26.string().max(256),
2015
+ command: z27.string().max(256),
1944
2016
  /** Who started it: "Claude Code", "Codex", "Cursor", "VS Code", "Terminal", "local stack", "detached"; null when unknown. */
1945
- started_by: z26.string().max(64).nullable(),
2017
+ started_by: z27.string().max(64).nullable(),
1946
2018
  /** Whatever started it is gone and nothing waits for it. */
1947
- orphan: z26.boolean(),
2019
+ orphan: z27.boolean(),
1948
2020
  /** A type-check queued for its turn (no compiler running yet). */
1949
- waiting: z26.boolean(),
2021
+ waiting: z27.boolean(),
1950
2022
  /** The project folder it runs in ("matrx-frontend"); null when not in one. */
1951
- folder: z26.string().max(256).nullable(),
2023
+ folder: z27.string().max(256).nullable(),
1952
2024
  /** The same command in the same folder, running this many times (1 = no duplicate). */
1953
- duplicates: z26.int().min(1),
1954
- processes: z26.int().min(1),
2025
+ duplicates: z27.int().min(1),
2026
+ processes: z27.int().min(1),
1955
2027
  /** Sum over the tree, as `ps` reports it: 100 = one full core. */
1956
- cpu_percent: z26.number().min(0),
2028
+ cpu_percent: z27.number().min(0),
1957
2029
  /** Real memory (macOS: the physical footprint Activity Monitor shows, compressed included). */
1958
2030
  memory_bytes: nonNegInt,
1959
2031
  started_at_ms: epochMs.nullable(),
1960
2032
  /** False for an app, an agent session, a terminal, a system process, the local stack or Matrx 2 itself. */
1961
- stoppable: z26.boolean()
2033
+ stoppable: z27.boolean()
1962
2034
  });
1963
- var ResourcesProcess = z26.strictObject({
1964
- pid: z26.int().min(0),
2035
+ var ResourcesProcess = z27.strictObject({
2036
+ pid: z27.int().min(0),
1965
2037
  /** The command line, shortened. */
1966
- name: z26.string().max(256),
1967
- cpu_percent: z26.number().min(0),
2038
+ name: z27.string().max(256),
2039
+ cpu_percent: z27.number().min(0),
1968
2040
  memory_bytes: nonNegInt,
1969
- started_by: z26.string().max(64).nullable(),
2041
+ started_by: z27.string().max(64).nullable(),
1970
2042
  /** The job it belongs to ("type-check in aidream"); null when none. */
1971
- job: z26.string().max(256).nullable(),
2043
+ job: z27.string().max(256).nullable(),
1972
2044
  started_at_ms: epochMs.nullable()
1973
2045
  });
1974
- var ResourcesVerdict = z26.strictObject({
2046
+ var ResourcesVerdict = z27.strictObject({
1975
2047
  level: ResourcesStrain,
1976
2048
  /** One sentence ("Your Mac is under strain. 3 type-checks are running at once."). */
1977
- text: z26.string().max(256),
2049
+ text: z27.string().max(256),
1978
2050
  /** The biggest jobs behind it; null when all is well. */
1979
- cause: z26.string().max(1024).nullable()
2051
+ cause: z27.string().max(1024).nullable()
1980
2052
  });
1981
- var ResourcesSample = z26.strictObject({
2053
+ var ResourcesSample = z27.strictObject({
1982
2054
  at_ms: epochMs,
1983
2055
  /** The 1-minute load average. */
1984
- load: z26.number().min(0),
2056
+ load: z27.number().min(0),
1985
2057
  memory_used_bytes: nonNegInt,
1986
2058
  typechecks: nonNegInt
1987
2059
  });
1988
- var ResourcesActivityParams = z26.strictObject({});
1989
- var ResourcesActivityResult = z26.strictObject({
2060
+ var ResourcesActivityParams = z27.strictObject({});
2061
+ var ResourcesActivityResult = z27.strictObject({
1990
2062
  /** False until the first reading (a second or two after start). */
1991
- ready: z26.boolean(),
2063
+ ready: z27.boolean(),
1992
2064
  sampled_at_ms: epochMs.nullable(),
1993
- cores: z26.int().min(1),
2065
+ cores: z27.int().min(1),
1994
2066
  /** 1, 5 and 15 minute load averages. */
1995
- load: z26.array(z26.number().min(0)).length(3),
1996
- memory: z26.strictObject({
2067
+ load: z27.array(z27.number().min(0)).length(3),
2068
+ memory: z27.strictObject({
1997
2069
  total_bytes: nonNegInt,
1998
2070
  /** Activity Monitor's Memory Used: app memory + wired + compressed. */
1999
2071
  used_bytes: nonNegInt,
@@ -2004,252 +2076,252 @@ var ResourcesActivityResult = z26.strictObject({
2004
2076
  pressure: ResourcesPressure.nullable()
2005
2077
  }),
2006
2078
  verdict: ResourcesVerdict,
2007
- typechecks: z26.strictObject({ running: nonNegInt, waiting: nonNegInt, comfort: nonNegInt }),
2079
+ typechecks: z27.strictObject({ running: nonNegInt, waiting: nonNegInt, comfort: nonNegInt }),
2008
2080
  /** Heaviest first (1 GB weighs as much as 16 % of a core). */
2009
- jobs: z26.array(ResourcesJob).max(200),
2081
+ jobs: z27.array(ResourcesJob).max(200),
2010
2082
  /** The 15 heaviest by memory and the 15 busiest by CPU, together. */
2011
- top: z26.array(ResourcesProcess).max(30),
2083
+ top: z27.array(ResourcesProcess).max(30),
2012
2084
  /** The last hour, oldest first. */
2013
- history: z26.array(ResourcesSample).max(1200)
2085
+ history: z27.array(ResourcesSample).max(1200)
2014
2086
  });
2015
- var ResourcesStopJobParams = z26.strictObject({ pid: z26.int().min(1) });
2016
- var ResourcesStopJobResult = z26.strictObject({
2087
+ var ResourcesStopJobParams = z27.strictObject({ pid: z27.int().min(1) });
2088
+ var ResourcesStopJobResult = z27.strictObject({
2017
2089
  /** Processes signalled; whatever is still running 5 seconds later is force-stopped. */
2018
2090
  processes: nonNegInt,
2019
2091
  /** It had finished before the request arrived. */
2020
- already_finished: z26.boolean()
2092
+ already_finished: z27.boolean()
2021
2093
  });
2022
- var ResourcesIncident = z26.strictObject({
2094
+ var ResourcesIncident = z27.strictObject({
2023
2095
  at_ms: epochMs,
2024
2096
  verdict: ResourcesVerdict,
2025
- load: z26.number().min(0),
2097
+ load: z27.number().min(0),
2026
2098
  memory_used_bytes: nonNegInt,
2027
2099
  compressed_bytes: nonNegInt,
2028
2100
  pressure: ResourcesPressure.nullable(),
2029
- jobs: z26.array(
2030
- z26.strictObject({
2101
+ jobs: z27.array(
2102
+ z27.strictObject({
2031
2103
  kind: ResourcesJobKind,
2032
- started_by: z26.string().max(64).nullable(),
2033
- folder: z26.string().max(256).nullable(),
2034
- command: z26.string().max(256),
2035
- cpu_percent: z26.number().min(0),
2104
+ started_by: z27.string().max(64).nullable(),
2105
+ folder: z27.string().max(256).nullable(),
2106
+ command: z27.string().max(256),
2107
+ cpu_percent: z27.number().min(0),
2036
2108
  memory_bytes: nonNegInt,
2037
- duplicates: z26.int().min(1)
2109
+ duplicates: z27.int().min(1)
2038
2110
  })
2039
2111
  ).max(8)
2040
2112
  });
2041
- var ResourcesIncidentsParams = z26.strictObject({ limit: z26.int().min(1).max(200).default(50) });
2042
- var ResourcesIncidentsResult = z26.strictObject({
2113
+ var ResourcesIncidentsParams = z27.strictObject({ limit: z27.int().min(1).max(200).default(50) });
2114
+ var ResourcesIncidentsResult = z27.strictObject({
2043
2115
  /** Newest first; at most one a minute is written. */
2044
- incidents: z26.array(ResourcesIncident).max(200)
2116
+ incidents: z27.array(ResourcesIncident).max(200)
2045
2117
  });
2046
2118
 
2047
2119
  // src/schema/stack.ts
2048
- import { z as z27 } from "zod";
2049
- var StackServerName = z27.string().regex(/^[a-z0-9_-]{1,64}$/);
2050
- var StackTone = z27.enum(["good", "wait", "bad", "off"]);
2051
- var StackServer = z27.strictObject({
2120
+ import { z as z28 } from "zod";
2121
+ var StackServerName = z28.string().regex(/^[a-z0-9_-]{1,64}$/);
2122
+ var StackTone = z28.enum(["good", "wait", "bad", "off"]);
2123
+ var StackServer = z28.strictObject({
2052
2124
  name: StackServerName,
2053
2125
  /** One word: Healthy, Starting, Unhealthy, Restarting, Stopping, Waiting, Stopped, Crashed, Off. */
2054
- label: z27.string().max(32),
2126
+ label: z28.string().max(32),
2055
2127
  tone: StackTone,
2056
2128
  /** What is going on, in one or two plain sentences. */
2057
- sentence: z27.string().max(2e3),
2129
+ sentence: z28.string().max(2e3),
2058
2130
  /** The config's own description of the server. */
2059
- description: z27.string().max(512),
2131
+ description: z28.string().max(512),
2060
2132
  /** Where the server answers, when its description names an address. */
2061
- open_url: z27.string().max(2048).nullable(),
2062
- log_file: z27.string().max(4096),
2133
+ open_url: z28.string().max(2048).nullable(),
2134
+ log_file: z28.string().max(4096),
2063
2135
  /** When its log file was last written. */
2064
2136
  last_output_at_ms: epochMs.nullable(),
2065
2137
  started_at_ms: epochMs.nullable(),
2066
2138
  restarts: nonNegInt,
2067
- exit_code: z27.int().nullable(),
2068
- pid: z27.int().nullable(),
2139
+ exit_code: z28.int().nullable(),
2140
+ pid: z28.int().nullable(),
2069
2141
  /** (1.18) CPU of the server's process and everything under it, in percent of one core; absent when it is not running. */
2070
- cpu_percent: z27.number().min(0).optional(),
2142
+ cpu_percent: z28.number().min(0).optional(),
2071
2143
  /** (1.18) Memory of the same processes: the physical footprint (Activity Monitor's Memory) summed; absent when it is not running. */
2072
2144
  memory_bytes: nonNegInt.optional()
2073
2145
  });
2074
- var StackEvent = z27.strictObject({
2146
+ var StackEvent = z28.strictObject({
2075
2147
  at_ms: epochMs,
2076
2148
  /** A server name, or "stack" for the stack as a whole. */
2077
- server: z27.string().max(64),
2149
+ server: z28.string().max(64),
2078
2150
  /** started · stopped · healthy · unhealthy · crashed · exited · restarting · stopping · action · action-done · action-failed · setup · error */
2079
- kind: z27.string().max(32),
2080
- text: z27.string().max(4e3)
2151
+ kind: z28.string().max(32),
2152
+ text: z28.string().max(4e3)
2081
2153
  });
2082
- var StackStateParams = z27.strictObject({});
2083
- var StackStateResult = z27.strictObject({
2154
+ var StackStateParams = z28.strictObject({});
2155
+ var StackStateResult = z28.strictObject({
2084
2156
  /** The stack's config file, when found. */
2085
- config_path: z27.string().max(4096).nullable(),
2157
+ config_path: z28.string().max(4096).nullable(),
2086
2158
  /** Why the stack cannot be run from here (no config, no process-compose), else null. */
2087
- problem: z27.string().max(1e3).nullable(),
2088
- stack_up: z27.boolean(),
2159
+ problem: z28.string().max(1e3).nullable(),
2160
+ stack_up: z28.boolean(),
2089
2161
  stack_started_at_ms: epochMs.nullable(),
2090
- servers: z27.array(StackServer).max(64),
2162
+ servers: z28.array(StackServer).max(64),
2091
2163
  /** One line about the one-shot setup steps ("Docker Desktop: running."), or null. */
2092
- setup_note: z27.string().max(500).nullable(),
2164
+ setup_note: z28.string().max(500).nullable(),
2093
2165
  /** Start everything / Stop everything in flight. */
2094
- pending: z27.strictObject({ verb: z27.enum(["start", "stop"]), label: z27.string().max(64), since_ms: epochMs }).nullable(),
2166
+ pending: z28.strictObject({ verb: z28.enum(["start", "stop"]), label: z28.string().max(64), since_ms: epochMs }).nullable(),
2095
2167
  /** The newest entries last. */
2096
- events: z27.array(StackEvent).max(300)
2168
+ events: z28.array(StackEvent).max(300)
2097
2169
  });
2098
- var StackStartParams = z27.strictObject({});
2099
- var StackStopParams = z27.strictObject({});
2100
- var StackRunResult = z27.strictObject({ accepted: z27.boolean() });
2101
- var StackServerActionParams = z27.strictObject({
2170
+ var StackStartParams = z28.strictObject({});
2171
+ var StackStopParams = z28.strictObject({});
2172
+ var StackRunResult = z28.strictObject({ accepted: z28.boolean() });
2173
+ var StackServerActionParams = z28.strictObject({
2102
2174
  name: StackServerName,
2103
- verb: z27.enum(["start", "stop", "restart"])
2175
+ verb: z28.enum(["start", "stop", "restart"])
2104
2176
  });
2105
- var StackServerActionResult = z27.strictObject({ message: z27.string().max(1e3) });
2106
- var StackLogsParams = z27.strictObject({
2177
+ var StackServerActionResult = z28.strictObject({ message: z28.string().max(1e3) });
2178
+ var StackLogsParams = z28.strictObject({
2107
2179
  name: StackServerName,
2108
2180
  /** Without `offset`: the last this-many complete lines. With it: new lines after it, at most this many. */
2109
- lines: z27.int().min(1).max(2e5).default(2e3),
2181
+ lines: z28.int().min(1).max(2e5).default(2e3),
2110
2182
  /** Byte offset the last read ended at: answer only what was written after it (follow). */
2111
2183
  offset: nonNegInt.optional(),
2112
2184
  /** A "Clear" point: the lines written after this byte offset (no `offset`). */
2113
2185
  since: nonNegInt.optional(),
2114
2186
  /** With `offset`: wait up to this long for a new line when none is waiting (0 answers at once). */
2115
- wait_ms: z27.int().min(0).max(25e3).default(0)
2187
+ wait_ms: z28.int().min(0).max(25e3).default(0)
2116
2188
  });
2117
- var StackLogsResult = z27.strictObject({
2189
+ var StackLogsResult = z28.strictObject({
2118
2190
  /** Complete lines, colour codes removed. */
2119
- lines: z27.array(z27.string().max(65536)).max(2e5),
2191
+ lines: z28.array(z28.string().max(65536)).max(2e5),
2120
2192
  /** Where these lines end: pass it back as `offset` to follow. */
2121
2193
  offset: nonNegInt,
2122
2194
  /** False when `since` no longer exists (the log rotated): the lines are the plain tail instead. */
2123
- since_valid: z27.boolean(),
2195
+ since_valid: z28.boolean(),
2124
2196
  /** The log was rotated or truncated since `offset`: these lines start the file again. */
2125
- reset: z27.boolean(),
2126
- log_file: z27.string().max(4096)
2197
+ reset: z28.boolean(),
2198
+ log_file: z28.string().max(4096)
2127
2199
  });
2128
- var StackErrorsParams = z27.strictObject({
2129
- window_minutes: z27.int().min(1).max(1440).default(60)
2200
+ var StackErrorsParams = z28.strictObject({
2201
+ window_minutes: z28.int().min(1).max(1440).default(60)
2130
2202
  });
2131
- var StackErrorsResult = z27.strictObject({
2203
+ var StackErrorsResult = z28.strictObject({
2132
2204
  /** Per server: a heading line ("=== aidream — errors in the last 60 minutes (<file>) ===") and each error with the 10 lines after it. */
2133
- sections: z27.array(z27.strictObject({ name: StackServerName, heading: z27.string().max(4096), lines: z27.array(z27.string().max(65536)).max(5e3) })).max(64),
2134
- window_minutes: z27.int().min(1).max(1440)
2205
+ sections: z28.array(z28.strictObject({ name: StackServerName, heading: z28.string().max(4096), lines: z28.array(z28.string().max(65536)).max(5e3) })).max(64),
2206
+ window_minutes: z28.int().min(1).max(1440)
2135
2207
  });
2136
2208
 
2137
2209
  // src/schema/audio.ts
2138
- import { z as z28 } from "zod";
2139
- var AudioDevice = z28.strictObject({
2210
+ import { z as z29 } from "zod";
2211
+ var AudioDevice = z29.strictObject({
2140
2212
  /** The OS's name for it, as audio.record takes it. */
2141
- id: z28.string().min(1).max(256),
2142
- name: z28.string().max(256),
2143
- default: z28.boolean()
2213
+ id: z29.string().min(1).max(256),
2214
+ name: z29.string().max(256),
2215
+ default: z29.boolean()
2144
2216
  });
2145
- var AudioDevicesParams = z28.strictObject({});
2146
- var AudioDevicesResult = z28.strictObject({
2147
- inputs: z28.array(AudioDevice).max(64),
2148
- outputs: z28.array(AudioDevice).max(64)
2217
+ var AudioDevicesParams = z29.strictObject({});
2218
+ var AudioDevicesResult = z29.strictObject({
2219
+ inputs: z29.array(AudioDevice).max(64),
2220
+ outputs: z29.array(AudioDevice).max(64)
2149
2221
  });
2150
- var AudioRecordParams = z28.strictObject({
2151
- seconds: z28.number().min(0.5).max(600),
2222
+ var AudioRecordParams = z29.strictObject({
2223
+ seconds: z29.number().min(0.5).max(600),
2152
2224
  /** The microphone (from audio.devices); the default input when absent. */
2153
- device_id: z28.string().min(1).max(256).optional(),
2225
+ device_id: z29.string().min(1).max(256).optional(),
2154
2226
  /** Where the WAV file goes; a new file in the temp folder when absent. */
2155
2227
  path: AbsPath.optional()
2156
2228
  });
2157
- var AudioRecordResult = z28.strictObject({
2229
+ var AudioRecordResult = z29.strictObject({
2158
2230
  path: AbsPath,
2159
- seconds: z28.number().min(0),
2231
+ seconds: z29.number().min(0),
2160
2232
  bytes: nonNegInt,
2161
2233
  /** Loudest sample, 0–1: 0 means the device gave silence. */
2162
- peak: z28.number().min(0).max(1)
2234
+ peak: z29.number().min(0).max(1)
2163
2235
  });
2164
- var AudioPlayParams = z28.strictObject({ path: AbsPath });
2165
- var AudioPlayResult = z28.strictObject({ path: AbsPath, seconds: z28.number().min(0) });
2236
+ var AudioPlayParams = z29.strictObject({ path: AbsPath });
2237
+ var AudioPlayResult = z29.strictObject({ path: AbsPath, seconds: z29.number().min(0) });
2166
2238
 
2167
2239
  // src/schema/fs-watch.ts
2168
- import { z as z29 } from "zod";
2169
- var FsWatchId = z29.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
2170
- var FsWatchStartParams = z29.strictObject({
2240
+ import { z as z30 } from "zod";
2241
+ var FsWatchId = z30.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
2242
+ var FsWatchStartParams = z30.strictObject({
2171
2243
  path: AbsPath,
2172
- recursive: z29.boolean().default(true),
2244
+ recursive: z30.boolean().default(true),
2173
2245
  /** Globs relative to `path` whose changes are not reported (".git/**", "node_modules/**"). */
2174
- ignore: z29.array(z29.string().max(256)).max(64).default([])
2246
+ ignore: z30.array(z30.string().max(256)).max(64).default([])
2175
2247
  });
2176
- var FsWatchStartResult = z29.strictObject({
2248
+ var FsWatchStartResult = z30.strictObject({
2177
2249
  watch_id: FsWatchId,
2178
2250
  path: AbsPath,
2179
2251
  /** The watch ends by itself if nobody reads it for 30 minutes. */
2180
2252
  expires_at_ms: epochMs
2181
2253
  });
2182
- var FsWatchEventsParams = z29.strictObject({
2254
+ var FsWatchEventsParams = z30.strictObject({
2183
2255
  watch_id: FsWatchId,
2184
2256
  /** Wait up to this long for a first change when none is waiting (0 answers at once). */
2185
- wait_ms: z29.int().min(0).max(25e3).default(0)
2257
+ wait_ms: z30.int().min(0).max(25e3).default(0)
2186
2258
  });
2187
- var FsWatchEventsResult = z29.strictObject({
2259
+ var FsWatchEventsResult = z30.strictObject({
2188
2260
  /** What changed since the last read, oldest first; re-checked against the disk when read. */
2189
- changes: z29.array(FsChange).max(1e3),
2261
+ changes: z30.array(FsChange).max(1e3),
2190
2262
  /** Changes were dropped (more than 1000 waited): list the folder again. */
2191
- overflow: z29.boolean(),
2263
+ overflow: z30.boolean(),
2192
2264
  expires_at_ms: epochMs
2193
2265
  });
2194
- var FsWatchStopParams = z29.strictObject({ watch_id: FsWatchId });
2195
- var FsWatchStopResult = z29.strictObject({ watch_id: FsWatchId });
2266
+ var FsWatchStopParams = z30.strictObject({ watch_id: FsWatchId });
2267
+ var FsWatchStopResult = z30.strictObject({ watch_id: FsWatchId });
2196
2268
 
2197
2269
  // src/schema/exec-job.ts
2198
- import { z as z30 } from "zod";
2199
- var ExecJobId = z30.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
2200
- var ExecJobStartParams = z30.strictObject({
2201
- command: z30.string().min(1).max(131072),
2270
+ import { z as z31 } from "zod";
2271
+ var ExecJobId = z31.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
2272
+ var ExecJobStartParams = z31.strictObject({
2273
+ command: z31.string().min(1).max(131072),
2202
2274
  /** The folder it runs in; the home folder when absent. */
2203
2275
  cwd: AbsPath.optional(),
2204
- env: z30.record(z30.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), z30.string().max(32768)).optional()
2276
+ env: z31.record(z31.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), z31.string().max(32768)).optional()
2205
2277
  });
2206
- var ExecJobStartResult = z30.strictObject({ job_id: ExecJobId, pid: z30.int().min(1), cwd: AbsPath });
2207
- var ExecJobOutputParams = z30.strictObject({
2278
+ var ExecJobStartResult = z31.strictObject({ job_id: ExecJobId, pid: z31.int().min(1), cwd: AbsPath });
2279
+ var ExecJobOutputParams = z31.strictObject({
2208
2280
  job_id: ExecJobId,
2209
2281
  /** Byte offset into the job's output to read from (next_offset of the last read; 0 = the start). */
2210
2282
  offset: nonNegInt.default(0),
2211
2283
  /** Wait up to this long for new output or the exit when none is waiting (0 answers at once). */
2212
- wait_ms: z30.int().min(0).max(25e3).default(0),
2213
- max_bytes: z30.int().min(1024).max(1048576).default(65536)
2284
+ wait_ms: z31.int().min(0).max(25e3).default(0),
2285
+ max_bytes: z31.int().min(1024).max(1048576).default(65536)
2214
2286
  });
2215
- var ExecJobOutputResult = z30.strictObject({
2287
+ var ExecJobOutputResult = z31.strictObject({
2216
2288
  /** stdout and stderr interleaved as they arrived (UTF-8). */
2217
- output: z30.string(),
2289
+ output: z31.string(),
2218
2290
  next_offset: nonNegInt,
2219
2291
  /** Bytes before `offset` that are gone (the job keeps its last 4 MiB). */
2220
2292
  dropped_bytes: nonNegInt,
2221
- running: z30.boolean(),
2222
- exit_code: z30.int().nullable()
2293
+ running: z31.boolean(),
2294
+ exit_code: z31.int().nullable()
2223
2295
  });
2224
- var ExecJobStopParams = z30.strictObject({
2296
+ var ExecJobStopParams = z31.strictObject({
2225
2297
  job_id: ExecJobId,
2226
2298
  /** End it at once (SIGKILL; on Windows the whole tree with /F) instead of asking it to quit. */
2227
- force: z30.boolean().default(false)
2299
+ force: z31.boolean().default(false)
2228
2300
  });
2229
- var ExecJobStopResult = z30.strictObject({ job_id: ExecJobId, exited: z30.boolean(), exit_code: z30.int().nullable() });
2230
- var ExecJobInfo = z30.strictObject({
2301
+ var ExecJobStopResult = z31.strictObject({ job_id: ExecJobId, exited: z31.boolean(), exit_code: z31.int().nullable() });
2302
+ var ExecJobInfo = z31.strictObject({
2231
2303
  job_id: ExecJobId,
2232
- command: z30.string().max(1024),
2233
- pid: z30.int().min(1),
2304
+ command: z31.string().max(1024),
2305
+ pid: z31.int().min(1),
2234
2306
  cwd: AbsPath,
2235
- running: z30.boolean(),
2236
- exit_code: z30.int().nullable(),
2307
+ running: z31.boolean(),
2308
+ exit_code: z31.int().nullable(),
2237
2309
  started_at_ms: epochMs,
2238
2310
  output_bytes: nonNegInt
2239
2311
  });
2240
- var ExecJobListParams = z30.strictObject({});
2241
- var ExecJobListResult = z30.strictObject({ jobs: z30.array(ExecJobInfo).max(64) });
2312
+ var ExecJobListParams = z31.strictObject({});
2313
+ var ExecJobListResult = z31.strictObject({ jobs: z31.array(ExecJobInfo).max(64) });
2242
2314
 
2243
2315
  // src/schema/coding.ts
2244
- import { z as z31 } from "zod";
2245
- import { UUID_SHAPE_PATTERN as UUID_SHAPE_PATTERN3 } from "@ai-matrx/kit/uuid";
2246
- var CodingServiceCredentials = z31.strictObject({
2247
- access_token: z31.string().min(16).max(16384),
2248
- user_id: z31.string().regex(UUID_SHAPE_PATTERN3),
2316
+ import { z as z32 } from "zod";
2317
+ import { UUID_SHAPE_PATTERN as UUID_SHAPE_PATTERN4 } from "@ai-matrx/kit/uuid";
2318
+ var CodingServiceCredentials = z32.strictObject({
2319
+ access_token: z32.string().min(16).max(16384),
2320
+ user_id: z32.string().regex(UUID_SHAPE_PATTERN4),
2249
2321
  /** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
2250
- server_url: z31.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
2322
+ server_url: z32.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
2251
2323
  });
2252
- var CodingHistoryBlocked = z31.enum([
2324
+ var CodingHistoryBlocked = z32.enum([
2253
2325
  "signed_out",
2254
2326
  "offline",
2255
2327
  "organization_required",
@@ -2257,11 +2329,11 @@ var CodingHistoryBlocked = z31.enum([
2257
2329
  "cloud_list_unavailable",
2258
2330
  "history_too_large"
2259
2331
  ]);
2260
- var CodingHistoryFailure = z31.strictObject({
2261
- session_id: z31.string().max(64),
2262
- reason: z31.string().max(300)
2332
+ var CodingHistoryFailure = z32.strictObject({
2333
+ session_id: z32.string().max(64),
2334
+ reason: z32.string().max(300)
2263
2335
  });
2264
- var CodingHistoryRun = z31.strictObject({
2336
+ var CodingHistoryRun = z32.strictObject({
2265
2337
  /** Claude Code sessions found on this computer. */
2266
2338
  local_sessions: nonNegInt,
2267
2339
  /** Of those, already complete in AI Matrx. */
@@ -2276,39 +2348,39 @@ var CodingHistoryRun = z31.strictObject({
2276
2348
  /** Changed while being read; a later run takes them. */
2277
2349
  changed: nonNegInt,
2278
2350
  failed: nonNegInt,
2279
- failures: z31.array(CodingHistoryFailure).max(20),
2351
+ failures: z32.array(CodingHistoryFailure).max(20),
2280
2352
  /** Candidates not reached yet. */
2281
2353
  remaining: nonNegInt,
2282
2354
  /** The one line a person reads, e.g. "Imported 12 of 14 sessions. 140 already in AI Matrx." */
2283
- summary: z31.string().max(400)
2355
+ summary: z32.string().max(400)
2284
2356
  });
2285
- var CodingHistoryStep = z31.strictObject({
2357
+ var CodingHistoryStep = z32.strictObject({
2286
2358
  /** Null when the run could not start (blocked before a plan existed). */
2287
- plan_id: z31.string().regex(/^[0-9a-f]{32}$/).nullable(),
2288
- finished: z31.boolean(),
2359
+ plan_id: z32.string().regex(/^[0-9a-f]{32}$/).nullable(),
2360
+ finished: z32.boolean(),
2289
2361
  blocked: CodingHistoryBlocked.nullable(),
2290
2362
  run: CodingHistoryRun
2291
2363
  });
2292
- var CodingPlanMissingParams = z31.strictObject({ credentials: CodingServiceCredentials.nullable() });
2293
- var CodingImportNextParams = z31.strictObject({
2294
- plan_id: z31.string().regex(/^[0-9a-f]{32}$/),
2364
+ var CodingPlanMissingParams = z32.strictObject({ credentials: CodingServiceCredentials.nullable() });
2365
+ var CodingImportNextParams = z32.strictObject({
2366
+ plan_id: z32.string().regex(/^[0-9a-f]{32}$/),
2295
2367
  credentials: CodingServiceCredentials.nullable()
2296
2368
  });
2297
- var CodingServiceProgress = z31.strictObject({
2298
- phase: z31.enum(["checking", "importing"]),
2369
+ var CodingServiceProgress = z32.strictObject({
2370
+ phase: z32.enum(["checking", "importing"]),
2299
2371
  done: nonNegInt,
2300
2372
  total: nonNegInt
2301
2373
  });
2302
- var CodingHistoryImportMissingParams = z31.strictObject({});
2303
- var CodingHistoryImportMissingResult = z31.strictObject({
2304
- state: z31.enum(["done", "blocked", "cancelled"]),
2374
+ var CodingHistoryImportMissingParams = z32.strictObject({});
2375
+ var CodingHistoryImportMissingResult = z32.strictObject({
2376
+ state: z32.enum(["done", "blocked", "cancelled"]),
2305
2377
  blocked: CodingHistoryBlocked.nullable(),
2306
2378
  run: CodingHistoryRun,
2307
2379
  elapsed_ms: nonNegInt
2308
2380
  });
2309
- var CodingHistoryProgressEvent = z31.strictObject({
2381
+ var CodingHistoryProgressEvent = z32.strictObject({
2310
2382
  request_id: RequestId,
2311
- phase: z31.enum(["checking", "importing"]),
2383
+ phase: z32.enum(["checking", "importing"]),
2312
2384
  /** Sessions settled so far, of `total` candidates (0 of 0 while checking). */
2313
2385
  done: nonNegInt,
2314
2386
  total: nonNegInt,
@@ -2446,7 +2518,11 @@ var OPS = {
2446
2518
  "web.fetch": { params: WebFetchParams, result: WebFetchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
2447
2519
  "web.scrape": { params: WebScrapeParams, result: WebScrapeResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
2448
2520
  "web.search": { params: WebSearchParams, result: WebSearchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
2449
- "web.fetch_with_browser": { params: WebBrowserFetchParams, result: WebBrowserFetchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] }
2521
+ "web.fetch_with_browser": { params: WebBrowserFetchParams, result: WebBrowserFetchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
2522
+ // 1.23: the signed-in person's own agents and Vault, read as them (the desktop's Agents library and Vault).
2523
+ "account.agents.list": { params: AccountAgentsListParams, result: AccountAgentsListResult, kind: "unary", since: "1.23", errors: ["INTERNAL"] },
2524
+ "account.vault.list": { params: AccountVaultListParams, result: AccountVaultListResult, kind: "unary", since: "1.23", errors: ["INTERNAL"] },
2525
+ "account.vault.copy": { params: AccountVaultCopyParams, result: AccountVaultCopyResult, kind: "unary", since: "1.23", errors: ["AUTH_REQUIRED", "AUTH_FORBIDDEN", "NOT_FOUND", "INVALID_PARAMS", "DEVICE_OFFLINE", "INTERNAL"] }
2450
2526
  };
2451
2527
  var EVENTS = {
2452
2528
  "fs.changed": FsChangedEvent,
@@ -2879,7 +2955,19 @@ var NAMED_SCHEMAS = {
2879
2955
  ToolsWebSearchParams,
2880
2956
  WebBrowserFetchParams,
2881
2957
  WebBrowserFetchResult,
2882
- ToolsServiceProgress
2958
+ ToolsServiceProgress,
2959
+ AccountRowId,
2960
+ AccountReadState,
2961
+ AccountAgent,
2962
+ AccountAgentsListParams,
2963
+ AccountAgentsListResult,
2964
+ VaultItemKind,
2965
+ VaultFieldSummary,
2966
+ VaultItemSummary,
2967
+ AccountVaultListParams,
2968
+ AccountVaultListResult,
2969
+ AccountVaultCopyParams,
2970
+ AccountVaultCopyResult
2883
2971
  };
2884
2972
 
2885
2973
  // src/versioning.ts
@@ -3025,7 +3113,7 @@ function forPeer(op, part, value, version) {
3025
3113
  var VERSIONED_RESULT_OPS = [.../* @__PURE__ */ new Set([...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys(), ...NESTED_RESULTS.keys()])];
3026
3114
 
3027
3115
  // src/contract.ts
3028
- var CONTRACT_SHA256 = "3649fe15a3400c32aa7a60712c93ebbefa639adc6218db849a13fa952e24bb04";
3116
+ var CONTRACT_SHA256 = "764fdad5d8851da877e508f4aad2853aaa8fc3b057291488523ef2dd35615208";
3029
3117
 
3030
3118
  // src/close-policy.ts
3031
3119
  var CLOSE_RULES = {
@@ -3369,8 +3457,17 @@ function renderToolStatusMarkdown(status) {
3369
3457
  }
3370
3458
  export {
3371
3459
  AbsPath,
3460
+ AccountAgent,
3461
+ AccountAgentsListParams,
3462
+ AccountAgentsListResult,
3463
+ AccountReadState,
3372
3464
  AccountReset,
3465
+ AccountRowId,
3373
3466
  AccountUsage,
3467
+ AccountVaultCopyParams,
3468
+ AccountVaultCopyResult,
3469
+ AccountVaultListParams,
3470
+ AccountVaultListResult,
3374
3471
  AppFeatureStatus,
3375
3472
  AppInfo,
3376
3473
  AppKey,
@@ -3782,6 +3879,9 @@ export {
3782
3879
  TranscriptionModelId,
3783
3880
  TranscriptionModelInfo,
3784
3881
  VERSIONED_RESULT_OPS,
3882
+ VaultFieldSummary,
3883
+ VaultItemKind,
3884
+ VaultItemSummary,
3785
3885
  WEB_MAX_TEXT_CHARS,
3786
3886
  WebBrowserFetchParams,
3787
3887
  WebBrowserFetchResult,