paseo-plugin-zcode-provider 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE.md +29 -0
  3. package/README.md +112 -2
  4. package/client/account.tsx +827 -0
  5. package/client/diagnostics.tsx +379 -0
  6. package/client/runtime.tsx +296 -0
  7. package/client/settings.tsx +84 -0
  8. package/client/value.tsx +20 -0
  9. package/icon.svg +1 -0
  10. package/index.client.tsx +22 -0
  11. package/index.server.ts +39 -0
  12. package/package.json +77 -4
  13. package/paseo-plugin.json +6 -0
  14. package/server/account.ts +781 -0
  15. package/server/attachments.ts +150 -0
  16. package/server/build-info.ts +2 -0
  17. package/server/conversation.ts +319 -0
  18. package/server/diagnostics.ts +252 -0
  19. package/server/discovery/discover.ts +225 -0
  20. package/server/discovery/manifest.ts +36 -0
  21. package/server/discovery/types.ts +30 -0
  22. package/server/errors.ts +36 -0
  23. package/server/host/bridge.ts +490 -0
  24. package/server/host/schemas.ts +119 -0
  25. package/server/logger.ts +19 -0
  26. package/server/mapping.ts +270 -0
  27. package/server/models.ts +68 -0
  28. package/server/persistence.ts +146 -0
  29. package/server/presentation.ts +470 -0
  30. package/server/provider-status.ts +81 -0
  31. package/server/provider.ts +838 -0
  32. package/server/runtime/managed.ts +501 -0
  33. package/server/runtime/pins.ts +72 -0
  34. package/server/runtime-setup.ts +77 -0
  35. package/server/session-types.ts +49 -0
  36. package/server/session.ts +866 -0
  37. package/server/status.ts +89 -0
  38. package/server/timeline.ts +18 -0
  39. package/server/usage.ts +362 -0
  40. package/server/vendor/zcode/LICENSE +202 -0
  41. package/server/vendor/zcode/NOTICE.md +70 -0
  42. package/server/vendor/zcode/THIRD-PARTY-NOTICES.md +37 -0
  43. package/server/vendor/zcode/packages/model-option-map/src/compiler.ts +92 -0
  44. package/server/vendor/zcode/packages/model-option-map/src/evaluator.ts +214 -0
  45. package/server/vendor/zcode/packages/model-option-map/src/index.ts +5 -0
  46. package/server/vendor/zcode/packages/model-option-map/src/merge-patch.ts +97 -0
  47. package/server/vendor/zcode/packages/model-option-map/src/option-maps.ts +42 -0
  48. package/server/vendor/zcode/packages/model-option-map/src/parser.ts +240 -0
  49. package/server/vendor/zcode/packages/model-option-map/src/tokenizer.ts +141 -0
  50. package/server/vendor/zcode/packages/model-option-map/src/types.ts +36 -0
  51. package/server/vendor/zcode/packages/rpc/src/buffer.ts +88 -0
  52. package/server/vendor/zcode/packages/rpc/src/channelClient.ts +275 -0
  53. package/server/vendor/zcode/packages/rpc/src/channelServer.ts +283 -0
  54. package/server/vendor/zcode/packages/rpc/src/channels.shared.ts +66 -0
  55. package/server/vendor/zcode/packages/rpc/src/channels.ts +4 -0
  56. package/server/vendor/zcode/packages/rpc/src/delayedChannel.ts +17 -0
  57. package/server/vendor/zcode/packages/rpc/src/foundation.ts +260 -0
  58. package/server/vendor/zcode/packages/rpc/src/protocol.ts +397 -0
  59. package/server/vendor/zcode/packages/rpc/src/proxy-channel.ts +213 -0
  60. package/server/vendor/zcode/packages/rpc/src/serialization.ts +291 -0
  61. package/server/vendor/zcode/packages/shared/src/account-provider-state.ts +13 -0
  62. package/server/vendor/zcode/packages/shared/src/background-bash-output.ts +24 -0
  63. package/server/vendor/zcode/packages/shared/src/background-task-controls.ts +404 -0
  64. package/server/vendor/zcode/packages/shared/src/bash-output-display.ts +11 -0
  65. package/server/vendor/zcode/packages/shared/src/bots.ts +558 -0
  66. package/server/vendor/zcode/packages/shared/src/browser-use/backend.ts +80 -0
  67. package/server/vendor/zcode/packages/shared/src/browser-use/command-metadata.ts +170 -0
  68. package/server/vendor/zcode/packages/shared/src/browser-use/commands.ts +588 -0
  69. package/server/vendor/zcode/packages/shared/src/browser-use/result.ts +130 -0
  70. package/server/vendor/zcode/packages/shared/src/browser-use/snapshot.ts +77 -0
  71. package/server/vendor/zcode/packages/shared/src/command-types.ts +96 -0
  72. package/server/vendor/zcode/packages/shared/src/config-schema.ts +8 -0
  73. package/server/vendor/zcode/packages/shared/src/cuaAccessibilitySettings.ts +41 -0
  74. package/server/vendor/zcode/packages/shared/src/database-startup.ts +178 -0
  75. package/server/vendor/zcode/packages/shared/src/env.ts +63 -0
  76. package/server/vendor/zcode/packages/shared/src/execution-output-preview.ts +14 -0
  77. package/server/vendor/zcode/packages/shared/src/localTtft.ts +192 -0
  78. package/server/vendor/zcode/packages/shared/src/model-config.ts +123 -0
  79. package/server/vendor/zcode/packages/shared/src/model-execution.ts +23 -0
  80. package/server/vendor/zcode/packages/shared/src/model-provider-family.ts +171 -0
  81. package/server/vendor/zcode/packages/shared/src/model-provider-types.ts +81 -0
  82. package/server/vendor/zcode/packages/shared/src/model-selection.ts +60 -0
  83. package/server/vendor/zcode/packages/shared/src/oauth.ts +203 -0
  84. package/server/vendor/zcode/packages/shared/src/official-mcp-auth.ts +272 -0
  85. package/server/vendor/zcode/packages/shared/src/official-mcp-tool-error.ts +68 -0
  86. package/server/vendor/zcode/packages/shared/src/process-diagnostic.ts +42 -0
  87. package/server/vendor/zcode/packages/shared/src/protocol.ts +369 -0
  88. package/server/vendor/zcode/packages/shared/src/provider-family-connection-selection.ts +32 -0
  89. package/server/vendor/zcode/packages/shared/src/remoteAssetInstallMode.ts +11 -0
  90. package/server/vendor/zcode/packages/shared/src/remoteResourcePackages.ts +91 -0
  91. package/server/vendor/zcode/packages/shared/src/runtimeEnv.ts +315 -0
  92. package/server/vendor/zcode/packages/shared/src/settings-source.ts +10 -0
  93. package/server/vendor/zcode/packages/shared/src/usage-quota.ts +74 -0
  94. package/server/vendor/zcode/packages/shared/src/usage-stats.ts +462 -0
  95. package/server/vendor/zcode/packages/shared/src/validationAppSettings.ts +562 -0
  96. package/server/vendor/zcode/packages/shared/src/workspacePurpose.ts +2 -0
  97. package/server/vendor/zcode/packages/shared/src/wslUserValidation.ts +33 -0
  98. package/server/vendor/zcode/packages/shared/src/zcode-agent-policy.ts +25 -0
  99. package/server/vendor/zcode/packages/shared/src/zcode-media-policy.ts +10 -0
  100. package/server/vendor/zcode/packages/shared/src/zcode-protocol/index.ts +3720 -0
  101. package/server/vendor/zcode/packages/shared/src/zcode-protocol-legacy-types.ts +529 -0
  102. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/apply.ts +218 -0
  103. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/attachment-ref.ts +14 -0
  104. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/command.ts +482 -0
  105. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/core.ts +100 -0
  106. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/create-workflow-display.ts +156 -0
  107. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/cuaPermission.ts +41 -0
  108. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/delta.ts +147 -0
  109. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/input-intent.ts +69 -0
  110. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/rows.ts +432 -0
  111. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/session-config.ts +43 -0
  112. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/sessions-index-workflow-activity.ts +195 -0
  113. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/sessions-index.ts +85 -0
  114. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/shared-context-import.ts +38 -0
  115. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/shared-context-ref.ts +10 -0
  116. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/snapshot.ts +509 -0
  117. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/submission.ts +5 -0
  118. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/toolDisplay.ts +264 -0
  119. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/transport.ts +1152 -0
  120. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/wire-assembler.ts +574 -0
  121. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/wire-binary.ts +65 -0
  122. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/wire-codec.ts +240 -0
  123. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/wire-fault.ts +39 -0
  124. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/wire.ts +159 -0
  125. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-artifacts.ts +291 -0
  126. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-observation-display.ts +281 -0
  127. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-row-meta.ts +163 -0
  128. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-run-settings-command.ts +62 -0
  129. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-runs-delta.ts +517 -0
  130. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-runs.ts +512 -0
  131. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workspace-config.ts +81 -0
  132. package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workspace-hook-review.ts +210 -0
  133. package/server/vendor/zcode/packages/shared/src/zcode-task-mode-schema.ts +6 -0
  134. package/server/vendor/zcode/packages/shared/src/zcode-task-types-core.ts +1187 -0
  135. package/server/vendor/zcode/packages/shared/src/zcodeEndpoint.ts +296 -0
  136. package/server/vendor/zcode/provenance.json +405 -0
  137. package/shared/account.ts +201 -0
  138. package/shared/diagnostics.ts +52 -0
  139. package/shared/runtime-setup.ts +73 -0
  140. package/vendor/acp-registry/LICENSE +176 -0
  141. package/vendor/paseo/LICENSE +211 -0
