@mostra/protocol 0.0.0-stage → 0.1.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 (439) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +38 -2
  3. package/dist/actions.d.ts +273 -0
  4. package/dist/actions.d.ts.map +1 -0
  5. package/dist/actions.js +154 -0
  6. package/dist/actions.js.map +1 -0
  7. package/dist/artifact.d.ts +113 -0
  8. package/dist/artifact.d.ts.map +1 -0
  9. package/dist/artifact.js +79 -0
  10. package/dist/artifact.js.map +1 -0
  11. package/dist/bridge.d.ts +295 -0
  12. package/dist/bridge.d.ts.map +1 -0
  13. package/dist/bridge.js +343 -0
  14. package/dist/bridge.js.map +1 -0
  15. package/dist/browser.d.ts +195 -0
  16. package/dist/browser.d.ts.map +1 -0
  17. package/dist/browser.js +156 -0
  18. package/dist/browser.js.map +1 -0
  19. package/dist/bundle.d.ts +155 -0
  20. package/dist/bundle.d.ts.map +1 -0
  21. package/dist/bundle.js +130 -0
  22. package/dist/bundle.js.map +1 -0
  23. package/dist/canonical.d.ts +23 -0
  24. package/dist/canonical.d.ts.map +1 -0
  25. package/dist/canonical.js +45 -0
  26. package/dist/canonical.js.map +1 -0
  27. package/dist/capability.d.ts +38 -0
  28. package/dist/capability.d.ts.map +1 -0
  29. package/dist/capability.js +61 -0
  30. package/dist/capability.js.map +1 -0
  31. package/dist/diagnostics/codes/a11y.d.ts +8 -0
  32. package/dist/diagnostics/codes/a11y.d.ts.map +1 -0
  33. package/dist/diagnostics/codes/a11y.js +30 -0
  34. package/dist/diagnostics/codes/a11y.js.map +1 -0
  35. package/dist/diagnostics/codes/action.d.ts +8 -0
  36. package/dist/diagnostics/codes/action.d.ts.map +1 -0
  37. package/dist/diagnostics/codes/action.js +110 -0
  38. package/dist/diagnostics/codes/action.js.map +1 -0
  39. package/dist/diagnostics/codes/artifact.d.ts +8 -0
  40. package/dist/diagnostics/codes/artifact.d.ts.map +1 -0
  41. package/dist/diagnostics/codes/artifact.js +121 -0
  42. package/dist/diagnostics/codes/artifact.js.map +1 -0
  43. package/dist/diagnostics/codes/build.d.ts +8 -0
  44. package/dist/diagnostics/codes/build.d.ts.map +1 -0
  45. package/dist/diagnostics/codes/build.js +55 -0
  46. package/dist/diagnostics/codes/build.js.map +1 -0
  47. package/dist/diagnostics/codes/cli.d.ts +8 -0
  48. package/dist/diagnostics/codes/cli.d.ts.map +1 -0
  49. package/dist/diagnostics/codes/cli.js +44 -0
  50. package/dist/diagnostics/codes/cli.js.map +1 -0
  51. package/dist/diagnostics/codes/console.d.ts +8 -0
  52. package/dist/diagnostics/codes/console.d.ts.map +1 -0
  53. package/dist/diagnostics/codes/console.js +30 -0
  54. package/dist/diagnostics/codes/console.js.map +1 -0
  55. package/dist/diagnostics/codes/dep.d.ts +8 -0
  56. package/dist/diagnostics/codes/dep.d.ts.map +1 -0
  57. package/dist/diagnostics/codes/dep.js +88 -0
  58. package/dist/diagnostics/codes/dep.js.map +1 -0
  59. package/dist/diagnostics/codes/env.d.ts +8 -0
  60. package/dist/diagnostics/codes/env.d.ts.map +1 -0
  61. package/dist/diagnostics/codes/env.js +132 -0
  62. package/dist/diagnostics/codes/env.js.map +1 -0
  63. package/dist/diagnostics/codes/field.d.ts +8 -0
  64. package/dist/diagnostics/codes/field.d.ts.map +1 -0
  65. package/dist/diagnostics/codes/field.js +99 -0
  66. package/dist/diagnostics/codes/field.js.map +1 -0
  67. package/dist/diagnostics/codes/home.d.ts +8 -0
  68. package/dist/diagnostics/codes/home.d.ts.map +1 -0
  69. package/dist/diagnostics/codes/home.js +132 -0
  70. package/dist/diagnostics/codes/home.js.map +1 -0
  71. package/dist/diagnostics/codes/host.d.ts +8 -0
  72. package/dist/diagnostics/codes/host.d.ts.map +1 -0
  73. package/dist/diagnostics/codes/host.js +176 -0
  74. package/dist/diagnostics/codes/host.js.map +1 -0
  75. package/dist/diagnostics/codes/hygiene.d.ts +8 -0
  76. package/dist/diagnostics/codes/hygiene.d.ts.map +1 -0
  77. package/dist/diagnostics/codes/hygiene.js +154 -0
  78. package/dist/diagnostics/codes/hygiene.js.map +1 -0
  79. package/dist/diagnostics/codes/index.d.ts +51 -0
  80. package/dist/diagnostics/codes/index.d.ts.map +1 -0
  81. package/dist/diagnostics/codes/index.js +72 -0
  82. package/dist/diagnostics/codes/index.js.map +1 -0
  83. package/dist/diagnostics/codes/live.d.ts +8 -0
  84. package/dist/diagnostics/codes/live.d.ts.map +1 -0
  85. package/dist/diagnostics/codes/live.js +30 -0
  86. package/dist/diagnostics/codes/live.js.map +1 -0
  87. package/dist/diagnostics/codes/manifest.d.ts +8 -0
  88. package/dist/diagnostics/codes/manifest.d.ts.map +1 -0
  89. package/dist/diagnostics/codes/manifest.js +44 -0
  90. package/dist/diagnostics/codes/manifest.js.map +1 -0
  91. package/dist/diagnostics/codes/network.d.ts +8 -0
  92. package/dist/diagnostics/codes/network.d.ts.map +1 -0
  93. package/dist/diagnostics/codes/network.js +30 -0
  94. package/dist/diagnostics/codes/network.js.map +1 -0
  95. package/dist/diagnostics/codes/platform.d.ts +8 -0
  96. package/dist/diagnostics/codes/platform.d.ts.map +1 -0
  97. package/dist/diagnostics/codes/platform.js +18 -0
  98. package/dist/diagnostics/codes/platform.js.map +1 -0
  99. package/dist/diagnostics/codes/publish.d.ts +8 -0
  100. package/dist/diagnostics/codes/publish.d.ts.map +1 -0
  101. package/dist/diagnostics/codes/publish.js +44 -0
  102. package/dist/diagnostics/codes/publish.js.map +1 -0
  103. package/dist/diagnostics/codes/regression.d.ts +8 -0
  104. package/dist/diagnostics/codes/regression.d.ts.map +1 -0
  105. package/dist/diagnostics/codes/regression.js +77 -0
  106. package/dist/diagnostics/codes/regression.js.map +1 -0
  107. package/dist/diagnostics/codes/runtime.d.ts +8 -0
  108. package/dist/diagnostics/codes/runtime.d.ts.map +1 -0
  109. package/dist/diagnostics/codes/runtime.js +66 -0
  110. package/dist/diagnostics/codes/runtime.js.map +1 -0
  111. package/dist/diagnostics/codes/secret.d.ts +8 -0
  112. package/dist/diagnostics/codes/secret.d.ts.map +1 -0
  113. package/dist/diagnostics/codes/secret.js +18 -0
  114. package/dist/diagnostics/codes/secret.js.map +1 -0
  115. package/dist/diagnostics/codes/smoke.d.ts +8 -0
  116. package/dist/diagnostics/codes/smoke.d.ts.map +1 -0
  117. package/dist/diagnostics/codes/smoke.js +30 -0
  118. package/dist/diagnostics/codes/smoke.js.map +1 -0
  119. package/dist/diagnostics/codes/submit.d.ts +8 -0
  120. package/dist/diagnostics/codes/submit.d.ts.map +1 -0
  121. package/dist/diagnostics/codes/submit.js +99 -0
  122. package/dist/diagnostics/codes/submit.js.map +1 -0
  123. package/dist/diagnostics/codes/target.d.ts +8 -0
  124. package/dist/diagnostics/codes/target.d.ts.map +1 -0
  125. package/dist/diagnostics/codes/target.js +18 -0
  126. package/dist/diagnostics/codes/target.js.map +1 -0
  127. package/dist/diagnostics/codes/type.d.ts +8 -0
  128. package/dist/diagnostics/codes/type.d.ts.map +1 -0
  129. package/dist/diagnostics/codes/type.js +30 -0
  130. package/dist/diagnostics/codes/type.js.map +1 -0
  131. package/dist/diagnostics/codes/verify.d.ts +8 -0
  132. package/dist/diagnostics/codes/verify.d.ts.map +1 -0
  133. package/dist/diagnostics/codes/verify.js +99 -0
  134. package/dist/diagnostics/codes/verify.js.map +1 -0
  135. package/dist/diagnostics/diagnostic.d.ts +79 -0
  136. package/dist/diagnostics/diagnostic.d.ts.map +1 -0
  137. package/dist/diagnostics/diagnostic.js +131 -0
  138. package/dist/diagnostics/diagnostic.js.map +1 -0
  139. package/dist/diagnostics/spec.d.ts +49 -0
  140. package/dist/diagnostics/spec.d.ts.map +1 -0
  141. package/dist/diagnostics/spec.js +31 -0
  142. package/dist/diagnostics/spec.js.map +1 -0
  143. package/dist/hygiene.d.ts +66 -0
  144. package/dist/hygiene.d.ts.map +1 -0
  145. package/dist/hygiene.js +134 -0
  146. package/dist/hygiene.js.map +1 -0
  147. package/dist/ids.d.ts +119 -0
  148. package/dist/ids.d.ts.map +1 -0
  149. package/dist/ids.js +135 -0
  150. package/dist/ids.js.map +1 -0
  151. package/dist/index.d.ts +86 -0
  152. package/dist/index.js +86 -0
  153. package/dist/interaction.d.ts +391 -0
  154. package/dist/interaction.d.ts.map +1 -0
  155. package/dist/interaction.js +306 -0
  156. package/dist/interaction.js.map +1 -0
  157. package/dist/manifest.d.ts +97 -0
  158. package/dist/manifest.d.ts.map +1 -0
  159. package/dist/manifest.js +101 -0
  160. package/dist/manifest.js.map +1 -0
  161. package/dist/method.d.ts +26 -0
  162. package/dist/method.d.ts.map +1 -0
  163. package/dist/method.js +10 -0
  164. package/dist/method.js.map +1 -0
  165. package/dist/methods/artifact/create.d.ts +29 -0
  166. package/dist/methods/artifact/create.d.ts.map +1 -0
  167. package/dist/methods/artifact/create.js +31 -0
  168. package/dist/methods/artifact/create.js.map +1 -0
  169. package/dist/methods/artifact/get.d.ts +17 -0
  170. package/dist/methods/artifact/get.d.ts.map +1 -0
  171. package/dist/methods/artifact/get.js +21 -0
  172. package/dist/methods/artifact/get.js.map +1 -0
  173. package/dist/methods/artifact/list.d.ts +22 -0
  174. package/dist/methods/artifact/list.d.ts.map +1 -0
  175. package/dist/methods/artifact/list.js +19 -0
  176. package/dist/methods/artifact/list.js.map +1 -0
  177. package/dist/methods/artifact/publish.d.ts +28 -0
  178. package/dist/methods/artifact/publish.d.ts.map +1 -0
  179. package/dist/methods/artifact/publish.js +28 -0
  180. package/dist/methods/artifact/publish.js.map +1 -0
  181. package/dist/methods/artifact/verify.d.ts +29 -0
  182. package/dist/methods/artifact/verify.d.ts.map +1 -0
  183. package/dist/methods/artifact/verify.js +27 -0
  184. package/dist/methods/artifact/verify.js.map +1 -0
  185. package/dist/methods/deps/add.d.ts +43 -0
  186. package/dist/methods/deps/add.d.ts.map +1 -0
  187. package/dist/methods/deps/add.js +40 -0
  188. package/dist/methods/deps/add.js.map +1 -0
  189. package/dist/methods/dev/start.d.ts +52 -0
  190. package/dist/methods/dev/start.d.ts.map +1 -0
  191. package/dist/methods/dev/start.js +56 -0
  192. package/dist/methods/dev/start.js.map +1 -0
  193. package/dist/methods/dev/stop.d.ts +16 -0
  194. package/dist/methods/dev/stop.d.ts.map +1 -0
  195. package/dist/methods/dev/stop.js +21 -0
  196. package/dist/methods/dev/stop.js.map +1 -0
  197. package/dist/methods/events/ack.d.ts +20 -0
  198. package/dist/methods/events/ack.d.ts.map +1 -0
  199. package/dist/methods/events/ack.js +26 -0
  200. package/dist/methods/events/ack.js.map +1 -0
  201. package/dist/methods/events/read.d.ts +40 -0
  202. package/dist/methods/events/read.d.ts.map +1 -0
  203. package/dist/methods/events/read.js +35 -0
  204. package/dist/methods/events/read.js.map +1 -0
  205. package/dist/methods/events/subscribe.d.ts +54 -0
  206. package/dist/methods/events/subscribe.d.ts.map +1 -0
  207. package/dist/methods/events/subscribe.js +44 -0
  208. package/dist/methods/events/subscribe.js.map +1 -0
  209. package/dist/methods/events/unsubscribe.d.ts +16 -0
  210. package/dist/methods/events/unsubscribe.d.ts.map +1 -0
  211. package/dist/methods/events/unsubscribe.js +21 -0
  212. package/dist/methods/events/unsubscribe.js.map +1 -0
  213. package/dist/methods/gc/run.d.ts +76 -0
  214. package/dist/methods/gc/run.d.ts.map +1 -0
  215. package/dist/methods/gc/run.js +56 -0
  216. package/dist/methods/gc/run.js.map +1 -0
  217. package/dist/methods/index.d.ts +6 -0
  218. package/dist/methods/index.d.ts.map +1 -0
  219. package/dist/methods/index.js +78 -0
  220. package/dist/methods/index.js.map +1 -0
  221. package/dist/methods/instance/check.d.ts +30 -0
  222. package/dist/methods/instance/check.d.ts.map +1 -0
  223. package/dist/methods/instance/check.js +34 -0
  224. package/dist/methods/instance/check.js.map +1 -0
  225. package/dist/methods/instance/status.d.ts +102 -0
  226. package/dist/methods/instance/status.d.ts.map +1 -0
  227. package/dist/methods/instance/status.js +83 -0
  228. package/dist/methods/instance/status.js.map +1 -0
  229. package/dist/methods/live/push.d.ts +28 -0
  230. package/dist/methods/live/push.d.ts.map +1 -0
  231. package/dist/methods/live/push.js +35 -0
  232. package/dist/methods/live/push.js.map +1 -0
  233. package/dist/methods/mostra/initialize.d.ts +143 -0
  234. package/dist/methods/mostra/initialize.d.ts.map +1 -0
  235. package/dist/methods/mostra/initialize.js +97 -0
  236. package/dist/methods/mostra/initialize.js.map +1 -0
  237. package/dist/methods/mostra/shutdown.d.ts +14 -0
  238. package/dist/methods/mostra/shutdown.d.ts.map +1 -0
  239. package/dist/methods/mostra/shutdown.js +22 -0
  240. package/dist/methods/mostra/shutdown.js.map +1 -0
  241. package/dist/methods/port/drafts-mirror.d.ts +30 -0
  242. package/dist/methods/port/drafts-mirror.d.ts.map +1 -0
  243. package/dist/methods/port/drafts-mirror.js +33 -0
  244. package/dist/methods/port/drafts-mirror.js.map +1 -0
  245. package/dist/methods/port/secrets-get.d.ts +19 -0
  246. package/dist/methods/port/secrets-get.d.ts.map +1 -0
  247. package/dist/methods/port/secrets-get.js +31 -0
  248. package/dist/methods/port/secrets-get.js.map +1 -0
  249. package/dist/methods/port/submissions-deliver.d.ts +38 -0
  250. package/dist/methods/port/submissions-deliver.d.ts.map +1 -0
  251. package/dist/methods/port/submissions-deliver.js +38 -0
  252. package/dist/methods/port/submissions-deliver.js.map +1 -0
  253. package/dist/methods/port/trusted-controls-activated.d.ts +27 -0
  254. package/dist/methods/port/trusted-controls-activated.d.ts.map +1 -0
  255. package/dist/methods/port/trusted-controls-activated.js +33 -0
  256. package/dist/methods/port/trusted-controls-activated.js.map +1 -0
  257. package/dist/methods/port/trusted-controls-policy.d.ts +21 -0
  258. package/dist/methods/port/trusted-controls-policy.d.ts.map +1 -0
  259. package/dist/methods/port/trusted-controls-policy.js +27 -0
  260. package/dist/methods/port/trusted-controls-policy.js.map +1 -0
  261. package/dist/methods/results/get.d.ts +32 -0
  262. package/dist/methods/results/get.d.ts.map +1 -0
  263. package/dist/methods/results/get.js +36 -0
  264. package/dist/methods/results/get.js.map +1 -0
  265. package/dist/methods/secret/delete.d.ts +22 -0
  266. package/dist/methods/secret/delete.d.ts.map +1 -0
  267. package/dist/methods/secret/delete.js +32 -0
  268. package/dist/methods/secret/delete.js.map +1 -0
  269. package/dist/methods/secret/list.d.ts +21 -0
  270. package/dist/methods/secret/list.d.ts.map +1 -0
  271. package/dist/methods/secret/list.js +29 -0
  272. package/dist/methods/secret/list.js.map +1 -0
  273. package/dist/methods/secret/set.d.ts +37 -0
  274. package/dist/methods/secret/set.d.ts.map +1 -0
  275. package/dist/methods/secret/set.js +41 -0
  276. package/dist/methods/secret/set.js.map +1 -0
  277. package/dist/methods/state/get.d.ts +25 -0
  278. package/dist/methods/state/get.d.ts.map +1 -0
  279. package/dist/methods/state/get.js +29 -0
  280. package/dist/methods/state/get.js.map +1 -0
  281. package/dist/methods/state/patch.d.ts +32 -0
  282. package/dist/methods/state/patch.d.ts.map +1 -0
  283. package/dist/methods/state/patch.js +29 -0
  284. package/dist/methods/state/patch.js.map +1 -0
  285. package/dist/methods/view/default.d.ts +19 -0
  286. package/dist/methods/view/default.d.ts.map +1 -0
  287. package/dist/methods/view/default.js +23 -0
  288. package/dist/methods/view/default.js.map +1 -0
  289. package/dist/methods/view/launch.d.ts +27 -0
  290. package/dist/methods/view/launch.d.ts.map +1 -0
  291. package/dist/methods/view/launch.js +30 -0
  292. package/dist/methods/view/launch.js.map +1 -0
  293. package/dist/methods/view/revoke.d.ts +19 -0
  294. package/dist/methods/view/revoke.d.ts.map +1 -0
  295. package/dist/methods/view/revoke.js +26 -0
  296. package/dist/methods/view/revoke.js.map +1 -0
  297. package/dist/methods/view/rotate.d.ts +21 -0
  298. package/dist/methods/view/rotate.d.ts.map +1 -0
  299. package/dist/methods/view/rotate.js +27 -0
  300. package/dist/methods/view/rotate.js.map +1 -0
  301. package/dist/methods/view/url.d.ts +52 -0
  302. package/dist/methods/view/url.d.ts.map +1 -0
  303. package/dist/methods/view/url.js +43 -0
  304. package/dist/methods/view/url.js.map +1 -0
  305. package/dist/methods/wait/wait.d.ts +37 -0
  306. package/dist/methods/wait/wait.d.ts.map +1 -0
  307. package/dist/methods/wait/wait.js +39 -0
  308. package/dist/methods/wait/wait.js.map +1 -0
  309. package/dist/revision.d.ts +43 -0
  310. package/dist/revision.d.ts.map +1 -0
  311. package/dist/revision.js +69 -0
  312. package/dist/revision.js.map +1 -0
  313. package/dist/rpc/error.d.ts +47 -0
  314. package/dist/rpc/error.d.ts.map +1 -0
  315. package/dist/rpc/error.js +77 -0
  316. package/dist/rpc/error.js.map +1 -0
  317. package/dist/rpc/lines.d.ts +30 -0
  318. package/dist/rpc/lines.d.ts.map +1 -0
  319. package/dist/rpc/lines.js +63 -0
  320. package/dist/rpc/lines.js.map +1 -0
  321. package/dist/rpc/messages.d.ts +92 -0
  322. package/dist/rpc/messages.d.ts.map +1 -0
  323. package/dist/rpc/messages.js +133 -0
  324. package/dist/rpc/messages.js.map +1 -0
  325. package/dist/rpc/peer.d.ts +81 -0
  326. package/dist/rpc/peer.d.ts.map +1 -0
  327. package/dist/rpc/peer.js +208 -0
  328. package/dist/rpc/peer.js.map +1 -0
  329. package/dist/serializer.d.ts +178 -0
  330. package/dist/serializer.d.ts.map +1 -0
  331. package/dist/serializer.js +929 -0
  332. package/dist/serializer.js.map +1 -0
  333. package/dist/verify.d.ts +254 -0
  334. package/dist/verify.d.ts.map +1 -0
  335. package/dist/verify.js +243 -0
  336. package/dist/verify.js.map +1 -0
  337. package/dist/view.d.ts +103 -0
  338. package/dist/view.d.ts.map +1 -0
  339. package/dist/view.js +110 -0
  340. package/dist/view.js.map +1 -0
  341. package/dist/wire-registry.js +11 -0
  342. package/dist/wire-registry.js.map +1 -0
  343. package/dist/worker.d.ts +249 -0
  344. package/dist/worker.d.ts.map +1 -0
  345. package/dist/worker.js +158 -0
  346. package/dist/worker.js.map +1 -0
  347. package/package.json +114 -3
  348. package/schemas/protocol.draft-07.json +5120 -0
  349. package/schemas/protocol.schema.json +4964 -0
  350. package/src/actions.ts +418 -0
  351. package/src/artifact.ts +187 -0
  352. package/src/bridge.ts +618 -0
  353. package/src/browser.ts +374 -0
  354. package/src/bundle.ts +264 -0
  355. package/src/canonical.ts +49 -0
  356. package/src/capability.ts +92 -0
  357. package/src/diagnostics/codes/a11y.ts +41 -0
  358. package/src/diagnostics/codes/action.ts +125 -0
  359. package/src/diagnostics/codes/artifact.ts +137 -0
  360. package/src/diagnostics/codes/build.ts +65 -0
  361. package/src/diagnostics/codes/cli.ts +53 -0
  362. package/src/diagnostics/codes/console.ts +41 -0
  363. package/src/diagnostics/codes/dep.ts +101 -0
  364. package/src/diagnostics/codes/env.ts +149 -0
  365. package/src/diagnostics/codes/field.ts +113 -0
  366. package/src/diagnostics/codes/home.ts +150 -0
  367. package/src/diagnostics/codes/host.ts +197 -0
  368. package/src/diagnostics/codes/hygiene.ts +175 -0
  369. package/src/diagnostics/codes/index.ts +142 -0
  370. package/src/diagnostics/codes/live.ts +41 -0
  371. package/src/diagnostics/codes/manifest.ts +53 -0
  372. package/src/diagnostics/codes/network.ts +41 -0
  373. package/src/diagnostics/codes/platform.ts +30 -0
  374. package/src/diagnostics/codes/publish.ts +53 -0
  375. package/src/diagnostics/codes/regression.ts +89 -0
  376. package/src/diagnostics/codes/runtime.ts +77 -0
  377. package/src/diagnostics/codes/secret.ts +29 -0
  378. package/src/diagnostics/codes/smoke.ts +41 -0
  379. package/src/diagnostics/codes/submit.ts +113 -0
  380. package/src/diagnostics/codes/target.ts +29 -0
  381. package/src/diagnostics/codes/type.ts +41 -0
  382. package/src/diagnostics/codes/verify.ts +113 -0
  383. package/src/diagnostics/diagnostic.ts +240 -0
  384. package/src/diagnostics/spec.ts +90 -0
  385. package/src/hygiene.ts +224 -0
  386. package/src/ids.ts +279 -0
  387. package/src/index.ts +576 -0
  388. package/src/interaction.ts +728 -0
  389. package/src/manifest.ts +206 -0
  390. package/src/method.ts +42 -0
  391. package/src/methods/artifact/create.ts +56 -0
  392. package/src/methods/artifact/get.ts +30 -0
  393. package/src/methods/artifact/list.ts +42 -0
  394. package/src/methods/artifact/publish.ts +46 -0
  395. package/src/methods/artifact/verify.ts +46 -0
  396. package/src/methods/deps/add.ts +72 -0
  397. package/src/methods/dev/start.ts +84 -0
  398. package/src/methods/dev/stop.ts +32 -0
  399. package/src/methods/events/ack.ts +41 -0
  400. package/src/methods/events/read.ts +67 -0
  401. package/src/methods/events/subscribe.ts +91 -0
  402. package/src/methods/events/unsubscribe.ts +35 -0
  403. package/src/methods/gc/run.ts +125 -0
  404. package/src/methods/index.ts +81 -0
  405. package/src/methods/instance/check.ts +61 -0
  406. package/src/methods/instance/status.ts +172 -0
  407. package/src/methods/live/push.ts +54 -0
  408. package/src/methods/mostra/initialize.ts +249 -0
  409. package/src/methods/mostra/shutdown.ts +31 -0
  410. package/src/methods/port/drafts-mirror.ts +52 -0
  411. package/src/methods/port/secrets-get.ts +40 -0
  412. package/src/methods/port/submissions-deliver.ts +70 -0
  413. package/src/methods/port/trusted-controls-activated.ts +51 -0
  414. package/src/methods/port/trusted-controls-policy.ts +38 -0
  415. package/src/methods/results/get.ts +59 -0
  416. package/src/methods/secret/delete.ts +43 -0
  417. package/src/methods/secret/list.ts +40 -0
  418. package/src/methods/secret/set.ts +69 -0
  419. package/src/methods/state/get.ts +44 -0
  420. package/src/methods/state/patch.ts +51 -0
  421. package/src/methods/view/default.ts +32 -0
  422. package/src/methods/view/launch.ts +47 -0
  423. package/src/methods/view/revoke.ts +39 -0
  424. package/src/methods/view/rotate.ts +37 -0
  425. package/src/methods/view/url.ts +84 -0
  426. package/src/methods/wait/wait.ts +58 -0
  427. package/src/revision.ts +101 -0
  428. package/src/rpc/error.ts +107 -0
  429. package/src/rpc/lines.ts +70 -0
  430. package/src/rpc/messages.ts +188 -0
  431. package/src/rpc/peer.ts +341 -0
  432. package/src/serializer.ts +1217 -0
  433. package/src/timers.d.ts +8 -0
  434. package/src/verify.ts +458 -0
  435. package/src/view.ts +200 -0
  436. package/src/web-crypto.d.ts +9 -0
  437. package/src/web-platform.d.ts +35 -0
  438. package/src/wire-registry.ts +14 -0
  439. package/src/worker.ts +374 -0
