@open-mercato/cezar 0.1.5-pr506.357

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 (264) hide show
  1. package/README.md +573 -0
  2. package/dist/config.d.ts +144 -0
  3. package/dist/config.js +106 -0
  4. package/dist/config.js.map +1 -0
  5. package/dist/core/agent-runner.d.ts +169 -0
  6. package/dist/core/agent-runner.js +23 -0
  7. package/dist/core/agent-runner.js.map +1 -0
  8. package/dist/core/backend-detect.d.ts +16 -0
  9. package/dist/core/backend-detect.js +118 -0
  10. package/dist/core/backend-detect.js.map +1 -0
  11. package/dist/core/claude-cli-runner.d.ts +56 -0
  12. package/dist/core/claude-cli-runner.js +416 -0
  13. package/dist/core/claude-cli-runner.js.map +1 -0
  14. package/dist/core/claude-ui-mapper.d.ts +71 -0
  15. package/dist/core/claude-ui-mapper.js +567 -0
  16. package/dist/core/claude-ui-mapper.js.map +1 -0
  17. package/dist/core/codex-app-server-runner.d.ts +29 -0
  18. package/dist/core/codex-app-server-runner.js +489 -0
  19. package/dist/core/codex-app-server-runner.js.map +1 -0
  20. package/dist/core/codex-ui-mapper.d.ts +63 -0
  21. package/dist/core/codex-ui-mapper.js +491 -0
  22. package/dist/core/codex-ui-mapper.js.map +1 -0
  23. package/dist/core/ndjson.d.ts +6 -0
  24. package/dist/core/ndjson.js +23 -0
  25. package/dist/core/ndjson.js.map +1 -0
  26. package/dist/core/opencode-server-runner.d.ts +30 -0
  27. package/dist/core/opencode-server-runner.js +488 -0
  28. package/dist/core/opencode-server-runner.js.map +1 -0
  29. package/dist/core/opencode-ui-mapper.d.ts +105 -0
  30. package/dist/core/opencode-ui-mapper.js +588 -0
  31. package/dist/core/opencode-ui-mapper.js.map +1 -0
  32. package/dist/core/process-usage.d.ts +63 -0
  33. package/dist/core/process-usage.js +181 -0
  34. package/dist/core/process-usage.js.map +1 -0
  35. package/dist/core/runner-factory.d.ts +8 -0
  36. package/dist/core/runner-factory.js +22 -0
  37. package/dist/core/runner-factory.js.map +1 -0
  38. package/dist/core/tool-display.d.ts +30 -0
  39. package/dist/core/tool-display.js +156 -0
  40. package/dist/core/tool-display.js.map +1 -0
  41. package/dist/core/ui-events.d.ts +308 -0
  42. package/dist/core/ui-events.js +25 -0
  43. package/dist/core/ui-events.js.map +1 -0
  44. package/dist/core/usage.d.ts +11 -0
  45. package/dist/core/usage.js +15 -0
  46. package/dist/core/usage.js.map +1 -0
  47. package/dist/git-worktree.d.ts +88 -0
  48. package/dist/git-worktree.js +297 -0
  49. package/dist/git-worktree.js.map +1 -0
  50. package/dist/handoff.d.ts +62 -0
  51. package/dist/handoff.js +147 -0
  52. package/dist/handoff.js.map +1 -0
  53. package/dist/index.d.ts +2 -0
  54. package/dist/index.js +466 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/install-as-command.d.ts +39 -0
  57. package/dist/install-as-command.js +51 -0
  58. package/dist/install-as-command.js.map +1 -0
  59. package/dist/pack-check.d.ts +17 -0
  60. package/dist/pack-check.js +27 -0
  61. package/dist/pack-check.js.map +1 -0
  62. package/dist/paths.d.ts +23 -0
  63. package/dist/paths.js +34 -0
  64. package/dist/paths.js.map +1 -0
  65. package/dist/planner.d.ts +17 -0
  66. package/dist/planner.js +248 -0
  67. package/dist/planner.js.map +1 -0
  68. package/dist/release/snapshot.d.ts +64 -0
  69. package/dist/release/snapshot.js +75 -0
  70. package/dist/release/snapshot.js.map +1 -0
  71. package/dist/release/stable.d.ts +46 -0
  72. package/dist/release/stable.js +57 -0
  73. package/dist/release/stable.js.map +1 -0
  74. package/dist/runs/auto-name.d.ts +75 -0
  75. package/dist/runs/auto-name.js +168 -0
  76. package/dist/runs/auto-name.js.map +1 -0
  77. package/dist/runs/retention.d.ts +60 -0
  78. package/dist/runs/retention.js +86 -0
  79. package/dist/runs/retention.js.map +1 -0
  80. package/dist/runs/review-gate.d.ts +18 -0
  81. package/dist/runs/review-gate.js +21 -0
  82. package/dist/runs/review-gate.js.map +1 -0
  83. package/dist/runs/store.d.ts +408 -0
  84. package/dist/runs/store.js +526 -0
  85. package/dist/runs/store.js.map +1 -0
  86. package/dist/runs/task-refs.d.ts +24 -0
  87. package/dist/runs/task-refs.js +74 -0
  88. package/dist/runs/task-refs.js.map +1 -0
  89. package/dist/runs/ui-event-sink.d.ts +81 -0
  90. package/dist/runs/ui-event-sink.js +210 -0
  91. package/dist/runs/ui-event-sink.js.map +1 -0
  92. package/dist/server/capabilities.d.ts +33 -0
  93. package/dist/server/capabilities.js +43 -0
  94. package/dist/server/capabilities.js.map +1 -0
  95. package/dist/server/forge/github.d.ts +70 -0
  96. package/dist/server/forge/github.js +375 -0
  97. package/dist/server/forge/github.js.map +1 -0
  98. package/dist/server/forge/index.d.ts +24 -0
  99. package/dist/server/forge/index.js +45 -0
  100. package/dist/server/forge/index.js.map +1 -0
  101. package/dist/server/forge/types.d.ts +80 -0
  102. package/dist/server/forge/types.js +2 -0
  103. package/dist/server/forge/types.js.map +1 -0
  104. package/dist/server/git-changes.d.ts +195 -0
  105. package/dist/server/git-changes.js +497 -0
  106. package/dist/server/git-changes.js.map +1 -0
  107. package/dist/server/git.d.ts +26 -0
  108. package/dist/server/git.js +103 -0
  109. package/dist/server/git.js.map +1 -0
  110. package/dist/server/github.d.ts +8 -0
  111. package/dist/server/github.js +8 -0
  112. package/dist/server/github.js.map +1 -0
  113. package/dist/server/launch-key.d.ts +7 -0
  114. package/dist/server/launch-key.js +33 -0
  115. package/dist/server/launch-key.js.map +1 -0
  116. package/dist/server/open-in-app.d.ts +51 -0
  117. package/dist/server/open-in-app.js +189 -0
  118. package/dist/server/open-in-app.js.map +1 -0
  119. package/dist/server/open-in-terminal.d.ts +25 -0
  120. package/dist/server/open-in-terminal.js +120 -0
  121. package/dist/server/open-in-terminal.js.map +1 -0
  122. package/dist/server/pr.d.ts +7 -0
  123. package/dist/server/pr.js +7 -0
  124. package/dist/server/pr.js.map +1 -0
  125. package/dist/server/server.d.ts +41 -0
  126. package/dist/server/server.js +1390 -0
  127. package/dist/server/server.js.map +1 -0
  128. package/dist/server/static-ui.d.ts +49 -0
  129. package/dist/server/static-ui.js +92 -0
  130. package/dist/server/static-ui.js.map +1 -0
  131. package/dist/server/wsl.d.ts +25 -0
  132. package/dist/server/wsl.js +92 -0
  133. package/dist/server/wsl.js.map +1 -0
  134. package/dist/server-install/engine.d.ts +33 -0
  135. package/dist/server-install/engine.js +314 -0
  136. package/dist/server-install/engine.js.map +1 -0
  137. package/dist/server-install/platforms/macosx-ngrok.d.ts +6 -0
  138. package/dist/server-install/platforms/macosx-ngrok.js +345 -0
  139. package/dist/server-install/platforms/macosx-ngrok.js.map +1 -0
  140. package/dist/server-install/platforms/ubuntu-vps.d.ts +39 -0
  141. package/dist/server-install/platforms/ubuntu-vps.js +746 -0
  142. package/dist/server-install/platforms/ubuntu-vps.js.map +1 -0
  143. package/dist/server-install/state.d.ts +26 -0
  144. package/dist/server-install/state.js +125 -0
  145. package/dist/server-install/state.js.map +1 -0
  146. package/dist/server-install/steps.d.ts +109 -0
  147. package/dist/server-install/steps.js +330 -0
  148. package/dist/server-install/steps.js.map +1 -0
  149. package/dist/server-install/strategies.d.ts +4 -0
  150. package/dist/server-install/strategies.js +20 -0
  151. package/dist/server-install/strategies.js.map +1 -0
  152. package/dist/server-install/types.d.ts +597 -0
  153. package/dist/server-install/types.js +98 -0
  154. package/dist/server-install/types.js.map +1 -0
  155. package/dist/server-install/ui.d.ts +42 -0
  156. package/dist/server-install/ui.js +130 -0
  157. package/dist/server-install/ui.js.map +1 -0
  158. package/dist/skills-banner.d.ts +21 -0
  159. package/dist/skills-banner.js +40 -0
  160. package/dist/skills-banner.js.map +1 -0
  161. package/dist/skills-remote.d.ts +35 -0
  162. package/dist/skills-remote.js +266 -0
  163. package/dist/skills-remote.js.map +1 -0
  164. package/dist/skills.d.ts +45 -0
  165. package/dist/skills.js +182 -0
  166. package/dist/skills.js.map +1 -0
  167. package/dist/todos.d.ts +63 -0
  168. package/dist/todos.js +168 -0
  169. package/dist/todos.js.map +1 -0
  170. package/dist/ui-state.d.ts +12 -0
  171. package/dist/ui-state.js +25 -0
  172. package/dist/ui-state.js.map +1 -0
  173. package/dist/update-check.d.ts +12 -0
  174. package/dist/update-check.js +41 -0
  175. package/dist/update-check.js.map +1 -0
  176. package/dist/workflows/load.d.ts +15 -0
  177. package/dist/workflows/load.js +56 -0
  178. package/dist/workflows/load.js.map +1 -0
  179. package/dist/workflows/run.d.ts +281 -0
  180. package/dist/workflows/run.js +1511 -0
  181. package/dist/workflows/run.js.map +1 -0
  182. package/dist/workflows/types.d.ts +307 -0
  183. package/dist/workflows/types.js +171 -0
  184. package/dist/workflows/types.js.map +1 -0
  185. package/package.json +90 -0
  186. package/scripts/check-pack.mjs +46 -0
  187. package/scripts/dev.mjs +74 -0
  188. package/scripts/install-as-command.mjs +120 -0
  189. package/scripts/mock-claude.mjs +310 -0
  190. package/scripts/release-snapshot.mjs +130 -0
  191. package/scripts/release.mjs +119 -0
  192. package/scripts/test-process-usage.mjs +47 -0
  193. package/web/dist/assets/arrow-left-BE957rJs.js +1 -0
  194. package/web/dist/assets/bundle-mjs-DLPpRFyl.js +1 -0
  195. package/web/dist/assets/centered-state-BddhEEtO.js +43 -0
  196. package/web/dist/assets/chunk-BO2N2NFS-f5igTtpB.js +131 -0
  197. package/web/dist/assets/command-CjhFbABo.js +1 -0
  198. package/web/dist/assets/compare-variants-Cs52IAEG.js +1 -0
  199. package/web/dist/assets/core-BuMqAF_1.js +12 -0
  200. package/web/dist/assets/css-BsVw1vtW.js +1 -0
  201. package/web/dist/assets/dialog-DFvXTkFv.js +1 -0
  202. package/web/dist/assets/diff-view-C9b8AITq.js +4 -0
  203. package/web/dist/assets/diff-woXpYk--.js +1 -0
  204. package/web/dist/assets/dist-FBs4wmIY.js +1 -0
  205. package/web/dist/assets/dist-o_kVMXjg.js +1 -0
  206. package/web/dist/assets/engine-javascript-FQvzRocB.js +141 -0
  207. package/web/dist/assets/file-BVuztAOd.js +1 -0
  208. package/web/dist/assets/folder-0pJ1NZ_S.js +1 -0
  209. package/web/dist/assets/git-pull-request-DJkAMT0f.js +1 -0
  210. package/web/dist/assets/git-toolbar-CwhQdx3J.js +1 -0
  211. package/web/dist/assets/github-D0rAX4-r.js +1 -0
  212. package/web/dist/assets/go-rLFTqkRN.js +1 -0
  213. package/web/dist/assets/highlighted-body-OFNGDK62-DGHHie_q.js +1 -0
  214. package/web/dist/assets/highlighter-BKVEsACy.js +3 -0
  215. package/web/dist/assets/html-BY76lXLH.js +1 -0
  216. package/web/dist/assets/index-CEkI7QxN.css +2 -0
  217. package/web/dist/assets/index-CO2lH2et.js +11 -0
  218. package/web/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  219. package/web/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  220. package/web/dist/assets/javascript-BgS3c2Ky.js +1 -0
  221. package/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  222. package/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  223. package/web/dist/assets/json-qhed-kSA.js +1 -0
  224. package/web/dist/assets/jsonc-CYpm1nAK.js +1 -0
  225. package/web/dist/assets/jsx-Bz0zcwM4.js +1 -0
  226. package/web/dist/assets/lib-CNGa3Dig.js +1 -0
  227. package/web/dist/assets/loader-circle-BV3DO9mE.js +1 -0
  228. package/web/dist/assets/markdown-BYOwaDjH.js +1 -0
  229. package/web/dist/assets/markdown-D4-ADgH9.js +1 -0
  230. package/web/dist/assets/mermaid-GHXKKRXX-DM2VsGBG.js +1 -0
  231. package/web/dist/assets/open-mercato-toBr6SOa.svg +11 -0
  232. package/web/dist/assets/prompt-templates-C7ptKvDd.js +15 -0
  233. package/web/dist/assets/python-gzcpVVnB.js +1 -0
  234. package/web/dist/assets/react-dom-Ddtik4qM.js +1 -0
  235. package/web/dist/assets/refresh-cw-DCa-Rlwz.js +1 -0
  236. package/web/dist/assets/repo-git-DIhryGDx.js +1 -0
  237. package/web/dist/assets/run-diff-Dyow8B1q.js +3 -0
  238. package/web/dist/assets/run-header-jx9-18b8.js +1 -0
  239. package/web/dist/assets/rust-Cfkwpbl8.js +1 -0
  240. package/web/dist/assets/search-x-CoCyl7zT.js +1 -0
  241. package/web/dist/assets/shellscript-CLZ0U2zV.js +1 -0
  242. package/web/dist/assets/skill-detail-DB7x_FQp.js +1 -0
  243. package/web/dist/assets/skills-98vCroU8.js +1 -0
  244. package/web/dist/assets/skills-BKIoqD6K.js +1 -0
  245. package/web/dist/assets/sql-BsFa4tDR.js +1 -0
  246. package/web/dist/assets/square-terminal-B6PZX4Qp.js +1 -0
  247. package/web/dist/assets/tab-link-C5--YMQd.js +1 -0
  248. package/web/dist/assets/task-changes-ejxPGVJw.js +1 -0
  249. package/web/dist/assets/task-commits-C6GO5qT-.js +1 -0
  250. package/web/dist/assets/task-files-CatpCBXa.js +2 -0
  251. package/web/dist/assets/task-thread-BMbXDM3d.js +5 -0
  252. package/web/dist/assets/tasks-table-dgezlCcg.js +1 -0
  253. package/web/dist/assets/trash-2-CDtxmmc8.js +1 -0
  254. package/web/dist/assets/triangle-alert-6su4Js5O.js +1 -0
  255. package/web/dist/assets/tsx-udAQXfEw.js +1 -0
  256. package/web/dist/assets/typescript-bsJCZSQ-.js +1 -0
  257. package/web/dist/assets/upload-Bp7hQxll.js +1 -0
  258. package/web/dist/assets/use-desktop-CvTwojOJ.js +3 -0
  259. package/web/dist/assets/utils-rQGbOrwc.js +1 -0
  260. package/web/dist/assets/workflows-Dy2c6790.js +11 -0
  261. package/web/dist/assets/x-Br_jIDBw.js +1 -0
  262. package/web/dist/assets/yaml-rwi0_p6S.js +1 -0
  263. package/web/dist/index.html +70 -0
  264. package/web/open-mercato.svg +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/server-install/steps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type PlatformId, type PlatformStrategy } from './types.js';