@@ -0,0 +1,369 @@
1
+ import type { RemoteAssetInstallMode } from "./remoteAssetInstallMode.js";
2
+ import type { RemoteResourcePackageSelection } from "./remoteResourcePackages.js";
3
+ import type { ProviderFamilyDomain } from "./model-provider-family.js";
4
+ import type { ProviderFamilyConnectionSelectionSettings } from "./provider-family-connection-selection.js";
5
+ import type { ZCodeProvider } from "./zcode-task-types-core.js";
6
+ import type { WorkspacePurpose } from "./workspacePurpose.js";
7
+ import type { EmbeddedBrowserViewportPreference } from "./browser-use/command-metadata.js";
8
+
9
+ // ── Domain types ──
10
+
11
+ export interface FileEntry {
12
+ name: string;
13
+ path: string;
14
+ type: "file" | "directory";
15
+ /** 旧远端服务端可能不返回;调用方应按 false 处理。 */
16
+ isSymbolicLink?: boolean;
17
+ }
18
+
19
+ export interface FileStat {
20
+ path: string;
21
+ type: "file" | "directory";
22
+ /** 文件字节数;旧远端服务端可能不返回,调用方需按 undefined 处理。 */
23
+ size?: number;
24
+ /** 文件最后修改时间;分享分块读取用它检测读取期间的并发改写。 */
25
+ mtimeMs?: number;
26
+ }
27
+
28
+ /** 文件系统变更事件(目录级粒度) */
29
+ export interface FileWatchEvent {
30
+ /** 发生变更的目录路径 */
31
+ dirPath: string;
32
+ /**
33
+ * 能由底层 watcher 确认时返回发生变化的完整路径。
34
+ * 旧 Host、平台未返回 filename 或同一防抖窗口包含多个路径时省略,调用方应保守刷新。
35
+ */
36
+ changedPath?: string;
37
+ }
38
+
39
+ export interface FileTextSlice {
40
+ path: string;
41
+ content: string;
42
+ offset: number;
43
+ bytesRead: number;
44
+ totalBytes: number;
45
+ truncated: boolean;
46
+ isBinary: boolean;
47
+ }
48
+
49
+ export interface FileMediaPreview {
50
+ path: string;
51
+ mediaType: string;
52
+ dataBase64: string;
53
+ totalBytes: number;
54
+ }
55
+
56
+ export interface FileBinaryPreview {
57
+ path: string;
58
+ dataBase64: string;
59
+ totalBytes: number;
60
+ }
61
+
62
+ export interface WorkspaceFileEntry {
63
+ name: string;
64
+ path: string;
65
+ relativePath: string;
66
+ type: "file" | "directory";
67
+ }
68
+
69
+ export interface SystemInfo {
70
+ homedir: string;
71
+ platform: string;
72
+ }
73
+
74
+ /** 支持的语言 */
75
+ export type Locale = "zh-CN" | "en-US";
76
+
77
+ /** 界面语言偏好;system 表示跟随当前运行端系统语言。 */
78
+ export type LocalePreference = "system" | Locale;
79
+
80
+ /** ZCode 运行中继续输入时的交互行为 */
81
+ export type ZCodeInteractionBehavior = "queue" | "guide";
82
+
83
+ /** 桌面端 Electron 自动更新发布通道。 */
84
+ export type ElectronReleaseChannel = "stable" | "preview";
85
+
86
+ /** Windows Bash 工具可使用的集成终端 shell 方言。 */
87
+ export type IntegratedTerminalShellDialect = "cmd" | "git-bash";
88
+
89
+ /** 设置页中 Windows Bash shell 的用户选择。 */
90
+ export type IntegratedTerminalShellSelection =
91
+ | { mode: "auto" }
92
+ | {
93
+ mode: "shell";
94
+ dialect: IntegratedTerminalShellDialect;
95
+ id: string;
96
+ label: string;
97
+ path: string;
98
+ };
99
+
100
+ /** 当前 host 可识别的 Windows shell 选项。 */
101
+ export interface IntegratedTerminalShellOption {
102
+ dialect: IntegratedTerminalShellDialect;
103
+ id: string;
104
+ label: string;
105
+ path: string;
106
+ source: "system" | "path";
107
+ }
108
+
109
+ /** 默认语言 */
110
+ export const DEFAULT_LOCALE: Locale = "zh-CN";
111
+
112
+ // ── Workspace / Tab ──
113
+
114
+ /** 标签页唯一标识 */
115
+ export type TabId = string;
116
+
117
+ /** 单个标签页的状态 */
118
+ export interface TabState {
119
+ id: TabId;
120
+ /** workspace 绝对路径 */
121
+ workspacePath: string;
122
+ /** 显示名称,通常为路径最后一段 */
123
+ label: string;
124
+ }
125
+
126
+ export interface SSHRemoteTargetSnapshot {
127
+ kind: "ssh";
128
+ host: string;
129
+ port?: number;
130
+ username: string;
131
+ /** 用户建立连接时选择的 SSH config Host alias,仅用于 UI 展示。 */
132
+ sshConfigAlias?: string;
133
+ privateKeyPath?: string;
134
+ assetInstallMode?: RemoteAssetInstallMode;
135
+ resourcePackages?: RemoteResourcePackageSelection;
136
+ /**
137
+ * SSH 密码不会写入 setting.json。
138
+ * 这里只保存 credentialService 的键名,恢复时再去安全存储读取真实密码。
139
+ */
140
+ passwordCredentialKey?: string;
141
+ /**
142
+ * 私钥口令不会写入 setting.json。
143
+ * 这里只保存 credentialService 的键名,恢复时再去安全存储读取真实口令。
144
+ */
145
+ privateKeyPassphraseCredentialKey?: string;
146
+ }
147
+
148
+ export interface WSLRemoteTargetSnapshot {
149
+ kind: "wsl";
150
+ distro?: string;
151
+ user?: string;
152
+ }
153
+
154
+ export interface DockerRemoteTargetSnapshot {
155
+ kind: "docker";
156
+ container: string;
157
+ }
158
+
159
+ export type RemoteTargetSnapshot =
160
+ | SSHRemoteTargetSnapshot
161
+ | WSLRemoteTargetSnapshot
162
+ | DockerRemoteTargetSnapshot;
163
+
164
+ export interface RemoteWorkspaceSessionSnapshot {
165
+ /** 远程 workspace 的真实绝对路径 */
166
+ workspacePath: string;
167
+ /** 发起远程连接时的本机 workspace 路径,仅用于 MCP filesystem 路径改写。 */
168
+ localWorkspacePath?: string;
169
+ /** 远程 workspace 的稳定身份键(authority + canonicalPath)。 */
170
+ workspaceIdentity?: string;
171
+ /** 远程连接目标的可恢复快照 */
172
+ target: RemoteTargetSnapshot;
173
+ /** 最近一次成功打开该 workspace 的时间戳 */
174
+ lastOpenedAt: number;
175
+ /** 最近一次恢复/重连结果 */
176
+ lastConnectionStatus: "connected" | "failed";
177
+ /** 最近一次失败原因;成功后清空 */
178
+ lastConnectionError?: string;
179
+ }
180
+
181
+ export interface LocalWorkspaceSessionEntry {
182
+ kind: "local";
183
+ workspacePath: string;
184
+ /** 项目展示分类;旧数据缺省为 project,conversation 仍使用真实 workspacePath 作为 cwd/key。 */
185
+ workspacePurpose?: WorkspacePurpose;
186
+ }
187
+
188
+ export interface RemoteWorkspaceSessionEntry extends RemoteWorkspaceSessionSnapshot {
189
+ kind: "remote";
190
+ }
191
+
192
+ export type PersistedWorkspaceSessionEntry =
193
+ | LocalWorkspaceSessionEntry
194
+ | RemoteWorkspaceSessionEntry;
195
+
196
+ // ── Process Monitor ──
197
+
198
+ /** 资源管理器分类:基础服务 / 内置插件 / 社区插件 */
199
+ export type ResourceUsageCategory = "base" | "builtin-plugin" | "community-plugin";
200
+
201
+ /** 基础服务分组键;插件分组键为插件名或 MCP server name */
202
+ export type ResourceUsageBaseGroupKey = "main" | "gpu" | "renderer" | "host" | "cli" | "utility";
203
+
204
+ /** 资源管理器中的一个进程行(CPU 为整机归一化百分比,内存为字节) */
205
+ export interface ResourceUsageProcess {
206
+ pid: number;
207
+ /** 进程显示名,如 zcode-main / zcode-agent-zcode-demo / node_repl */
208
+ name: string;
209
+ category: ResourceUsageCategory;
210
+ groupKey: string;
211
+ groupLabel: string;
212
+ cpuPercent: number;
213
+ memoryBytes: number;
214
+ /** false 表示只知道拓扑,指标尚未采到(显示为 —) */
215
+ sampled: boolean;
216
+ }
217
+
218
+ /** Host 侧采样得到的外部进程行(Agent / MCP / 终端等),由 main 合并进快照 */
219
+ export type HostResourceUsageProcess = Omit<ResourceUsageProcess, "sampled">;
220
+
221
+ /** 资源管理器一次完整快照,由 main 进程合并 Electron 指标、系统总量与 Host 采样后返回 */
222
+ export interface ResourceUsageSnapshot {
223
+ sampledAt: number;
224
+ logicalCpuCount: number;
225
+ system: {
226
+ cpuPercent: number;
227
+ memoryTotalBytes: number;
228
+ memoryUsedBytes: number;
229
+ };
230
+ app: {
231
+ cpuPercent: number;
232
+ memoryBytes: number;
233
+ };
234
+ processes: ResourceUsageProcess[];
235
+ }
236
+
237
+ export interface AppSettings {
238
+ /** 当前 App/Host 不再显示提交前体验套餐推荐;不改变任何入口的模型选择。 */
239
+ startPlanRecommendationDismissed?: boolean;
240
+ recentProjects: string[]; // 最近项目列表,最多保留 10 个
241
+ locale: Locale; // 界面语言
242
+ /**
243
+ * 用户覆盖的快捷键绑定(命令 ID → 绑定串数组,格式见 shortcutCommands.ts)。
244
+ * 只存用户覆盖:未覆盖的命令不落盘,读取时与 SHORTCUT_COMMANDS 默认绑定合并;
245
+ * 覆盖语义为整组替换(如 openCommandCenter 的双默认绑定被覆盖时同时失效)。
246
+ */
247
+ shortcutBindings?: Record<string, string[]>;
248
+ /** 界面语言偏好;locale 保存偏好解析后的实际语言,供 main/menu/远控等非浏览器上下文使用。 */
249
+ localePreference?: LocalePreference;
250
+ /** 是否尽量继承系统终端 profile、shell 环境和字体 */
251
+ terminalInheritSystemProfile?: boolean;
252
+ /** 用户显式覆盖的终端字体;为空时从系统终端配置自动探测 */
253
+ terminalFontFamily?: string;
254
+ /** Windows 下 Bash 工具使用的本机 shell;未配置时自动选择。 */
255
+ integratedTerminalShell?: IntegratedTerminalShellSelection;
256
+ /** HTTP/HTTPS 出口代理,例如 http://127.0.0.1:7890;为空时直连。下次启动 app/agent 生效。 */
257
+ httpProxy?: string;
258
+ /** 代理绕过规则,例如 localhost,127.0.0.1,.example.com;只在 httpProxy 存在时影响 renderer,agent/tool 仍按显式环境使用。 */
259
+ httpProxyNoProxy?: string;
260
+ /** 自定义 PEM 根证书路径;下次启动 app/agent 时用于 renderer 校验与 agent NODE_EXTRA_CA_CERTS。 */
261
+ httpProxyCaCertPath?: string;
262
+ /**
263
+ * 内置浏览器忽略 HTTPS 证书校验错误(自签名、过期、域名不匹配等),用于访问内网测试站点。
264
+ * 只影响内置浏览器出口,不影响 ZCode 自身对后端与模型 API 的请求。默认关闭,重启后生效。
265
+ */
266
+ embeddedBrowserAllowInsecureCertificates?: boolean;
267
+ /** 人类用户主动打开 Browser tab 时的一次性显示偏好;Agent Browser Use 不读写。 */
268
+ embeddedBrowserViewportPreference?: EmbeddedBrowserViewportPreference;
269
+ /**
270
+ * 用户已在设置页关闭输入框的「电脑操作」按钮(内部 hidden 态)。
271
+ * 取 hidden 语义而非 visible:undefined 即默认显示,老用户无需数据迁移。
272
+ * 关闭后按钮不再渲染,且不因重启或版本更新自愈,仅能在设置页重新开启。
273
+ */
274
+ computerUseComposerEntryHidden?: boolean;
275
+ /** 自动归档已完成旧任务的总开关 */
276
+ taskAutoArchiveEnabled?: boolean;
277
+ /** 自动归档阈值;当任务最后更新时间早于该天数时允许被归档 */
278
+ taskAutoArchiveOlderThanDays?: number;
279
+ /** Windows 桌面端关闭窗口时隐藏到托盘;其它平台忽略 */
280
+ closeToTrayOnWindows?: boolean;
281
+ /** 存在执行中的闲时任务时阻止系统闲置休眠(手动开关,防不了合盖)。 */
282
+ keepAwakeWhileRunning?: boolean;
283
+ /** Windows 关闭到托盘默认值是否已执行过一次性迁移;只用于设置迁移,不参与业务判断。 */
284
+ closeToTrayOnWindowsMigrationInitialized?: boolean;
285
+ /** 桌面端全局页面缩放档位;用于重启后恢复界面缩放,Web/手机端忽略。 */
286
+ desktopZoomLevel?: number;
287
+ /** 桌面主窗口最近一次非最大化宽高及最大化状态;Web/手机端忽略。 */
288
+ desktopWindowSize?: {
289
+ width: number;
290
+ height: number;
291
+ maximized: boolean;
292
+ };
293
+ /** 桌面端 Chromium 硬件加速开关;只在下次启动 main 进程早期生效,Web/手机端忽略。 */
294
+ desktopChromiumHardwareAccelerationEnabled?: boolean;
295
+ /** 是否在消息流中展示模型思考过程 */
296
+ messageStreamShowReasoning?: boolean;
297
+ // TODO(settings-schema-version): 能证明所有受支持升级路径都已执行本次迁移后,改用统一 settings schema version,并一起删除此 marker、迁移函数和持久化判断。
298
+ /** 显示模型思考过程的默认值是否已执行过一次性迁移;只用于设置迁移,不参与消息渲染判断。 */
299
+ messageStreamShowReasoningMigrationInitialized?: boolean;
300
+ /** 是否在消息流中展示 todo 工具渲染;不影响摘要面板的 todo */
301
+ messageStreamShowTodos?: boolean;
302
+ /** 是否把连续的只读工具调用聚合成 Explore。 */
303
+ toolGroupingExploreEnabled?: boolean;
304
+ /** 是否把连续的非只读 Shell 工具调用聚合成 Terminal。 */
305
+ toolGroupingTerminalEnabled?: boolean;
306
+ /** 是否把连续的 Write/Edit/ApplyPatch 工具调用聚合成 Changes。 */
307
+ toolGroupingChangesEnabled?: boolean;
308
+ /** ZCode 运行中继续输入时,是排队到下一轮,还是引导到下一次工具调用后运行 */
309
+ zcodeInteractionBehavior?: ZCodeInteractionBehavior;
310
+ /** Agent 提问五分钟无人回答时是否允许自动继续;缺失按开启兼容旧配置。 */
311
+ askUserQuestionAutoResolutionEnabled?: boolean;
312
+ /** 是否完整保留 Model I/O;开启后不轮转、不限额重置、不压缩或裁剪,鉴权信息仍会脱敏。 */
313
+ modelIoFullRetentionEnabled?: boolean;
314
+ /** 设置页中每个 Provider Family 当前唯一的结构化连接选择。 */
315
+ providerFamilyConnectionSelections?: ProviderFamilyConnectionSelectionSettings;
316
+ /** 用户通过 WelcomeScreen 成功连接后确认的 ZAI / BigModel provider family 运行域。 */
317
+ providerFamilyDomain?: ProviderFamilyDomain;
318
+ /** 最近一次设置或清空 providerFamilyDomain 的时间。 */
319
+ providerFamilyDomainUpdatedAt?: number;
320
+ /** 旧 oauth/provider 状态是否已经尝试迁移到 providerFamilyDomain。 */
321
+ providerFamilyDomainMigrated?: boolean;
322
+ /** 新建或冷恢复 Session 是否为 Bash 注入 bfs/ugrep 增强;默认启用。 */
323
+ nativeSearchEnhancementsEnabled?: boolean;
324
+ /** 新建或冷恢复 Session 是否启用 Memory;默认关闭。 */
325
+ memoryEnabled?: boolean;
326
+ onboardingOccupation?:
327
+ | "office"
328
+ | "developer"
329
+ | "independent"
330
+ | "infrastructure"
331
+ | "product"
332
+ | "design"
333
+ | "student"
334
+ | "creator"
335
+ | "operations"
336
+ | "marketing"
337
+ | "finance"
338
+ | "accounting"
339
+ | "legal"
340
+ | "other"
341
+ | null;
342
+ proactiveSuggestionsEnabled?: boolean;
343
+ /** 上次关闭时的完整 workspace 会话(含本地与远端 workspace) */
344
+ lastWorkspaceSession?: PersistedWorkspaceSessionEntry[];
345
+ /** 上次关闭时激活的 tab 索引 */
346
+ lastActiveTabIndex?: number;
347
+ /** 每个 workspace 的最后活跃 taskId,下次打开自动恢复 */
348
+ lastActiveTaskByWorkspace?: Record<string, string>;
349
+ /** 数据目录的根路径(替代 homedir),默认为 os.homedir();.zcode/v2 后缀不变 */
350
+ dataBaseDir?: string;
351
+ /** 自动更新安装完成后,等待首次启动展示的版本说明 */
352
+ pendingPostUpdateReleaseNotes?: {
353
+ version: string;
354
+ title: string;
355
+ markdown: string;
356
+ releaseDate?: string;
357
+ releaseNotesByLocale?: Partial<Record<Locale, { title: string; markdown: string }>>;
358
+ };
359
+ /** 设置页“接收 preview 自动更新”偏好;仅桌面端自动更新读取。 */
360
+ receivePreviewUpdates?: boolean;
361
+ /** 设置页/更新弹窗“以后自动下载并安装更新”偏好;仅桌面端自动更新读取。 */
362
+ autoDownloadAndInstallUpdates?: boolean;
363
+ /** 用户跳过的 Electron 自动更新版本;按通道隔离,避免 stable / preview 互相遮挡。 */
364
+ skippedElectronUpdateVersions?: Partial<Record<ElectronReleaseChannel, string>>;
365
+ /** 首次启动设置同步提示是否已消费;只表示弹窗不再出现,不代表导入成功。 */
366
+ settingsSyncFirstRunPromptHandled?: boolean;
367
+ /** 设置页里的临时 endpoint override;正式/测试默认 base url 由 ZCODE_BASE_URL env 管理。 */
368
+ zcodeEndpointOrigin?: string;
369
+ }
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+
3
+ const nonEmptyString = z.string().trim().min(1);
4
+
5
+ export const providerFamilyConnectionSelectionSchema = z.discriminatedUnion("kind", [
6
+ z.object({ kind: z.literal("start-plan") }).strict(),
7
+ z.object({ kind: z.literal("individual-coding-plan") }).strict(),
8
+ z
9
+ .object({
10
+ kind: z.literal("team-coding-plan"),
11
+ productId: nonEmptyString,
12
+ organizationId: nonEmptyString,
13
+ projectId: nonEmptyString,
14
+ })
15
+ .strict(),
16
+ ]);
17
+
18
+ export const providerFamilyConnectionSelectionSettingsSchema = z
19
+ .object({
20
+ zai: providerFamilyConnectionSelectionSchema.optional(),
21
+ bigmodel: providerFamilyConnectionSelectionSchema.optional(),
22
+ })
23
+ .partial();
24
+
25
+ /** 用户对一个 Provider Family 的连接选择意图;不包含账号身份或动态凭据。 */
26
+ export type ProviderFamilyConnectionSelection = Readonly<
27
+ z.infer<typeof providerFamilyConnectionSelectionSchema>
28
+ >;
29
+
30
+ export type ProviderFamilyConnectionSelectionSettings = z.infer<
31
+ typeof providerFamilyConnectionSelectionSettingsSchema
32
+ >;
@@ -0,0 +1,11 @@
1
+ export const REMOTE_ASSET_INSTALL_MODES = ["local-download-upload", "remote-download"] as const;
2
+
3
+ export type RemoteAssetInstallMode = (typeof REMOTE_ASSET_INSTALL_MODES)[number];
4
+
5
+ export const DEFAULT_REMOTE_ASSET_INSTALL_MODE: RemoteAssetInstallMode = "local-download-upload";
6
+
7
+ export function normalizeRemoteAssetInstallMode(
8
+ mode?: RemoteAssetInstallMode | null,
9
+ ): RemoteAssetInstallMode {
10
+ return mode === "remote-download" ? mode : DEFAULT_REMOTE_ASSET_INSTALL_MODE;
11
+ }
@@ -0,0 +1,91 @@
1
+ export const REMOTE_RESOURCE_PACKAGE_IDS = [
2
+ "server-bundle",
3
+ "node-runtime",
4
+ "node-pty",
5
+ "glm",
6
+ "bfs",
7
+ "ripgrep",
8
+ "ugrep",
9
+ ] as const;
10
+
11
+ export type RemoteResourcePackageId = (typeof REMOTE_RESOURCE_PACKAGE_IDS)[number];
12
+
13
+ export const ACTIVE_REMOTE_RESOURCE_PACKAGE_IDS = [
14
+ "server-bundle",
15
+ "node-runtime",
16
+ "node-pty",
17
+ "glm",
18
+ "bfs",
19
+ "ripgrep",
20
+ "ugrep",
21
+ ] as const satisfies readonly RemoteResourcePackageId[];
22
+
23
+ export const REQUIRED_REMOTE_RESOURCE_PACKAGE_IDS = [
24
+ "server-bundle",
25
+ "node-runtime",
26
+ ] as const satisfies readonly RemoteResourcePackageId[];
27
+
28
+ export const REMOTE_RESOURCE_PACKAGE_DEPENDENCIES: Partial<
29
+ Record<RemoteResourcePackageId, readonly RemoteResourcePackageId[]>
30
+ > = {};
31
+
32
+ export const OPTIONAL_REMOTE_RESOURCE_PACKAGE_IDS = ACTIVE_REMOTE_RESOURCE_PACKAGE_IDS.filter(
33
+ (id) =>
34
+ !REQUIRED_REMOTE_RESOURCE_PACKAGE_IDS.includes(
35
+ id as (typeof REQUIRED_REMOTE_RESOURCE_PACKAGE_IDS)[number],
36
+ ),
37
+ );
38
+
39
+ export interface RemoteResourcePackageSelection {
40
+ selectedPackageIds?: string[];
41
+ }
42
+
43
+ const REMOTE_RESOURCE_PACKAGE_ID_SET = new Set<RemoteResourcePackageId>(
44
+ REMOTE_RESOURCE_PACKAGE_IDS,
45
+ );
46
+
47
+ const ACTIVE_REMOTE_RESOURCE_PACKAGE_ID_SET = new Set<RemoteResourcePackageId>(
48
+ ACTIVE_REMOTE_RESOURCE_PACKAGE_IDS,
49
+ );
50
+
51
+ const REQUIRED_REMOTE_RESOURCE_PACKAGE_ID_SET = new Set<RemoteResourcePackageId>(
52
+ REQUIRED_REMOTE_RESOURCE_PACKAGE_IDS,
53
+ );
54
+
55
+ export function normalizeRemoteResourcePackageSelection(
56
+ _selection?: RemoteResourcePackageSelection | null,
57
+ ): RemoteResourcePackageId[] {
58
+ // 当前分支只保留一个 ZCode Agent,历史 SSH 资源包选择已经没有业务意义。
59
+ // 无论旧配置里保存过什么选择,新版本都统一部署完整 active 资源集,避免重连时沿用过时裁剪。
60
+ return [...ACTIVE_REMOTE_RESOURCE_PACKAGE_IDS];
61
+ }
62
+
63
+ export function isActiveRemoteResourcePackage(packageId: RemoteResourcePackageId): boolean {
64
+ return ACTIVE_REMOTE_RESOURCE_PACKAGE_ID_SET.has(packageId);
65
+ }
66
+
67
+ export function isKnownRemoteResourcePackageId(packageId: string): boolean {
68
+ return REMOTE_RESOURCE_PACKAGE_ID_SET.has(packageId as RemoteResourcePackageId);
69
+ }
70
+
71
+ export function isRequiredRemoteResourcePackage(packageId: RemoteResourcePackageId): boolean {
72
+ return REQUIRED_REMOTE_RESOURCE_PACKAGE_ID_SET.has(packageId);
73
+ }
74
+
75
+ export function getRemoteResourcePackageDependencies(
76
+ packageId: RemoteResourcePackageId,
77
+ ): readonly RemoteResourcePackageId[] {
78
+ return REMOTE_RESOURCE_PACKAGE_DEPENDENCIES[packageId] ?? [];
79
+ }
80
+
81
+ export function isRemoteResourcePackageSelectedAsDependency(
82
+ packageId: RemoteResourcePackageId,
83
+ selectedPackageIds: readonly RemoteResourcePackageId[],
84
+ ): boolean {
85
+ const selectedPackages = new Set(selectedPackageIds);
86
+ return selectedPackageIds.some((selectedPackageId) =>
87
+ getRemoteResourcePackageDependencies(selectedPackageId).some(
88
+ (dependencyId) => dependencyId === packageId && selectedPackages.has(dependencyId),
89
+ ),
90
+ );
91
+ }