@open-mercato/cezar 0.9.1 → 0.9.2

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 (300) hide show
  1. package/README.md +19 -11
  2. package/dist/agent-config/catalog.d.ts +1 -1
  3. package/dist/agent-config/files.d.ts +1 -1
  4. package/dist/agent-config/service.d.ts +1 -1
  5. package/dist/agent-config/validate.d.ts +1 -1
  6. package/dist/automations/coordinator.d.ts +26 -0
  7. package/dist/automations/coordinator.js +66 -0
  8. package/dist/automations/coordinator.js.map +1 -0
  9. package/dist/automations/github-poller.d.ts +74 -0
  10. package/dist/automations/github-poller.js +234 -0
  11. package/dist/automations/github-poller.js.map +1 -0
  12. package/dist/automations/scheduler.d.ts +42 -0
  13. package/dist/automations/scheduler.js +192 -0
  14. package/dist/automations/scheduler.js.map +1 -0
  15. package/dist/automations/store.d.ts +65 -0
  16. package/dist/automations/store.js +298 -0
  17. package/dist/automations/store.js.map +1 -0
  18. package/dist/automations/task-template.d.ts +18 -0
  19. package/dist/automations/task-template.js +95 -0
  20. package/dist/automations/task-template.js.map +1 -0
  21. package/dist/automations/types.d.ts +251 -0
  22. package/dist/automations/types.js +158 -0
  23. package/dist/automations/types.js.map +1 -0
  24. package/dist/config.d.ts +9 -111
  25. package/dist/contract/agent-config.d.ts +151 -0
  26. package/dist/contract/automations.d.ts +911 -0
  27. package/dist/contract/events.d.ts +45 -0
  28. package/dist/contract/github.d.ts +467 -0
  29. package/dist/contract/health.d.ts +96 -0
  30. package/dist/contract/index.d.ts +15 -0
  31. package/dist/contract/index.js +1421 -0
  32. package/dist/contract/projects.d.ts +182 -0
  33. package/dist/contract/repo.d.ts +234 -0
  34. package/dist/contract/runs.d.ts +1226 -0
  35. package/dist/contract/skills.d.ts +225 -0
  36. package/dist/contract/workflows.d.ts +212 -0
  37. package/dist/contract/workspace.d.ts +442 -0
  38. package/dist/core/agent-env.d.ts +1 -1
  39. package/dist/core/agent-runner.d.ts +12 -1
  40. package/dist/core/agent-runner.js +13 -0
  41. package/dist/core/agent-runner.js.map +1 -1
  42. package/dist/core/ask.d.ts +45 -124
  43. package/dist/core/ask.js +103 -13
  44. package/dist/core/ask.js.map +1 -1
  45. package/dist/core/claude-cli-runner.d.ts +2 -2
  46. package/dist/core/claude-cli-runner.js +52 -9
  47. package/dist/core/claude-cli-runner.js.map +1 -1
  48. package/dist/core/claude-ui-mapper.d.ts +1 -1
  49. package/dist/core/codex-app-server-runner.d.ts +1 -1
  50. package/dist/core/codex-app-server-runner.js +55 -3
  51. package/dist/core/codex-app-server-runner.js.map +1 -1
  52. package/dist/core/codex-app-server-transport.d.ts +6 -1
  53. package/dist/core/codex-app-server-transport.js +12 -3
  54. package/dist/core/codex-app-server-transport.js.map +1 -1
  55. package/dist/core/codex-model-catalog.d.ts +1 -1
  56. package/dist/core/codex-ui-mapper.d.ts +5 -1
  57. package/dist/core/codex-ui-mapper.js +74 -17
  58. package/dist/core/codex-ui-mapper.js.map +1 -1
  59. package/dist/core/model-identity.d.ts +1 -1
  60. package/dist/core/model-presets.d.ts +2 -2
  61. package/dist/core/model-presets.js +1 -1
  62. package/dist/core/opencode-server-runner.d.ts +2 -2
  63. package/dist/core/opencode-ui-mapper.d.ts +4 -1
  64. package/dist/core/opencode-ui-mapper.js +45 -7
  65. package/dist/core/opencode-ui-mapper.js.map +1 -1
  66. package/dist/core/provider-auth.d.ts +62 -0
  67. package/dist/core/provider-auth.js +290 -0
  68. package/dist/core/provider-auth.js.map +1 -0
  69. package/dist/core/provider-availability.d.ts +3 -0
  70. package/dist/core/provider-availability.js +13 -0
  71. package/dist/core/provider-availability.js.map +1 -0
  72. package/dist/core/runner-factory.d.ts +1 -1
  73. package/dist/core/runner-model-catalog.d.ts +1 -1
  74. package/dist/core/tool-display.d.ts +1 -1
  75. package/dist/core/ui-events.d.ts +1 -1
  76. package/dist/core/ui-events.js +1 -1
  77. package/dist/git-diff-base.d.ts +60 -0
  78. package/dist/git-diff-base.js +54 -0
  79. package/dist/git-diff-base.js.map +1 -0
  80. package/dist/git-worktree.d.ts +37 -6
  81. package/dist/git-worktree.js +39 -9
  82. package/dist/git-worktree.js.map +1 -1
  83. package/dist/handoff.d.ts +2 -2
  84. package/dist/handoff.js +1 -1
  85. package/dist/index.js +65 -8
  86. package/dist/index.js.map +1 -1
  87. package/dist/paths.d.ts +16 -1
  88. package/dist/paths.js +24 -1
  89. package/dist/paths.js.map +1 -1
  90. package/dist/planner.d.ts +2 -2
  91. package/dist/planner.js +1 -1
  92. package/dist/planner.js.map +1 -1
  93. package/dist/release/manifests.d.ts +81 -0
  94. package/dist/release/manifests.js +74 -0
  95. package/dist/release/manifests.js.map +1 -0
  96. package/dist/release/snapshot.d.ts +9 -23
  97. package/dist/release/snapshot.js +9 -22
  98. package/dist/release/snapshot.js.map +1 -1
  99. package/dist/release/stable.d.ts +15 -29
  100. package/dist/release/stable.js +14 -27
  101. package/dist/release/stable.js.map +1 -1
  102. package/dist/runs/auto-name.d.ts +1 -1
  103. package/dist/runs/retention.d.ts +1 -1
  104. package/dist/runs/store.d.ts +142 -336
  105. package/dist/runs/store.js +136 -9
  106. package/dist/runs/store.js.map +1 -1
  107. package/dist/runs/ui-event-sink.d.ts +1 -1
  108. package/dist/server/app-type.d.ts +21 -0
  109. package/dist/server/app-type.js +2 -0
  110. package/dist/server/app-type.js.map +1 -0
  111. package/dist/server/capabilities.d.ts +6 -5
  112. package/dist/server/capabilities.js +11 -0
  113. package/dist/server/capabilities.js.map +1 -1
  114. package/dist/server/forge/github.d.ts +58 -151
  115. package/dist/server/forge/github.js +530 -6
  116. package/dist/server/forge/github.js.map +1 -1
  117. package/dist/server/forge/index.d.ts +10 -3
  118. package/dist/server/forge/index.js +14 -1
  119. package/dist/server/forge/index.js.map +1 -1
  120. package/dist/server/forge/types.d.ts +86 -1
  121. package/dist/server/git-changes.d.ts +8 -8
  122. package/dist/server/git-changes.js +14 -17
  123. package/dist/server/git-changes.js.map +1 -1
  124. package/dist/server/git.d.ts +2 -0
  125. package/dist/server/git.js +9 -0
  126. package/dist/server/git.js.map +1 -1
  127. package/dist/server/github.d.ts +3 -3
  128. package/dist/server/github.js +1 -1
  129. package/dist/server/github.js.map +1 -1
  130. package/dist/server/pr.d.ts +2 -2
  131. package/dist/server/project-context.d.ts +20 -3
  132. package/dist/server/project-context.js +30 -1
  133. package/dist/server/project-context.js.map +1 -1
  134. package/dist/server/provider-action-gate.d.ts +8 -0
  135. package/dist/server/provider-action-gate.js +54 -0
  136. package/dist/server/provider-action-gate.js.map +1 -0
  137. package/dist/server/provider-auth-runtime.d.ts +21 -0
  138. package/dist/server/provider-auth-runtime.js +66 -0
  139. package/dist/server/provider-auth-runtime.js.map +1 -0
  140. package/dist/server/server.d.ts +11142 -47
  141. package/dist/server/server.js +1714 -806
  142. package/dist/server/server.js.map +1 -1
  143. package/dist/server/validators.d.ts +97 -0
  144. package/dist/server/validators.js +86 -0
  145. package/dist/server/validators.js.map +1 -0
  146. package/dist/server/ws.d.ts +2 -2
  147. package/dist/server/ws.js +2 -2
  148. package/dist/server/ws.js.map +1 -1
  149. package/dist/server-install/engine.d.ts +1 -1
  150. package/dist/server-install/platforms/macosx-ngrok.d.ts +1 -1
  151. package/dist/server-install/platforms/ubuntu-vps.d.ts +16 -1
  152. package/dist/server-install/platforms/ubuntu-vps.js +83 -1
  153. package/dist/server-install/platforms/ubuntu-vps.js.map +1 -1
  154. package/dist/server-install/state.d.ts +1 -1
  155. package/dist/server-install/steps.d.ts +2 -2
  156. package/dist/server-install/strategies.d.ts +1 -1
  157. package/dist/server-install/types.d.ts +38 -424
  158. package/dist/server-install/ui.d.ts +1 -1
  159. package/dist/skills-banner.d.ts +7 -6
  160. package/dist/skills-banner.js +7 -6
  161. package/dist/skills-banner.js.map +1 -1
  162. package/dist/skills-remote.d.ts +2 -2
  163. package/dist/skills-update.d.ts +88 -0
  164. package/dist/skills-update.js +392 -0
  165. package/dist/skills-update.js.map +1 -0
  166. package/dist/skills.d.ts +2 -0
  167. package/dist/skills.js +3 -2
  168. package/dist/skills.js.map +1 -1
  169. package/dist/todos.d.ts +2 -28
  170. package/dist/todos.js +1 -1
  171. package/dist/ui-state.d.ts +16 -2
  172. package/dist/ui-state.js +14 -1
  173. package/dist/ui-state.js.map +1 -1
  174. package/dist/workflows/load.d.ts +1 -1
  175. package/dist/workflows/run.d.ts +53 -12
  176. package/dist/workflows/run.js +436 -64
  177. package/dist/workflows/run.js.map +1 -1
  178. package/dist/workflows/types.d.ts +59 -224
  179. package/dist/workflows/types.js +14 -0
  180. package/dist/workflows/types.js.map +1 -1
  181. package/dist/workspace/config.d.ts +68 -206
  182. package/dist/workspace/config.js +145 -14
  183. package/dist/workspace/config.js.map +1 -1
  184. package/dist/workspace/migrations.d.ts +1 -1
  185. package/dist/workspace/migrations.js +19 -4
  186. package/dist/workspace/migrations.js.map +1 -1
  187. package/dist/workspace/projects.d.ts +8 -2
  188. package/dist/workspace/projects.js +9 -3
  189. package/dist/workspace/projects.js.map +1 -1
  190. package/dist/workspace/semaphore.d.ts +6 -0
  191. package/dist/workspace/semaphore.js +14 -1
  192. package/dist/workspace/semaphore.js.map +1 -1
  193. package/dist/workspace/ui-state.d.ts +13 -3
  194. package/dist/workspace/ui-state.js +15 -5
  195. package/dist/workspace/ui-state.js.map +1 -1
  196. package/package.json +17 -39
  197. package/scripts/inline-contract.mjs +112 -0
  198. package/scripts/mock-claude.mjs +39 -1
  199. package/scripts/sync-readme.mjs +20 -0
  200. package/web/dist/assets/alert-dialog-ghffK6g9.js +1 -0
  201. package/web/dist/assets/arrow-down-Cz8qb71e.js +1 -0
  202. package/web/dist/assets/arrow-left-wcYKQXI_.js +1 -0
  203. package/web/dist/assets/bundle-mjs-BT31bpU6.js +1 -0
  204. package/web/dist/assets/centered-state-ZtnFHA-n.js +43 -0
  205. package/web/dist/assets/chevron-right-G4caF2QV.js +1 -0
  206. package/web/dist/assets/{chunk-BO2N2NFS-DtrdTCWa.js → chunk-BO2N2NFS-DE6qKn3r.js} +8 -8
  207. package/web/dist/assets/circle-check--KvBxXWp.js +1 -0
  208. package/web/dist/assets/circle-x-C3EFZ3xf.js +1 -0
  209. package/web/dist/assets/collapsible-B0JVzd0B.js +1 -0
  210. package/web/dist/assets/commit-list-wm6DPHNs.js +1 -0
  211. package/web/dist/assets/compare-variants-DbdP4Y5T.js +1 -0
  212. package/web/dist/assets/{core-DePtBHcl.js → core-BCsw8oQw.js} +1 -1
  213. package/web/dist/assets/diff-Bizc96qe.js +3 -0
  214. package/web/dist/assets/diff-stat-Dyfg3ltF.js +1 -0
  215. package/web/dist/assets/{diff-view-DCeSegKk.js → diff-view-CG8ek6tC.js} +4 -4
  216. package/web/dist/assets/dropdown-menu-C1Dlf35P.js +1 -0
  217. package/web/dist/assets/editable-title-5rC_QRBZ.js +1 -0
  218. package/web/dist/assets/{ellipsis-vertical-CNnSLn5a.js → ellipsis-vertical-DpGTRqC2.js} +1 -1
  219. package/web/dist/assets/{file-D4GBh1ao.js → file-DlUGpUlb.js} +1 -1
  220. package/web/dist/assets/folder-BAY6Vddy.js +1 -0
  221. package/web/dist/assets/{git-pull-request-DnR8Xh4_.js → git-pull-request-agOG0iGM.js} +1 -1
  222. package/web/dist/assets/git-toolbar-DGiNMmtY.js +1 -0
  223. package/web/dist/assets/github-Vp7lxYGQ.js +1 -0
  224. package/web/dist/assets/highlighted-body-OFNGDK62-BL-MfFgl.js +1 -0
  225. package/web/dist/assets/highlighter-CdHqIwFr.js +3 -0
  226. package/web/dist/assets/image-preview-BWGk5fPX.js +1 -0
  227. package/web/dist/assets/index-DSxyJpuK.css +2 -0
  228. package/web/dist/assets/index-DiawI6RX.js +6 -0
  229. package/web/dist/assets/lib-BQXq3kEf.js +1 -0
  230. package/web/dist/assets/lib-BxQXEXDF.js +1 -0
  231. package/web/dist/assets/markdown-BGBOGCA_.js +2 -0
  232. package/web/dist/assets/mermaid-GHXKKRXX-C4jxqUUb.js +1 -0
  233. package/web/dist/assets/new-task-form-BpAw_Dks.js +1 -0
  234. package/web/dist/assets/pill-Dvs-P0xy.js +1 -0
  235. package/web/dist/assets/project-router-Cx8NPoqn.js +1 -0
  236. package/web/dist/assets/prompt-templates-CSBYBR1I.js +15 -0
  237. package/web/dist/assets/react-runtime-CCIEwYL0.js +9 -0
  238. package/web/dist/assets/{refresh-cw-BT8E96Tm.js → refresh-cw-BoGdAykg.js} +1 -1
  239. package/web/dist/assets/repo-git-PmX-BNMo.js +1 -0
  240. package/web/dist/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  241. package/web/dist/assets/run-diff-EcOkf3ti.js +3 -0
  242. package/web/dist/assets/run-header-BGiv6_qX.js +1 -0
  243. package/web/dist/assets/{search-x-BDjaMrzG.js → search-x-X3EpVhgs.js} +1 -1
  244. package/web/dist/assets/skill-empty-hint-CZLALx6l.js +1 -0
  245. package/web/dist/assets/skills-BiWfHmCR.js +1 -0
  246. package/web/dist/assets/skills-CC91ouGH.js +1 -0
  247. package/web/dist/assets/sparkles-Dt4q7pbG.js +1 -0
  248. package/web/dist/assets/{square-terminal-Ckjjn0vb.js → square-terminal-hwBL8XsC.js} +1 -1
  249. package/web/dist/assets/tab-link-DIlR5T07.js +1 -0
  250. package/web/dist/assets/task-changes-XkHDxzQA.js +1 -0
  251. package/web/dist/assets/task-commits-BTTA5k5T.js +1 -0
  252. package/web/dist/assets/task-files-Da8_4C9g.js +2 -0
  253. package/web/dist/assets/task-thread-DoNXUsHr.js +9 -0
  254. package/web/dist/assets/textarea-CUdokhkv.js +1 -0
  255. package/web/dist/assets/thread-loading-B8q8ukXJ.js +1 -0
  256. package/web/dist/assets/{trash-2-DAyZ0VSi.js → trash-2-DhVIdWv8.js} +1 -1
  257. package/web/dist/assets/{triangle-alert-Uy8rokUh.js → triangle-alert-XYT0DGCI.js} +1 -1
  258. package/web/dist/assets/{upload-CDdyPPo_.js → upload-BKjN59-1.js} +1 -1
  259. package/web/dist/assets/use-desktop-Bf5LS_P4.js +1 -0
  260. package/web/dist/assets/use-submit-shortcut-CzVyoAMd.js +1 -0
  261. package/web/dist/assets/utils-DsLuRXwV.js +64 -0
  262. package/web/dist/assets/workflows-o2QU_pvU.js +11 -0
  263. package/web/dist/assets/zoomable-image-7WyUiaVD.js +1 -0
  264. package/web/dist/index.html +32 -13
  265. package/scripts/dev.mjs +0 -74
  266. package/scripts/release-snapshot.mjs +0 -130
  267. package/scripts/release.mjs +0 -119
  268. package/web/dist/assets/arrow-left-CnSdp92h.js +0 -1
  269. package/web/dist/assets/bundle-mjs-BegPhL5c.js +0 -1
  270. package/web/dist/assets/centered-state-DOsTcJZF.js +0 -43
  271. package/web/dist/assets/commit-list-BrxBEzRK.js +0 -1
  272. package/web/dist/assets/compare-variants-Bv2c9ORF.js +0 -1
  273. package/web/dist/assets/dist-B6XQOhgM.js +0 -1
  274. package/web/dist/assets/git-toolbar-pIC1ubPM.js +0 -1
  275. package/web/dist/assets/github-DTTSG0ht.js +0 -1
  276. package/web/dist/assets/highlighted-body-OFNGDK62-BuFJwunK.js +0 -1
  277. package/web/dist/assets/image-preview-DEhW0TFz.js +0 -1
  278. package/web/dist/assets/index-Cijmlz7q.js +0 -30
  279. package/web/dist/assets/index-DzroxqBG.css +0 -2
  280. package/web/dist/assets/lib-DPEZDBUN.js +0 -1
  281. package/web/dist/assets/lib-uHpeUPzK.js +0 -1
  282. package/web/dist/assets/mermaid-GHXKKRXX-CN2zQue0.js +0 -1
  283. package/web/dist/assets/open-mercato-toBr6SOa.svg +0 -11
  284. package/web/dist/assets/project-router-BMx4e8m-.js +0 -1
  285. package/web/dist/assets/repo-git-BusYfa3t.js +0 -1
  286. package/web/dist/assets/run-diff-wOJ3odA-.js +0 -3
  287. package/web/dist/assets/run-header-Cg5incil.js +0 -1
  288. package/web/dist/assets/skill-empty-hint-DTUSp6Vl.js +0 -1
  289. package/web/dist/assets/skills-PpP2owbM.js +0 -1
  290. package/web/dist/assets/tab-link-F3uQrdm2.js +0 -1
  291. package/web/dist/assets/task-changes-iD9kS79I.js +0 -1
  292. package/web/dist/assets/task-commits-COkLaUri.js +0 -1
  293. package/web/dist/assets/task-files-Ckttz7XH.js +0 -2
  294. package/web/dist/assets/task-thread-CQD91VPt.js +0 -9
  295. package/web/dist/assets/textarea-Bj_LCreg.js +0 -1
  296. package/web/dist/assets/use-desktop-DUh0STzq.js +0 -3
  297. package/web/dist/assets/utils-B8s5qIcK.js +0 -1
  298. package/web/dist/assets/workflows-BFk8C0co.js +0 -11
  299. package/web/dist/assets/zoomable-image-PEDOqyLQ.js +0 -1
  300. /package/web/{open-mercato.svg → dist/open-mercato.svg} +0 -0
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * SSE frame payloads — the only shapes in this contract that are NOT derived from a route.
4
+ *
5
+ * They are delivered over `text/event-stream` (`GET /api/v1/runs/:id/events`, `/api/v1/events`,
6
+ * `/api/v1/workspace/events`), which Hono types as a string body, so `InferResponseType` sees a
7
+ * stream of text and never the frame inside it. That makes the route-parity check in
8
+ * `contract-parity*.test.ts` inapplicable here — but it is no reason to hand-write the TYPE.
9
+ * These are zod like everything else, and `api-types.test.ts` still pins `RunEvent` against the
10
+ * server's own declaration, which is the closest thing to a route that exists for it.
11
+ */
12
+ /**
13
+ * One line of a run transcript.
14
+ *
15
+ * Open by design: `type` is a plain string and unknown keys pass through, because the event
16
+ * vocabulary is an APPEND-ONLY on-disk format (BACKWARD_COMPATIBILITY.md §7) that old NDJSON
17
+ * recordings must keep replaying forever. Closing this schema would make a recording written by
18
+ * a newer cezar unreadable by an older one — the opposite of what the format promises.
19
+ */
20
+ export declare const runEventSchema: z.ZodObject<{
21
+ seq: z.ZodNumber;
22
+ ts: z.ZodString;
23
+ stepId: z.ZodOptional<z.ZodString>;
24
+ type: z.ZodString;
25
+ }, z.core.$loose>;
26
+ export type RunEvent = z.infer<typeof runEventSchema>;
27
+ /**
28
+ * One `checkout-progress` workspace frame (multi-project spec, step 4.3).
29
+ *
30
+ * `cloning` carries a single line of `git clone` output; `done` and `error` are terminal. The
31
+ * clone dialog renders `error` VERBATIM — a clone fails for reasons (auth, network, a mistyped
32
+ * repo) that only the server can name.
33
+ */
34
+ export declare const checkoutProgressEventSchema: z.ZodObject<{
35
+ checkoutId: z.ZodOptional<z.ZodString>;
36
+ name: z.ZodString;
37
+ phase: z.ZodEnum<{
38
+ cloning: "cloning";
39
+ done: "done";
40
+ error: "error";
41
+ }>;
42
+ line: z.ZodOptional<z.ZodString>;
43
+ error: z.ZodOptional<z.ZodString>;
44
+ }, z.core.$strip>;
45
+ export type CheckoutProgressEvent = z.infer<typeof checkoutProgressEventSchema>;
@@ -0,0 +1,467 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * One issue or pull request, flattened for the cockpit (`ForgeItem` server-side).
4
+ * A protected shape — BACKWARD_COMPATIBILITY.md §2 forbids reshaping it.
5
+ */
6
+ export declare const githubItemSchema: z.ZodObject<{
7
+ kind: z.ZodEnum<{
8
+ issue: "issue";
9
+ pr: "pr";
10
+ }>;
11
+ number: z.ZodNumber;
12
+ title: z.ZodString;
13
+ author: z.ZodString;
14
+ createdAt: z.ZodString;
15
+ labels: z.ZodArray<z.ZodString>;
16
+ body: z.ZodString;
17
+ url: z.ZodString;
18
+ comments: z.ZodNumber;
19
+ isDraft: z.ZodOptional<z.ZodBoolean>;
20
+ additions: z.ZodOptional<z.ZodNumber>;
21
+ deletions: z.ZodOptional<z.ZodNumber>;
22
+ checks: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
23
+ failing: "failing";
24
+ passing: "passing";
25
+ pending: "pending";
26
+ }>>>;
27
+ }, z.core.$strip>;
28
+ export type GithubItem = z.infer<typeof githubItemSchema>;
29
+ /**
30
+ * `GET /api/v1/github` — the tab's issue + PR lists.
31
+ *
32
+ * NOT a discriminated union, unlike its siblings: `fetchGithub` always answers the full record and
33
+ * merely flips `available`, so an unavailable payload still carries `issues: []` / `prs: []`.
34
+ */
35
+ export declare const githubDataSchema: z.ZodObject<{
36
+ available: z.ZodBoolean;
37
+ reason: z.ZodOptional<z.ZodString>;
38
+ repo: z.ZodOptional<z.ZodString>;
39
+ syncedAt: z.ZodOptional<z.ZodString>;
40
+ issues: z.ZodArray<z.ZodObject<{
41
+ kind: z.ZodEnum<{
42
+ issue: "issue";
43
+ pr: "pr";
44
+ }>;
45
+ number: z.ZodNumber;
46
+ title: z.ZodString;
47
+ author: z.ZodString;
48
+ createdAt: z.ZodString;
49
+ labels: z.ZodArray<z.ZodString>;
50
+ body: z.ZodString;
51
+ url: z.ZodString;
52
+ comments: z.ZodNumber;
53
+ isDraft: z.ZodOptional<z.ZodBoolean>;
54
+ additions: z.ZodOptional<z.ZodNumber>;
55
+ deletions: z.ZodOptional<z.ZodNumber>;
56
+ checks: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
57
+ failing: "failing";
58
+ passing: "passing";
59
+ pending: "pending";
60
+ }>>>;
61
+ }, z.core.$strip>>;
62
+ prs: z.ZodArray<z.ZodObject<{
63
+ kind: z.ZodEnum<{
64
+ issue: "issue";
65
+ pr: "pr";
66
+ }>;
67
+ number: z.ZodNumber;
68
+ title: z.ZodString;
69
+ author: z.ZodString;
70
+ createdAt: z.ZodString;
71
+ labels: z.ZodArray<z.ZodString>;
72
+ body: z.ZodString;
73
+ url: z.ZodString;
74
+ comments: z.ZodNumber;
75
+ isDraft: z.ZodOptional<z.ZodBoolean>;
76
+ additions: z.ZodOptional<z.ZodNumber>;
77
+ deletions: z.ZodOptional<z.ZodNumber>;
78
+ checks: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
79
+ failing: "failing";
80
+ passing: "passing";
81
+ pending: "pending";
82
+ }>>>;
83
+ }, z.core.$strip>>;
84
+ labelColors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
85
+ }, z.core.$strip>;
86
+ export type GithubData = z.infer<typeof githubDataSchema>;
87
+ /**
88
+ * `GET /api/v1/github/checks?prs=…` (#664) — lazy PR checks glyphs, `number → glyph`. The list
89
+ * call no longer ships `statusCheckRollup`, so a row's glyph is hydrated here for the on-screen
90
+ * rows only. An absent number means "no checks / not found".
91
+ */
92
+ export declare const githubChecksDataSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
93
+ available: z.ZodLiteral<true>;
94
+ checks: z.ZodRecord<z.ZodNumber, z.ZodNullable<z.ZodEnum<{
95
+ failing: "failing";
96
+ passing: "passing";
97
+ pending: "pending";
98
+ }>>>;
99
+ }, z.core.$strip>, z.ZodObject<{
100
+ available: z.ZodLiteral<false>;
101
+ reason: z.ZodString;
102
+ }, z.core.$strip>], "available">;
103
+ export type GithubChecksData = z.infer<typeof githubChecksDataSchema>;
104
+ /** One comment or PR review summary in an issue/PR thread (#499). */
105
+ export declare const githubCommentSchema: z.ZodObject<{
106
+ id: z.ZodNumber;
107
+ author: z.ZodString;
108
+ avatarUrl: z.ZodOptional<z.ZodString>;
109
+ createdAt: z.ZodString;
110
+ body: z.ZodString;
111
+ kind: z.ZodEnum<{
112
+ comment: "comment";
113
+ review: "review";
114
+ }>;
115
+ reviewState: z.ZodOptional<z.ZodEnum<{
116
+ approved: "approved";
117
+ changes_requested: "changes_requested";
118
+ commented: "commented";
119
+ dismissed: "dismissed";
120
+ }>>;
121
+ url: z.ZodString;
122
+ }, z.core.$strip>;
123
+ export type GithubComment = z.infer<typeof githubCommentSchema>;
124
+ /**
125
+ * The timeline event kinds the thread renders (#525) — an allowlist, so an unknown GitHub event
126
+ * type is dropped server-side rather than reaching the client.
127
+ */
128
+ export declare const githubTimelineEventKindSchema: z.ZodEnum<{
129
+ assigned: "assigned";
130
+ closed: "closed";
131
+ committed: "committed";
132
+ "cross-referenced": "cross-referenced";
133
+ head_ref_force_pushed: "head_ref_force_pushed";
134
+ labeled: "labeled";
135
+ merged: "merged";
136
+ renamed: "renamed";
137
+ reopened: "reopened";
138
+ unassigned: "unassigned";
139
+ unlabeled: "unlabeled";
140
+ }>;
141
+ export type GithubTimelineEventKind = z.infer<typeof githubTimelineEventKindSchema>;
142
+ /**
143
+ * One non-comment timeline row (#525). Deliberately a separate shape from `GithubComment` rather
144
+ * than a widened `kind`, which would break the client's narrowing.
145
+ */
146
+ export declare const githubTimelineEventSchema: z.ZodObject<{
147
+ id: z.ZodString;
148
+ kind: z.ZodEnum<{
149
+ assigned: "assigned";
150
+ closed: "closed";
151
+ committed: "committed";
152
+ "cross-referenced": "cross-referenced";
153
+ head_ref_force_pushed: "head_ref_force_pushed";
154
+ labeled: "labeled";
155
+ merged: "merged";
156
+ renamed: "renamed";
157
+ reopened: "reopened";
158
+ unassigned: "unassigned";
159
+ unlabeled: "unlabeled";
160
+ }>;
161
+ actor: z.ZodString;
162
+ avatarUrl: z.ZodOptional<z.ZodString>;
163
+ createdAt: z.ZodString;
164
+ url: z.ZodOptional<z.ZodString>;
165
+ sha: z.ZodOptional<z.ZodString>;
166
+ message: z.ZodOptional<z.ZodString>;
167
+ checks: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
168
+ failing: "failing";
169
+ passing: "passing";
170
+ pending: "pending";
171
+ }>>>;
172
+ label: z.ZodOptional<z.ZodObject<{
173
+ name: z.ZodString;
174
+ color: z.ZodOptional<z.ZodString>;
175
+ }, z.core.$strip>>;
176
+ subject: z.ZodOptional<z.ZodString>;
177
+ refNumber: z.ZodOptional<z.ZodNumber>;
178
+ refTitle: z.ZodOptional<z.ZodString>;
179
+ refIsPr: z.ZodOptional<z.ZodBoolean>;
180
+ }, z.core.$strip>;
181
+ export type GithubTimelineEvent = z.infer<typeof githubTimelineEventSchema>;
182
+ /**
183
+ * `GET /api/v1/github/comments/:kind/:number` — the full thread. Degrades to
184
+ * `{ available: false, reason }` like the list fetch, never an error.
185
+ */
186
+ export declare const githubCommentsDataSchema: z.ZodObject<{
187
+ available: z.ZodBoolean;
188
+ reason: z.ZodOptional<z.ZodString>;
189
+ comments: z.ZodArray<z.ZodObject<{
190
+ id: z.ZodNumber;
191
+ author: z.ZodString;
192
+ avatarUrl: z.ZodOptional<z.ZodString>;
193
+ createdAt: z.ZodString;
194
+ body: z.ZodString;
195
+ kind: z.ZodEnum<{
196
+ comment: "comment";
197
+ review: "review";
198
+ }>;
199
+ reviewState: z.ZodOptional<z.ZodEnum<{
200
+ approved: "approved";
201
+ changes_requested: "changes_requested";
202
+ commented: "commented";
203
+ dismissed: "dismissed";
204
+ }>>;
205
+ url: z.ZodString;
206
+ }, z.core.$strip>>;
207
+ truncated: z.ZodOptional<z.ZodBoolean>;
208
+ events: z.ZodOptional<z.ZodArray<z.ZodObject<{
209
+ id: z.ZodString;
210
+ kind: z.ZodEnum<{
211
+ assigned: "assigned";
212
+ closed: "closed";
213
+ committed: "committed";
214
+ "cross-referenced": "cross-referenced";
215
+ head_ref_force_pushed: "head_ref_force_pushed";
216
+ labeled: "labeled";
217
+ merged: "merged";
218
+ renamed: "renamed";
219
+ reopened: "reopened";
220
+ unassigned: "unassigned";
221
+ unlabeled: "unlabeled";
222
+ }>;
223
+ actor: z.ZodString;
224
+ avatarUrl: z.ZodOptional<z.ZodString>;
225
+ createdAt: z.ZodString;
226
+ url: z.ZodOptional<z.ZodString>;
227
+ sha: z.ZodOptional<z.ZodString>;
228
+ message: z.ZodOptional<z.ZodString>;
229
+ checks: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
230
+ failing: "failing";
231
+ passing: "passing";
232
+ pending: "pending";
233
+ }>>>;
234
+ label: z.ZodOptional<z.ZodObject<{
235
+ name: z.ZodString;
236
+ color: z.ZodOptional<z.ZodString>;
237
+ }, z.core.$strip>>;
238
+ subject: z.ZodOptional<z.ZodString>;
239
+ refNumber: z.ZodOptional<z.ZodNumber>;
240
+ refTitle: z.ZodOptional<z.ZodString>;
241
+ refIsPr: z.ZodOptional<z.ZodBoolean>;
242
+ }, z.core.$strip>>>;
243
+ }, z.core.$strip>;
244
+ export type GithubCommentsData = z.infer<typeof githubCommentsDataSchema>;
245
+ export declare const githubMergeMethodSchema: z.ZodEnum<{
246
+ merge: "merge";
247
+ rebase: "rebase";
248
+ squash: "squash";
249
+ }>;
250
+ export type GithubMergeMethod = z.infer<typeof githubMergeMethodSchema>;
251
+ /** One check row of the merge panel. */
252
+ export declare const githubPrCheckSchema: z.ZodObject<{
253
+ name: z.ZodString;
254
+ state: z.ZodEnum<{
255
+ failing: "failing";
256
+ passing: "passing";
257
+ pending: "pending";
258
+ unknown: "unknown";
259
+ }>;
260
+ required: z.ZodNullable<z.ZodBoolean>;
261
+ url: z.ZodOptional<z.ZodString>;
262
+ }, z.core.$strip>;
263
+ export type GithubPrCheck = z.infer<typeof githubPrCheckSchema>;
264
+ /** Everything the merge panel needs about one PR. */
265
+ export declare const githubPrMergeStateSchema: z.ZodObject<{
266
+ number: z.ZodNumber;
267
+ title: z.ZodString;
268
+ url: z.ZodString;
269
+ state: z.ZodEnum<{
270
+ closed: "closed";
271
+ merged: "merged";
272
+ open: "open";
273
+ }>;
274
+ isDraft: z.ZodBoolean;
275
+ headRef: z.ZodString;
276
+ baseRef: z.ZodString;
277
+ headSha: z.ZodString;
278
+ mergeable: z.ZodEnum<{
279
+ conflicting: "conflicting";
280
+ mergeable: "mergeable";
281
+ unknown: "unknown";
282
+ }>;
283
+ reviewDecision: z.ZodEnum<{
284
+ approved: "approved";
285
+ "changes-requested": "changes-requested";
286
+ "review-required": "review-required";
287
+ unknown: "unknown";
288
+ }>;
289
+ checks: z.ZodArray<z.ZodObject<{
290
+ name: z.ZodString;
291
+ state: z.ZodEnum<{
292
+ failing: "failing";
293
+ passing: "passing";
294
+ pending: "pending";
295
+ unknown: "unknown";
296
+ }>;
297
+ required: z.ZodNullable<z.ZodBoolean>;
298
+ url: z.ZodOptional<z.ZodString>;
299
+ }, z.core.$strip>>;
300
+ methods: z.ZodArray<z.ZodEnum<{
301
+ merge: "merge";
302
+ rebase: "rebase";
303
+ squash: "squash";
304
+ }>>;
305
+ defaultMethod: z.ZodNullable<z.ZodEnum<{
306
+ merge: "merge";
307
+ rebase: "rebase";
308
+ squash: "squash";
309
+ }>>;
310
+ eligibility: z.ZodEnum<{
311
+ blocked: "blocked";
312
+ pending: "pending";
313
+ ready: "ready";
314
+ terminal: "terminal";
315
+ unauthorized: "unauthorized";
316
+ unknown: "unknown";
317
+ }>;
318
+ blockers: z.ZodArray<z.ZodObject<{
319
+ code: z.ZodString;
320
+ message: z.ZodString;
321
+ }, z.core.$strip>>;
322
+ canMerge: z.ZodBoolean;
323
+ canOverride: z.ZodBoolean;
324
+ }, z.core.$strip>;
325
+ export type GithubPrMergeState = z.infer<typeof githubPrMergeStateSchema>;
326
+ /** `GET /api/v1/github/prs/:number/merge-state` — 200 either way; the reason is the degrade. */
327
+ export declare const githubPrMergeStateResponseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
328
+ available: z.ZodLiteral<true>;
329
+ mergeState: z.ZodObject<{
330
+ number: z.ZodNumber;
331
+ title: z.ZodString;
332
+ url: z.ZodString;
333
+ state: z.ZodEnum<{
334
+ closed: "closed";
335
+ merged: "merged";
336
+ open: "open";
337
+ }>;
338
+ isDraft: z.ZodBoolean;
339
+ headRef: z.ZodString;
340
+ baseRef: z.ZodString;
341
+ headSha: z.ZodString;
342
+ mergeable: z.ZodEnum<{
343
+ conflicting: "conflicting";
344
+ mergeable: "mergeable";
345
+ unknown: "unknown";
346
+ }>;
347
+ reviewDecision: z.ZodEnum<{
348
+ approved: "approved";
349
+ "changes-requested": "changes-requested";
350
+ "review-required": "review-required";
351
+ unknown: "unknown";
352
+ }>;
353
+ checks: z.ZodArray<z.ZodObject<{
354
+ name: z.ZodString;
355
+ state: z.ZodEnum<{
356
+ failing: "failing";
357
+ passing: "passing";
358
+ pending: "pending";
359
+ unknown: "unknown";
360
+ }>;
361
+ required: z.ZodNullable<z.ZodBoolean>;
362
+ url: z.ZodOptional<z.ZodString>;
363
+ }, z.core.$strip>>;
364
+ methods: z.ZodArray<z.ZodEnum<{
365
+ merge: "merge";
366
+ rebase: "rebase";
367
+ squash: "squash";
368
+ }>>;
369
+ defaultMethod: z.ZodNullable<z.ZodEnum<{
370
+ merge: "merge";
371
+ rebase: "rebase";
372
+ squash: "squash";
373
+ }>>;
374
+ eligibility: z.ZodEnum<{
375
+ blocked: "blocked";
376
+ pending: "pending";
377
+ ready: "ready";
378
+ terminal: "terminal";
379
+ unauthorized: "unauthorized";
380
+ unknown: "unknown";
381
+ }>;
382
+ blockers: z.ZodArray<z.ZodObject<{
383
+ code: z.ZodString;
384
+ message: z.ZodString;
385
+ }, z.core.$strip>>;
386
+ canMerge: z.ZodBoolean;
387
+ canOverride: z.ZodBoolean;
388
+ }, z.core.$strip>;
389
+ }, z.core.$strip>, z.ZodObject<{
390
+ available: z.ZodLiteral<false>;
391
+ reason: z.ZodString;
392
+ }, z.core.$strip>], "available">;
393
+ export type GithubPrMergeStateResponse = z.infer<typeof githubPrMergeStateResponseSchema>;
394
+ /**
395
+ * `POST /api/v1/github/prs/:number/merge` — the 200 branch only. Every refusal (403/404/409/502)
396
+ * is an `ApiError`, so `merged` is pinned to `true` here rather than a boolean to re-check.
397
+ */
398
+ export declare const githubMergeResponseSchema: z.ZodObject<{
399
+ merged: z.ZodLiteral<true>;
400
+ number: z.ZodNumber;
401
+ url: z.ZodString;
402
+ method: z.ZodEnum<{
403
+ merge: "merge";
404
+ rebase: "rebase";
405
+ squash: "squash";
406
+ }>;
407
+ mergeCommitSha: z.ZodOptional<z.ZodString>;
408
+ }, z.core.$strip>;
409
+ export type GithubMergeResponse = z.infer<typeof githubMergeResponseSchema>;
410
+ /** One changed file of a pull request's diff. */
411
+ export declare const githubPrChangeSchema: z.ZodObject<{
412
+ path: z.ZodString;
413
+ previousPath: z.ZodOptional<z.ZodString>;
414
+ status: z.ZodEnum<{
415
+ added: "added";
416
+ changed: "changed";
417
+ copied: "copied";
418
+ modified: "modified";
419
+ removed: "removed";
420
+ renamed: "renamed";
421
+ }>;
422
+ additions: z.ZodNumber;
423
+ deletions: z.ZodNumber;
424
+ patch: z.ZodOptional<z.ZodString>;
425
+ patchUnavailableReason: z.ZodOptional<z.ZodEnum<{
426
+ binary: "binary";
427
+ "not-provided": "not-provided";
428
+ "too-large": "too-large";
429
+ }>>;
430
+ truncated: z.ZodOptional<z.ZodBoolean>;
431
+ }, z.core.$strip>;
432
+ export type GithubPrChange = z.infer<typeof githubPrChangeSchema>;
433
+ /** `GET /api/v1/github/prs/:number/changes` — bounded, read-only PR file changes. */
434
+ export declare const githubPrChangesDataSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
435
+ available: z.ZodLiteral<true>;
436
+ number: z.ZodNumber;
437
+ headSha: z.ZodString;
438
+ files: z.ZodArray<z.ZodObject<{
439
+ path: z.ZodString;
440
+ previousPath: z.ZodOptional<z.ZodString>;
441
+ status: z.ZodEnum<{
442
+ added: "added";
443
+ changed: "changed";
444
+ copied: "copied";
445
+ modified: "modified";
446
+ removed: "removed";
447
+ renamed: "renamed";
448
+ }>;
449
+ additions: z.ZodNumber;
450
+ deletions: z.ZodNumber;
451
+ patch: z.ZodOptional<z.ZodString>;
452
+ patchUnavailableReason: z.ZodOptional<z.ZodEnum<{
453
+ binary: "binary";
454
+ "not-provided": "not-provided";
455
+ "too-large": "too-large";
456
+ }>>;
457
+ truncated: z.ZodOptional<z.ZodBoolean>;
458
+ }, z.core.$strip>>;
459
+ additions: z.ZodNumber;
460
+ deletions: z.ZodNumber;
461
+ truncated: z.ZodBoolean;
462
+ reason: z.ZodOptional<z.ZodString>;
463
+ }, z.core.$strip>, z.ZodObject<{
464
+ available: z.ZodLiteral<false>;
465
+ reason: z.ZodString;
466
+ }, z.core.$strip>], "available">;
467
+ export type GithubPrChangesData = z.infer<typeof githubPrChangesDataSchema>;
@@ -0,0 +1,96 @@
1
+ import { z } from 'zod';
2
+ /** The three agent backends a run can be dispatched to. */
3
+ export declare const runnerSchema: z.ZodEnum<{
4
+ claude: "claude";
5
+ codex: "codex";
6
+ opencode: "opencode";
7
+ }>;
8
+ export type Runner = z.infer<typeof runnerSchema>;
9
+ /** Git facts about the project root, or `null` when it is not a repository. */
10
+ export declare const repoInfoSchema: z.ZodObject<{
11
+ root: z.ZodString;
12
+ branch: z.ZodString;
13
+ remote: z.ZodOptional<z.ZodString>;
14
+ }, z.core.$strip>;
15
+ export type RepoInfo = z.infer<typeof repoInfoSchema>;
16
+ /** One probed CLI behind the Tools menu. */
17
+ export declare const backendCheckSchema: z.ZodObject<{
18
+ name: z.ZodEnum<{
19
+ claude: "claude";
20
+ codex: "codex";
21
+ gh: "gh";
22
+ git: "git";
23
+ opencode: "opencode";
24
+ }>;
25
+ available: z.ZodBoolean;
26
+ version: z.ZodOptional<z.ZodString>;
27
+ hint: z.ZodOptional<z.ZodString>;
28
+ }, z.core.$strip>;
29
+ export type BackendCheck = z.infer<typeof backendCheckSchema>;
30
+ export declare const forgeInfoSchema: z.ZodObject<{
31
+ kind: z.ZodLiteral<"github">;
32
+ available: z.ZodOptional<z.ZodBoolean>;
33
+ reason: z.ZodOptional<z.ZodString>;
34
+ }, z.core.$strip>;
35
+ export type ForgeInfo = z.infer<typeof forgeInfoSchema>;
36
+ /** Server-side feature switches the cockpit reads once at boot. */
37
+ export declare const capabilitiesSchema: z.ZodObject<{
38
+ localHandoff: z.ZodBoolean;
39
+ followups: z.ZodBoolean;
40
+ singleProject: z.ZodBoolean;
41
+ tokenMetrics: z.ZodBoolean;
42
+ tokenUsageMetrics: z.ZodBoolean;
43
+ costMetrics: z.ZodBoolean;
44
+ }, z.core.$strip>;
45
+ export type Capabilities = z.infer<typeof capabilitiesSchema>;
46
+ /**
47
+ * `GET /api/v1/health` — the CORS-open discovery endpoint (BACKWARD_COMPATIBILITY.md §2).
48
+ *
49
+ * Additive fields only: this is the most externally-depended-on JSON in the app.
50
+ */
51
+ export declare const healthResponseSchema: z.ZodObject<{
52
+ version: z.ZodString;
53
+ latestVersion: z.ZodOptional<z.ZodString>;
54
+ repoRoot: z.ZodString;
55
+ repo: z.ZodNullable<z.ZodObject<{
56
+ root: z.ZodString;
57
+ branch: z.ZodString;
58
+ remote: z.ZodOptional<z.ZodString>;
59
+ }, z.core.$strip>>;
60
+ checks: z.ZodArray<z.ZodObject<{
61
+ name: z.ZodEnum<{
62
+ claude: "claude";
63
+ codex: "codex";
64
+ gh: "gh";
65
+ git: "git";
66
+ opencode: "opencode";
67
+ }>;
68
+ available: z.ZodBoolean;
69
+ version: z.ZodOptional<z.ZodString>;
70
+ hint: z.ZodOptional<z.ZodString>;
71
+ }, z.core.$strip>>;
72
+ defaultRunner: z.ZodEnum<{
73
+ claude: "claude";
74
+ codex: "codex";
75
+ opencode: "opencode";
76
+ }>;
77
+ forge: z.ZodNullable<z.ZodObject<{
78
+ kind: z.ZodLiteral<"github">;
79
+ available: z.ZodOptional<z.ZodBoolean>;
80
+ reason: z.ZodOptional<z.ZodString>;
81
+ }, z.core.$strip>>;
82
+ capabilities: z.ZodObject<{
83
+ localHandoff: z.ZodBoolean;
84
+ followups: z.ZodBoolean;
85
+ singleProject: z.ZodBoolean;
86
+ tokenMetrics: z.ZodBoolean;
87
+ tokenUsageMetrics: z.ZodBoolean;
88
+ costMetrics: z.ZodBoolean;
89
+ }, z.core.$strip>;
90
+ projects: z.ZodArray<z.ZodObject<{
91
+ id: z.ZodString;
92
+ name: z.ZodString;
93
+ }, z.core.$strip>>;
94
+ bootProject: z.ZodString;
95
+ }, z.core.$strip>;
96
+ export type HealthResponse = z.infer<typeof healthResponseSchema>;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The cezar API contract. See `../README.md` — one zod definition per shape, its TypeScript type
3
+ * inferred from it, shared by the server, the api-client and the cockpit.
4
+ */
5
+ export * from './events.ts';
6
+ export * from './health.ts';
7
+ export * from './runs.ts';
8
+ export * from './repo.ts';
9
+ export * from './github.ts';
10
+ export * from './projects.ts';
11
+ export * from './workspace.ts';
12
+ export * from './workflows.ts';
13
+ export * from './skills.ts';
14
+ export * from './agent-config.ts';
15
+ export * from './automations.ts';