2
+ export declare function getStrategy(id: string): PlatformStrategy | undefined;
3
+ /** Ids that actually have a registered strategy (a subset of PLATFORM_IDS while phased). */
4
+ export declare function availablePlatformIds(): PlatformId[];
@@ -0,0 +1,20 @@
1
+ import { macosxNgrok } from './platforms/macosx-ngrok.js';
2
+ import { ubuntuVps } from './platforms/ubuntu-vps.js';
3
+ import { PLATFORM_IDS } from './types.js';
4
+ /**
5
+ * Platform registry. `--platform <id>` is validated against these keys; an
6
+ * unknown id lists the valid ones and exits 1. Add a strategy here to teach the
7
+ * wizard a new platform — the engine and helpers are untouched.
8
+ */
9
+ const REGISTRY = {
10
+ 'ubuntu-vps': ubuntuVps,
11
+ 'macosx-ngrok': macosxNgrok,
12
+ };
13
+ export function getStrategy(id) {
14
+ return REGISTRY[id];
15
+ }
16
+ /** Ids that actually have a registered strategy (a subset of PLATFORM_IDS while phased). */
17
+ export function availablePlatformIds() {
18
+ return PLATFORM_IDS.filter((id) => REGISTRY[id] !== undefined);
19
+ }
20
+ //# sourceMappingURL=strategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategies.js","sourceRoot":"","sources":["../../src/server-install/strategies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,YAAY,EAA0C,MAAM,YAAY,CAAC;AAElF;;;;GAIG;AACH,MAAM,QAAQ,GAAkD;IAC9D,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,WAAW;CAC5B,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,QAAQ,CAAC,EAAgB,CAAC,CAAC;AACpC,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,oBAAoB;IAClC,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,597 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Contracts for the server installer (spec 2026-07-16-server-installer).
4
+ * The engine closes over `InstallStep` / `PlatformStrategy` and never learns
5
+ * what a step *does* — only `check` / `run` / `undo`. That seam is what makes
6
+ * "use ubuntu as a selector and run it that way" a registry lookup, and what
7
+ * makes the interactive helpers reusable across every future platform.
8
+ */
9
+ /** The platforms the registry knows. Extend here + add a strategy file. */
10
+ export declare const PLATFORM_IDS: readonly ["ubuntu-vps", "macosx-ngrok"];
11
+ export type PlatformId = (typeof PLATFORM_IDS)[number];
12
+ /** Per-step lifecycle. `failed` resumes identically to `pending`. */
13
+ export declare const STEP_STATUSES: readonly ["pending", "done", "skipped", "failed"];
14
+ export type StepStatus = (typeof STEP_STATUSES)[number];
15
+ /**
16
+ * One thing a step created, tagged by who owns its removal:
17
+ * - `owned` — cezar authored it and nothing else uses it → uninstall removes it.
18
+ * - `shared` — a system tool the operator may now depend on (gh, agent CLIs,
19
+ * certbot + its renewal timer, the cert itself) → uninstall lists it with a
20
+ * manual removal hint instead of yanking it.
21
+ */
22
+ export declare const stepArtifactSchema: z.ZodObject<{
23
+ kind: z.ZodEnum<["owned", "shared"]>;
24
+ /** file | package | service | cert | htpasswd | config | note */
25
+ type: z.ZodString;
26
+ /** Filesystem path for `owned` files (vhost, unit, htpasswd). */
27
+ path: z.ZodOptional<z.ZodString>;
28
+ /** Human name: package id, unit name, cert domain, auth user. */
29
+ name: z.ZodOptional<z.ZodString>;
30
+ /** `system` | `user` for services. */
31
+ scope: z.ZodOptional<z.ZodString>;
32
+ /** For `shared` artifacts: the exact command the operator can run to remove it. */
33
+ removeHint: z.ZodOptional<z.ZodString>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ type: string;
36
+ kind: "owned" | "shared";
37
+ path?: string | undefined;
38
+ name?: string | undefined;
39
+ scope?: string | undefined;
40
+ removeHint?: string | undefined;
41
+ }, {
42
+ type: string;
43
+ kind: "owned" | "shared";
44
+ path?: string | undefined;
45
+ name?: string | undefined;
46
+ scope?: string | undefined;
47
+ removeHint?: string | undefined;
48
+ }>;
49
+ export type StepArtifact = z.infer<typeof stepArtifactSchema>;
50
+ /** What a step returns from `run()`; `undo()` receives it back verbatim. */
51
+ export declare const stepCreatedSchema: z.ZodNullable<z.ZodObject<{
52
+ artifacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
53
+ kind: z.ZodEnum<["owned", "shared"]>;
54
+ /** file | package | service | cert | htpasswd | config | note */
55
+ type: z.ZodString;
56
+ /** Filesystem path for `owned` files (vhost, unit, htpasswd). */
57
+ path: z.ZodOptional<z.ZodString>;
58
+ /** Human name: package id, unit name, cert domain, auth user. */
59
+ name: z.ZodOptional<z.ZodString>;
60
+ /** `system` | `user` for services. */
61
+ scope: z.ZodOptional<z.ZodString>;
62
+ /** For `shared` artifacts: the exact command the operator can run to remove it. */
63
+ removeHint: z.ZodOptional<z.ZodString>;
64
+ }, "strip", z.ZodTypeAny, {
65
+ type: string;
66
+ kind: "owned" | "shared";
67
+ path?: string | undefined;
68
+ name?: string | undefined;
69
+ scope?: string | undefined;
70
+ removeHint?: string | undefined;
71
+ }, {
72
+ type: string;
73
+ kind: "owned" | "shared";
74
+ path?: string | undefined;
75
+ name?: string | undefined;
76
+ scope?: string | undefined;
77
+ removeHint?: string | undefined;
78
+ }>, "many">>;
79
+ }, "strip", z.ZodTypeAny, {
80
+ artifacts: {
81
+ type: string;
82
+ kind: "owned" | "shared";
83
+ path?: string | undefined;
84
+ name?: string | undefined;
85
+ scope?: string | undefined;
86
+ removeHint?: string | undefined;
87
+ }[];
88
+ }, {
89
+ artifacts?: {
90
+ type: string;
91
+ kind: "owned" | "shared";
92
+ path?: string | undefined;
93
+ name?: string | undefined;
94
+ scope?: string | undefined;
95
+ removeHint?: string | undefined;
96
+ }[] | undefined;
97
+ }>>;
98
+ export type StepCreated = z.infer<typeof stepCreatedSchema>;
99
+ /**
100
+ * Persisted per-step outcome — the `steps` map in `server.json`. A status this
101
+ * version doesn't know (written by a newer cezar) degrades to `failed`, which
102
+ * keeps the record AND keeps it on uninstall's undo path — never to a parse
103
+ * failure that would discard the whole ledger.
104
+ */
105
+ export declare const stepOutcomeSchema: z.ZodObject<{
106
+ status: z.ZodCatch<z.ZodEnum<["pending", "done", "skipped", "failed"]>>;
107
+ created: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodObject<{
108
+ artifacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
109
+ kind: z.ZodEnum<["owned", "shared"]>;
110
+ /** file | package | service | cert | htpasswd | config | note */
111
+ type: z.ZodString;
112
+ /** Filesystem path for `owned` files (vhost, unit, htpasswd). */
113
+ path: z.ZodOptional<z.ZodString>;
114
+ /** Human name: package id, unit name, cert domain, auth user. */
115
+ name: z.ZodOptional<z.ZodString>;
116
+ /** `system` | `user` for services. */
117
+ scope: z.ZodOptional<z.ZodString>;
118
+ /** For `shared` artifacts: the exact command the operator can run to remove it. */
119
+ removeHint: z.ZodOptional<z.ZodString>;
120
+ }, "strip", z.ZodTypeAny, {
121
+ type: string;
122
+ kind: "owned" | "shared";
123
+ path?: string | undefined;
124
+ name?: string | undefined;
125
+ scope?: string | undefined;
126
+ removeHint?: string | undefined;
127
+ }, {
128
+ type: string;
129
+ kind: "owned" | "shared";
130
+ path?: string | undefined;
131
+ name?: string | undefined;
132
+ scope?: string | undefined;
133
+ removeHint?: string | undefined;
134
+ }>, "many">>;
135
+ }, "strip", z.ZodTypeAny, {
136
+ artifacts: {
137
+ type: string;
138
+ kind: "owned" | "shared";
139
+ path?: string | undefined;
140
+ name?: string | undefined;
141
+ scope?: string | undefined;
142
+ removeHint?: string | undefined;
143
+ }[];
144
+ }, {
145
+ artifacts?: {
146
+ type: string;
147
+ kind: "owned" | "shared";
148
+ path?: string | undefined;
149
+ name?: string | undefined;
150
+ scope?: string | undefined;
151
+ removeHint?: string | undefined;
152
+ }[] | undefined;
153
+ }>>>>;
154
+ }, "strip", z.ZodTypeAny, {
155
+ status: "done" | "failed" | "pending" | "skipped";
156
+ created?: {
157
+ artifacts: {
158
+ type: string;
159
+ kind: "owned" | "shared";
160
+ path?: string | undefined;
161
+ name?: string | undefined;
162
+ scope?: string | undefined;
163
+ removeHint?: string | undefined;
164
+ }[];
165
+ } | null | undefined;
166
+ }, {
167
+ status?: unknown;
168
+ created?: unknown;
169
+ }>;
170
+ export type StepOutcome = z.infer<typeof stepOutcomeSchema>;
171
+ /**
172
+ * `~/.cezar/server.json` — host-level, install-once. Additive-safe: every new
173
+ * field is optional / defaulted so an older cezar still parses a newer file
174
+ * (BACKWARD_COMPATIBILITY cross-version-state rule). No secrets live here.
175
+ */
176
+ export declare const serverStateSchema: z.ZodObject<{
177
+ schema: z.ZodCatch<z.ZodLiteral<1>>;
178
+ /**
179
+ * Free string, not an enum: a `server.json` written by a newer cezar with a
180
+ * platform this version doesn't ship must still parse — the registry lookup
181
+ * is where "unknown platform" is decided, with the ledger intact.
182
+ */
183
+ platform: z.ZodCatch<z.ZodOptional<z.ZodString>>;
184
+ /** Flips true only when every required step is `done`. */
185
+ installed: z.ZodCatch<z.ZodDefault<z.ZodBoolean>>;
186
+ /** True when this record was written by a CEZ_DRY_RUN preview — a real
187
+ * install/uninstall treats it as no record at all (self-healing). */
188
+ dryRun: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
189
+ /** ISO stamp set by the caller (Date.now is unavailable in some contexts). */
190
+ createdAt: z.ZodCatch<z.ZodOptional<z.ZodString>>;
191
+ updatedAt: z.ZodCatch<z.ZodOptional<z.ZodString>>;
192
+ primaryPort: z.ZodCatch<z.ZodDefault<z.ZodNumber>>;
193
+ /** Public URL / identity user surfaced at the end — display only. */
194
+ publicUrl: z.ZodCatch<z.ZodOptional<z.ZodString>>;
195
+ /** macOS+ngrok free tier: the tunnel URL changes across restarts. */
196
+ ephemeral: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
197
+ steps: z.ZodCatch<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodCatch<z.ZodObject<{
198
+ status: z.ZodCatch<z.ZodEnum<["pending", "done", "skipped", "failed"]>>;
199
+ created: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodObject<{
200
+ artifacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
201
+ kind: z.ZodEnum<["owned", "shared"]>;
202
+ /** file | package | service | cert | htpasswd | config | note */
203
+ type: z.ZodString;
204
+ /** Filesystem path for `owned` files (vhost, unit, htpasswd). */
205
+ path: z.ZodOptional<z.ZodString>;
206
+ /** Human name: package id, unit name, cert domain, auth user. */
207
+ name: z.ZodOptional<z.ZodString>;
208
+ /** `system` | `user` for services. */
209
+ scope: z.ZodOptional<z.ZodString>;
210
+ /** For `shared` artifacts: the exact command the operator can run to remove it. */
211
+ removeHint: z.ZodOptional<z.ZodString>;
212
+ }, "strip", z.ZodTypeAny, {
213
+ type: string;
214
+ kind: "owned" | "shared";
215
+ path?: string | undefined;
216
+ name?: string | undefined;
217
+ scope?: string | undefined;
218
+ removeHint?: string | undefined;
219
+ }, {
220
+ type: string;
221
+ kind: "owned" | "shared";
222
+ path?: string | undefined;
223
+ name?: string | undefined;
224
+ scope?: string | undefined;
225
+ removeHint?: string | undefined;
226
+ }>, "many">>;
227
+ }, "strip", z.ZodTypeAny, {
228
+ artifacts: {
229
+ type: string;
230
+ kind: "owned" | "shared";
231
+ path?: string | undefined;
232
+ name?: string | undefined;
233
+ scope?: string | undefined;
234
+ removeHint?: string | undefined;
235
+ }[];
236
+ }, {
237
+ artifacts?: {
238
+ type: string;
239
+ kind: "owned" | "shared";
240
+ path?: string | undefined;
241
+ name?: string | undefined;
242
+ scope?: string | undefined;
243
+ removeHint?: string | undefined;
244
+ }[] | undefined;
245
+ }>>>>;
246
+ }, "strip", z.ZodTypeAny, {
247
+ status: "done" | "failed" | "pending" | "skipped";
248
+ created?: {
249
+ artifacts: {
250
+ type: string;
251
+ kind: "owned" | "shared";
252
+ path?: string | undefined;
253
+ name?: string | undefined;
254
+ scope?: string | undefined;
255
+ removeHint?: string | undefined;
256
+ }[];
257
+ } | null | undefined;
258
+ }, {
259
+ status?: unknown;
260
+ created?: unknown;
261
+ }>>>>>;
262
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
263
+ schema: z.ZodCatch<z.ZodLiteral<1>>;
264
+ /**
265
+ * Free string, not an enum: a `server.json` written by a newer cezar with a
266
+ * platform this version doesn't ship must still parse — the registry lookup
267
+ * is where "unknown platform" is decided, with the ledger intact.
268
+ */
269
+ platform: z.ZodCatch<z.ZodOptional<z.ZodString>>;
270
+ /** Flips true only when every required step is `done`. */
271
+ installed: z.ZodCatch<z.ZodDefault<z.ZodBoolean>>;
272
+ /** True when this record was written by a CEZ_DRY_RUN preview — a real
273
+ * install/uninstall treats it as no record at all (self-healing). */
274
+ dryRun: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
275
+ /** ISO stamp set by the caller (Date.now is unavailable in some contexts). */
276
+ createdAt: z.ZodCatch<z.ZodOptional<z.ZodString>>;
277
+ updatedAt: z.ZodCatch<z.ZodOptional<z.ZodString>>;
278
+ primaryPort: z.ZodCatch<z.ZodDefault<z.ZodNumber>>;
279
+ /** Public URL / identity user surfaced at the end — display only. */
280
+ publicUrl: z.ZodCatch<z.ZodOptional<z.ZodString>>;
281
+ /** macOS+ngrok free tier: the tunnel URL changes across restarts. */
282
+ ephemeral: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
283
+ steps: z.ZodCatch<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodCatch<z.ZodObject<{
284
+ status: z.ZodCatch<z.ZodEnum<["pending", "done", "skipped", "failed"]>>;
285
+ created: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodObject<{
286
+ artifacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
287
+ kind: z.ZodEnum<["owned", "shared"]>;
288
+ /** file | package | service | cert | htpasswd | config | note */
289
+ type: z.ZodString;
290
+ /** Filesystem path for `owned` files (vhost, unit, htpasswd). */
291
+ path: z.ZodOptional<z.ZodString>;
292
+ /** Human name: package id, unit name, cert domain, auth user. */
293
+ name: z.ZodOptional<z.ZodString>;
294
+ /** `system` | `user` for services. */
295
+ scope: z.ZodOptional<z.ZodString>;
296
+ /** For `shared` artifacts: the exact command the operator can run to remove it. */
297
+ removeHint: z.ZodOptional<z.ZodString>;
298
+ }, "strip", z.ZodTypeAny, {
299
+ type: string;
300
+ kind: "owned" | "shared";
301
+ path?: string | undefined;
302
+ name?: string | undefined;
303
+ scope?: string | undefined;
304
+ removeHint?: string | undefined;
305
+ }, {
306
+ type: string;
307
+ kind: "owned" | "shared";
308
+ path?: string | undefined;
309
+ name?: string | undefined;
310
+ scope?: string | undefined;
311
+ removeHint?: string | undefined;
312
+ }>, "many">>;
313
+ }, "strip", z.ZodTypeAny, {
314
+ artifacts: {
315
+ type: string;
316
+ kind: "owned" | "shared";
317
+ path?: string | undefined;
318
+ name?: string | undefined;
319
+ scope?: string | undefined;
320
+ removeHint?: string | undefined;
321
+ }[];
322
+ }, {
323
+ artifacts?: {
324
+ type: string;
325
+ kind: "owned" | "shared";
326
+ path?: string | undefined;
327
+ name?: string | undefined;
328
+ scope?: string | undefined;
329
+ removeHint?: string | undefined;
330
+ }[] | undefined;
331
+ }>>>>;
332
+ }, "strip", z.ZodTypeAny, {
333
+ status: "done" | "failed" | "pending" | "skipped";
334
+ created?: {
335
+ artifacts: {
336
+ type: string;
337
+ kind: "owned" | "shared";
338
+ path?: string | undefined;
339
+ name?: string | undefined;
340
+ scope?: string | undefined;
341
+ removeHint?: string | undefined;
342
+ }[];
343
+ } | null | undefined;
344
+ }, {
345
+ status?: unknown;
346
+ created?: unknown;
347
+ }>>>>>;
348
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
349
+ schema: z.ZodCatch<z.ZodLiteral<1>>;
350
+ /**
351
+ * Free string, not an enum: a `server.json` written by a newer cezar with a
352
+ * platform this version doesn't ship must still parse — the registry lookup
353
+ * is where "unknown platform" is decided, with the ledger intact.
354
+ */
355
+ platform: z.ZodCatch<z.ZodOptional<z.ZodString>>;
356
+ /** Flips true only when every required step is `done`. */
357
+ installed: z.ZodCatch<z.ZodDefault<z.ZodBoolean>>;
358
+ /** True when this record was written by a CEZ_DRY_RUN preview — a real
359
+ * install/uninstall treats it as no record at all (self-healing). */
360
+ dryRun: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
361
+ /** ISO stamp set by the caller (Date.now is unavailable in some contexts). */
362
+ createdAt: z.ZodCatch<z.ZodOptional<z.ZodString>>;
363
+ updatedAt: z.ZodCatch<z.ZodOptional<z.ZodString>>;
364
+ primaryPort: z.ZodCatch<z.ZodDefault<z.ZodNumber>>;
365
+ /** Public URL / identity user surfaced at the end — display only. */
366
+ publicUrl: z.ZodCatch<z.ZodOptional<z.ZodString>>;
367
+ /** macOS+ngrok free tier: the tunnel URL changes across restarts. */
368
+ ephemeral: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
369
+ steps: z.ZodCatch<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodCatch<z.ZodObject<{
370
+ status: z.ZodCatch<z.ZodEnum<["pending", "done", "skipped", "failed"]>>;
371
+ created: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodObject<{
372
+ artifacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
373
+ kind: z.ZodEnum<["owned", "shared"]>;
374
+ /** file | package | service | cert | htpasswd | config | note */
375
+ type: z.ZodString;
376
+ /** Filesystem path for `owned` files (vhost, unit, htpasswd). */
377
+ path: z.ZodOptional<z.ZodString>;
378
+ /** Human name: package id, unit name, cert domain, auth user. */
379
+ name: z.ZodOptional<z.ZodString>;
380
+ /** `system` | `user` for services. */
381
+ scope: z.ZodOptional<z.ZodString>;
382
+ /** For `shared` artifacts: the exact command the operator can run to remove it. */
383
+ removeHint: z.ZodOptional<z.ZodString>;
384
+ }, "strip", z.ZodTypeAny, {
385
+ type: string;
386
+ kind: "owned" | "shared";
387
+ path?: string | undefined;
388
+ name?: string | undefined;
389
+ scope?: string | undefined;
390
+ removeHint?: string | undefined;
391
+ }, {
392
+ type: string;
393
+ kind: "owned" | "shared";
394
+ path?: string | undefined;
395
+ name?: string | undefined;
396
+ scope?: string | undefined;
397
+ removeHint?: string | undefined;
398
+ }>, "many">>;
399
+ }, "strip", z.ZodTypeAny, {
400
+ artifacts: {
401
+ type: string;
402
+ kind: "owned" | "shared";
403
+ path?: string | undefined;
404
+ name?: string | undefined;
405
+ scope?: string | undefined;
406
+ removeHint?: string | undefined;
407
+ }[];
408
+ }, {
409
+ artifacts?: {
410
+ type: string;
411
+ kind: "owned" | "shared";
412
+ path?: string | undefined;
413
+ name?: string | undefined;
414
+ scope?: string | undefined;
415
+ removeHint?: string | undefined;
416
+ }[] | undefined;
417
+ }>>>>;
418
+ }, "strip", z.ZodTypeAny, {
419
+ status: "done" | "failed" | "pending" | "skipped";
420
+ created?: {
421
+ artifacts: {
422
+ type: string;
423
+ kind: "owned" | "shared";
424
+ path?: string | undefined;
425
+ name?: string | undefined;
426
+ scope?: string | undefined;
427
+ removeHint?: string | undefined;
428
+ }[];
429
+ } | null | undefined;
430
+ }, {
431
+ status?: unknown;
432
+ created?: unknown;
433
+ }>>>>>;
434
+ }, z.ZodTypeAny, "passthrough">>;
435
+ export type ServerState = z.infer<typeof serverStateSchema>;
436
+ /** Freshly-initialized state (no install yet). */
437
+ export declare function freshServerState(): ServerState;
438
+ /**
439
+ * The interactive surface a step talks to. Implemented by `ui.ts` over
440
+ * `@clack/prompts`; declared here as a pure interface so `types.ts` (and the
441
+ * engine) never import the TUI library. Prompt methods resolve to the
442
+ * `CANCEL` sentinel instead of throwing when the user aborts.
443
+ */
444
+ export declare const CANCEL: unique symbol;
445
+ export type Cancellable<T> = T | typeof CANCEL;
446
+ export interface SpinnerHandle {
447
+ start(message?: string): void;
448
+ stop(message?: string): void;
449
+ message(message: string): void;
450
+ }
451
+ export interface Ui {
452
+ intro(message: string): void;
453
+ outro(message: string): void;
454
+ note(message: string, title?: string): void;
455
+ /**
456
+ * Plain, un-boxed output — no border/table drawing. Use for shell commands and
457
+ * other content that a `note()` box would mangle when it wraps (long base64
458
+ * file-writes, certbot lines). Renders verbatim so it stays copy-pasteable.
459
+ */
460
+ message(message: string): void;
461
+ info(message: string): void;
462
+ success(message: string): void;
463
+ warn(message: string): void;
464
+ error(message: string): void;
465
+ select<T>(opts: {
466
+ message: string;
467
+ options: Array<{
468
+ value: T;
469
+ label: string;
470
+ hint?: string;
471
+ }>;
472
+ initialValue?: T;
473
+ }): Promise<Cancellable<T>>;
474
+ multiselect<T>(opts: {
475
+ message: string;
476
+ options: Array<{
477
+ value: T;
478
+ label: string;
479
+ hint?: string;
480
+ }>;
481
+ required?: boolean;
482
+ }): Promise<Cancellable<T[]>>;
483
+ confirm(opts: {
484
+ message: string;
485
+ initialValue?: boolean;
486
+ }): Promise<Cancellable<boolean>>;
487
+ text(opts: {
488
+ message: string;
489
+ placeholder?: string;
490
+ initialValue?: string;
491
+ validate?: (v: string) => string | undefined;
492
+ }): Promise<Cancellable<string>>;
493
+ password(opts: {
494
+ message: string;
495
+ validate?: (v: string) => string | undefined;
496
+ }): Promise<Cancellable<string>>;
497
+ spinner(): SpinnerHandle;
498
+ }
499
+ /** Result of running a command with captured output. */
500
+ export interface CommandResult {
501
+ code: number;
502
+ stdout: string;
503
+ stderr: string;
504
+ }
505
+ /**
506
+ * Command execution seam. The engine supplies a real implementation; tests
507
+ * inject a fake so `sudoStep` / `verifyCommand` are exercised without touching
508
+ * the host. In `CEZ_DRY_RUN`, side-effecting runs are short-circuited by the
509
+ * step helpers, not the runner.
510
+ */
511
+ export interface Runner {
512
+ /**
513
+ * Capture stdout/stderr; never throws on non-zero exit (returns the code).
514
+ * `opts.input` is written to the child's stdin — use it to pass secrets
515
+ * (passwords, tokens) so they never appear in the process's argv.
516
+ */
517
+ capture(program: string, args: string[], opts?: {
518
+ input?: string;
519
+ }): Promise<CommandResult>;
520
+ /**
521
+ * Inherit stdio (streams live output). Resolves with the exit code.
522
+ * `opts.input` pipes the child's stdin instead of inheriting it — the
523
+ * secret-passing channel for privileged commands (`cat > file` style), so
524
+ * credentials never ride in argv where `ps` can read them.
525
+ */
526
+ interactive(program: string, args: string[], opts?: {
527
+ input?: string;
528
+ env?: Record<string, string>;
529
+ }): Promise<number>;
530
+ }
531
+ /** Live install/uninstall context, threaded through every step. */
532
+ export interface InstallContext {
533
+ state: ServerState;
534
+ ui: Ui;
535
+ runner: Runner;
536
+ /** Atomically persist `state` to `~/.cezar/server.json`. */
537
+ save(): Promise<void>;
538
+ /** CEZ_DRY_RUN — no real sudo, package installs, or network. */
539
+ dryRun: boolean;
540
+ /** `--yes`: auto-accept safe defaults; never invents a sudo password. */
541
+ assumeYes: boolean;
542
+ /** Step ids the user asked to force-rerun via `--reconfigure`. */
543
+ reconfigure: ReadonlySet<string>;
544
+ /** Repo root the autostart service should run `cezar serve` in. */
545
+ repoRoot: string;
546
+ /** ISO timestamp for this run (passed in — Date.now guard). */
547
+ now: string;
548
+ /**
549
+ * Choices remembered for the rest of the run so the wizard stops re-asking.
550
+ * `sudoMode` is set the first time the operator answers the sudo-vs-delegate
551
+ * prompt — once they pick "I'll run it myself as root", every later privileged
552
+ * command reuses that choice instead of prompting again.
553
+ *
554
+ * `cockpit` holds the credentials just set, IN MEMORY ONLY (never persisted to
555
+ * `server.json`), so the final verify step can make a real authenticated
556
+ * request through the proxy. Absent on a resume where the proxy step was
557
+ * already done — the verify step then falls back to structural checks.
558
+ */
559
+ prefs: {
560
+ sudoMode?: 'sudo' | 'delegate';
561
+ cockpit?: {
562
+ user: string;
563
+ password: string;
564
+ };
565
+ };
566
+ }
567
+ export interface InstallStep {
568
+ /** Stable — the key in `server.json`. Never rename once it has landed. */
569
+ id: string;
570
+ title: string;
571
+ /** Optional steps (SSL, autostart) can be skipped without failing install. */
572
+ optional?: boolean;
573
+ /** True ⇒ already satisfied, engine skips (unless `--reconfigure` names it). */
574
+ check(ctx: InstallContext): Promise<boolean>;
575
+ /** Do it, interactively. Return what was created (or null). */
576
+ run(ctx: InstallContext): Promise<StepCreated>;
577
+ /** Reverse it, given back the recorded `created`. */
578
+ undo(ctx: InstallContext, created: StepCreated): Promise<void>;
579
+ }
580
+ export interface PlatformStrategy {
581
+ id: PlatformId;
582
+ label: string;
583
+ /** OS / arch / privilege sanity. Throw `PreflightError` to refuse politely. */
584
+ preflight(ctx: InstallContext): Promise<void>;
585
+ /** Ordered steps for this platform. */
586
+ steps(ctx: InstallContext): InstallStep[];
587
+ /**
588
+ * Reload the running cockpit to pick up a new cezar version (a fresh local
589
+ * build or a newly published `cezar-cli`) — the standardized `server-deploy`
590
+ * entry point. Typically: restart the service + re-verify. Throw `StepAborted`
591
+ * to report a failed deploy.
592
+ */
593
+ redeploy?(ctx: InstallContext): Promise<void>;
594
+ }
595
+ /** Thrown by `preflight` to stop with a clean, user-facing reason (no stack). */
596
+ export declare class PreflightError extends Error {
597
+ }