@dev.fast/whiteboard 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 (247) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +146 -2
  3. package/THIRD_PARTY_NOTICES.md +93 -0
  4. package/dist/account-alias-DOHN1RSH.js +973 -0
  5. package/dist/agent-cli-ChOq0ZuO.js +117 -0
  6. package/dist/agent-cli-DzWfZr6G.js +2 -0
  7. package/dist/agent-client-CPQo7iTI.js +305 -0
  8. package/dist/authoring-tools-Cr6Kpjsx.js +234 -0
  9. package/dist/build-info.json +1 -0
  10. package/dist/cli-hVgHcdsv.js +47 -0
  11. package/dist/cli-runner-D8y2_luU.js +5095 -0
  12. package/dist/cli.d.ts +1 -0
  13. package/dist/cli.js +128 -0
  14. package/dist/client-DFoh50W3.js +950 -0
  15. package/dist/desktop-discovery-DBO-PM2V.js +164 -0
  16. package/dist/error-message-OtiDonty.js +6 -0
  17. package/dist/fs-utils-BMPLt0cr.js +22 -0
  18. package/dist/fuzzy-match-BoAmcyak.js +30 -0
  19. package/dist/headless-host-BJxf4dUU.js +94 -0
  20. package/dist/input-error-OLgB_h31.js +11 -0
  21. package/dist/local-data-CxLk75rx.js +4491 -0
  22. package/dist/mcp-QeF8vkdf.js +140 -0
  23. package/dist/package-paths-B6-zxvIO.js +47 -0
  24. package/dist/process-error-telemetry-v9e5h6D7.js +3952 -0
  25. package/dist/profile-4ry2f3AM.js +76 -0
  26. package/dist/profile-Bh5FIrmf.js +2 -0
  27. package/dist/request-origin-D_4QIdoN.js +811 -0
  28. package/dist/review-agent-traces-DNJFYzc8.js +3866 -0
  29. package/dist/review-home-paths-6zZH-1c9.js +2560 -0
  30. package/dist/review-telemetry-DEFnQsQ2.js +1195 -0
  31. package/dist/runtime-CKiWhGrf.js +52 -0
  32. package/dist/runtime.d.ts +9 -0
  33. package/dist/runtime.js +2 -0
  34. package/dist/s3-SzLpeCG6.js +345 -0
  35. package/dist/s3-config-BgxkSoOy.js +2 -0
  36. package/dist/s3-config-CAxhO9u_.js +676 -0
  37. package/dist/server/desktop-host.d.ts +4 -0
  38. package/dist/server/desktop-host.js +1702 -0
  39. package/dist/server-discovery-Dbzn3w6Z.js +66 -0
  40. package/dist/sharing/index.d.ts +1977 -0
  41. package/dist/sharing/index.js +2 -0
  42. package/dist/src-CGP5ytbV.js +283 -0
  43. package/dist/src-CmdiBL20.js +3676 -0
  44. package/dist/src-DnwdaQ2r.js +865 -0
  45. package/dist/src-X9phtB2j.js +68 -0
  46. package/dist/stored-document-migration-DHeMpLMb.js +2671 -0
  47. package/dist/tool-failure-C8zB73HV.js +98 -0
  48. package/dist/tutorial-trace-DrBvkaeL.js +43 -0
  49. package/instructions/authoring.md +36 -0
  50. package/instructions/file-lenses.md +13 -0
  51. package/instructions/scratchpad.md +23 -0
  52. package/instructions/trace-archaeology.md +113 -0
  53. package/onboarding.md +8 -0
  54. package/package.json +106 -3
  55. package/src/agent-selection.ts +100 -0
  56. package/src/agent-session-ref.ts +80 -0
  57. package/src/ask/agents.ts +351 -0
  58. package/src/ask/checkout-files.ts +47 -0
  59. package/src/ask/file-refs.ts +111 -0
  60. package/src/ask/pi-mcp.ts +154 -0
  61. package/src/ask/protocol.ts +244 -0
  62. package/src/ask/thread-state.ts +350 -0
  63. package/src/ask/thread.ts +1400 -0
  64. package/src/ask/threads.ts +219 -0
  65. package/src/ask/watch.ts +79 -0
  66. package/src/cli-install.ts +1041 -0
  67. package/src/cli-runner.ts +1461 -0
  68. package/src/cli-runtime-info.ts +35 -0
  69. package/src/cli.ts +222 -0
  70. package/src/connect-prompts.ts +248 -0
  71. package/src/cursor-deeplink.ts +11 -0
  72. package/src/desktop-discovery.ts +355 -0
  73. package/src/diff-selection-migration.ts +63 -0
  74. package/src/embedded-posthog-key.ts +6 -0
  75. package/src/error-telemetry.ts +247 -0
  76. package/src/evidence.ts +14 -0
  77. package/src/exception-telemetry.ts +126 -0
  78. package/src/fixtures/blocks/call_stack_diff.json +27 -0
  79. package/src/fixtures/blocks/callout.json +11 -0
  80. package/src/fixtures/blocks/code.json +9 -0
  81. package/src/fixtures/blocks/code_peek.json +8 -0
  82. package/src/fixtures/blocks/database_lens.json +51 -0
  83. package/src/fixtures/blocks/divider.json +1 -0
  84. package/src/fixtures/blocks/fixtures.ts +33 -0
  85. package/src/fixtures/blocks/flow_diagram.json +36 -0
  86. package/src/fixtures/blocks/ids.ts +8 -0
  87. package/src/fixtures/blocks/image.json +9 -0
  88. package/src/fixtures/blocks/markdown.json +7 -0
  89. package/src/fixtures/blocks/section.json +11 -0
  90. package/src/fixtures/blocks/sequence.json +31 -0
  91. package/src/fixtures/blocks/software_map.json +7 -0
  92. package/src/fixtures/blocks/trace_quote.json +9 -0
  93. package/src/fixtures/blocks/tutorial.json +51 -0
  94. package/src/fs-utils.ts +32 -0
  95. package/src/fuzzy-match.ts +94 -0
  96. package/src/install.ts +29 -0
  97. package/src/legacy-skills.ts +133 -0
  98. package/src/lens-selection.ts +230 -0
  99. package/src/markdown-latex-math.ts +230 -0
  100. package/src/markdown.ts +81 -0
  101. package/src/package-paths.ts +53 -0
  102. package/src/posthog-capture-client.ts +610 -0
  103. package/src/review-api/README.md +295 -0
  104. package/src/review-api/activity.ts +340 -0
  105. package/src/review-api/agent-cli.ts +219 -0
  106. package/src/review-api/agent-client.ts +188 -0
  107. package/src/review-api/anchor-quotes.ts +88 -0
  108. package/src/review-api/ask-history.ts +242 -0
  109. package/src/review-api/authoring-tools.ts +211 -0
  110. package/src/review-api/blocks/call_stack_diff.ts +75 -0
  111. package/src/review-api/blocks/callout.ts +24 -0
  112. package/src/review-api/blocks/code.ts +9 -0
  113. package/src/review-api/blocks/code_peek.ts +13 -0
  114. package/src/review-api/blocks/database_lens.ts +150 -0
  115. package/src/review-api/blocks/definition.ts +40 -0
  116. package/src/review-api/blocks/divider.ts +6 -0
  117. package/src/review-api/blocks/flow_diagram.ts +111 -0
  118. package/src/review-api/blocks/image.ts +10 -0
  119. package/src/review-api/blocks/index.ts +90 -0
  120. package/src/review-api/blocks/markdown.ts +17 -0
  121. package/src/review-api/blocks/section.ts +24 -0
  122. package/src/review-api/blocks/sequence.ts +56 -0
  123. package/src/review-api/blocks/software_map.ts +9 -0
  124. package/src/review-api/blocks/trace_quote.ts +10 -0
  125. package/src/review-api/blocks/tutorial.ts +39 -0
  126. package/src/review-api/checkout-fs.ts +14 -0
  127. package/src/review-api/client.ts +1 -0
  128. package/src/review-api/comparison-coverage.ts +304 -0
  129. package/src/review-api/component-reference.ts +30 -0
  130. package/src/review-api/diff-lenses.ts +175 -0
  131. package/src/review-api/document-headings.ts +51 -0
  132. package/src/review-api/document-text.ts +200 -0
  133. package/src/review-api/document.ts +906 -0
  134. package/src/review-api/file-lenses.ts +100 -0
  135. package/src/review-api/http.ts +1877 -0
  136. package/src/review-api/image-decode.ts +29 -0
  137. package/src/review-api/input-error.ts +9 -0
  138. package/src/review-api/instructions.ts +89 -0
  139. package/src/review-api/lens-alignment.ts +52 -0
  140. package/src/review-api/local-data.ts +1837 -0
  141. package/src/review-api/map-input.ts +154 -0
  142. package/src/review-api/mcp-client-agent.ts +32 -0
  143. package/src/review-api/mcp.ts +240 -0
  144. package/src/review-api/origin.ts +43 -0
  145. package/src/review-api/profile.ts +146 -0
  146. package/src/review-api/public-tools.ts +102 -0
  147. package/src/review-api/pull-request.ts +389 -0
  148. package/src/review-api/read-schemas.ts +85 -0
  149. package/src/review-api/recovery.ts +2 -0
  150. package/src/review-api/request-origin.ts +33 -0
  151. package/src/review-api/review-progress.ts +382 -0
  152. package/src/review-api/status-tool.ts +10 -0
  153. package/src/review-api/store-schema.ts +22 -0
  154. package/src/review-api/store.ts +1647 -0
  155. package/src/review-api/tool-failure.ts +64 -0
  156. package/src/review-api/trace-schema.ts +13 -0
  157. package/src/review-api/traces.ts +119 -0
  158. package/src/review-api/unsupported-files.integration.ts +91 -0
  159. package/src/review-api/workspaces.ts +692 -0
  160. package/src/review-api/worktree-source.ts +170 -0
  161. package/src/review-api/worktree-structural.integration.ts +320 -0
  162. package/src/review-app-launcher.ts +432 -0
  163. package/src/review-app-picker.ts +168 -0
  164. package/src/review-app.ts +134 -0
  165. package/src/review-bundled-tools.ts +249 -0
  166. package/src/review-checkout-paths.ts +37 -0
  167. package/src/review-diff-files.ts +89 -0
  168. package/src/review-head-checkout.ts +300 -0
  169. package/src/review-home-paths.ts +73 -0
  170. package/src/review-info.ts +59 -0
  171. package/src/review-instances.ts +113 -0
  172. package/src/review-logger.ts +183 -0
  173. package/src/review-preferences.ts +88 -0
  174. package/src/review-prepare.ts +291 -0
  175. package/src/review-stack.ts +112 -0
  176. package/src/review-telemetry.ts +1066 -0
  177. package/src/runtime.ts +74 -0
  178. package/src/server/account-alias.ts +30 -0
  179. package/src/server/bounded-stream.ts +34 -0
  180. package/src/server/bug-report.ts +301 -0
  181. package/src/server/client-error-budget.ts +45 -0
  182. package/src/server/crash-report.ts +273 -0
  183. package/src/server/desktop-host-shutdown.ts +64 -0
  184. package/src/server/desktop-host.ts +190 -0
  185. package/src/server/desktop-server.ts +703 -0
  186. package/src/server/diffr-config.ts +509 -0
  187. package/src/server/diffr-languages.ts +97 -0
  188. package/src/server/global-verb-relay.ts +190 -0
  189. package/src/server/headless-host.ts +149 -0
  190. package/src/server/hono-http.ts +162 -0
  191. package/src/server/http-json.ts +24 -0
  192. package/src/server/json-review-reporting.ts +174 -0
  193. package/src/server/process-error-telemetry.ts +174 -0
  194. package/src/server/review-api-parsers.ts +90 -0
  195. package/src/server/review-lifecycle-telemetry.ts +73 -0
  196. package/src/server/review-open-watchdog.ts +46 -0
  197. package/src/server/review-server-core.ts +290 -0
  198. package/src/server/structural-comparisons.ts +153 -0
  199. package/src/server/structural-diff.ts +186 -0
  200. package/src/server/tutorial-service.ts +241 -0
  201. package/src/server/ui-telemetry.ts +198 -0
  202. package/src/server-discovery.ts +95 -0
  203. package/src/session-markers.ts +132 -0
  204. package/src/sharing/auth.ts +41 -0
  205. package/src/sharing/cli.ts +83 -0
  206. package/src/sharing/client.ts +334 -0
  207. package/src/sharing/export.ts +195 -0
  208. package/src/sharing/host.ts +316 -0
  209. package/src/sharing/import.ts +787 -0
  210. package/src/sharing/index.ts +16 -0
  211. package/src/sharing/repository.ts +145 -0
  212. package/src/sharing/routes.ts +34 -0
  213. package/src/slug.ts +23 -0
  214. package/src/software-map-diff-counts.ts +517 -0
  215. package/src/software-map-model.ts +1147 -0
  216. package/src/software-map-topology-diff.ts +260 -0
  217. package/src/source.ts +92 -0
  218. package/src/startup-trace.ts +232 -0
  219. package/src/stored-document-migration.ts +151 -0
  220. package/src/telemetry-clean-text.ts +257 -0
  221. package/src/telemetry-config.ts +298 -0
  222. package/src/telemetry-debug-sink.ts +38 -0
  223. package/src/telemetry.ts +13 -0
  224. package/src/trace-cli.ts +156 -0
  225. package/src/trace-storage-cli.ts +509 -0
  226. package/src/tutorial-conversation.ts +18 -0
  227. package/src/ui-telemetry-events.ts +765 -0
  228. package/src/unified-diff.ts +71 -0
  229. package/src/viewed-coverage.ts +259 -0
  230. package/src/windows-cli.ts +125 -0
  231. package/tutorial/document.json +275 -0
  232. package/tutorial/runtime-manifest.json +12 -0
  233. package/tutorial/sample-service/package.json +9 -0
  234. package/tutorial/sample-service/src/api/checkout-api.ts +17 -0
  235. package/tutorial/sample-service/src/app.ts +26 -0
  236. package/tutorial/sample-service/src/database/schema.ts +10 -0
  237. package/tutorial/sample-service/src/fulfillment/fulfillment-queue.ts +15 -0
  238. package/tutorial/sample-service/src/fulfillment/fulfillment-worker.ts +24 -0
  239. package/tutorial/sample-service/src/inventory/inventory-service.ts +11 -0
  240. package/tutorial/sample-service/src/orders/order-service.ts +34 -0
  241. package/tutorial/sample-service/src/orders/order.ts +21 -0
  242. package/tutorial/sample-service/src/orders/orders-repository.ts +24 -0
  243. package/tutorial/sample-service/src/payments/payment-gateway.ts +12 -0
  244. package/tutorial/sample-service/src/shipping/shipping-gateway.ts +15 -0
  245. package/tutorial/sample-service/tsconfig.json +12 -0
  246. package/tutorial/software-map.json +139 -0
  247. package/tutorial/trace.json +20 -0
