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,218 @@
1
+ // Delta 应用语义的规范实现(纯函数)。
2
+ // 这是协议语义的一部分:coalesce 的「语义保持」就以本函数为裁判——
3
+ // applyAll(s, coalesce(ds)) 必须与 applyAll(s, ds) 逐字节一致(黄金测试)。
4
+ // 客户端 store 的 apply 逻辑是本函数的宿主化改写,不得引入额外分支。
5
+ import type { ConversationDelta } from "./delta.js";
6
+ import type { ConversationSnapshot } from "./snapshot.js";
7
+ import type { ConversationRow } from "./rows.js";
8
+ import type { StreamablePath } from "./core.js";
9
+ import { applyWorkflowRunRemoved, applyWorkflowRunUpdated } from "./workflow-runs-delta.js";
10
+
11
+ /**
12
+ * 仅供服务端在未发布的候选快照内批量归约使用。
13
+ *
14
+ * 冷恢复逐条调用不可变 apply 时,每次 append/upsert 都复制随历史增长的
15
+ * rows.window,并再次线性查找 rowId,长会话因此退化为 O(N²)。候选快照尚未对外可见,
16
+ * 可以在这条明确的隔离边界内复用同一份数组和增量索引;普通客户端仍使用上面的
17
+ * 不可变语义,避免已发布快照被后续事件篡改。
18
+ */
19
+ export interface MutableConversationSnapshotAccumulator {
20
+ snapshot: ConversationSnapshot;
21
+ rowIndexById: Map<number, number>;
22
+ }
23
+
24
+ export function createMutableConversationSnapshotAccumulator(
25
+ snapshot: ConversationSnapshot,
26
+ ): MutableConversationSnapshotAccumulator {
27
+ const window = [...snapshot.rows.window];
28
+ return {
29
+ snapshot: {
30
+ ...snapshot,
31
+ rows: { ...snapshot.rows, window },
32
+ },
33
+ rowIndexById: new Map(window.map((row, index) => [row.rowId, index])),
34
+ };
35
+ }
36
+
37
+ // row.delta 只允许作用于流式态行(不变量,服务端保证)。
38
+ // 本函数按协议语义实现为:路径不存在/行不存在时 no-op(patch 命中未加载行 = no-op)。
39
+ function appendToRow(row: ConversationRow, path: StreamablePath, append: string): ConversationRow {
40
+ switch (path) {
41
+ case "text":
42
+ if (row.kind === "assistantText" || row.kind === "reasoning") {
43
+ return { ...row, text: row.text + append };
44
+ }
45
+ return row;
46
+ case "inputText":
47
+ if (row.kind === "toolCall") {
48
+ return { ...row, inputText: row.inputText + append };
49
+ }
50
+ return row;
51
+ case "output.text":
52
+ if (row.kind === "toolCall" && row.output) {
53
+ return {
54
+ ...row,
55
+ output: { ...row.output, text: row.output.text + append },
56
+ };
57
+ }
58
+ return row;
59
+ case "summaryText":
60
+ if (row.kind === "subagent") {
61
+ return { ...row, summaryText: row.summaryText + append };
62
+ }
63
+ return row;
64
+ }
65
+ }
66
+
67
+ /** 应用单条 delta,返回新快照(入参不被修改)。 */
68
+ export function applyConversationDelta(
69
+ snapshot: ConversationSnapshot,
70
+ delta: ConversationDelta,
71
+ ): ConversationSnapshot {
72
+ switch (delta.op) {
73
+ case "row.appended":
74
+ return {
75
+ ...snapshot,
76
+ rows: {
77
+ ...snapshot.rows,
78
+ window: [...snapshot.rows.window, delta.row],
79
+ totalCount: snapshot.rows.totalCount + 1,
80
+ firstRowId: snapshot.rows.firstRowId ?? delta.row.rowId,
81
+ },
82
+ };
83
+ case "row.upserted": {
84
+ const index = snapshot.rows.window.findIndex((row) => row.rowId === delta.row.rowId);
85
+ // 未加载 rowId = no-op(被逐出的行只能经 rows/range 取回)。
86
+ if (index === -1) return snapshot;
87
+ const window = [...snapshot.rows.window];
88
+ window[index] = delta.row;
89
+ return { ...snapshot, rows: { ...snapshot.rows, window } };
90
+ }
91
+ case "row.removed": {
92
+ const window = snapshot.rows.window.filter((row) => row.rowId < delta.fromRowId);
93
+ const removed = snapshot.rows.window.length - window.length;
94
+ const removesEntireActiveBranch =
95
+ snapshot.rows.firstRowId !== null && delta.fromRowId <= snapshot.rows.firstRowId;
96
+ return {
97
+ ...snapshot,
98
+ rows: {
99
+ ...snapshot.rows,
100
+ window,
101
+ // rewind 首轮后 rowId 继续单调递增;若保留旧 firstRowId,UI 会把
102
+ // 旧分支留下的 rowId 空洞误判成“加载更早”。全量和尾窗都必须在从首行
103
+ // 开始裁剪时清空 active-branch 分页锚点与计数,下一次 append 再建立新首行。
104
+ totalCount: removesEntireActiveBranch
105
+ ? 0
106
+ : Math.max(0, snapshot.rows.totalCount - removed),
107
+ firstRowId: removesEntireActiveBranch ? null : snapshot.rows.firstRowId,
108
+ },
109
+ };
110
+ }
111
+ case "row.delta": {
112
+ const index = snapshot.rows.window.findIndex((row) => row.rowId === delta.rowId);
113
+ const target = snapshot.rows.window[index];
114
+ if (index === -1 || target === undefined) return snapshot;
115
+ const window = [...snapshot.rows.window];
116
+ window[index] = appendToRow(target, delta.path, delta.append);
117
+ return { ...snapshot, rows: { ...snapshot.rows, window } };
118
+ }
119
+ case "state.updated":
120
+ // 键级整体替换:patch 中在场的键覆盖,绝不深合并。
121
+ return { ...snapshot, ...delta.patch };
122
+ // workflowRuns 是唯一开了增量口子的状态键(delta.ts 的注释讲了为什么)。规则整份住在
123
+ // workflow-runs-delta.ts:两个 twin 都只转调它,两边的语义因此没有走散的余地。
124
+ case "workflowRun.updated":
125
+ return {
126
+ ...snapshot,
127
+ workflowRuns: applyWorkflowRunUpdated(snapshot.workflowRuns, delta),
128
+ };
129
+ case "workflowRun.removed":
130
+ return {
131
+ ...snapshot,
132
+ workflowRuns: applyWorkflowRunRemoved(snapshot.workflowRuns, delta),
133
+ };
134
+ }
135
+ }
136
+
137
+ /** 按序应用一串 delta。 */
138
+ export function applyConversationDeltas(
139
+ snapshot: ConversationSnapshot,
140
+ deltas: readonly ConversationDelta[],
141
+ ): ConversationSnapshot {
142
+ let current = snapshot;
143
+ for (const delta of deltas) {
144
+ current = applyConversationDelta(current, delta);
145
+ }
146
+ return current;
147
+ }
148
+
149
+ /**
150
+ * 在未发布候选快照上原地应用单条 delta;语义必须与 applyConversationDelta 一致。
151
+ * 调用者不得把 accumulator.snapshot 暴露给订阅者后继续调用本函数。
152
+ */
153
+ export function applyConversationDeltaMutable(
154
+ accumulator: MutableConversationSnapshotAccumulator,
155
+ delta: ConversationDelta,
156
+ ): void {
157
+ const snapshot = accumulator.snapshot;
158
+ switch (delta.op) {
159
+ case "row.appended":
160
+ accumulator.rowIndexById.set(delta.row.rowId, snapshot.rows.window.length);
161
+ snapshot.rows.window.push(delta.row);
162
+ snapshot.rows.totalCount += 1;
163
+ snapshot.rows.firstRowId ??= delta.row.rowId;
164
+ return;
165
+ case "row.upserted": {
166
+ const index = accumulator.rowIndexById.get(delta.row.rowId);
167
+ if (index === undefined) return;
168
+ snapshot.rows.window[index] = delta.row;
169
+ return;
170
+ }
171
+ case "row.removed": {
172
+ const removesEntireActiveBranch =
173
+ snapshot.rows.firstRowId !== null && delta.fromRowId <= snapshot.rows.firstRowId;
174
+ let writeIndex = 0;
175
+ for (const row of snapshot.rows.window) {
176
+ if (row.rowId >= delta.fromRowId) continue;
177
+ snapshot.rows.window[writeIndex] = row;
178
+ writeIndex += 1;
179
+ }
180
+ const removed = snapshot.rows.window.length - writeIndex;
181
+ snapshot.rows.window.length = writeIndex;
182
+ snapshot.rows.totalCount = removesEntireActiveBranch
183
+ ? 0
184
+ : Math.max(0, snapshot.rows.totalCount - removed);
185
+ snapshot.rows.firstRowId = removesEntireActiveBranch ? null : snapshot.rows.firstRowId;
186
+ accumulator.rowIndexById.clear();
187
+ snapshot.rows.window.forEach((row, index) => accumulator.rowIndexById.set(row.rowId, index));
188
+ return;
189
+ }
190
+ case "row.delta": {
191
+ const index = accumulator.rowIndexById.get(delta.rowId);
192
+ if (index === undefined) return;
193
+ const target = snapshot.rows.window[index];
194
+ if (target === undefined) return;
195
+ snapshot.rows.window[index] = appendToRow(target, delta.path, delta.append);
196
+ return;
197
+ }
198
+ case "state.updated":
199
+ // 与不可变实现相同:patch 在场键整体替换,不能深合并。
200
+ Object.assign(snapshot, delta.patch);
201
+ return;
202
+ // 与不可变实现调同一个纯函数:workflowRuns 是状态键不是 rows 窗口,没有「原地追加」可优化,
203
+ // 而 accumulator.snapshot 本来就是候选快照自己的对象,赋一个新容器不会碰到已发布的快照。
204
+ case "workflowRun.updated":
205
+ snapshot.workflowRuns = applyWorkflowRunUpdated(snapshot.workflowRuns, delta);
206
+ return;
207
+ case "workflowRun.removed":
208
+ snapshot.workflowRuns = applyWorkflowRunRemoved(snapshot.workflowRuns, delta);
209
+ }
210
+ }
211
+
212
+ /** 按序原地应用一串 delta,仅适用于未发布的候选快照。 */
213
+ export function applyConversationDeltasMutable(
214
+ accumulator: MutableConversationSnapshotAccumulator,
215
+ deltas: readonly ConversationDelta[],
216
+ ): void {
217
+ for (const delta of deltas) applyConversationDeltaMutable(accumulator, delta);
218
+ }
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+
3
+ /** 仅承载已提交内容引用与展示元信息;内容本体不进入 command/topic frame。 */
4
+ export const attachmentRefSchema = z
5
+ .object({
6
+ ref: z.string(),
7
+ fileName: z.string(),
8
+ mime: z.string(),
9
+ bytes: z.number(),
10
+ previewRef: z.string().optional(),
11
+ })
12
+ .strict();
13
+
14
+ export type AttachmentRef = z.infer<typeof attachmentRefSchema>;