@@ -0,0 +1,4964 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Mostra protocol types: IDs, revisions and diagnostics",
4
+ "x-mostra-revisions": {
5
+ "host-protocol": "2026-10-10"
6
+ },
7
+ "$defs": {
8
+ "ActionError": {
9
+ "type": "object",
10
+ "properties": {
11
+ "message": {
12
+ "type": "string"
13
+ },
14
+ "code": {
15
+ "type": "string"
16
+ },
17
+ "stack": {
18
+ "type": "string"
19
+ }
20
+ },
21
+ "required": [
22
+ "message"
23
+ ],
24
+ "description": "An error from server code: its message and diagnostic code."
25
+ },
26
+ "Actor": {
27
+ "type": "object",
28
+ "properties": {
29
+ "kind": {
30
+ "type": "string",
31
+ "enum": [
32
+ "viewer",
33
+ "agent",
34
+ "host",
35
+ "mostra"
36
+ ]
37
+ },
38
+ "id": {
39
+ "type": "string"
40
+ },
41
+ "name": {
42
+ "type": "string"
43
+ }
44
+ },
45
+ "required": [
46
+ "kind"
47
+ ],
48
+ "description": "Who caused an event or wrote a field: a viewer, an agent, a host or Mostra."
49
+ },
50
+ "AddedPackage": {
51
+ "type": "object",
52
+ "properties": {
53
+ "name": {
54
+ "type": "string",
55
+ "minLength": 1
56
+ },
57
+ "version": {
58
+ "type": "string",
59
+ "minLength": 1
60
+ },
61
+ "warm": {
62
+ "type": "boolean"
63
+ }
64
+ },
65
+ "required": [
66
+ "name",
67
+ "version",
68
+ "warm"
69
+ ],
70
+ "description": "A package deps/add settled: its name, exact version and whether it is warm."
71
+ },
72
+ "ArtifactCreateParams": {
73
+ "type": "object",
74
+ "properties": {
75
+ "dir": {
76
+ "type": "string",
77
+ "pattern": "^\\/"
78
+ },
79
+ "template": {
80
+ "type": "string",
81
+ "minLength": 1
82
+ },
83
+ "title": {
84
+ "type": "string",
85
+ "minLength": 1
86
+ },
87
+ "requestId": {
88
+ "type": "string",
89
+ "minLength": 1
90
+ }
91
+ },
92
+ "required": [
93
+ "dir"
94
+ ]
95
+ },
96
+ "ArtifactCreateResult": {
97
+ "type": "object",
98
+ "properties": {
99
+ "artifactId": {
100
+ "$ref": "#/$defs/ArtifactId"
101
+ },
102
+ "dir": {
103
+ "type": "string"
104
+ },
105
+ "files": {
106
+ "readOnly": true,
107
+ "type": "array",
108
+ "items": {
109
+ "type": "string"
110
+ }
111
+ }
112
+ },
113
+ "required": [
114
+ "artifactId",
115
+ "dir",
116
+ "files"
117
+ ]
118
+ },
119
+ "ArtifactDetail": {
120
+ "type": "object",
121
+ "properties": {
122
+ "id": {
123
+ "$ref": "#/$defs/ArtifactId"
124
+ },
125
+ "title": {
126
+ "type": "string"
127
+ },
128
+ "description": {
129
+ "type": "string"
130
+ },
131
+ "family": {
132
+ "type": "string"
133
+ },
134
+ "links": {
135
+ "readOnly": true,
136
+ "type": "array",
137
+ "items": {
138
+ "$ref": "#/$defs/ArtifactLink"
139
+ }
140
+ },
141
+ "mode": {
142
+ "type": "string",
143
+ "const": "spa"
144
+ },
145
+ "policy": {
146
+ "$ref": "#/$defs/SubmissionPolicy"
147
+ },
148
+ "source": {
149
+ "type": "string"
150
+ },
151
+ "createdAt": {
152
+ "type": "string",
153
+ "format": "date-time",
154
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
155
+ },
156
+ "latestVersion": {
157
+ "$ref": "#/$defs/VersionSummary"
158
+ },
159
+ "manifest": {
160
+ "$ref": "#/$defs/ArtifactManifest"
161
+ },
162
+ "versions": {
163
+ "readOnly": true,
164
+ "type": "array",
165
+ "items": {
166
+ "$ref": "#/$defs/VersionSummary"
167
+ }
168
+ }
169
+ },
170
+ "required": [
171
+ "id",
172
+ "title",
173
+ "links",
174
+ "mode",
175
+ "createdAt",
176
+ "manifest",
177
+ "versions"
178
+ ],
179
+ "description": "One artifact in full: its summary, the latest manifest and every version."
180
+ },
181
+ "ArtifactGetParams": {
182
+ "type": "object",
183
+ "properties": {
184
+ "artifact": {
185
+ "$ref": "#/$defs/ArtifactRef"
186
+ }
187
+ },
188
+ "required": [
189
+ "artifact"
190
+ ]
191
+ },
192
+ "ArtifactId": {
193
+ "type": "string",
194
+ "pattern": "^art_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
195
+ "description": "Artifact ID: \"art_\" followed by a 26-character ULID."
196
+ },
197
+ "ArtifactLink": {
198
+ "type": "object",
199
+ "properties": {
200
+ "rel": {
201
+ "type": "string",
202
+ "minLength": 1
203
+ },
204
+ "artifact": {
205
+ "type": "string",
206
+ "minLength": 1
207
+ }
208
+ },
209
+ "required": [
210
+ "rel",
211
+ "artifact"
212
+ ],
213
+ "description": "A related artifact: how this one relates (rel) and the other artifact's ID."
214
+ },
215
+ "ArtifactListParams": {
216
+ "type": "object",
217
+ "properties": {
218
+ "filter": {
219
+ "type": "object",
220
+ "properties": {
221
+ "family": {
222
+ "type": "string",
223
+ "minLength": 1
224
+ }
225
+ }
226
+ }
227
+ }
228
+ },
229
+ "ArtifactListResult": {
230
+ "type": "object",
231
+ "properties": {
232
+ "artifacts": {
233
+ "readOnly": true,
234
+ "type": "array",
235
+ "items": {
236
+ "$ref": "#/$defs/ArtifactSummary"
237
+ }
238
+ }
239
+ },
240
+ "required": [
241
+ "artifacts"
242
+ ]
243
+ },
244
+ "ArtifactManifest": {
245
+ "type": "object",
246
+ "properties": {
247
+ "id": {
248
+ "$ref": "#/$defs/ArtifactId"
249
+ },
250
+ "title": {
251
+ "type": "string",
252
+ "minLength": 1
253
+ },
254
+ "description": {
255
+ "type": "string"
256
+ },
257
+ "family": {
258
+ "type": "string",
259
+ "minLength": 1
260
+ },
261
+ "links": {
262
+ "readOnly": true,
263
+ "type": "array",
264
+ "items": {
265
+ "$ref": "#/$defs/ArtifactLink"
266
+ }
267
+ },
268
+ "mode": {
269
+ "type": "string",
270
+ "const": "spa"
271
+ },
272
+ "submission": {
273
+ "$ref": "#/$defs/SubmissionPolicy"
274
+ },
275
+ "kit": {
276
+ "type": "object",
277
+ "properties": {
278
+ "base": {
279
+ "type": "string",
280
+ "enum": [
281
+ "base",
282
+ "radix"
283
+ ]
284
+ },
285
+ "theme": {
286
+ "type": "string"
287
+ }
288
+ }
289
+ },
290
+ "terminals": {
291
+ "readOnly": true,
292
+ "type": "object",
293
+ "propertyNames": {
294
+ "type": "string"
295
+ },
296
+ "additionalProperties": {
297
+ "type": "object",
298
+ "properties": {
299
+ "command": {
300
+ "readOnly": true,
301
+ "minItems": 1,
302
+ "type": "array",
303
+ "items": {
304
+ "type": "string"
305
+ }
306
+ },
307
+ "cwd": {
308
+ "type": "string"
309
+ },
310
+ "env": {
311
+ "readOnly": true,
312
+ "type": "object",
313
+ "propertyNames": {
314
+ "type": "string"
315
+ },
316
+ "additionalProperties": {
317
+ "type": "string"
318
+ }
319
+ },
320
+ "cols": {
321
+ "type": "integer",
322
+ "minimum": 1,
323
+ "maximum": 9007199254740991
324
+ },
325
+ "rows": {
326
+ "type": "integer",
327
+ "minimum": 1,
328
+ "maximum": 9007199254740991
329
+ },
330
+ "input": {
331
+ "type": "boolean"
332
+ }
333
+ },
334
+ "required": [
335
+ "command"
336
+ ]
337
+ }
338
+ },
339
+ "demos": {
340
+ "readOnly": true,
341
+ "type": "object",
342
+ "propertyNames": {
343
+ "type": "string"
344
+ },
345
+ "additionalProperties": {
346
+ "anyOf": [
347
+ {
348
+ "type": "object",
349
+ "properties": {
350
+ "command": {
351
+ "readOnly": true,
352
+ "minItems": 1,
353
+ "type": "array",
354
+ "items": {
355
+ "type": "string"
356
+ }
357
+ },
358
+ "cwd": {
359
+ "type": "string"
360
+ },
361
+ "ready": {
362
+ "type": "string"
363
+ },
364
+ "bridge": {
365
+ "type": "boolean"
366
+ }
367
+ },
368
+ "required": [
369
+ "command"
370
+ ]
371
+ },
372
+ {
373
+ "type": "object",
374
+ "properties": {
375
+ "attach": {
376
+ "type": "integer",
377
+ "minimum": 1,
378
+ "maximum": 65535
379
+ },
380
+ "bridge": {
381
+ "type": "boolean"
382
+ }
383
+ },
384
+ "required": [
385
+ "attach"
386
+ ]
387
+ }
388
+ ]
389
+ }
390
+ },
391
+ "limits": {
392
+ "type": "object",
393
+ "properties": {
394
+ "heapMb": {
395
+ "type": "integer",
396
+ "minimum": 1,
397
+ "maximum": 9007199254740991
398
+ },
399
+ "watchdogMs": {
400
+ "type": "integer",
401
+ "minimum": 1,
402
+ "maximum": 9007199254740991
403
+ },
404
+ "idleMinutes": {
405
+ "type": "number",
406
+ "minimum": 0
407
+ }
408
+ }
409
+ },
410
+ "verify": {
411
+ "type": "object",
412
+ "properties": {
413
+ "viewports": {
414
+ "readOnly": true,
415
+ "type": "array",
416
+ "items": {
417
+ "type": "string"
418
+ }
419
+ },
420
+ "frames": {
421
+ "readOnly": true,
422
+ "type": "array",
423
+ "items": {
424
+ "type": "string"
425
+ }
426
+ },
427
+ "extraChecks": {
428
+ "readOnly": true,
429
+ "type": "array",
430
+ "items": {
431
+ "type": "string"
432
+ }
433
+ },
434
+ "smoke": {
435
+ "type": "boolean"
436
+ }
437
+ }
438
+ }
439
+ },
440
+ "required": [
441
+ "title"
442
+ ],
443
+ "description": "The artifact manifest (INTERFACES §2.2): literal metadata from the entry's defineArtifact call or MDX frontmatter."
444
+ },
445
+ "ArtifactProgressParams": {
446
+ "type": "object",
447
+ "properties": {
448
+ "progressToken": {
449
+ "type": "string",
450
+ "minLength": 1
451
+ },
452
+ "stage": {
453
+ "type": "string",
454
+ "minLength": 1
455
+ },
456
+ "fraction": {
457
+ "type": "number",
458
+ "minimum": 0,
459
+ "maximum": 1
460
+ }
461
+ },
462
+ "required": [
463
+ "progressToken",
464
+ "stage"
465
+ ],
466
+ "description": "One stage of a long request (artifact/verify) started."
467
+ },
468
+ "ArtifactPublishParams": {
469
+ "type": "object",
470
+ "properties": {
471
+ "source": {
472
+ "$ref": "#/$defs/SourceRef"
473
+ },
474
+ "force": {
475
+ "type": "boolean"
476
+ },
477
+ "policy": {
478
+ "$ref": "#/$defs/SubmissionPolicy"
479
+ },
480
+ "requestId": {
481
+ "type": "string",
482
+ "minLength": 1
483
+ }
484
+ },
485
+ "required": [
486
+ "source"
487
+ ]
488
+ },
489
+ "ArtifactRef": {
490
+ "anyOf": [
491
+ {
492
+ "type": "object",
493
+ "properties": {
494
+ "artifactId": {
495
+ "$ref": "#/$defs/ArtifactId"
496
+ }
497
+ },
498
+ "required": [
499
+ "artifactId"
500
+ ]
501
+ },
502
+ {
503
+ "type": "object",
504
+ "properties": {
505
+ "path": {
506
+ "type": "string",
507
+ "pattern": "^\\/"
508
+ }
509
+ },
510
+ "required": [
511
+ "path"
512
+ ]
513
+ }
514
+ ],
515
+ "description": "Names an artifact by its ID or by an absolute source path bound to it."
516
+ },
517
+ "ArtifactSummary": {
518
+ "type": "object",
519
+ "properties": {
520
+ "id": {
521
+ "$ref": "#/$defs/ArtifactId"
522
+ },
523
+ "title": {
524
+ "type": "string"
525
+ },
526
+ "description": {
527
+ "type": "string"
528
+ },
529
+ "family": {
530
+ "type": "string"
531
+ },
532
+ "links": {
533
+ "readOnly": true,
534
+ "type": "array",
535
+ "items": {
536
+ "$ref": "#/$defs/ArtifactLink"
537
+ }
538
+ },
539
+ "mode": {
540
+ "type": "string",
541
+ "const": "spa"
542
+ },
543
+ "policy": {
544
+ "$ref": "#/$defs/SubmissionPolicy"
545
+ },
546
+ "source": {
547
+ "type": "string"
548
+ },
549
+ "createdAt": {
550
+ "type": "string",
551
+ "format": "date-time",
552
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
553
+ },
554
+ "latestVersion": {
555
+ "$ref": "#/$defs/VersionSummary"
556
+ }
557
+ },
558
+ "required": [
559
+ "id",
560
+ "title",
561
+ "links",
562
+ "mode",
563
+ "createdAt"
564
+ ],
565
+ "description": "One artifact: metadata from its latest version, its source and latest version."
566
+ },
567
+ "ArtifactVerifyParams": {
568
+ "type": "object",
569
+ "properties": {
570
+ "source": {
571
+ "$ref": "#/$defs/SourceRef"
572
+ },
573
+ "screenshots": {
574
+ "$ref": "#/$defs/ScreenshotPolicy"
575
+ },
576
+ "progressToken": {
577
+ "type": "string",
578
+ "minLength": 1,
579
+ "maxLength": 200
580
+ }
581
+ },
582
+ "required": [
583
+ "source"
584
+ ]
585
+ },
586
+ "Batches": {
587
+ "readOnly": true,
588
+ "description": "A serialized server-function value: its batches of frames, in order.",
589
+ "type": "array",
590
+ "items": {
591
+ "readOnly": true,
592
+ "type": "array",
593
+ "items": {
594
+ "type": "object",
595
+ "propertyNames": {
596
+ "type": "string"
597
+ },
598
+ "additionalProperties": {}
599
+ }
600
+ }
601
+ },
602
+ "BundleAsset": {
603
+ "type": "object",
604
+ "properties": {
605
+ "file": {
606
+ "type": "string",
607
+ "pattern": "^mostra-[0-9A-Za-z][0-9A-Za-z.+-]*-(darwin|linux)-(arm64|x64)\\.tar\\.gz$"
608
+ },
609
+ "sha256": {
610
+ "$ref": "#/$defs/Sha256"
611
+ },
612
+ "size": {
613
+ "type": "integer",
614
+ "exclusiveMinimum": 0,
615
+ "maximum": 9007199254740991
616
+ },
617
+ "unpackedSize": {
618
+ "type": "integer",
619
+ "exclusiveMinimum": 0,
620
+ "maximum": 9007199254740991
621
+ }
622
+ },
623
+ "required": [
624
+ "file",
625
+ "sha256",
626
+ "size",
627
+ "unpackedSize"
628
+ ]
629
+ },
630
+ "BundleBrowser": {
631
+ "type": "object",
632
+ "properties": {
633
+ "name": {
634
+ "type": "string",
635
+ "const": "chromium-headless-shell"
636
+ },
637
+ "revision": {
638
+ "type": "string",
639
+ "minLength": 1
640
+ },
641
+ "browserVersion": {
642
+ "type": "string",
643
+ "minLength": 1
644
+ },
645
+ "installer": {
646
+ "type": "string",
647
+ "minLength": 1,
648
+ "pattern": "^[^/\\0]"
649
+ },
650
+ "files": {
651
+ "type": "array",
652
+ "items": {
653
+ "$ref": "#/$defs/BundleFileEntry"
654
+ }
655
+ }
656
+ },
657
+ "required": [
658
+ "name",
659
+ "revision",
660
+ "browserVersion",
661
+ "installer",
662
+ "files"
663
+ ]
664
+ },
665
+ "BundleFileEntry": {
666
+ "type": "object",
667
+ "properties": {
668
+ "path": {
669
+ "type": "string",
670
+ "minLength": 1,
671
+ "pattern": "^[^/\\0]"
672
+ },
673
+ "size": {
674
+ "type": "integer",
675
+ "minimum": 0,
676
+ "maximum": 9007199254740991
677
+ },
678
+ "sha256": {
679
+ "$ref": "#/$defs/Sha256"
680
+ },
681
+ "executable": {
682
+ "type": "boolean"
683
+ }
684
+ },
685
+ "required": [
686
+ "path",
687
+ "size",
688
+ "sha256",
689
+ "executable"
690
+ ]
691
+ },
692
+ "BundleFiles": {
693
+ "type": "object",
694
+ "properties": {
695
+ "schemaVersion": {
696
+ "type": "number",
697
+ "const": 1
698
+ },
699
+ "files": {
700
+ "type": "array",
701
+ "items": {
702
+ "$ref": "#/$defs/BundleFileEntry"
703
+ }
704
+ },
705
+ "links": {
706
+ "type": "array",
707
+ "items": {
708
+ "$ref": "#/$defs/BundleLinkEntry"
709
+ }
710
+ }
711
+ },
712
+ "required": [
713
+ "schemaVersion",
714
+ "files",
715
+ "links"
716
+ ]
717
+ },
718
+ "BundleInfo": {
719
+ "type": "object",
720
+ "properties": {
721
+ "schemaVersion": {
722
+ "type": "number",
723
+ "const": 1
724
+ },
725
+ "name": {
726
+ "type": "string",
727
+ "const": "mostra-runtime-bundle"
728
+ },
729
+ "version": {
730
+ "type": "string",
731
+ "minLength": 1
732
+ },
733
+ "platform": {
734
+ "$ref": "#/$defs/BundlePlatform"
735
+ },
736
+ "node": {
737
+ "type": "object",
738
+ "properties": {
739
+ "version": {
740
+ "type": "string",
741
+ "minLength": 1
742
+ },
743
+ "path": {
744
+ "type": "string",
745
+ "minLength": 1,
746
+ "pattern": "^[^/\\0]"
747
+ }
748
+ },
749
+ "required": [
750
+ "version",
751
+ "path"
752
+ ]
753
+ },
754
+ "entries": {
755
+ "type": "object",
756
+ "properties": {
757
+ "runtime": {
758
+ "type": "string",
759
+ "minLength": 1,
760
+ "pattern": "^[^/\\0]"
761
+ },
762
+ "cli": {
763
+ "type": "string",
764
+ "minLength": 1,
765
+ "pattern": "^[^/\\0]"
766
+ },
767
+ "setup": {
768
+ "type": "string",
769
+ "minLength": 1,
770
+ "pattern": "^[^/\\0]"
771
+ }
772
+ },
773
+ "required": [
774
+ "runtime",
775
+ "cli",
776
+ "setup"
777
+ ]
778
+ },
779
+ "files": {
780
+ "type": "object",
781
+ "properties": {
782
+ "path": {
783
+ "type": "string",
784
+ "minLength": 1,
785
+ "pattern": "^[^/\\0]"
786
+ },
787
+ "sha256": {
788
+ "$ref": "#/$defs/Sha256"
789
+ }
790
+ },
791
+ "required": [
792
+ "path",
793
+ "sha256"
794
+ ]
795
+ },
796
+ "browser": {
797
+ "$ref": "#/$defs/BundleBrowser"
798
+ },
799
+ "source": {
800
+ "type": "object",
801
+ "properties": {
802
+ "repository": {
803
+ "type": "string"
804
+ },
805
+ "commit": {
806
+ "type": "string"
807
+ }
808
+ },
809
+ "required": [
810
+ "repository",
811
+ "commit"
812
+ ]
813
+ }
814
+ },
815
+ "required": [
816
+ "schemaVersion",
817
+ "name",
818
+ "version",
819
+ "platform",
820
+ "node",
821
+ "entries",
822
+ "files",
823
+ "browser"
824
+ ]
825
+ },
826
+ "BundleLinkEntry": {
827
+ "type": "object",
828
+ "properties": {
829
+ "path": {
830
+ "type": "string",
831
+ "minLength": 1,
832
+ "pattern": "^[^/\\0]"
833
+ },
834
+ "target": {
835
+ "type": "string",
836
+ "minLength": 1
837
+ }
838
+ },
839
+ "required": [
840
+ "path",
841
+ "target"
842
+ ]
843
+ },
844
+ "BundlePins": {
845
+ "type": "object",
846
+ "properties": {
847
+ "schemaVersion": {
848
+ "type": "number",
849
+ "const": 1
850
+ },
851
+ "version": {
852
+ "type": "string",
853
+ "pattern": "^[0-9A-Za-z][0-9A-Za-z.+-]*$"
854
+ },
855
+ "release": {
856
+ "type": "string",
857
+ "format": "uri"
858
+ },
859
+ "assets": {
860
+ "type": "object",
861
+ "propertyNames": {
862
+ "$ref": "#/$defs/BundlePlatform"
863
+ },
864
+ "additionalProperties": {
865
+ "$ref": "#/$defs/BundleAsset"
866
+ }
867
+ }
868
+ },
869
+ "required": [
870
+ "schemaVersion",
871
+ "version",
872
+ "release",
873
+ "assets"
874
+ ]
875
+ },
876
+ "BundlePlatform": {
877
+ "type": "string",
878
+ "enum": [
879
+ "darwin-arm64",
880
+ "darwin-x64",
881
+ "linux-x64",
882
+ "linux-arm64"
883
+ ]
884
+ },
885
+ "BundleSetup": {
886
+ "type": "object",
887
+ "properties": {
888
+ "schemaVersion": {
889
+ "type": "number",
890
+ "const": 1
891
+ },
892
+ "version": {
893
+ "type": "string",
894
+ "minLength": 1
895
+ },
896
+ "platform": {
897
+ "$ref": "#/$defs/BundlePlatform"
898
+ },
899
+ "files": {
900
+ "$ref": "#/$defs/Sha256"
901
+ },
902
+ "browser": {
903
+ "type": "object",
904
+ "properties": {
905
+ "revision": {
906
+ "type": "string",
907
+ "minLength": 1
908
+ }
909
+ },
910
+ "required": [
911
+ "revision"
912
+ ]
913
+ },
914
+ "at": {
915
+ "type": "string"
916
+ }
917
+ },
918
+ "required": [
919
+ "schemaVersion",
920
+ "version",
921
+ "platform",
922
+ "files",
923
+ "browser",
924
+ "at"
925
+ ]
926
+ },
927
+ "CallRequest": {
928
+ "type": "object",
929
+ "properties": {
930
+ "viewId": {
931
+ "$ref": "#/$defs/ViewId"
932
+ },
933
+ "args": {
934
+ "$ref": "#/$defs/Batches"
935
+ }
936
+ },
937
+ "required": [
938
+ "viewId",
939
+ "args"
940
+ ],
941
+ "description": "A plain server-function call: the view and the serialized arguments."
942
+ },
943
+ "CapabilityLink": {
944
+ "type": "object",
945
+ "properties": {
946
+ "url": {
947
+ "type": "string",
948
+ "minLength": 1
949
+ },
950
+ "tokenId": {
951
+ "$ref": "#/$defs/TokenId"
952
+ },
953
+ "scopes": {
954
+ "readOnly": true,
955
+ "type": "array",
956
+ "items": {
957
+ "$ref": "#/$defs/CapabilityScope"
958
+ }
959
+ },
960
+ "expiresAt": {
961
+ "type": "string",
962
+ "format": "date-time",
963
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
964
+ },
965
+ "viewer": {
966
+ "$ref": "#/$defs/Viewer"
967
+ }
968
+ },
969
+ "required": [
970
+ "url",
971
+ "tokenId",
972
+ "scopes"
973
+ ],
974
+ "description": "A capability URL with its token ID, scopes and expiry."
975
+ },
976
+ "CapabilityScope": {
977
+ "type": "string",
978
+ "pattern": "^(view|draft|submit|review|signal|action:(\\*|[^\\s#*]+(#[^\\s#*]+)?))$",
979
+ "description": "A capability token's scope: view, draft, submit, review, signal, action:*, action:<export> or action:<module path>#<export>."
980
+ },
981
+ "CarryOver": {
982
+ "type": "object",
983
+ "properties": {
984
+ "version": {
985
+ "$ref": "#/$defs/VersionRef"
986
+ },
987
+ "orphans": {
988
+ "readOnly": true,
989
+ "type": "array",
990
+ "items": {
991
+ "$ref": "#/$defs/OrphanedField"
992
+ }
993
+ }
994
+ },
995
+ "required": [
996
+ "version",
997
+ "orphans"
998
+ ],
999
+ "description": "The viewer's answers a version doesn't carry over."
1000
+ },
1001
+ "ChildProcessStatus": {
1002
+ "type": "object",
1003
+ "properties": {
1004
+ "pid": {
1005
+ "type": "integer",
1006
+ "minimum": 1,
1007
+ "maximum": 9007199254740991
1008
+ },
1009
+ "kind": {
1010
+ "type": "string"
1011
+ },
1012
+ "ownerRef": {
1013
+ "type": "string"
1014
+ },
1015
+ "startedAt": {
1016
+ "type": "string",
1017
+ "format": "date-time",
1018
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
1019
+ }
1020
+ },
1021
+ "required": [
1022
+ "pid",
1023
+ "kind",
1024
+ "ownerRef",
1025
+ "startedAt"
1026
+ ],
1027
+ "description": "One child process the instance supervises."
1028
+ },
1029
+ "ChooseRequest": {
1030
+ "type": "object",
1031
+ "properties": {
1032
+ "viewId": {
1033
+ "$ref": "#/$defs/ViewId"
1034
+ },
1035
+ "mutationId": {
1036
+ "$ref": "#/$defs/MutationId"
1037
+ },
1038
+ "baseRevision": {
1039
+ "$ref": "#/$defs/DocumentRevision"
1040
+ },
1041
+ "reviewSetId": {
1042
+ "type": "string",
1043
+ "pattern": "^[A-Za-z0-9_-]{1,64}$"
1044
+ },
1045
+ "candidateId": {
1046
+ "type": "string",
1047
+ "minLength": 1,
1048
+ "maxLength": 256
1049
+ },
1050
+ "label": {
1051
+ "type": "string",
1052
+ "maxLength": 256
1053
+ }
1054
+ },
1055
+ "required": [
1056
+ "viewId",
1057
+ "mutationId",
1058
+ "baseRevision",
1059
+ "reviewSetId",
1060
+ "candidateId"
1061
+ ],
1062
+ "description": "The shell's trusted Choose: the view, mutation, base revision, set and candidate."
1063
+ },
1064
+ "ClientCapabilities": {
1065
+ "type": "object",
1066
+ "properties": {
1067
+ "notifications": {
1068
+ "readOnly": true,
1069
+ "type": "array",
1070
+ "items": {
1071
+ "type": "string"
1072
+ }
1073
+ }
1074
+ },
1075
+ "description": "What the client can handle: the notification methods it accepts."
1076
+ },
1077
+ "ClientInfo": {
1078
+ "type": "object",
1079
+ "properties": {
1080
+ "name": {
1081
+ "type": "string",
1082
+ "minLength": 1
1083
+ },
1084
+ "version": {
1085
+ "type": "string"
1086
+ }
1087
+ },
1088
+ "required": [
1089
+ "name",
1090
+ "version"
1091
+ ],
1092
+ "description": "The client that opens a connection."
1093
+ },
1094
+ "CommentId": {
1095
+ "type": "string",
1096
+ "pattern": "^cmt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1097
+ "description": "Comment ID: \"cmt_\" followed by a 26-character ULID."
1098
+ },
1099
+ "ControlsPolicy": {
1100
+ "type": "object",
1101
+ "properties": {
1102
+ "submitChannels": {
1103
+ "readOnly": true,
1104
+ "minItems": 1,
1105
+ "maxItems": 2,
1106
+ "type": "array",
1107
+ "items": {
1108
+ "$ref": "#/$defs/SubmitChannel"
1109
+ }
1110
+ },
1111
+ "controls": {
1112
+ "readOnly": true,
1113
+ "maxItems": 32,
1114
+ "type": "array",
1115
+ "items": {
1116
+ "$ref": "#/$defs/TrustedControl"
1117
+ }
1118
+ }
1119
+ },
1120
+ "required": [
1121
+ "submitChannels"
1122
+ ],
1123
+ "description": "Which submit channels a view accepts and which trusted controls its shell renders (D108)."
1124
+ },
1125
+ "Cursor": {
1126
+ "type": "string",
1127
+ "pattern": "^(0|[1-9][0-9]{0,18})$",
1128
+ "description": "Event cursor: the decimal string of a home-wide event position."
1129
+ },
1130
+ "DeliveryCounts": {
1131
+ "type": "object",
1132
+ "properties": {
1133
+ "owner": {
1134
+ "type": "string"
1135
+ },
1136
+ "connected": {
1137
+ "type": "boolean"
1138
+ },
1139
+ "pending": {
1140
+ "type": "integer",
1141
+ "minimum": 0,
1142
+ "maximum": 9007199254740991
1143
+ },
1144
+ "delivered": {
1145
+ "type": "integer",
1146
+ "minimum": 0,
1147
+ "maximum": 9007199254740991
1148
+ },
1149
+ "rejected": {
1150
+ "type": "integer",
1151
+ "minimum": 0,
1152
+ "maximum": 9007199254740991
1153
+ },
1154
+ "undeliverable": {
1155
+ "type": "integer",
1156
+ "minimum": 0,
1157
+ "maximum": 9007199254740991
1158
+ }
1159
+ },
1160
+ "required": [
1161
+ "owner",
1162
+ "connected",
1163
+ "pending",
1164
+ "delivered",
1165
+ "rejected",
1166
+ "undeliverable"
1167
+ ],
1168
+ "description": "One host's deliveries by state, and whether it is connected."
1169
+ },
1170
+ "DeliveryId": {
1171
+ "type": "string",
1172
+ "pattern": "^dlv_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1173
+ "description": "Delivery ID: \"dlv_\" followed by a 26-character ULID."
1174
+ },
1175
+ "DeliveryStatus": {
1176
+ "type": "object",
1177
+ "properties": {
1178
+ "deliveryId": {
1179
+ "$ref": "#/$defs/DeliveryId"
1180
+ },
1181
+ "owner": {
1182
+ "type": "string"
1183
+ },
1184
+ "state": {
1185
+ "type": "string",
1186
+ "enum": [
1187
+ "pending",
1188
+ "delivered",
1189
+ "rejected",
1190
+ "undeliverable"
1191
+ ]
1192
+ },
1193
+ "attempts": {
1194
+ "type": "integer",
1195
+ "minimum": 0,
1196
+ "maximum": 9007199254740991
1197
+ },
1198
+ "reason": {
1199
+ "type": "string"
1200
+ },
1201
+ "waiting": {
1202
+ "type": "boolean",
1203
+ "const": true
1204
+ },
1205
+ "updatedAt": {
1206
+ "type": "string",
1207
+ "format": "date-time",
1208
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
1209
+ }
1210
+ },
1211
+ "required": [
1212
+ "deliveryId",
1213
+ "owner",
1214
+ "state",
1215
+ "attempts",
1216
+ "updatedAt"
1217
+ ],
1218
+ "description": "One submission's delivery to one host: owner, state, attempts and reason."
1219
+ },
1220
+ "DependencyPolicy": {
1221
+ "type": "string",
1222
+ "enum": [
1223
+ "auto",
1224
+ "explicit"
1225
+ ],
1226
+ "description": "How packages enter an artifact's lockfile: auto installs what artifacts import; explicit only what deps/add adds (D43)."
1227
+ },
1228
+ "DepsAddParams": {
1229
+ "type": "object",
1230
+ "properties": {
1231
+ "artifact": {
1232
+ "$ref": "#/$defs/SourceRef"
1233
+ },
1234
+ "packages": {
1235
+ "readOnly": true,
1236
+ "minItems": 1,
1237
+ "type": "array",
1238
+ "items": {
1239
+ "type": "string",
1240
+ "minLength": 1
1241
+ }
1242
+ },
1243
+ "requestId": {
1244
+ "type": "string",
1245
+ "minLength": 1
1246
+ }
1247
+ },
1248
+ "required": [
1249
+ "artifact",
1250
+ "packages"
1251
+ ]
1252
+ },
1253
+ "DepsAddResult": {
1254
+ "type": "object",
1255
+ "properties": {
1256
+ "packages": {
1257
+ "readOnly": true,
1258
+ "type": "array",
1259
+ "items": {
1260
+ "$ref": "#/$defs/AddedPackage"
1261
+ }
1262
+ },
1263
+ "lockDigest": {
1264
+ "type": "string",
1265
+ "pattern": "^[0-9a-f]{64}$"
1266
+ }
1267
+ },
1268
+ "required": [
1269
+ "packages",
1270
+ "lockDigest"
1271
+ ]
1272
+ },
1273
+ "DevNotifyParams": {
1274
+ "type": "object",
1275
+ "properties": {
1276
+ "sessionId": {
1277
+ "type": "string",
1278
+ "minLength": 1
1279
+ },
1280
+ "kind": {
1281
+ "type": "string",
1282
+ "enum": [
1283
+ "built",
1284
+ "reloaded",
1285
+ "server-restarted",
1286
+ "submission",
1287
+ "diagnostics"
1288
+ ]
1289
+ },
1290
+ "at": {
1291
+ "type": "string",
1292
+ "format": "date-time",
1293
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
1294
+ },
1295
+ "diagnostics": {
1296
+ "readOnly": true,
1297
+ "type": "array",
1298
+ "items": {
1299
+ "$ref": "#/$defs/Diagnostic"
1300
+ }
1301
+ },
1302
+ "files": {
1303
+ "readOnly": true,
1304
+ "type": "array",
1305
+ "items": {
1306
+ "type": "string"
1307
+ }
1308
+ },
1309
+ "results": {}
1310
+ },
1311
+ "required": [
1312
+ "sessionId",
1313
+ "kind",
1314
+ "at"
1315
+ ],
1316
+ "description": "One event of a dev session."
1317
+ },
1318
+ "DevStartParams": {
1319
+ "type": "object",
1320
+ "properties": {
1321
+ "source": {
1322
+ "$ref": "#/$defs/SourceRef"
1323
+ },
1324
+ "port": {
1325
+ "type": "integer",
1326
+ "minimum": 1,
1327
+ "maximum": 65535
1328
+ }
1329
+ },
1330
+ "required": [
1331
+ "source"
1332
+ ]
1333
+ },
1334
+ "DevStartResult": {
1335
+ "type": "object",
1336
+ "properties": {
1337
+ "url": {
1338
+ "type": "string",
1339
+ "minLength": 1
1340
+ },
1341
+ "port": {
1342
+ "type": "integer",
1343
+ "minimum": 1,
1344
+ "maximum": 65535
1345
+ },
1346
+ "sessionId": {
1347
+ "type": "string",
1348
+ "minLength": 1
1349
+ }
1350
+ },
1351
+ "required": [
1352
+ "url",
1353
+ "port",
1354
+ "sessionId"
1355
+ ],
1356
+ "description": "A running dev session."
1357
+ },
1358
+ "DevStopParams": {
1359
+ "type": "object",
1360
+ "properties": {
1361
+ "sessionId": {
1362
+ "type": "string",
1363
+ "minLength": 1
1364
+ }
1365
+ },
1366
+ "required": [
1367
+ "sessionId"
1368
+ ]
1369
+ },
1370
+ "DevStopResult": {
1371
+ "type": "object",
1372
+ "properties": {}
1373
+ },
1374
+ "Diagnostic": {
1375
+ "type": "object",
1376
+ "properties": {
1377
+ "code": {
1378
+ "$ref": "#/$defs/DiagnosticCode"
1379
+ },
1380
+ "severity": {
1381
+ "$ref": "#/$defs/DiagnosticSeverity"
1382
+ },
1383
+ "message": {
1384
+ "type": "string"
1385
+ },
1386
+ "hint": {
1387
+ "type": "string"
1388
+ },
1389
+ "fix": {
1390
+ "$ref": "#/$defs/DiagnosticFix"
1391
+ },
1392
+ "location": {
1393
+ "$ref": "#/$defs/DiagnosticLocation"
1394
+ },
1395
+ "phase": {
1396
+ "$ref": "#/$defs/DiagnosticPhase"
1397
+ },
1398
+ "docs": {
1399
+ "type": "string",
1400
+ "format": "uri"
1401
+ },
1402
+ "count": {
1403
+ "type": "integer",
1404
+ "minimum": 1,
1405
+ "maximum": 9007199254740991
1406
+ }
1407
+ },
1408
+ "required": [
1409
+ "code",
1410
+ "severity",
1411
+ "message",
1412
+ "phase",
1413
+ "docs"
1414
+ ],
1415
+ "description": "One diagnostic: a stable code, severity, message, hint, fix and docs link."
1416
+ },
1417
+ "DiagnosticCode": {
1418
+ "type": "string",
1419
+ "pattern": "^MOSTRA_[A-Z0-9]+_[A-Z0-9_]+$",
1420
+ "description": "Stable diagnostic code: MOSTRA_<AREA>_<NAME>."
1421
+ },
1422
+ "DiagnosticFix": {
1423
+ "type": "object",
1424
+ "properties": {
1425
+ "kind": {
1426
+ "type": "string",
1427
+ "enum": [
1428
+ "replace",
1429
+ "insert",
1430
+ "delete",
1431
+ "command"
1432
+ ]
1433
+ },
1434
+ "file": {
1435
+ "type": "string"
1436
+ },
1437
+ "range": {
1438
+ "readOnly": true,
1439
+ "type": "array",
1440
+ "prefixItems": [
1441
+ {
1442
+ "type": "integer",
1443
+ "minimum": 1,
1444
+ "maximum": 9007199254740991
1445
+ },
1446
+ {
1447
+ "type": "integer",
1448
+ "minimum": 1,
1449
+ "maximum": 9007199254740991
1450
+ },
1451
+ {
1452
+ "type": "integer",
1453
+ "minimum": 1,
1454
+ "maximum": 9007199254740991
1455
+ },
1456
+ {
1457
+ "type": "integer",
1458
+ "minimum": 1,
1459
+ "maximum": 9007199254740991
1460
+ }
1461
+ ],
1462
+ "items": false,
1463
+ "minItems": 4,
1464
+ "maxItems": 4
1465
+ },
1466
+ "text": {
1467
+ "type": "string"
1468
+ },
1469
+ "command": {
1470
+ "type": "string"
1471
+ }
1472
+ },
1473
+ "required": [
1474
+ "kind"
1475
+ ],
1476
+ "description": "A machine-applicable fix; range is [startLine, startColumn, endLine, endColumn], 1-based, end exclusive."
1477
+ },
1478
+ "DiagnosticLocation": {
1479
+ "anyOf": [
1480
+ {
1481
+ "type": "object",
1482
+ "properties": {
1483
+ "file": {
1484
+ "type": "string"
1485
+ },
1486
+ "line": {
1487
+ "type": "integer",
1488
+ "minimum": 1,
1489
+ "maximum": 9007199254740991
1490
+ },
1491
+ "column": {
1492
+ "type": "integer",
1493
+ "minimum": 1,
1494
+ "maximum": 9007199254740991
1495
+ }
1496
+ },
1497
+ "required": [
1498
+ "file",
1499
+ "line",
1500
+ "column"
1501
+ ]
1502
+ },
1503
+ {
1504
+ "type": "object",
1505
+ "properties": {
1506
+ "viewport": {
1507
+ "type": "string"
1508
+ },
1509
+ "selector": {
1510
+ "type": "string"
1511
+ }
1512
+ },
1513
+ "required": [
1514
+ "viewport"
1515
+ ]
1516
+ }
1517
+ ],
1518
+ "description": "A 1-based source position, or a place in a rendered viewport."
1519
+ },
1520
+ "DiagnosticPhase": {
1521
+ "type": "string",
1522
+ "enum": [
1523
+ "manifest",
1524
+ "compile",
1525
+ "lint",
1526
+ "runtime",
1527
+ "console",
1528
+ "network",
1529
+ "a11y",
1530
+ "visual",
1531
+ "smoke",
1532
+ "regression",
1533
+ "contract",
1534
+ "publish",
1535
+ "host",
1536
+ "hygiene",
1537
+ "platform"
1538
+ ],
1539
+ "description": "The stage of work that produced the diagnostic."
1540
+ },
1541
+ "DiagnosticSeverity": {
1542
+ "type": "string",
1543
+ "enum": [
1544
+ "error",
1545
+ "warning",
1546
+ "hint"
1547
+ ],
1548
+ "description": "How bad it is: error only for definite failures."
1549
+ },
1550
+ "DocumentRevision": {
1551
+ "type": "string",
1552
+ "pattern": "^(0|[1-9][0-9]{0,15})$",
1553
+ "description": "A draft's or artifact state's revision: a non-negative decimal integer string."
1554
+ },
1555
+ "DocumentSnapshot": {
1556
+ "type": "object",
1557
+ "properties": {
1558
+ "revision": {
1559
+ "$ref": "#/$defs/DocumentRevision"
1560
+ },
1561
+ "epoch": {
1562
+ "type": "integer",
1563
+ "minimum": 1,
1564
+ "maximum": 9007199254740991
1565
+ },
1566
+ "fields": {
1567
+ "type": "object",
1568
+ "propertyNames": {
1569
+ "type": "string"
1570
+ },
1571
+ "additionalProperties": {
1572
+ "$ref": "#/$defs/FieldState"
1573
+ }
1574
+ }
1575
+ },
1576
+ "required": [
1577
+ "revision",
1578
+ "epoch",
1579
+ "fields"
1580
+ ],
1581
+ "description": "A document's revision, epoch and fields, as a page loads it."
1582
+ },
1583
+ "DraftMirror": {
1584
+ "type": "object",
1585
+ "properties": {
1586
+ "kind": {
1587
+ "type": "string",
1588
+ "const": "draft"
1589
+ },
1590
+ "artifactId": {
1591
+ "$ref": "#/$defs/ArtifactId"
1592
+ },
1593
+ "viewerId": {
1594
+ "$ref": "#/$defs/ViewerId"
1595
+ },
1596
+ "epoch": {
1597
+ "type": "integer",
1598
+ "minimum": 1,
1599
+ "maximum": 9007199254740991
1600
+ },
1601
+ "revision": {
1602
+ "$ref": "#/$defs/DocumentRevision"
1603
+ },
1604
+ "fields": {
1605
+ "type": "object",
1606
+ "propertyNames": {
1607
+ "type": "string"
1608
+ },
1609
+ "additionalProperties": {}
1610
+ }
1611
+ },
1612
+ "required": [
1613
+ "kind",
1614
+ "artifactId",
1615
+ "viewerId",
1616
+ "epoch",
1617
+ "revision",
1618
+ "fields"
1619
+ ],
1620
+ "description": "A viewer's draft mirrored to a host: always kind draft, never a submission."
1621
+ },
1622
+ "Duration": {
1623
+ "type": "string",
1624
+ "pattern": "^[1-9][0-9]{0,8}[smhd]$",
1625
+ "description": "A duration: a positive whole number and s, m, h or d, such as 30m, 24h or 7d."
1626
+ },
1627
+ "EventFilter": {
1628
+ "type": "object",
1629
+ "properties": {
1630
+ "artifacts": {
1631
+ "readOnly": true,
1632
+ "maxItems": 1000,
1633
+ "type": "array",
1634
+ "items": {
1635
+ "$ref": "#/$defs/ArtifactId"
1636
+ }
1637
+ },
1638
+ "types": {
1639
+ "readOnly": true,
1640
+ "maxItems": 100,
1641
+ "type": "array",
1642
+ "items": {
1643
+ "$ref": "#/$defs/EventTypePattern"
1644
+ }
1645
+ }
1646
+ },
1647
+ "description": "Which events a reader wants: these artifacts' and these types (patterns allowed)."
1648
+ },
1649
+ "EventRecord": {
1650
+ "type": "object",
1651
+ "properties": {
1652
+ "cursor": {
1653
+ "$ref": "#/$defs/Cursor"
1654
+ },
1655
+ "artifactId": {
1656
+ "anyOf": [
1657
+ {
1658
+ "$ref": "#/$defs/ArtifactId"
1659
+ },
1660
+ {
1661
+ "type": "null"
1662
+ }
1663
+ ]
1664
+ },
1665
+ "seq": {
1666
+ "anyOf": [
1667
+ {
1668
+ "type": "integer",
1669
+ "minimum": 1,
1670
+ "maximum": 9007199254740991
1671
+ },
1672
+ {
1673
+ "type": "null"
1674
+ }
1675
+ ]
1676
+ },
1677
+ "type": {
1678
+ "type": "string"
1679
+ },
1680
+ "at": {
1681
+ "type": "string",
1682
+ "format": "date-time",
1683
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
1684
+ },
1685
+ "actor": {
1686
+ "$ref": "#/$defs/Actor"
1687
+ },
1688
+ "causation": {
1689
+ "type": "object",
1690
+ "propertyNames": {
1691
+ "type": "string"
1692
+ },
1693
+ "additionalProperties": {
1694
+ "type": "string"
1695
+ }
1696
+ },
1697
+ "payload": {
1698
+ "type": "object",
1699
+ "propertyNames": {
1700
+ "type": "string"
1701
+ },
1702
+ "additionalProperties": {}
1703
+ }
1704
+ },
1705
+ "required": [
1706
+ "cursor",
1707
+ "artifactId",
1708
+ "seq",
1709
+ "type",
1710
+ "at",
1711
+ "actor",
1712
+ "payload"
1713
+ ],
1714
+ "description": "One durable event: cursor, artifact, per-artifact sequence, type, time, actor, payload."
1715
+ },
1716
+ "EventTypePattern": {
1717
+ "type": "string",
1718
+ "pattern": "^[a-z][a-zA-Z0-9_-]*(\\.[a-zA-Z0-9_-]+)*(\\.\\*)?$",
1719
+ "description": "An event type (submission.created) or a family of them (submission.*)."
1720
+ },
1721
+ "EventsAckParams": {
1722
+ "type": "object",
1723
+ "properties": {
1724
+ "subscriptionId": {
1725
+ "type": "string",
1726
+ "minLength": 1
1727
+ },
1728
+ "cursor": {
1729
+ "$ref": "#/$defs/Cursor"
1730
+ },
1731
+ "requestId": {
1732
+ "type": "string",
1733
+ "minLength": 1
1734
+ }
1735
+ },
1736
+ "required": [
1737
+ "subscriptionId",
1738
+ "cursor"
1739
+ ]
1740
+ },
1741
+ "EventsAckResult": {
1742
+ "type": "object",
1743
+ "properties": {}
1744
+ },
1745
+ "EventsNotifyParams": {
1746
+ "type": "object",
1747
+ "properties": {
1748
+ "subscriptionId": {
1749
+ "type": "string",
1750
+ "minLength": 1
1751
+ },
1752
+ "events": {
1753
+ "readOnly": true,
1754
+ "type": "array",
1755
+ "items": {
1756
+ "$ref": "#/$defs/EventRecord"
1757
+ }
1758
+ },
1759
+ "cursor": {
1760
+ "$ref": "#/$defs/Cursor"
1761
+ },
1762
+ "compacted": {
1763
+ "$ref": "#/$defs/Diagnostic"
1764
+ }
1765
+ },
1766
+ "required": [
1767
+ "subscriptionId",
1768
+ "events",
1769
+ "cursor"
1770
+ ],
1771
+ "description": "A subscription's next events, in cursor order, and the cursor examined up to."
1772
+ },
1773
+ "EventsReadParams": {
1774
+ "type": "object",
1775
+ "properties": {
1776
+ "filter": {
1777
+ "$ref": "#/$defs/EventFilter"
1778
+ },
1779
+ "after": {
1780
+ "$ref": "#/$defs/Cursor"
1781
+ },
1782
+ "limit": {
1783
+ "type": "integer",
1784
+ "minimum": 1,
1785
+ "maximum": 1000
1786
+ },
1787
+ "acceptCompacted": {
1788
+ "type": "boolean"
1789
+ }
1790
+ }
1791
+ },
1792
+ "EventsReadResult": {
1793
+ "type": "object",
1794
+ "properties": {
1795
+ "events": {
1796
+ "readOnly": true,
1797
+ "type": "array",
1798
+ "items": {
1799
+ "$ref": "#/$defs/EventRecord"
1800
+ }
1801
+ },
1802
+ "cursor": {
1803
+ "$ref": "#/$defs/Cursor"
1804
+ },
1805
+ "compacted": {
1806
+ "$ref": "#/$defs/Diagnostic"
1807
+ }
1808
+ },
1809
+ "required": [
1810
+ "events",
1811
+ "cursor"
1812
+ ]
1813
+ },
1814
+ "EventsSubscribeParams": {
1815
+ "type": "object",
1816
+ "properties": {
1817
+ "filter": {
1818
+ "$ref": "#/$defs/EventFilter"
1819
+ },
1820
+ "after": {
1821
+ "$ref": "#/$defs/Cursor"
1822
+ },
1823
+ "name": {
1824
+ "type": "string",
1825
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]{0,127}$"
1826
+ }
1827
+ }
1828
+ },
1829
+ "EventsSubscribeResult": {
1830
+ "type": "object",
1831
+ "properties": {
1832
+ "subscriptionId": {
1833
+ "type": "string",
1834
+ "minLength": 1
1835
+ },
1836
+ "cursor": {
1837
+ "$ref": "#/$defs/Cursor"
1838
+ }
1839
+ },
1840
+ "required": [
1841
+ "subscriptionId",
1842
+ "cursor"
1843
+ ]
1844
+ },
1845
+ "EventsUnsubscribeParams": {
1846
+ "type": "object",
1847
+ "properties": {
1848
+ "subscriptionId": {
1849
+ "type": "string",
1850
+ "minLength": 1
1851
+ }
1852
+ },
1853
+ "required": [
1854
+ "subscriptionId"
1855
+ ]
1856
+ },
1857
+ "EventsUnsubscribeResult": {
1858
+ "type": "object",
1859
+ "properties": {}
1860
+ },
1861
+ "FieldConflict": {
1862
+ "type": "object",
1863
+ "properties": {
1864
+ "id": {
1865
+ "type": "string"
1866
+ },
1867
+ "revision": {
1868
+ "$ref": "#/$defs/DocumentRevision"
1869
+ },
1870
+ "value": {},
1871
+ "deleted": {
1872
+ "type": "boolean",
1873
+ "const": true
1874
+ },
1875
+ "updatedBy": {
1876
+ "$ref": "#/$defs/Actor"
1877
+ },
1878
+ "updatedAt": {
1879
+ "type": "string",
1880
+ "format": "date-time",
1881
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
1882
+ }
1883
+ },
1884
+ "required": [
1885
+ "id",
1886
+ "revision"
1887
+ ],
1888
+ "description": "A field op not applied because the field changed after the base revision."
1889
+ },
1890
+ "FieldOp": {
1891
+ "type": "object",
1892
+ "properties": {
1893
+ "id": {
1894
+ "type": "string",
1895
+ "minLength": 1,
1896
+ "maxLength": 256
1897
+ },
1898
+ "value": {},
1899
+ "delete": {
1900
+ "type": "boolean",
1901
+ "const": true
1902
+ },
1903
+ "label": {
1904
+ "type": "string",
1905
+ "maxLength": 1024
1906
+ },
1907
+ "required": {
1908
+ "type": "boolean"
1909
+ },
1910
+ "sensitive": {
1911
+ "type": "boolean"
1912
+ }
1913
+ },
1914
+ "required": [
1915
+ "id"
1916
+ ],
1917
+ "description": "One change to one field: a value or a delete, with optional label, required and sensitive."
1918
+ },
1919
+ "FieldState": {
1920
+ "type": "object",
1921
+ "properties": {
1922
+ "value": {},
1923
+ "revision": {
1924
+ "$ref": "#/$defs/DocumentRevision"
1925
+ },
1926
+ "updatedBy": {
1927
+ "$ref": "#/$defs/Actor"
1928
+ },
1929
+ "updatedAt": {
1930
+ "type": "string",
1931
+ "format": "date-time",
1932
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
1933
+ },
1934
+ "label": {
1935
+ "type": "string"
1936
+ },
1937
+ "required": {
1938
+ "type": "boolean"
1939
+ },
1940
+ "sensitive": {
1941
+ "type": "boolean"
1942
+ }
1943
+ },
1944
+ "required": [
1945
+ "value",
1946
+ "revision",
1947
+ "updatedAt"
1948
+ ],
1949
+ "description": "A field's current value, the revision that wrote it, who wrote it and when."
1950
+ },
1951
+ "FieldsRequest": {
1952
+ "type": "object",
1953
+ "properties": {
1954
+ "mutationId": {
1955
+ "$ref": "#/$defs/MutationId"
1956
+ },
1957
+ "scope": {
1958
+ "type": "string",
1959
+ "enum": [
1960
+ "viewer",
1961
+ "artifact"
1962
+ ]
1963
+ },
1964
+ "baseRevision": {
1965
+ "$ref": "#/$defs/DocumentRevision"
1966
+ },
1967
+ "viewId": {
1968
+ "$ref": "#/$defs/ViewId"
1969
+ },
1970
+ "ops": {
1971
+ "readOnly": true,
1972
+ "minItems": 1,
1973
+ "maxItems": 1000,
1974
+ "type": "array",
1975
+ "items": {
1976
+ "$ref": "#/$defs/FieldOp"
1977
+ }
1978
+ }
1979
+ },
1980
+ "required": [
1981
+ "mutationId",
1982
+ "scope",
1983
+ "baseRevision",
1984
+ "viewId",
1985
+ "ops"
1986
+ ],
1987
+ "description": "A browser mutation: its ID, scope, base revision, view and field ops."
1988
+ },
1989
+ "FollowRequest": {
1990
+ "type": "object",
1991
+ "properties": {
1992
+ "follow": {
1993
+ "type": "boolean"
1994
+ }
1995
+ },
1996
+ "required": [
1997
+ "follow"
1998
+ ],
1999
+ "description": "Whether the viewer follows the artifact's new versions."
2000
+ },
2001
+ "FrameTicket": {
2002
+ "type": "object",
2003
+ "properties": {
2004
+ "artifactId": {
2005
+ "$ref": "#/$defs/ArtifactId"
2006
+ },
2007
+ "viewId": {
2008
+ "$ref": "#/$defs/ViewId"
2009
+ },
2010
+ "version": {
2011
+ "$ref": "#/$defs/VersionRef"
2012
+ },
2013
+ "latest": {
2014
+ "$ref": "#/$defs/VersionRef"
2015
+ },
2016
+ "policy": {
2017
+ "$ref": "#/$defs/SubmissionPolicy"
2018
+ },
2019
+ "submitChannels": {
2020
+ "readOnly": true,
2021
+ "minItems": 1,
2022
+ "maxItems": 2,
2023
+ "type": "array",
2024
+ "items": {
2025
+ "$ref": "#/$defs/SubmitChannel"
2026
+ }
2027
+ },
2028
+ "controls": {
2029
+ "readOnly": true,
2030
+ "maxItems": 32,
2031
+ "type": "array",
2032
+ "items": {
2033
+ "$ref": "#/$defs/TrustedControl"
2034
+ }
2035
+ },
2036
+ "target": {
2037
+ "type": "string",
2038
+ "enum": [
2039
+ "live",
2040
+ "static",
2041
+ "mcp-app",
2042
+ "verify"
2043
+ ]
2044
+ },
2045
+ "src": {
2046
+ "type": "string",
2047
+ "minLength": 1
2048
+ },
2049
+ "artifactOrigin": {
2050
+ "type": "string",
2051
+ "minLength": 1
2052
+ },
2053
+ "follow": {
2054
+ "type": "boolean"
2055
+ },
2056
+ "pinned": {
2057
+ "type": "boolean"
2058
+ },
2059
+ "serverParked": {
2060
+ "type": "boolean",
2061
+ "const": true
2062
+ },
2063
+ "devPreview": {
2064
+ "type": "boolean",
2065
+ "const": true
2066
+ }
2067
+ },
2068
+ "required": [
2069
+ "artifactId",
2070
+ "viewId",
2071
+ "version",
2072
+ "latest",
2073
+ "policy",
2074
+ "submitChannels",
2075
+ "controls",
2076
+ "target",
2077
+ "src",
2078
+ "artifactOrigin",
2079
+ "follow",
2080
+ "pinned"
2081
+ ],
2082
+ "description": "A frame ticket: the view it opens, where to load it, and the view's controls."
2083
+ },
2084
+ "GatewayStatus": {
2085
+ "type": "object",
2086
+ "properties": {
2087
+ "bind": {
2088
+ "type": "string"
2089
+ },
2090
+ "shell": {
2091
+ "type": "string"
2092
+ },
2093
+ "artifacts": {
2094
+ "readOnly": true,
2095
+ "type": "array",
2096
+ "items": {
2097
+ "type": "object",
2098
+ "properties": {
2099
+ "artifactId": {
2100
+ "type": "string"
2101
+ },
2102
+ "origin": {
2103
+ "type": "string"
2104
+ }
2105
+ },
2106
+ "required": [
2107
+ "artifactId",
2108
+ "origin"
2109
+ ]
2110
+ }
2111
+ }
2112
+ },
2113
+ "required": [
2114
+ "bind",
2115
+ "shell",
2116
+ "artifacts"
2117
+ ],
2118
+ "description": "Where the gateway listens."
2119
+ },
2120
+ "GcRunParams": {
2121
+ "type": "object",
2122
+ "properties": {
2123
+ "dryRun": {
2124
+ "type": "boolean"
2125
+ },
2126
+ "compactEvents": {
2127
+ "type": "object",
2128
+ "properties": {
2129
+ "before": {
2130
+ "type": "string",
2131
+ "pattern": "^[0-9]+$"
2132
+ }
2133
+ },
2134
+ "required": [
2135
+ "before"
2136
+ ]
2137
+ }
2138
+ }
2139
+ },
2140
+ "GcRunResult": {
2141
+ "type": "object",
2142
+ "properties": {
2143
+ "dryRun": {
2144
+ "type": "boolean"
2145
+ },
2146
+ "versions": {
2147
+ "readOnly": true,
2148
+ "type": "array",
2149
+ "items": {
2150
+ "type": "object",
2151
+ "properties": {
2152
+ "artifactId": {
2153
+ "$ref": "#/$defs/ArtifactId"
2154
+ },
2155
+ "versionId": {
2156
+ "$ref": "#/$defs/VersionId"
2157
+ },
2158
+ "number": {
2159
+ "type": "integer",
2160
+ "minimum": 1,
2161
+ "maximum": 9007199254740991
2162
+ },
2163
+ "bytes": {
2164
+ "type": "integer",
2165
+ "minimum": 0,
2166
+ "maximum": 9007199254740991
2167
+ }
2168
+ },
2169
+ "required": [
2170
+ "artifactId",
2171
+ "versionId",
2172
+ "number",
2173
+ "bytes"
2174
+ ]
2175
+ }
2176
+ },
2177
+ "snapshots": {
2178
+ "type": "object",
2179
+ "properties": {
2180
+ "count": {
2181
+ "type": "integer",
2182
+ "minimum": 0,
2183
+ "maximum": 9007199254740991
2184
+ },
2185
+ "bytes": {
2186
+ "type": "integer",
2187
+ "minimum": 0,
2188
+ "maximum": 9007199254740991
2189
+ }
2190
+ },
2191
+ "required": [
2192
+ "count",
2193
+ "bytes"
2194
+ ]
2195
+ },
2196
+ "lockLayouts": {
2197
+ "type": "object",
2198
+ "properties": {
2199
+ "count": {
2200
+ "type": "integer",
2201
+ "minimum": 0,
2202
+ "maximum": 9007199254740991
2203
+ },
2204
+ "bytes": {
2205
+ "type": "integer",
2206
+ "minimum": 0,
2207
+ "maximum": 9007199254740991
2208
+ }
2209
+ },
2210
+ "required": [
2211
+ "count",
2212
+ "bytes"
2213
+ ]
2214
+ },
2215
+ "storePackages": {
2216
+ "type": "object",
2217
+ "properties": {
2218
+ "count": {
2219
+ "type": "integer",
2220
+ "minimum": 0,
2221
+ "maximum": 9007199254740991
2222
+ },
2223
+ "bytes": {
2224
+ "type": "integer",
2225
+ "minimum": 0,
2226
+ "maximum": 9007199254740991
2227
+ }
2228
+ },
2229
+ "required": [
2230
+ "count",
2231
+ "bytes"
2232
+ ]
2233
+ },
2234
+ "caches": {
2235
+ "type": "object",
2236
+ "properties": {
2237
+ "count": {
2238
+ "type": "integer",
2239
+ "minimum": 0,
2240
+ "maximum": 9007199254740991
2241
+ },
2242
+ "bytes": {
2243
+ "type": "integer",
2244
+ "minimum": 0,
2245
+ "maximum": 9007199254740991
2246
+ }
2247
+ },
2248
+ "required": [
2249
+ "count",
2250
+ "bytes"
2251
+ ]
2252
+ },
2253
+ "bytes": {
2254
+ "type": "integer",
2255
+ "minimum": 0,
2256
+ "maximum": 9007199254740991
2257
+ },
2258
+ "compacted": {
2259
+ "type": "object",
2260
+ "properties": {
2261
+ "artifacts": {
2262
+ "readOnly": true,
2263
+ "type": "array",
2264
+ "items": {
2265
+ "type": "object",
2266
+ "properties": {
2267
+ "artifactId": {
2268
+ "$ref": "#/$defs/ArtifactId"
2269
+ },
2270
+ "removed": {
2271
+ "type": "integer",
2272
+ "minimum": 0,
2273
+ "maximum": 9007199254740991
2274
+ }
2275
+ },
2276
+ "required": [
2277
+ "artifactId",
2278
+ "removed"
2279
+ ]
2280
+ }
2281
+ },
2282
+ "removed": {
2283
+ "type": "integer",
2284
+ "minimum": 0,
2285
+ "maximum": 9007199254740991
2286
+ }
2287
+ },
2288
+ "required": [
2289
+ "artifacts",
2290
+ "removed"
2291
+ ]
2292
+ },
2293
+ "warnings": {
2294
+ "readOnly": true,
2295
+ "type": "array",
2296
+ "items": {
2297
+ "$ref": "#/$defs/Diagnostic"
2298
+ }
2299
+ }
2300
+ },
2301
+ "required": [
2302
+ "dryRun",
2303
+ "versions",
2304
+ "snapshots",
2305
+ "lockLayouts",
2306
+ "storePackages",
2307
+ "caches",
2308
+ "bytes"
2309
+ ],
2310
+ "description": "What gc reclaimed."
2311
+ },
2312
+ "HomeConfig": {
2313
+ "type": "object",
2314
+ "properties": {
2315
+ "path": {
2316
+ "type": "string",
2317
+ "minLength": 1
2318
+ },
2319
+ "dependencies": {
2320
+ "$ref": "#/$defs/DependencyPolicy"
2321
+ },
2322
+ "submission": {
2323
+ "$ref": "#/$defs/SubmissionPolicy"
2324
+ },
2325
+ "ports": {
2326
+ "readOnly": true,
2327
+ "maxItems": 32,
2328
+ "type": "array",
2329
+ "items": {
2330
+ "$ref": "#/$defs/PortName"
2331
+ }
2332
+ },
2333
+ "submitChannels": {
2334
+ "readOnly": true,
2335
+ "minItems": 1,
2336
+ "maxItems": 2,
2337
+ "type": "array",
2338
+ "items": {
2339
+ "$ref": "#/$defs/SubmitChannel"
2340
+ }
2341
+ }
2342
+ },
2343
+ "description": "Home settings from a spawning host; path is a check against the instance's home (D84), dependencies the dependency policy (D43), submission the home's policy (D102), ports those the host always provides (D105)."
2344
+ },
2345
+ "InstanceCapabilities": {
2346
+ "type": "object",
2347
+ "properties": {
2348
+ "methods": {
2349
+ "readOnly": true,
2350
+ "type": "array",
2351
+ "items": {
2352
+ "type": "string"
2353
+ }
2354
+ },
2355
+ "notifications": {
2356
+ "readOnly": true,
2357
+ "type": "array",
2358
+ "items": {
2359
+ "type": "string"
2360
+ }
2361
+ },
2362
+ "ports": {
2363
+ "readOnly": true,
2364
+ "type": "array",
2365
+ "items": {
2366
+ "$ref": "#/$defs/PortName"
2367
+ }
2368
+ }
2369
+ },
2370
+ "required": [
2371
+ "methods",
2372
+ "notifications",
2373
+ "ports"
2374
+ ],
2375
+ "description": "What the instance offers: methods, notifications and supported ports."
2376
+ },
2377
+ "InstanceCheckParams": {
2378
+ "type": "object",
2379
+ "properties": {
2380
+ "deep": {
2381
+ "type": "boolean"
2382
+ }
2383
+ }
2384
+ },
2385
+ "InstanceCheckResult": {
2386
+ "type": "object",
2387
+ "properties": {
2388
+ "checks": {
2389
+ "readOnly": true,
2390
+ "type": "array",
2391
+ "items": {
2392
+ "type": "object",
2393
+ "properties": {
2394
+ "name": {
2395
+ "type": "string",
2396
+ "minLength": 1
2397
+ },
2398
+ "status": {
2399
+ "type": "string",
2400
+ "enum": [
2401
+ "ok",
2402
+ "warning",
2403
+ "error"
2404
+ ]
2405
+ },
2406
+ "diagnostic": {
2407
+ "$ref": "#/$defs/Diagnostic"
2408
+ }
2409
+ },
2410
+ "required": [
2411
+ "name",
2412
+ "status"
2413
+ ]
2414
+ }
2415
+ }
2416
+ },
2417
+ "required": [
2418
+ "checks"
2419
+ ],
2420
+ "description": "The supervisor's own checks of its home."
2421
+ },
2422
+ "InstanceInfo": {
2423
+ "type": "object",
2424
+ "properties": {
2425
+ "version": {
2426
+ "type": "string"
2427
+ },
2428
+ "home": {
2429
+ "type": "string"
2430
+ },
2431
+ "platform": {
2432
+ "type": "string"
2433
+ },
2434
+ "pid": {
2435
+ "type": "integer",
2436
+ "minimum": 1,
2437
+ "maximum": 9007199254740991
2438
+ },
2439
+ "mode": {
2440
+ "type": "string",
2441
+ "enum": [
2442
+ "host",
2443
+ "daemon"
2444
+ ]
2445
+ }
2446
+ },
2447
+ "required": [
2448
+ "version",
2449
+ "home",
2450
+ "platform",
2451
+ "pid",
2452
+ "mode"
2453
+ ],
2454
+ "description": "The instance a client is connected to."
2455
+ },
2456
+ "InstanceStatusParams": {
2457
+ "type": "object",
2458
+ "properties": {}
2459
+ },
2460
+ "InstanceStatusResult": {
2461
+ "type": "object",
2462
+ "properties": {
2463
+ "instance": {
2464
+ "$ref": "#/$defs/InstanceInfo"
2465
+ },
2466
+ "startedAt": {
2467
+ "type": "string",
2468
+ "format": "date-time",
2469
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
2470
+ },
2471
+ "socket": {
2472
+ "type": "string"
2473
+ },
2474
+ "connections": {
2475
+ "type": "integer",
2476
+ "minimum": 0,
2477
+ "maximum": 9007199254740991
2478
+ },
2479
+ "processes": {
2480
+ "readOnly": true,
2481
+ "type": "array",
2482
+ "items": {
2483
+ "$ref": "#/$defs/ChildProcessStatus"
2484
+ }
2485
+ },
2486
+ "gateway": {
2487
+ "$ref": "#/$defs/GatewayStatus"
2488
+ },
2489
+ "deliveries": {
2490
+ "readOnly": true,
2491
+ "type": "array",
2492
+ "items": {
2493
+ "$ref": "#/$defs/DeliveryCounts"
2494
+ }
2495
+ },
2496
+ "workers": {
2497
+ "readOnly": true,
2498
+ "type": "array",
2499
+ "items": {
2500
+ "$ref": "#/$defs/WorkerStatus"
2501
+ }
2502
+ },
2503
+ "idleExitAt": {
2504
+ "type": "string"
2505
+ }
2506
+ },
2507
+ "required": [
2508
+ "instance",
2509
+ "startedAt",
2510
+ "socket",
2511
+ "connections",
2512
+ "processes"
2513
+ ]
2514
+ },
2515
+ "JsonRpcErrorObject": {
2516
+ "type": "object",
2517
+ "properties": {
2518
+ "code": {
2519
+ "type": "integer",
2520
+ "minimum": -9007199254740991,
2521
+ "maximum": 9007199254740991
2522
+ },
2523
+ "message": {
2524
+ "type": "string"
2525
+ },
2526
+ "data": {}
2527
+ },
2528
+ "required": [
2529
+ "code",
2530
+ "message"
2531
+ ],
2532
+ "description": "The error of a failed JSON-RPC 2.0 response; Mostra puts the diagnostic in data."
2533
+ },
2534
+ "JsonRpcFailure": {
2535
+ "type": "object",
2536
+ "properties": {
2537
+ "jsonrpc": {
2538
+ "type": "string",
2539
+ "const": "2.0"
2540
+ },
2541
+ "id": {
2542
+ "type": [
2543
+ "string",
2544
+ "number",
2545
+ "null"
2546
+ ]
2547
+ },
2548
+ "error": {
2549
+ "$ref": "#/$defs/JsonRpcErrorObject"
2550
+ }
2551
+ },
2552
+ "required": [
2553
+ "jsonrpc",
2554
+ "id",
2555
+ "error"
2556
+ ],
2557
+ "description": "A failed JSON-RPC 2.0 response; id is null when the request's id was unreadable."
2558
+ },
2559
+ "JsonRpcNotification": {
2560
+ "type": "object",
2561
+ "properties": {
2562
+ "jsonrpc": {
2563
+ "type": "string",
2564
+ "const": "2.0"
2565
+ },
2566
+ "method": {
2567
+ "type": "string"
2568
+ },
2569
+ "params": {
2570
+ "anyOf": [
2571
+ {
2572
+ "type": "object",
2573
+ "propertyNames": {
2574
+ "type": "string"
2575
+ },
2576
+ "additionalProperties": {}
2577
+ },
2578
+ {
2579
+ "readOnly": true,
2580
+ "type": "array",
2581
+ "items": {}
2582
+ }
2583
+ ]
2584
+ }
2585
+ },
2586
+ "required": [
2587
+ "jsonrpc",
2588
+ "method"
2589
+ ],
2590
+ "description": "A JSON-RPC 2.0 notification: a request without an id, never answered."
2591
+ },
2592
+ "JsonRpcRequest": {
2593
+ "type": "object",
2594
+ "properties": {
2595
+ "jsonrpc": {
2596
+ "type": "string",
2597
+ "const": "2.0"
2598
+ },
2599
+ "id": {
2600
+ "type": [
2601
+ "string",
2602
+ "number"
2603
+ ]
2604
+ },
2605
+ "method": {
2606
+ "type": "string"
2607
+ },
2608
+ "params": {
2609
+ "anyOf": [
2610
+ {
2611
+ "type": "object",
2612
+ "propertyNames": {
2613
+ "type": "string"
2614
+ },
2615
+ "additionalProperties": {}
2616
+ },
2617
+ {
2618
+ "readOnly": true,
2619
+ "type": "array",
2620
+ "items": {}
2621
+ }
2622
+ ]
2623
+ }
2624
+ },
2625
+ "required": [
2626
+ "jsonrpc",
2627
+ "id",
2628
+ "method"
2629
+ ],
2630
+ "description": "A JSON-RPC 2.0 request: answered by a response with the same id."
2631
+ },
2632
+ "JsonRpcSuccess": {
2633
+ "type": "object",
2634
+ "properties": {
2635
+ "jsonrpc": {
2636
+ "type": "string",
2637
+ "const": "2.0"
2638
+ },
2639
+ "id": {
2640
+ "type": [
2641
+ "string",
2642
+ "number"
2643
+ ]
2644
+ },
2645
+ "result": {}
2646
+ },
2647
+ "required": [
2648
+ "jsonrpc",
2649
+ "id",
2650
+ "result"
2651
+ ],
2652
+ "description": "A successful JSON-RPC 2.0 response."
2653
+ },
2654
+ "LivePushParams": {
2655
+ "type": "object",
2656
+ "properties": {
2657
+ "artifact": {
2658
+ "$ref": "#/$defs/ArtifactRef"
2659
+ },
2660
+ "key": {
2661
+ "type": "string",
2662
+ "pattern": "^[A-Za-z_$][A-Za-z0-9_$]{0,127}$"
2663
+ },
2664
+ "value": {},
2665
+ "mode": {
2666
+ "type": "string",
2667
+ "enum": [
2668
+ "replace",
2669
+ "append"
2670
+ ]
2671
+ },
2672
+ "requestId": {
2673
+ "type": "string",
2674
+ "minLength": 1
2675
+ }
2676
+ },
2677
+ "required": [
2678
+ "artifact",
2679
+ "key",
2680
+ "value"
2681
+ ],
2682
+ "description": "A value pushed into an artifact's live source."
2683
+ },
2684
+ "LivePushResult": {
2685
+ "type": "object",
2686
+ "properties": {
2687
+ "revision": {
2688
+ "type": "string"
2689
+ }
2690
+ },
2691
+ "required": [
2692
+ "revision"
2693
+ ],
2694
+ "description": "The pushed value's revision."
2695
+ },
2696
+ "LiveRequest": {
2697
+ "type": "object",
2698
+ "properties": {
2699
+ "viewId": {
2700
+ "$ref": "#/$defs/ViewId"
2701
+ },
2702
+ "keys": {
2703
+ "readOnly": true,
2704
+ "maxItems": 256,
2705
+ "type": "array",
2706
+ "items": {
2707
+ "type": "object",
2708
+ "properties": {
2709
+ "key": {
2710
+ "type": "string",
2711
+ "pattern": "^[A-Za-z_$][A-Za-z0-9_$]{0,127}$"
2712
+ },
2713
+ "window": {
2714
+ "type": "integer",
2715
+ "minimum": 1,
2716
+ "maximum": 100000
2717
+ },
2718
+ "refresh": {
2719
+ "type": "boolean"
2720
+ }
2721
+ },
2722
+ "required": [
2723
+ "key"
2724
+ ]
2725
+ }
2726
+ }
2727
+ },
2728
+ "required": [
2729
+ "viewId",
2730
+ "keys"
2731
+ ],
2732
+ "description": "Live sources a page reads and keeps running: keys and append windows."
2733
+ },
2734
+ "MostraInitializeParams": {
2735
+ "type": "object",
2736
+ "properties": {
2737
+ "client": {
2738
+ "$ref": "#/$defs/ClientInfo"
2739
+ },
2740
+ "revisions": {
2741
+ "readOnly": true,
2742
+ "type": "array",
2743
+ "items": {
2744
+ "type": "string"
2745
+ }
2746
+ },
2747
+ "capabilities": {
2748
+ "$ref": "#/$defs/ClientCapabilities"
2749
+ },
2750
+ "ports": {
2751
+ "readOnly": true,
2752
+ "type": "array",
2753
+ "items": {
2754
+ "$ref": "#/$defs/PortName"
2755
+ }
2756
+ },
2757
+ "home": {
2758
+ "$ref": "#/$defs/HomeConfig"
2759
+ }
2760
+ },
2761
+ "required": [
2762
+ "client",
2763
+ "revisions",
2764
+ "capabilities",
2765
+ "ports"
2766
+ ]
2767
+ },
2768
+ "MostraInitializeResult": {
2769
+ "type": "object",
2770
+ "properties": {
2771
+ "revision": {
2772
+ "$ref": "#/$defs/Revision"
2773
+ },
2774
+ "instance": {
2775
+ "$ref": "#/$defs/InstanceInfo"
2776
+ },
2777
+ "capabilities": {
2778
+ "$ref": "#/$defs/InstanceCapabilities"
2779
+ },
2780
+ "warnings": {
2781
+ "readOnly": true,
2782
+ "type": "array",
2783
+ "items": {
2784
+ "$ref": "#/$defs/Diagnostic"
2785
+ }
2786
+ }
2787
+ },
2788
+ "required": [
2789
+ "revision",
2790
+ "instance",
2791
+ "capabilities",
2792
+ "warnings"
2793
+ ]
2794
+ },
2795
+ "MostraShutdownParams": {
2796
+ "type": "object",
2797
+ "properties": {}
2798
+ },
2799
+ "MostraShutdownResult": {
2800
+ "type": "object",
2801
+ "properties": {}
2802
+ },
2803
+ "MutationId": {
2804
+ "type": "string",
2805
+ "pattern": "^mut_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
2806
+ "description": "Mutation ID: \"mut_\" followed by a 26-character ULID."
2807
+ },
2808
+ "MutationResult": {
2809
+ "type": "object",
2810
+ "properties": {
2811
+ "revision": {
2812
+ "$ref": "#/$defs/DocumentRevision"
2813
+ },
2814
+ "applied": {
2815
+ "readOnly": true,
2816
+ "type": "array",
2817
+ "items": {
2818
+ "type": "string"
2819
+ }
2820
+ },
2821
+ "conflicts": {
2822
+ "readOnly": true,
2823
+ "type": "array",
2824
+ "items": {
2825
+ "$ref": "#/$defs/FieldConflict"
2826
+ }
2827
+ }
2828
+ },
2829
+ "required": [
2830
+ "revision",
2831
+ "applied",
2832
+ "conflicts"
2833
+ ],
2834
+ "description": "A mutation's outcome: the revision after it, the applied field IDs, the conflicts."
2835
+ },
2836
+ "OrphanedField": {
2837
+ "type": "object",
2838
+ "properties": {
2839
+ "id": {
2840
+ "type": "string"
2841
+ },
2842
+ "label": {
2843
+ "type": "string"
2844
+ },
2845
+ "value": {},
2846
+ "fromVersion": {
2847
+ "type": "integer",
2848
+ "minimum": 1,
2849
+ "maximum": 9007199254740991
2850
+ }
2851
+ },
2852
+ "required": [
2853
+ "id",
2854
+ "value",
2855
+ "fromVersion"
2856
+ ],
2857
+ "description": "A draft field a version doesn't cover: its ID, label, value and source version."
2858
+ },
2859
+ "PollResult": {
2860
+ "type": "object",
2861
+ "properties": {
2862
+ "cursor": {
2863
+ "$ref": "#/$defs/Cursor"
2864
+ },
2865
+ "events": {
2866
+ "readOnly": true,
2867
+ "type": "array",
2868
+ "items": {
2869
+ "$ref": "#/$defs/EventRecord"
2870
+ }
2871
+ },
2872
+ "snapshot": {
2873
+ "$ref": "#/$defs/StreamSnapshot"
2874
+ },
2875
+ "ephemeral": {
2876
+ "readOnly": true,
2877
+ "type": "array",
2878
+ "items": {
2879
+ "type": "object",
2880
+ "propertyNames": {
2881
+ "type": "string"
2882
+ },
2883
+ "additionalProperties": {}
2884
+ }
2885
+ }
2886
+ },
2887
+ "required": [
2888
+ "cursor",
2889
+ "events"
2890
+ ],
2891
+ "description": "A long-poll answer: the cursor, the events after the asked one, and a snapshot."
2892
+ },
2893
+ "PortName": {
2894
+ "type": "string",
2895
+ "pattern": "^[a-z][a-zA-Z0-9]*$",
2896
+ "description": "A host port name: identity, submissions, drafts, reviews, addressing, trustedControls, capture, secrets, pty, or ai (reserved). Open for later ports."
2897
+ },
2898
+ "PortSecretsGetParams": {
2899
+ "type": "object",
2900
+ "properties": {
2901
+ "artifactId": {
2902
+ "type": "string"
2903
+ },
2904
+ "name": {
2905
+ "type": "string"
2906
+ }
2907
+ },
2908
+ "required": [
2909
+ "artifactId",
2910
+ "name"
2911
+ ],
2912
+ "description": "The artifact and the name of the secret its server code asks for."
2913
+ },
2914
+ "PortSecretsGetResult": {
2915
+ "description": "The secret's value, or null when the host has none.",
2916
+ "type": [
2917
+ "string",
2918
+ "null"
2919
+ ]
2920
+ },
2921
+ "PortSubmissionsDeliverResult": {
2922
+ "anyOf": [
2923
+ {
2924
+ "type": "object",
2925
+ "properties": {
2926
+ "accepted": {
2927
+ "type": "boolean",
2928
+ "const": true
2929
+ }
2930
+ },
2931
+ "required": [
2932
+ "accepted"
2933
+ ]
2934
+ },
2935
+ {
2936
+ "type": "object",
2937
+ "properties": {
2938
+ "accepted": {
2939
+ "type": "boolean",
2940
+ "const": false
2941
+ },
2942
+ "reason": {
2943
+ "type": "string",
2944
+ "minLength": 1
2945
+ },
2946
+ "retry": {
2947
+ "type": "boolean"
2948
+ }
2949
+ },
2950
+ "required": [
2951
+ "accepted",
2952
+ "reason",
2953
+ "retry"
2954
+ ]
2955
+ }
2956
+ ]
2957
+ },
2958
+ "PortTrustedControlsActivatedParams": {
2959
+ "type": "object",
2960
+ "properties": {
2961
+ "artifactId": {
2962
+ "$ref": "#/$defs/ArtifactId"
2963
+ },
2964
+ "control": {
2965
+ "$ref": "#/$defs/TrustedControl"
2966
+ },
2967
+ "viewer": {
2968
+ "$ref": "#/$defs/Viewer"
2969
+ },
2970
+ "viewId": {
2971
+ "$ref": "#/$defs/ViewId"
2972
+ },
2973
+ "detail": {
2974
+ "type": "object",
2975
+ "propertyNames": {
2976
+ "type": "string"
2977
+ },
2978
+ "additionalProperties": {
2979
+ "type": "string"
2980
+ }
2981
+ }
2982
+ },
2983
+ "required": [
2984
+ "artifactId",
2985
+ "control",
2986
+ "viewer",
2987
+ "viewId"
2988
+ ],
2989
+ "description": "A trusted control a person used: the artifact, control, viewer, view and detail."
2990
+ },
2991
+ "PortTrustedControlsPolicyParams": {
2992
+ "type": "object",
2993
+ "properties": {
2994
+ "artifact": {
2995
+ "$ref": "#/$defs/ArtifactSummary"
2996
+ }
2997
+ },
2998
+ "required": [
2999
+ "artifact"
3000
+ ],
3001
+ "description": "The artifact a frame is about to show, for its host's controls policy."
3002
+ },
3003
+ "PublishReceipt": {
3004
+ "type": "object",
3005
+ "properties": {
3006
+ "artifactId": {
3007
+ "$ref": "#/$defs/ArtifactId"
3008
+ },
3009
+ "versionId": {
3010
+ "$ref": "#/$defs/VersionId"
3011
+ },
3012
+ "version": {
3013
+ "type": "integer",
3014
+ "minimum": 1,
3015
+ "maximum": 9007199254740991
3016
+ },
3017
+ "url": {
3018
+ "type": "string"
3019
+ },
3020
+ "tokenId": {
3021
+ "$ref": "#/$defs/TokenId"
3022
+ },
3023
+ "cursor": {
3024
+ "$ref": "#/$defs/Cursor"
3025
+ },
3026
+ "reused": {
3027
+ "type": "boolean"
3028
+ },
3029
+ "forcedDiagnostics": {
3030
+ "readOnly": true,
3031
+ "type": "array",
3032
+ "items": {
3033
+ "type": "string"
3034
+ }
3035
+ }
3036
+ },
3037
+ "required": [
3038
+ "artifactId",
3039
+ "versionId",
3040
+ "version",
3041
+ "cursor",
3042
+ "reused"
3043
+ ],
3044
+ "description": "The receipt of artifact/publish: artifact, version, number, capability URL when served, event cursor, reuse."
3045
+ },
3046
+ "ResultComment": {
3047
+ "type": "object",
3048
+ "properties": {
3049
+ "threadId": {
3050
+ "type": "string"
3051
+ },
3052
+ "status": {
3053
+ "type": "string",
3054
+ "enum": [
3055
+ "open",
3056
+ "resolved"
3057
+ ]
3058
+ },
3059
+ "messages": {
3060
+ "readOnly": true,
3061
+ "type": "array",
3062
+ "items": {
3063
+ "type": "object",
3064
+ "properties": {
3065
+ "author": {
3066
+ "$ref": "#/$defs/Viewer"
3067
+ },
3068
+ "at": {
3069
+ "type": "string",
3070
+ "format": "date-time",
3071
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
3072
+ },
3073
+ "text": {
3074
+ "type": "string"
3075
+ }
3076
+ },
3077
+ "required": [
3078
+ "author",
3079
+ "at",
3080
+ "text"
3081
+ ]
3082
+ }
3083
+ },
3084
+ "anchor": {
3085
+ "type": "object",
3086
+ "properties": {
3087
+ "reviewId": {
3088
+ "type": "string"
3089
+ },
3090
+ "selectors": {
3091
+ "readOnly": true,
3092
+ "type": "array",
3093
+ "items": {}
3094
+ },
3095
+ "rect": {
3096
+ "type": "object",
3097
+ "properties": {
3098
+ "x": {
3099
+ "type": "number"
3100
+ },
3101
+ "y": {
3102
+ "type": "number"
3103
+ },
3104
+ "width": {
3105
+ "type": "number"
3106
+ },
3107
+ "height": {
3108
+ "type": "number"
3109
+ }
3110
+ },
3111
+ "required": [
3112
+ "x",
3113
+ "y",
3114
+ "width",
3115
+ "height"
3116
+ ]
3117
+ },
3118
+ "viewport": {
3119
+ "type": "object",
3120
+ "properties": {
3121
+ "width": {
3122
+ "type": "number"
3123
+ },
3124
+ "height": {
3125
+ "type": "number"
3126
+ },
3127
+ "dpr": {
3128
+ "type": "number"
3129
+ }
3130
+ },
3131
+ "required": [
3132
+ "width",
3133
+ "height",
3134
+ "dpr"
3135
+ ]
3136
+ },
3137
+ "page": {
3138
+ "type": "string"
3139
+ },
3140
+ "candidateId": {
3141
+ "type": "string"
3142
+ },
3143
+ "terminal": {
3144
+ "type": "object",
3145
+ "properties": {
3146
+ "rows": {
3147
+ "readOnly": true,
3148
+ "type": "array",
3149
+ "prefixItems": [
3150
+ {
3151
+ "type": "integer",
3152
+ "minimum": -9007199254740991,
3153
+ "maximum": 9007199254740991
3154
+ },
3155
+ {
3156
+ "type": "integer",
3157
+ "minimum": -9007199254740991,
3158
+ "maximum": 9007199254740991
3159
+ }
3160
+ ],
3161
+ "items": false,
3162
+ "minItems": 2,
3163
+ "maxItems": 2
3164
+ },
3165
+ "cols": {
3166
+ "readOnly": true,
3167
+ "type": "array",
3168
+ "prefixItems": [
3169
+ {
3170
+ "type": "integer",
3171
+ "minimum": -9007199254740991,
3172
+ "maximum": 9007199254740991
3173
+ },
3174
+ {
3175
+ "type": "integer",
3176
+ "minimum": -9007199254740991,
3177
+ "maximum": 9007199254740991
3178
+ }
3179
+ ],
3180
+ "items": false,
3181
+ "minItems": 2,
3182
+ "maxItems": 2
3183
+ },
3184
+ "t": {
3185
+ "type": "number"
3186
+ }
3187
+ },
3188
+ "required": [
3189
+ "rows",
3190
+ "cols"
3191
+ ]
3192
+ },
3193
+ "time": {
3194
+ "type": "number"
3195
+ },
3196
+ "slide": {
3197
+ "type": "object",
3198
+ "properties": {
3199
+ "index": {
3200
+ "type": "integer",
3201
+ "minimum": -9007199254740991,
3202
+ "maximum": 9007199254740991
3203
+ },
3204
+ "step": {
3205
+ "type": "integer",
3206
+ "minimum": -9007199254740991,
3207
+ "maximum": 9007199254740991
3208
+ }
3209
+ },
3210
+ "required": [
3211
+ "index",
3212
+ "step"
3213
+ ]
3214
+ }
3215
+ }
3216
+ },
3217
+ "crop": {
3218
+ "type": "object",
3219
+ "properties": {
3220
+ "path": {
3221
+ "type": "string"
3222
+ },
3223
+ "width": {
3224
+ "type": "integer",
3225
+ "minimum": -9007199254740991,
3226
+ "maximum": 9007199254740991
3227
+ },
3228
+ "height": {
3229
+ "type": "integer",
3230
+ "minimum": -9007199254740991,
3231
+ "maximum": 9007199254740991
3232
+ }
3233
+ },
3234
+ "required": [
3235
+ "path",
3236
+ "width",
3237
+ "height"
3238
+ ]
3239
+ }
3240
+ },
3241
+ "required": [
3242
+ "threadId",
3243
+ "status",
3244
+ "messages",
3245
+ "anchor",
3246
+ "crop"
3247
+ ],
3248
+ "description": "One comment thread in results: messages, anchor layers and the screenshot crop."
3249
+ },
3250
+ "Results": {
3251
+ "type": "object",
3252
+ "properties": {
3253
+ "artifact": {
3254
+ "type": "object",
3255
+ "properties": {
3256
+ "id": {
3257
+ "$ref": "#/$defs/ArtifactId"
3258
+ },
3259
+ "title": {
3260
+ "type": "string"
3261
+ },
3262
+ "description": {
3263
+ "type": "string"
3264
+ },
3265
+ "family": {
3266
+ "type": "string"
3267
+ },
3268
+ "links": {
3269
+ "readOnly": true,
3270
+ "type": "array",
3271
+ "items": {
3272
+ "$ref": "#/$defs/ArtifactLink"
3273
+ }
3274
+ }
3275
+ },
3276
+ "required": [
3277
+ "id",
3278
+ "title",
3279
+ "links"
3280
+ ]
3281
+ },
3282
+ "submission": {
3283
+ "type": "object",
3284
+ "properties": {
3285
+ "id": {
3286
+ "$ref": "#/$defs/SubmissionId"
3287
+ },
3288
+ "at": {
3289
+ "type": "string",
3290
+ "format": "date-time",
3291
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
3292
+ },
3293
+ "epoch": {
3294
+ "type": "integer",
3295
+ "minimum": 1,
3296
+ "maximum": 9007199254740991
3297
+ },
3298
+ "previous": {
3299
+ "$ref": "#/$defs/SubmissionId"
3300
+ },
3301
+ "policy": {
3302
+ "$ref": "#/$defs/SubmissionPolicy"
3303
+ },
3304
+ "channel": {
3305
+ "type": "string",
3306
+ "enum": [
3307
+ "shell",
3308
+ "artifact"
3309
+ ]
3310
+ },
3311
+ "viewer": {
3312
+ "$ref": "#/$defs/Viewer"
3313
+ },
3314
+ "versionId": {
3315
+ "$ref": "#/$defs/VersionId"
3316
+ },
3317
+ "version": {
3318
+ "type": "integer",
3319
+ "minimum": 1,
3320
+ "maximum": 9007199254740991
3321
+ },
3322
+ "viewId": {
3323
+ "$ref": "#/$defs/ViewId"
3324
+ },
3325
+ "staleView": {
3326
+ "type": "boolean"
3327
+ },
3328
+ "latestVersion": {
3329
+ "type": "integer",
3330
+ "minimum": 1,
3331
+ "maximum": 9007199254740991
3332
+ },
3333
+ "draftRevision": {
3334
+ "$ref": "#/$defs/DocumentRevision"
3335
+ },
3336
+ "stateRevision": {
3337
+ "$ref": "#/$defs/DocumentRevision"
3338
+ },
3339
+ "digest": {
3340
+ "type": "string",
3341
+ "pattern": "^[0-9a-f]{64}$"
3342
+ },
3343
+ "delivery": {
3344
+ "type": "string",
3345
+ "enum": [
3346
+ "pending",
3347
+ "delivered",
3348
+ "rejected",
3349
+ "undeliverable"
3350
+ ]
3351
+ },
3352
+ "deliveries": {
3353
+ "readOnly": true,
3354
+ "type": "array",
3355
+ "items": {
3356
+ "$ref": "#/$defs/DeliveryStatus"
3357
+ }
3358
+ }
3359
+ },
3360
+ "required": [
3361
+ "id",
3362
+ "at",
3363
+ "epoch",
3364
+ "policy",
3365
+ "channel",
3366
+ "viewer",
3367
+ "versionId",
3368
+ "version",
3369
+ "viewId",
3370
+ "staleView",
3371
+ "draftRevision",
3372
+ "digest",
3373
+ "delivery",
3374
+ "deliveries"
3375
+ ]
3376
+ },
3377
+ "answers": {
3378
+ "type": "object",
3379
+ "propertyNames": {
3380
+ "type": "string"
3381
+ },
3382
+ "additionalProperties": {}
3383
+ },
3384
+ "fields": {
3385
+ "readOnly": true,
3386
+ "type": "array",
3387
+ "items": {
3388
+ "type": "object",
3389
+ "properties": {
3390
+ "id": {
3391
+ "type": "string"
3392
+ },
3393
+ "label": {
3394
+ "type": "string"
3395
+ },
3396
+ "required": {
3397
+ "type": "boolean"
3398
+ },
3399
+ "sensitive": {
3400
+ "type": "boolean"
3401
+ },
3402
+ "scope": {
3403
+ "type": "string",
3404
+ "enum": [
3405
+ "viewer",
3406
+ "artifact"
3407
+ ]
3408
+ }
3409
+ },
3410
+ "required": [
3411
+ "id",
3412
+ "scope"
3413
+ ]
3414
+ }
3415
+ },
3416
+ "state": {
3417
+ "type": "object",
3418
+ "propertyNames": {
3419
+ "type": "string"
3420
+ },
3421
+ "additionalProperties": {}
3422
+ },
3423
+ "choices": {
3424
+ "readOnly": true,
3425
+ "type": "array",
3426
+ "items": {
3427
+ "type": "object",
3428
+ "properties": {
3429
+ "reviewSetId": {
3430
+ "type": "string"
3431
+ },
3432
+ "candidateId": {
3433
+ "type": "string"
3434
+ },
3435
+ "label": {
3436
+ "type": "string"
3437
+ }
3438
+ },
3439
+ "required": [
3440
+ "reviewSetId",
3441
+ "candidateId"
3442
+ ]
3443
+ }
3444
+ },
3445
+ "comments": {
3446
+ "readOnly": true,
3447
+ "type": "array",
3448
+ "items": {
3449
+ "$ref": "#/$defs/ResultComment"
3450
+ }
3451
+ },
3452
+ "orphaned": {
3453
+ "readOnly": true,
3454
+ "type": "array",
3455
+ "items": {
3456
+ "type": "object",
3457
+ "properties": {
3458
+ "id": {
3459
+ "type": "string"
3460
+ },
3461
+ "label": {
3462
+ "type": "string"
3463
+ },
3464
+ "value": {},
3465
+ "fromVersion": {
3466
+ "type": "integer",
3467
+ "minimum": 1,
3468
+ "maximum": 9007199254740991
3469
+ }
3470
+ },
3471
+ "required": [
3472
+ "id",
3473
+ "value",
3474
+ "fromVersion"
3475
+ ]
3476
+ }
3477
+ },
3478
+ "actions": {
3479
+ "readOnly": true,
3480
+ "type": "array",
3481
+ "items": {
3482
+ "type": "object",
3483
+ "properties": {
3484
+ "runId": {
3485
+ "type": "string"
3486
+ },
3487
+ "action": {
3488
+ "type": "string"
3489
+ },
3490
+ "status": {
3491
+ "type": "string"
3492
+ },
3493
+ "at": {
3494
+ "type": "string",
3495
+ "format": "date-time",
3496
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
3497
+ }
3498
+ },
3499
+ "required": [
3500
+ "runId",
3501
+ "action",
3502
+ "status",
3503
+ "at"
3504
+ ]
3505
+ }
3506
+ },
3507
+ "signals": {
3508
+ "readOnly": true,
3509
+ "type": "array",
3510
+ "items": {
3511
+ "type": "object",
3512
+ "properties": {
3513
+ "name": {
3514
+ "type": "string"
3515
+ },
3516
+ "at": {
3517
+ "type": "string",
3518
+ "format": "date-time",
3519
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
3520
+ },
3521
+ "payload": {}
3522
+ },
3523
+ "required": [
3524
+ "name",
3525
+ "at"
3526
+ ]
3527
+ }
3528
+ },
3529
+ "signalsOmitted": {
3530
+ "type": "integer",
3531
+ "minimum": 1,
3532
+ "maximum": 9007199254740991
3533
+ },
3534
+ "signalsCompacted": {
3535
+ "type": "boolean",
3536
+ "const": true
3537
+ }
3538
+ },
3539
+ "required": [
3540
+ "artifact",
3541
+ "submission",
3542
+ "answers",
3543
+ "fields",
3544
+ "choices",
3545
+ "comments",
3546
+ "orphaned",
3547
+ "actions",
3548
+ "signals"
3549
+ ],
3550
+ "description": "The complete submission: artifact, submission facts, answers, fields, state, choices, comments, orphans, actions, signals."
3551
+ },
3552
+ "ResultsGetParams": {
3553
+ "type": "object",
3554
+ "properties": {
3555
+ "artifact": {
3556
+ "$ref": "#/$defs/ArtifactRef"
3557
+ },
3558
+ "submission": {
3559
+ "$ref": "#/$defs/SubmissionId"
3560
+ },
3561
+ "format": {
3562
+ "type": "string",
3563
+ "enum": [
3564
+ "json",
3565
+ "md"
3566
+ ]
3567
+ }
3568
+ },
3569
+ "required": [
3570
+ "artifact"
3571
+ ]
3572
+ },
3573
+ "ResultsGetResult": {
3574
+ "anyOf": [
3575
+ {
3576
+ "$ref": "#/$defs/Results"
3577
+ },
3578
+ {
3579
+ "$ref": "#/$defs/ResultsMarkdown"
3580
+ }
3581
+ ]
3582
+ },
3583
+ "ResultsMarkdown": {
3584
+ "type": "object",
3585
+ "properties": {
3586
+ "submissionId": {
3587
+ "$ref": "#/$defs/SubmissionId"
3588
+ },
3589
+ "markdown": {
3590
+ "type": "string"
3591
+ }
3592
+ },
3593
+ "required": [
3594
+ "submissionId",
3595
+ "markdown"
3596
+ ],
3597
+ "description": "A submission's results as Markdown for agents."
3598
+ },
3599
+ "Revision": {
3600
+ "type": "string",
3601
+ "format": "date",
3602
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
3603
+ "description": "Protocol revision: a calendar date in YYYY-MM-DD form."
3604
+ },
3605
+ "RunAttachRequest": {
3606
+ "type": "object",
3607
+ "properties": {
3608
+ "viewId": {
3609
+ "$ref": "#/$defs/ViewId"
3610
+ },
3611
+ "runIds": {
3612
+ "readOnly": true,
3613
+ "maxItems": 100,
3614
+ "type": "array",
3615
+ "items": {
3616
+ "type": "string",
3617
+ "maxLength": 64
3618
+ }
3619
+ },
3620
+ "keyed": {
3621
+ "readOnly": true,
3622
+ "maxItems": 100,
3623
+ "type": "array",
3624
+ "items": {
3625
+ "type": "object",
3626
+ "properties": {
3627
+ "fnId": {
3628
+ "type": "string",
3629
+ "minLength": 3,
3630
+ "maxLength": 1024
3631
+ },
3632
+ "key": {
3633
+ "type": "string",
3634
+ "minLength": 1,
3635
+ "maxLength": 256
3636
+ }
3637
+ },
3638
+ "required": [
3639
+ "fnId",
3640
+ "key"
3641
+ ]
3642
+ }
3643
+ },
3644
+ "held": {
3645
+ "readOnly": true,
3646
+ "maxItems": 100,
3647
+ "type": "array",
3648
+ "items": {
3649
+ "type": "object",
3650
+ "properties": {
3651
+ "runId": {
3652
+ "type": "string",
3653
+ "maxLength": 64
3654
+ },
3655
+ "log": {
3656
+ "type": "integer",
3657
+ "minimum": 0,
3658
+ "maximum": 9007199254740991
3659
+ },
3660
+ "batches": {
3661
+ "type": "integer",
3662
+ "minimum": 0,
3663
+ "maximum": 9007199254740991
3664
+ }
3665
+ },
3666
+ "required": [
3667
+ "runId",
3668
+ "log",
3669
+ "batches"
3670
+ ]
3671
+ }
3672
+ }
3673
+ },
3674
+ "required": [
3675
+ "viewId"
3676
+ ],
3677
+ "description": "Runs a page reads and follows: by ID, or by function and key."
3678
+ },
3679
+ "RunCancelRequest": {
3680
+ "type": "object",
3681
+ "properties": {
3682
+ "viewId": {
3683
+ "$ref": "#/$defs/ViewId"
3684
+ }
3685
+ },
3686
+ "required": [
3687
+ "viewId"
3688
+ ],
3689
+ "description": "Cancel a run, from a view."
3690
+ },
3691
+ "RunId": {
3692
+ "type": "string",
3693
+ "pattern": "^run_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
3694
+ "description": "Action run ID: \"run_\" followed by a 26-character ULID."
3695
+ },
3696
+ "RunProgress": {
3697
+ "type": "object",
3698
+ "properties": {
3699
+ "fraction": {
3700
+ "type": "number",
3701
+ "minimum": 0,
3702
+ "maximum": 1
3703
+ },
3704
+ "message": {
3705
+ "type": "string",
3706
+ "maxLength": 1000
3707
+ }
3708
+ },
3709
+ "description": "A run's progress: fraction and message."
3710
+ },
3711
+ "RunRequest": {
3712
+ "type": "object",
3713
+ "properties": {
3714
+ "viewId": {
3715
+ "$ref": "#/$defs/ViewId"
3716
+ },
3717
+ "fnId": {
3718
+ "type": "string",
3719
+ "minLength": 3,
3720
+ "maxLength": 1024
3721
+ },
3722
+ "args": {
3723
+ "$ref": "#/$defs/Batches"
3724
+ },
3725
+ "key": {
3726
+ "type": "string",
3727
+ "minLength": 1,
3728
+ "maxLength": 256
3729
+ },
3730
+ "clientKey": {
3731
+ "type": "string",
3732
+ "minLength": 8,
3733
+ "maxLength": 64
3734
+ }
3735
+ },
3736
+ "required": [
3737
+ "viewId",
3738
+ "fnId",
3739
+ "args",
3740
+ "clientKey"
3741
+ ],
3742
+ "description": "Start or join an action run: the function, its arguments and keys."
3743
+ },
3744
+ "RunState": {
3745
+ "type": "object",
3746
+ "properties": {
3747
+ "runId": {
3748
+ "type": "string"
3749
+ },
3750
+ "fnId": {
3751
+ "type": "string"
3752
+ },
3753
+ "key": {
3754
+ "type": "string"
3755
+ },
3756
+ "status": {
3757
+ "type": "string",
3758
+ "enum": [
3759
+ "queued",
3760
+ "running",
3761
+ "waiting",
3762
+ "succeeded",
3763
+ "failed",
3764
+ "cancelled"
3765
+ ]
3766
+ },
3767
+ "reason": {
3768
+ "type": "string"
3769
+ },
3770
+ "progress": {
3771
+ "$ref": "#/$defs/RunProgress"
3772
+ },
3773
+ "log": {
3774
+ "readOnly": true,
3775
+ "type": "array",
3776
+ "items": {
3777
+ "type": "string"
3778
+ }
3779
+ },
3780
+ "batches": {
3781
+ "$ref": "#/$defs/Batches"
3782
+ },
3783
+ "error": {
3784
+ "type": "object",
3785
+ "properties": {
3786
+ "message": {
3787
+ "type": "string"
3788
+ },
3789
+ "code": {
3790
+ "type": "string"
3791
+ }
3792
+ },
3793
+ "required": [
3794
+ "message"
3795
+ ]
3796
+ },
3797
+ "startedAt": {
3798
+ "type": "string"
3799
+ },
3800
+ "finishedAt": {
3801
+ "type": "string"
3802
+ },
3803
+ "joined": {
3804
+ "type": "boolean"
3805
+ },
3806
+ "logFrom": {
3807
+ "type": "integer",
3808
+ "minimum": 0,
3809
+ "maximum": 9007199254740991
3810
+ },
3811
+ "batchFrom": {
3812
+ "type": "integer",
3813
+ "minimum": 0,
3814
+ "maximum": 9007199254740991
3815
+ }
3816
+ },
3817
+ "required": [
3818
+ "runId",
3819
+ "fnId",
3820
+ "status",
3821
+ "log",
3822
+ "batches",
3823
+ "startedAt"
3824
+ ],
3825
+ "description": "An action run: status, progress, log and the result written so far."
3826
+ },
3827
+ "ScreenshotPolicy": {
3828
+ "type": "string",
3829
+ "enum": [
3830
+ "on-failure",
3831
+ "always",
3832
+ "never"
3833
+ ],
3834
+ "description": "When screenshots are returned: on failure (the default), always or never."
3835
+ },
3836
+ "SecretDeleteParams": {
3837
+ "type": "object",
3838
+ "properties": {
3839
+ "name": {
3840
+ "type": "string",
3841
+ "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,127}$"
3842
+ },
3843
+ "artifact": {
3844
+ "$ref": "#/$defs/ArtifactRef"
3845
+ }
3846
+ },
3847
+ "required": [
3848
+ "name"
3849
+ ],
3850
+ "description": "The secret to delete."
3851
+ },
3852
+ "SecretDeleteResult": {
3853
+ "type": "object",
3854
+ "properties": {
3855
+ "deleted": {
3856
+ "type": "boolean"
3857
+ }
3858
+ },
3859
+ "required": [
3860
+ "deleted"
3861
+ ],
3862
+ "description": "Whether a secret was deleted."
3863
+ },
3864
+ "SecretEntry": {
3865
+ "type": "object",
3866
+ "properties": {
3867
+ "name": {
3868
+ "type": "string"
3869
+ },
3870
+ "scope": {
3871
+ "type": "string",
3872
+ "enum": [
3873
+ "artifact",
3874
+ "home"
3875
+ ]
3876
+ },
3877
+ "artifactId": {
3878
+ "type": "string"
3879
+ },
3880
+ "updatedAt": {
3881
+ "type": "string"
3882
+ }
3883
+ },
3884
+ "required": [
3885
+ "name",
3886
+ "scope",
3887
+ "updatedAt"
3888
+ ],
3889
+ "description": "A secret's name, scope and when it was set; never its value."
3890
+ },
3891
+ "SecretListParams": {
3892
+ "type": "object",
3893
+ "properties": {
3894
+ "artifact": {
3895
+ "$ref": "#/$defs/ArtifactRef"
3896
+ }
3897
+ },
3898
+ "description": "The artifact whose secrets to list."
3899
+ },
3900
+ "SecretListResult": {
3901
+ "type": "object",
3902
+ "properties": {
3903
+ "secrets": {
3904
+ "readOnly": true,
3905
+ "type": "array",
3906
+ "items": {
3907
+ "$ref": "#/$defs/SecretEntry"
3908
+ }
3909
+ }
3910
+ },
3911
+ "required": [
3912
+ "secrets"
3913
+ ],
3914
+ "description": "Secrets by name and scope."
3915
+ },
3916
+ "SecretSetParams": {
3917
+ "type": "object",
3918
+ "properties": {
3919
+ "name": {
3920
+ "type": "string",
3921
+ "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,127}$"
3922
+ },
3923
+ "value": {
3924
+ "type": "string",
3925
+ "minLength": 1,
3926
+ "maxLength": 65536
3927
+ },
3928
+ "artifact": {
3929
+ "$ref": "#/$defs/ArtifactRef"
3930
+ }
3931
+ },
3932
+ "required": [
3933
+ "name",
3934
+ "value"
3935
+ ],
3936
+ "description": "A secret's name, value and optional artifact scope."
3937
+ },
3938
+ "Sha256": {
3939
+ "type": "string",
3940
+ "pattern": "^[0-9a-f]{64}$",
3941
+ "description": "A SHA-256 digest in lowercase hex."
3942
+ },
3943
+ "ShellSubmitRequest": {
3944
+ "type": "object",
3945
+ "properties": {
3946
+ "viewId": {
3947
+ "$ref": "#/$defs/ViewId"
3948
+ },
3949
+ "expectedRevision": {
3950
+ "$ref": "#/$defs/DocumentRevision"
3951
+ }
3952
+ },
3953
+ "required": [
3954
+ "viewId",
3955
+ "expectedRevision"
3956
+ ],
3957
+ "description": "The shell's trusted Submit: the view and the draft revision the viewer saw."
3958
+ },
3959
+ "SignalRequest": {
3960
+ "type": "object",
3961
+ "properties": {
3962
+ "viewId": {
3963
+ "$ref": "#/$defs/ViewId"
3964
+ },
3965
+ "name": {
3966
+ "type": "string",
3967
+ "minLength": 1,
3968
+ "maxLength": 64
3969
+ },
3970
+ "payload": {}
3971
+ },
3972
+ "required": [
3973
+ "viewId",
3974
+ "name"
3975
+ ],
3976
+ "description": "A browser signal: the view, the signal's name and an optional JSON payload."
3977
+ },
3978
+ "SourceRef": {
3979
+ "anyOf": [
3980
+ {
3981
+ "type": "object",
3982
+ "properties": {
3983
+ "path": {
3984
+ "type": "string",
3985
+ "pattern": "^\\/"
3986
+ }
3987
+ },
3988
+ "required": [
3989
+ "path"
3990
+ ]
3991
+ },
3992
+ {
3993
+ "type": "object",
3994
+ "properties": {
3995
+ "artifactId": {
3996
+ "$ref": "#/$defs/ArtifactId"
3997
+ }
3998
+ },
3999
+ "required": [
4000
+ "artifactId"
4001
+ ]
4002
+ }
4003
+ ],
4004
+ "description": "Where to build an artifact from: an absolute source path, or an artifact ID (its last published source path)."
4005
+ },
4006
+ "StateGetParams": {
4007
+ "type": "object",
4008
+ "properties": {
4009
+ "artifact": {
4010
+ "$ref": "#/$defs/ArtifactRef"
4011
+ },
4012
+ "ids": {
4013
+ "readOnly": true,
4014
+ "maxItems": 10000,
4015
+ "type": "array",
4016
+ "items": {
4017
+ "type": "string",
4018
+ "minLength": 1,
4019
+ "maxLength": 256
4020
+ }
4021
+ }
4022
+ },
4023
+ "required": [
4024
+ "artifact"
4025
+ ]
4026
+ },
4027
+ "StateGetResult": {
4028
+ "type": "object",
4029
+ "properties": {
4030
+ "revision": {
4031
+ "$ref": "#/$defs/DocumentRevision"
4032
+ },
4033
+ "fields": {
4034
+ "type": "object",
4035
+ "propertyNames": {
4036
+ "type": "string"
4037
+ },
4038
+ "additionalProperties": {
4039
+ "$ref": "#/$defs/FieldState"
4040
+ }
4041
+ }
4042
+ },
4043
+ "required": [
4044
+ "revision",
4045
+ "fields"
4046
+ ]
4047
+ },
4048
+ "StatePatchParams": {
4049
+ "type": "object",
4050
+ "properties": {
4051
+ "artifact": {
4052
+ "$ref": "#/$defs/ArtifactRef"
4053
+ },
4054
+ "ops": {
4055
+ "readOnly": true,
4056
+ "minItems": 1,
4057
+ "maxItems": 1000,
4058
+ "type": "array",
4059
+ "items": {
4060
+ "$ref": "#/$defs/FieldOp"
4061
+ }
4062
+ },
4063
+ "baseRevision": {
4064
+ "$ref": "#/$defs/DocumentRevision"
4065
+ },
4066
+ "mutationId": {
4067
+ "$ref": "#/$defs/MutationId"
4068
+ },
4069
+ "as": {
4070
+ "type": "string",
4071
+ "enum": [
4072
+ "agent",
4073
+ "host"
4074
+ ]
4075
+ }
4076
+ },
4077
+ "required": [
4078
+ "artifact",
4079
+ "ops",
4080
+ "mutationId"
4081
+ ]
4082
+ },
4083
+ "StreamSnapshot": {
4084
+ "type": "object",
4085
+ "properties": {
4086
+ "cursor": {
4087
+ "$ref": "#/$defs/Cursor"
4088
+ },
4089
+ "viewer": {
4090
+ "$ref": "#/$defs/Viewer"
4091
+ },
4092
+ "draft": {
4093
+ "$ref": "#/$defs/DocumentSnapshot"
4094
+ },
4095
+ "state": {
4096
+ "$ref": "#/$defs/DocumentSnapshot"
4097
+ },
4098
+ "submission": {
4099
+ "$ref": "#/$defs/SubmissionSummary"
4100
+ },
4101
+ "latest": {
4102
+ "$ref": "#/$defs/VersionRef"
4103
+ }
4104
+ },
4105
+ "required": [
4106
+ "cursor",
4107
+ "viewer",
4108
+ "draft",
4109
+ "state"
4110
+ ],
4111
+ "description": "Where a page stands: cursor, viewer, draft, artifact state and its submission."
4112
+ },
4113
+ "SubmissionEnvelope": {
4114
+ "type": "object",
4115
+ "properties": {
4116
+ "kind": {
4117
+ "type": "string",
4118
+ "const": "submission"
4119
+ },
4120
+ "deliveryId": {
4121
+ "$ref": "#/$defs/DeliveryId"
4122
+ },
4123
+ "submissionId": {
4124
+ "$ref": "#/$defs/SubmissionId"
4125
+ },
4126
+ "artifactId": {
4127
+ "$ref": "#/$defs/ArtifactId"
4128
+ },
4129
+ "attempt": {
4130
+ "type": "integer",
4131
+ "minimum": 1,
4132
+ "maximum": 9007199254740991
4133
+ },
4134
+ "results": {
4135
+ "$ref": "#/$defs/Results"
4136
+ }
4137
+ },
4138
+ "required": [
4139
+ "kind",
4140
+ "deliveryId",
4141
+ "submissionId",
4142
+ "artifactId",
4143
+ "attempt",
4144
+ "results"
4145
+ ],
4146
+ "description": "One submission delivered to a host: delivery ID, attempt and the complete results."
4147
+ },
4148
+ "SubmissionId": {
4149
+ "type": "string",
4150
+ "pattern": "^sub_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
4151
+ "description": "Submission ID: \"sub_\" followed by a 26-character ULID."
4152
+ },
4153
+ "SubmissionPolicy": {
4154
+ "oneOf": [
4155
+ {
4156
+ "type": "object",
4157
+ "properties": {
4158
+ "policy": {
4159
+ "type": "string",
4160
+ "const": "once"
4161
+ },
4162
+ "scope": {
4163
+ "type": "string",
4164
+ "enum": [
4165
+ "per-artifact",
4166
+ "per-viewer"
4167
+ ]
4168
+ }
4169
+ },
4170
+ "required": [
4171
+ "policy"
4172
+ ]
4173
+ },
4174
+ {
4175
+ "type": "object",
4176
+ "properties": {
4177
+ "policy": {
4178
+ "type": "string",
4179
+ "const": "epochs"
4180
+ }
4181
+ },
4182
+ "required": [
4183
+ "policy"
4184
+ ]
4185
+ },
4186
+ {
4187
+ "type": "object",
4188
+ "properties": {
4189
+ "policy": {
4190
+ "type": "string",
4191
+ "const": "none"
4192
+ }
4193
+ },
4194
+ "required": [
4195
+ "policy"
4196
+ ]
4197
+ }
4198
+ ],
4199
+ "description": "A submission policy: once (per-artifact or per-viewer), epochs, or none."
4200
+ },
4201
+ "SubmissionSummary": {
4202
+ "type": "object",
4203
+ "properties": {
4204
+ "id": {
4205
+ "$ref": "#/$defs/SubmissionId"
4206
+ },
4207
+ "at": {
4208
+ "type": "string",
4209
+ "format": "date-time",
4210
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
4211
+ },
4212
+ "epoch": {
4213
+ "type": "integer",
4214
+ "minimum": 1,
4215
+ "maximum": 9007199254740991
4216
+ },
4217
+ "channel": {
4218
+ "type": "string",
4219
+ "enum": [
4220
+ "shell",
4221
+ "artifact"
4222
+ ]
4223
+ },
4224
+ "versionId": {
4225
+ "$ref": "#/$defs/VersionId"
4226
+ },
4227
+ "version": {
4228
+ "type": "integer",
4229
+ "minimum": 1,
4230
+ "maximum": 9007199254740991
4231
+ },
4232
+ "viewId": {
4233
+ "$ref": "#/$defs/ViewId"
4234
+ },
4235
+ "staleView": {
4236
+ "type": "boolean"
4237
+ },
4238
+ "draftRevision": {
4239
+ "$ref": "#/$defs/DocumentRevision"
4240
+ },
4241
+ "digest": {
4242
+ "type": "string",
4243
+ "pattern": "^[0-9a-f]{64}$"
4244
+ },
4245
+ "delivery": {
4246
+ "type": "string",
4247
+ "enum": [
4248
+ "pending",
4249
+ "delivered",
4250
+ "rejected",
4251
+ "undeliverable"
4252
+ ]
4253
+ },
4254
+ "deliveries": {
4255
+ "readOnly": true,
4256
+ "type": "array",
4257
+ "items": {
4258
+ "$ref": "#/$defs/DeliveryStatus"
4259
+ }
4260
+ },
4261
+ "duplicate": {
4262
+ "type": "boolean",
4263
+ "const": true
4264
+ }
4265
+ },
4266
+ "required": [
4267
+ "id",
4268
+ "at",
4269
+ "epoch",
4270
+ "channel",
4271
+ "versionId",
4272
+ "version",
4273
+ "viewId",
4274
+ "staleView",
4275
+ "draftRevision",
4276
+ "digest",
4277
+ "delivery"
4278
+ ],
4279
+ "description": "A submission as a submit answers it: ID, time, epoch, version, view, digest, delivery."
4280
+ },
4281
+ "SubmitChannel": {
4282
+ "type": "string",
4283
+ "enum": [
4284
+ "shell",
4285
+ "artifact"
4286
+ ],
4287
+ "description": "Where a submit comes from: the shell's trusted Submit, or the artifact's code."
4288
+ },
4289
+ "SubmitRequest": {
4290
+ "type": "object",
4291
+ "properties": {
4292
+ "viewId": {
4293
+ "$ref": "#/$defs/ViewId"
4294
+ },
4295
+ "expectedRevision": {
4296
+ "$ref": "#/$defs/DocumentRevision"
4297
+ },
4298
+ "channel": {
4299
+ "type": "string",
4300
+ "const": "artifact"
4301
+ }
4302
+ },
4303
+ "required": [
4304
+ "viewId",
4305
+ "expectedRevision",
4306
+ "channel"
4307
+ ],
4308
+ "description": "A browser submit: the view and the draft revision the viewer saw."
4309
+ },
4310
+ "ThreadId": {
4311
+ "type": "string",
4312
+ "pattern": "^thr_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
4313
+ "description": "Thread ID: \"thr_\" followed by a 26-character ULID."
4314
+ },
4315
+ "TokenId": {
4316
+ "type": "string",
4317
+ "pattern": "^tok_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
4318
+ "description": "Capability token ID: \"tok_\" followed by a 26-character ULID."
4319
+ },
4320
+ "TrustedControl": {
4321
+ "type": "string",
4322
+ "pattern": "^[a-z][a-z0-9-]{0,31}$",
4323
+ "description": "A trusted control the shell renders: submit, choose, approve; open for more."
4324
+ },
4325
+ "VerifyVerdict": {
4326
+ "type": "object",
4327
+ "properties": {
4328
+ "status": {
4329
+ "type": "string",
4330
+ "enum": [
4331
+ "pass",
4332
+ "fail"
4333
+ ]
4334
+ },
4335
+ "artifact": {
4336
+ "type": "object",
4337
+ "properties": {
4338
+ "id": {
4339
+ "type": "string"
4340
+ },
4341
+ "path": {
4342
+ "type": "string"
4343
+ },
4344
+ "sourceDigest": {
4345
+ "type": "string"
4346
+ },
4347
+ "envDigest": {
4348
+ "type": "string"
4349
+ },
4350
+ "versionId": {
4351
+ "type": "string"
4352
+ }
4353
+ },
4354
+ "required": [
4355
+ "path",
4356
+ "sourceDigest",
4357
+ "envDigest"
4358
+ ]
4359
+ },
4360
+ "diagnostics": {
4361
+ "readOnly": true,
4362
+ "type": "array",
4363
+ "items": {
4364
+ "$ref": "#/$defs/Diagnostic"
4365
+ }
4366
+ },
4367
+ "screenshots": {
4368
+ "readOnly": true,
4369
+ "type": "array",
4370
+ "items": {
4371
+ "type": "object",
4372
+ "properties": {
4373
+ "viewport": {
4374
+ "type": "string"
4375
+ },
4376
+ "path": {
4377
+ "type": "string"
4378
+ },
4379
+ "width": {
4380
+ "type": "integer",
4381
+ "minimum": 1,
4382
+ "maximum": 9007199254740991
4383
+ },
4384
+ "height": {
4385
+ "type": "integer",
4386
+ "minimum": 1,
4387
+ "maximum": 9007199254740991
4388
+ },
4389
+ "tokensEstimate": {
4390
+ "type": "object",
4391
+ "properties": {
4392
+ "claude": {
4393
+ "type": "integer",
4394
+ "minimum": 0,
4395
+ "maximum": 9007199254740991
4396
+ },
4397
+ "gpt": {
4398
+ "type": "integer",
4399
+ "minimum": 0,
4400
+ "maximum": 9007199254740991
4401
+ },
4402
+ "gemini": {
4403
+ "type": "integer",
4404
+ "minimum": 0,
4405
+ "maximum": 9007199254740991
4406
+ }
4407
+ },
4408
+ "required": [
4409
+ "claude",
4410
+ "gpt",
4411
+ "gemini"
4412
+ ]
4413
+ },
4414
+ "returned": {
4415
+ "type": "boolean"
4416
+ }
4417
+ },
4418
+ "required": [
4419
+ "viewport",
4420
+ "path",
4421
+ "width",
4422
+ "height",
4423
+ "tokensEstimate",
4424
+ "returned"
4425
+ ]
4426
+ }
4427
+ },
4428
+ "aria": {
4429
+ "readOnly": true,
4430
+ "type": "array",
4431
+ "items": {
4432
+ "type": "object",
4433
+ "properties": {
4434
+ "viewport": {
4435
+ "type": "string"
4436
+ },
4437
+ "path": {
4438
+ "type": "string"
4439
+ },
4440
+ "summary": {
4441
+ "type": "string"
4442
+ }
4443
+ },
4444
+ "required": [
4445
+ "viewport",
4446
+ "path",
4447
+ "summary"
4448
+ ]
4449
+ }
4450
+ },
4451
+ "smoke": {
4452
+ "type": "object",
4453
+ "properties": {
4454
+ "interactions": {
4455
+ "type": "integer",
4456
+ "minimum": 0,
4457
+ "maximum": 9007199254740991
4458
+ },
4459
+ "skippedActions": {
4460
+ "readOnly": true,
4461
+ "type": "array",
4462
+ "items": {
4463
+ "type": "string"
4464
+ }
4465
+ },
4466
+ "stateChanges": {
4467
+ "type": "integer",
4468
+ "minimum": 0,
4469
+ "maximum": 9007199254740991
4470
+ }
4471
+ },
4472
+ "required": [
4473
+ "interactions",
4474
+ "skippedActions",
4475
+ "stateChanges"
4476
+ ]
4477
+ },
4478
+ "regressions": {
4479
+ "type": "object",
4480
+ "properties": {
4481
+ "against": {
4482
+ "type": "string"
4483
+ },
4484
+ "aria": {
4485
+ "type": "string"
4486
+ },
4487
+ "pixels": {
4488
+ "readOnly": true,
4489
+ "type": "array",
4490
+ "items": {
4491
+ "type": "object",
4492
+ "properties": {
4493
+ "viewport": {
4494
+ "type": "string"
4495
+ },
4496
+ "ratio": {
4497
+ "type": "number",
4498
+ "minimum": 0,
4499
+ "maximum": 1
4500
+ }
4501
+ },
4502
+ "required": [
4503
+ "viewport",
4504
+ "ratio"
4505
+ ]
4506
+ }
4507
+ },
4508
+ "contracts": {
4509
+ "readOnly": true,
4510
+ "type": "array",
4511
+ "items": {
4512
+ "type": "string"
4513
+ }
4514
+ }
4515
+ }
4516
+ },
4517
+ "timingsMs": {
4518
+ "type": "object",
4519
+ "propertyNames": {
4520
+ "type": "string"
4521
+ },
4522
+ "additionalProperties": {
4523
+ "type": "number",
4524
+ "minimum": 0
4525
+ }
4526
+ }
4527
+ },
4528
+ "required": [
4529
+ "status",
4530
+ "artifact",
4531
+ "diagnostics",
4532
+ "screenshots",
4533
+ "aria",
4534
+ "smoke",
4535
+ "regressions",
4536
+ "timingsMs"
4537
+ ],
4538
+ "description": "The verdict of artifact/verify: pass or fail, diagnostics, screenshots with token estimates, ARIA snapshots, the smoke test, regressions and timings."
4539
+ },
4540
+ "VersionId": {
4541
+ "type": "string",
4542
+ "pattern": "^ver_[0-9A-HJKMNP-TV-Z]{26}$",
4543
+ "description": "Version ID: \"ver_\" followed by 26 characters of Crockford base32."
4544
+ },
4545
+ "VersionRef": {
4546
+ "type": "object",
4547
+ "properties": {
4548
+ "id": {
4549
+ "$ref": "#/$defs/VersionId"
4550
+ },
4551
+ "number": {
4552
+ "type": "integer",
4553
+ "minimum": 1,
4554
+ "maximum": 9007199254740991
4555
+ }
4556
+ },
4557
+ "required": [
4558
+ "id",
4559
+ "number"
4560
+ ],
4561
+ "description": "A version by ID and number."
4562
+ },
4563
+ "VersionSummary": {
4564
+ "type": "object",
4565
+ "properties": {
4566
+ "id": {
4567
+ "$ref": "#/$defs/VersionId"
4568
+ },
4569
+ "number": {
4570
+ "type": "integer",
4571
+ "minimum": 1,
4572
+ "maximum": 9007199254740991
4573
+ },
4574
+ "publishedAt": {
4575
+ "type": "string",
4576
+ "format": "date-time",
4577
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
4578
+ },
4579
+ "sourceDigest": {
4580
+ "type": "string",
4581
+ "pattern": "^[0-9a-f]{64}$"
4582
+ },
4583
+ "envDigest": {
4584
+ "type": "string",
4585
+ "pattern": "^[0-9a-f]{64}$"
4586
+ },
4587
+ "outputDigest": {
4588
+ "type": "string",
4589
+ "pattern": "^[0-9a-f]{64}$"
4590
+ },
4591
+ "forcedDiagnostics": {
4592
+ "readOnly": true,
4593
+ "type": "array",
4594
+ "items": {
4595
+ "type": "string"
4596
+ }
4597
+ },
4598
+ "collected": {
4599
+ "type": "string",
4600
+ "format": "date-time",
4601
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
4602
+ }
4603
+ },
4604
+ "required": [
4605
+ "id",
4606
+ "number",
4607
+ "publishedAt",
4608
+ "sourceDigest",
4609
+ "envDigest",
4610
+ "outputDigest"
4611
+ ],
4612
+ "description": "One published version."
4613
+ },
4614
+ "ViewContext": {
4615
+ "type": "object",
4616
+ "properties": {
4617
+ "artifactId": {
4618
+ "$ref": "#/$defs/ArtifactId"
4619
+ },
4620
+ "viewId": {
4621
+ "$ref": "#/$defs/ViewId"
4622
+ },
4623
+ "version": {
4624
+ "$ref": "#/$defs/VersionRef"
4625
+ },
4626
+ "latest": {
4627
+ "$ref": "#/$defs/VersionRef"
4628
+ },
4629
+ "policy": {
4630
+ "$ref": "#/$defs/SubmissionPolicy"
4631
+ },
4632
+ "submitChannels": {
4633
+ "readOnly": true,
4634
+ "minItems": 1,
4635
+ "maxItems": 2,
4636
+ "type": "array",
4637
+ "items": {
4638
+ "$ref": "#/$defs/SubmitChannel"
4639
+ }
4640
+ },
4641
+ "controls": {
4642
+ "readOnly": true,
4643
+ "maxItems": 32,
4644
+ "type": "array",
4645
+ "items": {
4646
+ "$ref": "#/$defs/TrustedControl"
4647
+ }
4648
+ },
4649
+ "target": {
4650
+ "type": "string",
4651
+ "enum": [
4652
+ "live",
4653
+ "static",
4654
+ "mcp-app",
4655
+ "verify"
4656
+ ]
4657
+ }
4658
+ },
4659
+ "required": [
4660
+ "artifactId",
4661
+ "viewId",
4662
+ "version",
4663
+ "latest",
4664
+ "policy",
4665
+ "submitChannels",
4666
+ "controls",
4667
+ "target"
4668
+ ],
4669
+ "description": "What one view is: its artifact, view ID, version, latest version, policy, channels and controls."
4670
+ },
4671
+ "ViewDefaultParams": {
4672
+ "type": "object",
4673
+ "properties": {
4674
+ "artifact": {
4675
+ "$ref": "#/$defs/ArtifactRef"
4676
+ }
4677
+ },
4678
+ "required": [
4679
+ "artifact"
4680
+ ]
4681
+ },
4682
+ "ViewId": {
4683
+ "type": "string",
4684
+ "pattern": "^vw_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
4685
+ "description": "View ID: \"vw_\" followed by a 26-character ULID."
4686
+ },
4687
+ "ViewLaunchParams": {
4688
+ "type": "object",
4689
+ "properties": {
4690
+ "tokenId": {
4691
+ "$ref": "#/$defs/TokenId"
4692
+ }
4693
+ },
4694
+ "required": [
4695
+ "tokenId"
4696
+ ]
4697
+ },
4698
+ "ViewLaunchResult": {
4699
+ "type": "object",
4700
+ "properties": {
4701
+ "url": {
4702
+ "type": "string",
4703
+ "minLength": 1
4704
+ },
4705
+ "expiresAt": {
4706
+ "type": "string",
4707
+ "format": "date-time",
4708
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
4709
+ }
4710
+ },
4711
+ "required": [
4712
+ "url",
4713
+ "expiresAt"
4714
+ ],
4715
+ "description": "A one-time launch URL for a browser."
4716
+ },
4717
+ "ViewRevokeParams": {
4718
+ "type": "object",
4719
+ "properties": {
4720
+ "tokenId": {
4721
+ "$ref": "#/$defs/TokenId"
4722
+ },
4723
+ "requestId": {
4724
+ "type": "string",
4725
+ "minLength": 1
4726
+ }
4727
+ },
4728
+ "required": [
4729
+ "tokenId"
4730
+ ]
4731
+ },
4732
+ "ViewRevokeResult": {
4733
+ "type": "object",
4734
+ "properties": {}
4735
+ },
4736
+ "ViewRotateParams": {
4737
+ "type": "object",
4738
+ "properties": {
4739
+ "tokenId": {
4740
+ "$ref": "#/$defs/TokenId"
4741
+ },
4742
+ "requestId": {
4743
+ "type": "string",
4744
+ "minLength": 1
4745
+ }
4746
+ },
4747
+ "required": [
4748
+ "tokenId"
4749
+ ]
4750
+ },
4751
+ "ViewUrlParams": {
4752
+ "type": "object",
4753
+ "properties": {
4754
+ "artifact": {
4755
+ "$ref": "#/$defs/ArtifactRef"
4756
+ },
4757
+ "version": {
4758
+ "anyOf": [
4759
+ {
4760
+ "type": "integer",
4761
+ "minimum": 1,
4762
+ "maximum": 9007199254740991
4763
+ },
4764
+ {
4765
+ "$ref": "#/$defs/VersionId"
4766
+ }
4767
+ ]
4768
+ },
4769
+ "scopes": {
4770
+ "readOnly": true,
4771
+ "minItems": 1,
4772
+ "type": "array",
4773
+ "items": {
4774
+ "$ref": "#/$defs/CapabilityScope"
4775
+ }
4776
+ },
4777
+ "ttl": {
4778
+ "$ref": "#/$defs/Duration"
4779
+ },
4780
+ "viewer": {
4781
+ "$ref": "#/$defs/ViewerSpec"
4782
+ },
4783
+ "requestId": {
4784
+ "type": "string",
4785
+ "minLength": 1
4786
+ }
4787
+ },
4788
+ "required": [
4789
+ "artifact"
4790
+ ]
4791
+ },
4792
+ "Viewer": {
4793
+ "type": "object",
4794
+ "properties": {
4795
+ "id": {
4796
+ "$ref": "#/$defs/ViewerId"
4797
+ },
4798
+ "kind": {
4799
+ "type": "string",
4800
+ "enum": [
4801
+ "local",
4802
+ "tailnet",
4803
+ "token",
4804
+ "host"
4805
+ ]
4806
+ },
4807
+ "name": {
4808
+ "type": "string"
4809
+ },
4810
+ "ref": {
4811
+ "type": "string"
4812
+ }
4813
+ },
4814
+ "required": [
4815
+ "id",
4816
+ "kind"
4817
+ ],
4818
+ "description": "A person who views an artifact: ID, kind, display name and the host's own key."
4819
+ },
4820
+ "ViewerId": {
4821
+ "type": "string",
4822
+ "pattern": "^vwr_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
4823
+ "description": "Viewer ID: \"vwr_\" followed by a 26-character ULID."
4824
+ },
4825
+ "ViewerSpec": {
4826
+ "type": "object",
4827
+ "properties": {
4828
+ "ref": {
4829
+ "type": "string",
4830
+ "minLength": 1,
4831
+ "maxLength": 256
4832
+ },
4833
+ "name": {
4834
+ "type": "string",
4835
+ "minLength": 1,
4836
+ "maxLength": 256
4837
+ }
4838
+ },
4839
+ "required": [
4840
+ "ref"
4841
+ ],
4842
+ "description": "The person a capability link acts for: the host's stable key and a display name."
4843
+ },
4844
+ "WaitCondition": {
4845
+ "type": "string",
4846
+ "pattern": "^(submitted|signal:[A-Za-z0-9][A-Za-z0-9._-]{0,63}|state:[^\\u0000-\\u001f\\u007f]{1,256}|event:[a-z][a-zA-Z0-9_-]*(\\.[a-zA-Z0-9_-]+)*(\\.\\*)?)$",
4847
+ "description": "What wait waits for: submitted, signal:<name>, state:<fieldId> or event:<type>."
4848
+ },
4849
+ "WaitParams": {
4850
+ "type": "object",
4851
+ "properties": {
4852
+ "artifact": {
4853
+ "$ref": "#/$defs/ArtifactRef"
4854
+ },
4855
+ "until": {
4856
+ "$ref": "#/$defs/WaitCondition"
4857
+ },
4858
+ "after": {
4859
+ "$ref": "#/$defs/Cursor"
4860
+ },
4861
+ "timeoutMs": {
4862
+ "type": "integer",
4863
+ "minimum": 0,
4864
+ "maximum": 2147483647
4865
+ }
4866
+ },
4867
+ "required": [
4868
+ "artifact",
4869
+ "until",
4870
+ "timeoutMs"
4871
+ ]
4872
+ },
4873
+ "WaitResult": {
4874
+ "oneOf": [
4875
+ {
4876
+ "type": "object",
4877
+ "properties": {
4878
+ "status": {
4879
+ "type": "string",
4880
+ "const": "satisfied"
4881
+ },
4882
+ "event": {
4883
+ "$ref": "#/$defs/EventRecord"
4884
+ },
4885
+ "cursor": {
4886
+ "$ref": "#/$defs/Cursor"
4887
+ }
4888
+ },
4889
+ "required": [
4890
+ "status",
4891
+ "event",
4892
+ "cursor"
4893
+ ]
4894
+ },
4895
+ {
4896
+ "type": "object",
4897
+ "properties": {
4898
+ "status": {
4899
+ "type": "string",
4900
+ "const": "still_waiting"
4901
+ },
4902
+ "cursor": {
4903
+ "$ref": "#/$defs/Cursor"
4904
+ }
4905
+ },
4906
+ "required": [
4907
+ "status",
4908
+ "cursor"
4909
+ ]
4910
+ }
4911
+ ]
4912
+ },
4913
+ "WorkerStatus": {
4914
+ "type": "object",
4915
+ "properties": {
4916
+ "artifactId": {
4917
+ "type": "string"
4918
+ },
4919
+ "versionId": {
4920
+ "type": "string"
4921
+ },
4922
+ "state": {
4923
+ "type": "string",
4924
+ "enum": [
4925
+ "starting",
4926
+ "ready",
4927
+ "backoff",
4928
+ "parked",
4929
+ "stopped"
4930
+ ]
4931
+ },
4932
+ "pid": {
4933
+ "type": "integer",
4934
+ "minimum": 1,
4935
+ "maximum": 9007199254740991
4936
+ },
4937
+ "crashes": {
4938
+ "type": "integer",
4939
+ "minimum": 0,
4940
+ "maximum": 9007199254740991
4941
+ },
4942
+ "lastCause": {
4943
+ "type": "string"
4944
+ },
4945
+ "retryAt": {
4946
+ "type": "string"
4947
+ },
4948
+ "active": {
4949
+ "type": "integer",
4950
+ "minimum": 0,
4951
+ "maximum": 9007199254740991
4952
+ }
4953
+ },
4954
+ "required": [
4955
+ "artifactId",
4956
+ "versionId",
4957
+ "state",
4958
+ "crashes",
4959
+ "active"
4960
+ ],
4961
+ "description": "One artifact version's worker."
4962
+ }
4963
+ }
4964
+ }