@@ -0,0 +1,2 @@
1
+ import { a as sharedReviewId, c as verifyShareRepository, i as SharedReviewStore, l as exportShare, n as ShareClient, o as validateShareBundle } from "../client-DFoh50W3.js";
2
+ export { ShareClient, SharedReviewStore, exportShare, sharedReviewId, validateShareBundle, verifyShareRepository };
@@ -0,0 +1,283 @@
1
+ import { z } from "zod";
2
+ //#region ../trace-protocol/src/contracts.ts
3
+ const sessionIdSchema = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{7,127}$/);
4
+ const commitShaSchema = z.string().regex(/^[0-9a-f]{40,64}$/);
5
+ const byCommitSchema = z.object({
6
+ commit: commitShaSchema,
7
+ sessions: z.array(sessionIdSchema),
8
+ repo: z.string(),
9
+ pr: z.number().int().nullable(),
10
+ branch: z.string().nullable(),
11
+ indexed_by: z.enum(["hook", "ci"]),
12
+ ts: z.string()
13
+ });
14
+ const sessionMetaSchema = z.object({
15
+ session: sessionIdSchema,
16
+ repo: z.string().nullable(),
17
+ branch: z.string().nullable(),
18
+ pr: z.number().int().nullable(),
19
+ commits: z.array(commitShaSchema),
20
+ author: z.string().nullable(),
21
+ ts: z.string()
22
+ });
23
+ const nonBlankString = z.string({ error: "must be a string" }).refine((value) => value.trim().length > 0, "must be a string");
24
+ const anyString = z.string({ error: "must be a string" });
25
+ const ReviewAgentTraceEventSchema = z.discriminatedUnion("kind", [
26
+ z.strictObject({
27
+ kind: z.literal("user"),
28
+ text: anyString,
29
+ at: z.string().optional()
30
+ }),
31
+ z.strictObject({
32
+ kind: z.literal("assistant"),
33
+ markdown: anyString,
34
+ thinking: z.boolean().optional(),
35
+ at: z.string().optional()
36
+ }),
37
+ z.strictObject({
38
+ kind: z.literal("tool"),
39
+ tool: nonBlankString,
40
+ verb: nonBlankString,
41
+ title: anyString,
42
+ filePath: z.string().optional(),
43
+ additions: z.number().optional(),
44
+ deletions: z.number().optional(),
45
+ command: z.string().optional(),
46
+ input: z.string().optional(),
47
+ output: z.string().optional(),
48
+ error: z.boolean().optional(),
49
+ at: z.string().optional()
50
+ }),
51
+ z.strictObject({
52
+ kind: z.literal("separator"),
53
+ label: nonBlankString
54
+ })
55
+ ]);
56
+ const ReviewAgentTraceSessionSchema = z.strictObject({
57
+ sessionId: nonBlankString,
58
+ title: z.string().optional(),
59
+ harness: z.enum([
60
+ "claude-code",
61
+ "codex",
62
+ "opencode",
63
+ "pi",
64
+ "unknown"
65
+ ]),
66
+ available: z.boolean(),
67
+ source: z.enum(["r2"]).nullable(),
68
+ notSynced: z.boolean().optional(),
69
+ subagents: z.array(nonBlankString).optional(),
70
+ commits: z.array(z.strictObject({
71
+ sha: nonBlankString,
72
+ subject: anyString
73
+ }))
74
+ });
75
+ //#endregion
76
+ //#region ../trace-protocol/src/store-api.ts
77
+ const TRACE_STORE_API_PREFIX = "/api/trace/v1";
78
+ const TRACE_STORE_CLIENT_ID = "review-cli";
79
+ /** Largest single trace object the store accepts. */
80
+ const MAX_TRACE_OBJECT_BYTES = 268435456;
81
+ const nameSegment = z.string().regex(/^[A-Za-z0-9_.-]{1,100}$/);
82
+ /** A branch or author label a client attaches to a publication. */
83
+ const sessionLabelSchema = z.string().max(200).nullable();
84
+ const traceHarnessSchema = z.enum([
85
+ "claude",
86
+ "codex",
87
+ "opencode",
88
+ "pi"
89
+ ]);
90
+ const traceObjectNameSchema = z.string().regex(/^(main\.jsonl\.gz|subagents\/[A-Za-z0-9_.-]{1,100}\.jsonl\.gz)$/);
91
+ const sha256HexSchema = z.string().regex(/^[0-9a-f]{64}$/);
92
+ /**
93
+ * A store instance or an upload. The server mints one per onboarding and one
94
+ * per begin call; neither value is ever reused.
95
+ */
96
+ const storeIdSchema = z.string().regex(/^[0-9a-f]{32}$/);
97
+ const uploadIdSchema = storeIdSchema;
98
+ z.object({
99
+ owner: nameSegment,
100
+ name: nameSegment
101
+ });
102
+ const storeResponseSchema = z.object({
103
+ repositoryId: z.number().int().positive(),
104
+ /** The current store instance. Deleting a store retires its id. */
105
+ storeId: storeIdSchema,
106
+ displayName: z.string(),
107
+ status: z.enum(["active", "deleting"]),
108
+ createdAt: z.string(),
109
+ created: z.boolean().optional(),
110
+ /** Bytes of every completed upload in this store instance. Absent from older servers. */
111
+ bytesStored: z.number().int().nonnegative().optional()
112
+ });
113
+ /**
114
+ * Deletion is logical. The store stops every read and write at once; an
115
+ * operator removes the objects later, after outstanding URLs expire.
116
+ */
117
+ const deleteStoreResponseSchema = z.object({
118
+ repositoryId: z.number().int().positive(),
119
+ storeId: storeIdSchema,
120
+ status: z.literal("deleting"),
121
+ deletedAt: z.string()
122
+ });
123
+ const declaredObjectSchema = z.object({
124
+ name: traceObjectNameSchema,
125
+ size: z.number().int().positive().max(MAX_TRACE_OBJECT_BYTES),
126
+ sha256: sha256HexSchema
127
+ });
128
+ /** The complete object set of one upload. Names are unique. */
129
+ const uploadManifestSchema = z.array(declaredObjectSchema).min(1).max(64).superRefine((objects, context) => {
130
+ const seen = /* @__PURE__ */ new Set();
131
+ let total = 0;
132
+ for (const object of objects) {
133
+ if (seen.has(object.name)) context.addIssue({
134
+ code: "custom",
135
+ message: `Object ${object.name} is declared twice.`
136
+ });
137
+ seen.add(object.name);
138
+ total += object.size;
139
+ }
140
+ if (total > 1073741824) context.addIssue({
141
+ code: "custom",
142
+ message: "Declared upload exceeds the session limit."
143
+ });
144
+ });
145
+ z.object({
146
+ harness: traceHarnessSchema,
147
+ objects: uploadManifestSchema
148
+ });
149
+ const presignedUploadSchema = z.object({
150
+ name: traceObjectNameSchema,
151
+ url: z.string().url(),
152
+ headers: z.record(z.string(), z.string()),
153
+ expiresAt: z.string()
154
+ });
155
+ const beginUploadResponseSchema = z.object({
156
+ /** Names this upload in every later call. */
157
+ uploadId: uploadIdSchema,
158
+ storeId: storeIdSchema,
159
+ /**
160
+ * The session generation this upload replaces. Zero means the session has
161
+ * no published upload. Completion fails with `stale_upload` when another
162
+ * upload publishes first.
163
+ */
164
+ baseGeneration: z.number().int().nonnegative(),
165
+ uploads: z.array(presignedUploadSchema)
166
+ });
167
+ z.object({
168
+ commits: z.array(commitShaSchema).max(200).default([]).refine((commits) => new Set(commits).size === commits.length, { message: "A commit is listed twice." }),
169
+ /** The checkout branch and author at publication, kept with the upload. */
170
+ branch: sessionLabelSchema.optional(),
171
+ author: sessionLabelSchema.optional()
172
+ });
173
+ const storedObjectSchema = z.object({
174
+ name: traceObjectNameSchema,
175
+ size: z.number().int().nonnegative(),
176
+ sha256: sha256HexSchema
177
+ });
178
+ /**
179
+ * The receipt of one completed upload. Repeating a completion returns the
180
+ * same receipt; it never moves the session to an older upload.
181
+ */
182
+ const completeUploadResponseSchema = z.object({
183
+ sessionId: sessionIdSchema,
184
+ uploadId: uploadIdSchema,
185
+ generation: z.number().int().positive(),
186
+ objects: z.array(storedObjectSchema),
187
+ commits: z.array(commitShaSchema)
188
+ });
189
+ z.object({
190
+ commit: commitShaSchema.optional(),
191
+ session: sessionIdSchema.optional(),
192
+ /** Page size; the server caps it at MAX_TRACE_SESSIONS_PAGE. */
193
+ limit: z.coerce.number().int().min(1).max(200).optional(),
194
+ /** The last session id of the previous page. */
195
+ cursor: sessionIdSchema.optional()
196
+ });
197
+ const sessionDownloadSchema = z.object({
198
+ sessionId: sessionIdSchema,
199
+ harness: traceHarnessSchema,
200
+ /** The published upload. Clients key caches by it and by each checksum. */
201
+ uploadId: uploadIdSchema,
202
+ generation: z.number().int().positive(),
203
+ updatedAt: z.string(),
204
+ commits: z.array(commitShaSchema),
205
+ branch: sessionLabelSchema.optional(),
206
+ author: sessionLabelSchema.optional(),
207
+ objects: z.array(storedObjectSchema.extend({
208
+ url: z.string().url(),
209
+ expiresAt: z.string()
210
+ }))
211
+ });
212
+ const listSessionsResponseSchema = z.object({
213
+ sessions: z.array(sessionDownloadSchema),
214
+ /** Present when another page follows; pass it back as `cursor`. */
215
+ nextCursor: sessionIdSchema.optional()
216
+ });
217
+ /** Operational receipts only. The server always filters by authenticated creator. */
218
+ const listUploadsQuerySchema = z.object({
219
+ session: sessionIdSchema.optional(),
220
+ limit: z.coerce.number().int().min(1).max(200).optional(),
221
+ cursor: z.string().min(1).max(2048).optional()
222
+ }).strict();
223
+ const uploadStatusSchema = z.object({
224
+ sessionId: sessionIdSchema,
225
+ uploadId: uploadIdSchema,
226
+ createdAt: z.string().datetime(),
227
+ completedAt: z.string().datetime().nullable(),
228
+ status: z.enum(["pending", "complete"]),
229
+ current: z.boolean()
230
+ });
231
+ const listUploadsResponseSchema = z.object({
232
+ storeId: storeIdSchema,
233
+ uploads: z.array(uploadStatusSchema),
234
+ nextCursor: z.string().optional()
235
+ });
236
+ const storeErrorCodeSchema = z.enum([
237
+ "unauthorized",
238
+ "repository_authorization_required",
239
+ "forbidden",
240
+ "not_found",
241
+ "invalid_request",
242
+ "payload_too_large",
243
+ "github_unavailable",
244
+ "upload_incomplete",
245
+ "stale_upload",
246
+ "store_deleted",
247
+ "upgrade_required",
248
+ "internal"
249
+ ]);
250
+ const storeErrorEnvelopeSchema = z.object({ error: z.object({
251
+ code: storeErrorCodeSchema,
252
+ message: z.string()
253
+ }) });
254
+ /**
255
+ * Why a begin response does not match the manifest it answers, or null when
256
+ * every declared object has exactly one presigned upload and nothing else.
257
+ */
258
+ function uploadManifestMismatch(manifest, uploads) {
259
+ const declared = new Set(manifest.map((object) => object.name));
260
+ const seen = /* @__PURE__ */ new Set();
261
+ for (const upload of uploads) {
262
+ if (!declared.has(upload.name)) return `The store offered an upload this session did not declare: ${upload.name}.`;
263
+ if (seen.has(upload.name)) return `The store offered ${upload.name} twice.`;
264
+ seen.add(upload.name);
265
+ }
266
+ for (const name of declared) if (!seen.has(name)) return `The store offered no upload for ${name}.`;
267
+ return null;
268
+ }
269
+ //#endregion
270
+ //#region ../trace-protocol/src/store-routes.ts
271
+ const DEVICE_CODE_PATH = "/api/auth/device/code";
272
+ const DEVICE_TOKEN_PATH = "/api/auth/device/token";
273
+ const SESSION_PATH = "/api/auth/get-session";
274
+ const storeRoutes = {
275
+ ownUploads: (repositoryId) => `${TRACE_STORE_API_PREFIX}/stores/${repositoryId}/uploads`,
276
+ stores: () => `${TRACE_STORE_API_PREFIX}/stores`,
277
+ store: (repositoryId) => `${TRACE_STORE_API_PREFIX}/stores/${repositoryId}`,
278
+ sessions: (repositoryId) => `${TRACE_STORE_API_PREFIX}/stores/${repositoryId}/sessions`,
279
+ uploads: (repositoryId, sessionId) => `${TRACE_STORE_API_PREFIX}/stores/${repositoryId}/sessions/${encodeURIComponent(sessionId)}/uploads`,
280
+ uploadComplete: (repositoryId, sessionId, uploadId) => `${storeRoutes.uploads(repositoryId, sessionId)}/${encodeURIComponent(uploadId)}/complete`
281
+ };
282
+ //#endregion
283
+ export { sessionMetaSchema as S, ReviewAgentTraceEventSchema as _, TRACE_STORE_CLIENT_ID as a, commitShaSchema as b, deleteStoreResponseSchema as c, listUploadsResponseSchema as d, storeErrorCodeSchema as f, uploadManifestMismatch as g, traceObjectNameSchema as h, storeRoutes as i, listSessionsResponseSchema as l, storeResponseSchema as m, DEVICE_TOKEN_PATH as n, beginUploadResponseSchema as o, storeErrorEnvelopeSchema as p, SESSION_PATH as r, completeUploadResponseSchema as s, DEVICE_CODE_PATH as t, listUploadsQuerySchema as u, ReviewAgentTraceSessionSchema as v, sessionIdSchema as x, byCommitSchema as y };