@wjarka/cezarion 0.10.0-pr30.54

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 (478) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +838 -0
  3. package/dist/agent-config/account-identity.d.ts +44 -0
  4. package/dist/agent-config/account-identity.js +128 -0
  5. package/dist/agent-config/account-identity.js.map +1 -0
  6. package/dist/agent-config/catalog.d.ts +72 -0
  7. package/dist/agent-config/catalog.js +223 -0
  8. package/dist/agent-config/catalog.js.map +1 -0
  9. package/dist/agent-config/files.d.ts +46 -0
  10. package/dist/agent-config/files.js +119 -0
  11. package/dist/agent-config/files.js.map +1 -0
  12. package/dist/agent-config/model-settings/claude.d.ts +2 -0
  13. package/dist/agent-config/model-settings/claude.js +11 -0
  14. package/dist/agent-config/model-settings/claude.js.map +1 -0
  15. package/dist/agent-config/model-settings/codex.d.ts +2 -0
  16. package/dist/agent-config/model-settings/codex.js +16 -0
  17. package/dist/agent-config/model-settings/codex.js.map +1 -0
  18. package/dist/agent-config/model-settings/opencode.d.ts +2 -0
  19. package/dist/agent-config/model-settings/opencode.js +8 -0
  20. package/dist/agent-config/model-settings/opencode.js.map +1 -0
  21. package/dist/agent-config/model-settings/pi.d.ts +12 -0
  22. package/dist/agent-config/model-settings/pi.js +18 -0
  23. package/dist/agent-config/model-settings/pi.js.map +1 -0
  24. package/dist/agent-config/model-settings/shared.d.ts +9 -0
  25. package/dist/agent-config/model-settings/shared.js +93 -0
  26. package/dist/agent-config/model-settings/shared.js.map +1 -0
  27. package/dist/agent-config/model-settings/types.d.ts +9 -0
  28. package/dist/agent-config/model-settings/types.js +2 -0
  29. package/dist/agent-config/model-settings/types.js.map +1 -0
  30. package/dist/agent-config/models.d.ts +9 -0
  31. package/dist/agent-config/models.js +32 -0
  32. package/dist/agent-config/models.js.map +1 -0
  33. package/dist/agent-config/seed.d.ts +7 -0
  34. package/dist/agent-config/seed.js +90 -0
  35. package/dist/agent-config/seed.js.map +1 -0
  36. package/dist/agent-config/service.d.ts +44 -0
  37. package/dist/agent-config/service.js +71 -0
  38. package/dist/agent-config/service.js.map +1 -0
  39. package/dist/agent-config/validate.d.ts +21 -0
  40. package/dist/agent-config/validate.js +76 -0
  41. package/dist/agent-config/validate.js.map +1 -0
  42. package/dist/automations/coordinator.d.ts +26 -0
  43. package/dist/automations/coordinator.js +66 -0
  44. package/dist/automations/coordinator.js.map +1 -0
  45. package/dist/automations/github-poller.d.ts +74 -0
  46. package/dist/automations/github-poller.js +234 -0
  47. package/dist/automations/github-poller.js.map +1 -0
  48. package/dist/automations/scheduler.d.ts +42 -0
  49. package/dist/automations/scheduler.js +192 -0
  50. package/dist/automations/scheduler.js.map +1 -0
  51. package/dist/automations/store.d.ts +65 -0
  52. package/dist/automations/store.js +298 -0
  53. package/dist/automations/store.js.map +1 -0
  54. package/dist/automations/task-template.d.ts +18 -0
  55. package/dist/automations/task-template.js +95 -0
  56. package/dist/automations/task-template.js.map +1 -0
  57. package/dist/automations/types.d.ts +255 -0
  58. package/dist/automations/types.js +159 -0
  59. package/dist/automations/types.js.map +1 -0
  60. package/dist/config.d.ts +77 -0
  61. package/dist/config.js +242 -0
  62. package/dist/config.js.map +1 -0
  63. package/dist/contract/agent-config.d.ts +153 -0
  64. package/dist/contract/agent-profiles.d.ts +347 -0
  65. package/dist/contract/automations.d.ts +935 -0
  66. package/dist/contract/events.d.ts +104 -0
  67. package/dist/contract/github.d.ts +556 -0
  68. package/dist/contract/health.d.ts +102 -0
  69. package/dist/contract/index.d.ts +16 -0
  70. package/dist/contract/index.js +1895 -0
  71. package/dist/contract/projects.d.ts +210 -0
  72. package/dist/contract/repo.d.ts +234 -0
  73. package/dist/contract/runs.d.ts +1473 -0
  74. package/dist/contract/skills.d.ts +232 -0
  75. package/dist/contract/workflows.d.ts +218 -0
  76. package/dist/contract/workspace.d.ts +579 -0
  77. package/dist/core/agent-env.d.ts +31 -0
  78. package/dist/core/agent-env.js +371 -0
  79. package/dist/core/agent-env.js.map +1 -0
  80. package/dist/core/agent-model-policy.d.ts +10 -0
  81. package/dist/core/agent-model-policy.js +36 -0
  82. package/dist/core/agent-model-policy.js.map +1 -0
  83. package/dist/core/agent-profiles.d.ts +62 -0
  84. package/dist/core/agent-profiles.js +90 -0
  85. package/dist/core/agent-profiles.js.map +1 -0
  86. package/dist/core/agent-runner.d.ts +211 -0
  87. package/dist/core/agent-runner.js +68 -0
  88. package/dist/core/agent-runner.js.map +1 -0
  89. package/dist/core/ask.d.ts +105 -0
  90. package/dist/core/ask.js +187 -0
  91. package/dist/core/ask.js.map +1 -0
  92. package/dist/core/backend-detect.d.ts +16 -0
  93. package/dist/core/backend-detect.js +155 -0
  94. package/dist/core/backend-detect.js.map +1 -0
  95. package/dist/core/claude-cli-runner.d.ts +59 -0
  96. package/dist/core/claude-cli-runner.js +483 -0
  97. package/dist/core/claude-cli-runner.js.map +1 -0
  98. package/dist/core/claude-ui-mapper.d.ts +80 -0
  99. package/dist/core/claude-ui-mapper.js +598 -0
  100. package/dist/core/claude-ui-mapper.js.map +1 -0
  101. package/dist/core/codex-app-server-runner.d.ts +41 -0
  102. package/dist/core/codex-app-server-runner.js +584 -0
  103. package/dist/core/codex-app-server-runner.js.map +1 -0
  104. package/dist/core/codex-app-server-transport.d.ts +35 -0
  105. package/dist/core/codex-app-server-transport.js +150 -0
  106. package/dist/core/codex-app-server-transport.js.map +1 -0
  107. package/dist/core/codex-model-catalog.d.ts +10 -0
  108. package/dist/core/codex-model-catalog.js +110 -0
  109. package/dist/core/codex-model-catalog.js.map +1 -0
  110. package/dist/core/codex-ui-mapper.d.ts +112 -0
  111. package/dist/core/codex-ui-mapper.js +766 -0
  112. package/dist/core/codex-ui-mapper.js.map +1 -0
  113. package/dist/core/model-identity.d.ts +125 -0
  114. package/dist/core/model-identity.js +132 -0
  115. package/dist/core/model-identity.js.map +1 -0
  116. package/dist/core/model-presets.d.ts +21 -0
  117. package/dist/core/model-presets.js +81 -0
  118. package/dist/core/model-presets.js.map +1 -0
  119. package/dist/core/ndjson.d.ts +6 -0
  120. package/dist/core/ndjson.js +23 -0
  121. package/dist/core/ndjson.js.map +1 -0
  122. package/dist/core/opencode-model-catalog.d.ts +32 -0
  123. package/dist/core/opencode-model-catalog.js +153 -0
  124. package/dist/core/opencode-model-catalog.js.map +1 -0
  125. package/dist/core/opencode-server-runner.d.ts +32 -0
  126. package/dist/core/opencode-server-runner.js +882 -0
  127. package/dist/core/opencode-server-runner.js.map +1 -0
  128. package/dist/core/opencode-ui-mapper.d.ts +137 -0
  129. package/dist/core/opencode-ui-mapper.js +800 -0
  130. package/dist/core/opencode-ui-mapper.js.map +1 -0
  131. package/dist/core/pi-model-catalog.d.ts +31 -0
  132. package/dist/core/pi-model-catalog.js +152 -0
  133. package/dist/core/pi-model-catalog.js.map +1 -0
  134. package/dist/core/pi-runner.d.ts +24 -0
  135. package/dist/core/pi-runner.js +403 -0
  136. package/dist/core/pi-runner.js.map +1 -0
  137. package/dist/core/pi-ui-mapper.d.ts +36 -0
  138. package/dist/core/pi-ui-mapper.js +304 -0
  139. package/dist/core/pi-ui-mapper.js.map +1 -0
  140. package/dist/core/process-usage.d.ts +66 -0
  141. package/dist/core/process-usage.js +193 -0
  142. package/dist/core/process-usage.js.map +1 -0
  143. package/dist/core/provider-auth.d.ts +154 -0
  144. package/dist/core/provider-auth.js +509 -0
  145. package/dist/core/provider-auth.js.map +1 -0
  146. package/dist/core/provider-availability.d.ts +3 -0
  147. package/dist/core/provider-availability.js +14 -0
  148. package/dist/core/provider-availability.js.map +1 -0
  149. package/dist/core/runner-factory.d.ts +8 -0
  150. package/dist/core/runner-factory.js +25 -0
  151. package/dist/core/runner-factory.js.map +1 -0
  152. package/dist/core/runner-model-catalog.d.ts +29 -0
  153. package/dist/core/runner-model-catalog.js +78 -0
  154. package/dist/core/runner-model-catalog.js.map +1 -0
  155. package/dist/core/secret-redaction.d.ts +37 -0
  156. package/dist/core/secret-redaction.js +115 -0
  157. package/dist/core/secret-redaction.js.map +1 -0
  158. package/dist/core/shell-env.d.ts +28 -0
  159. package/dist/core/shell-env.js +56 -0
  160. package/dist/core/shell-env.js.map +1 -0
  161. package/dist/core/tool-display.d.ts +31 -0
  162. package/dist/core/tool-display.js +179 -0
  163. package/dist/core/tool-display.js.map +1 -0
  164. package/dist/core/ui-events.d.ts +335 -0
  165. package/dist/core/ui-events.js +25 -0
  166. package/dist/core/ui-events.js.map +1 -0
  167. package/dist/core/usage-limit.d.ts +42 -0
  168. package/dist/core/usage-limit.js +209 -0
  169. package/dist/core/usage-limit.js.map +1 -0
  170. package/dist/core/usage.d.ts +11 -0
  171. package/dist/core/usage.js +15 -0
  172. package/dist/core/usage.js.map +1 -0
  173. package/dist/core/v1-text-coalescer.d.ts +36 -0
  174. package/dist/core/v1-text-coalescer.js +72 -0
  175. package/dist/core/v1-text-coalescer.js.map +1 -0
  176. package/dist/git-diff-base.d.ts +85 -0
  177. package/dist/git-diff-base.js +180 -0
  178. package/dist/git-diff-base.js.map +1 -0
  179. package/dist/git-refs.d.ts +11 -0
  180. package/dist/git-refs.js +14 -0
  181. package/dist/git-refs.js.map +1 -0
  182. package/dist/git-worktree.d.ts +161 -0
  183. package/dist/git-worktree.js +508 -0
  184. package/dist/git-worktree.js.map +1 -0
  185. package/dist/handoff.d.ts +62 -0
  186. package/dist/handoff.js +154 -0
  187. package/dist/handoff.js.map +1 -0
  188. package/dist/index.d.ts +2 -0
  189. package/dist/index.js +680 -0
  190. package/dist/index.js.map +1 -0
  191. package/dist/install-as-command.d.ts +40 -0
  192. package/dist/install-as-command.js +52 -0
  193. package/dist/install-as-command.js.map +1 -0
  194. package/dist/pack-check.d.ts +17 -0
  195. package/dist/pack-check.js +27 -0
  196. package/dist/pack-check.js.map +1 -0
  197. package/dist/paths.d.ts +140 -0
  198. package/dist/paths.js +192 -0
  199. package/dist/paths.js.map +1 -0
  200. package/dist/planner.d.ts +27 -0
  201. package/dist/planner.js +268 -0
  202. package/dist/planner.js.map +1 -0
  203. package/dist/release/manifests.d.ts +81 -0
  204. package/dist/release/manifests.js +74 -0
  205. package/dist/release/manifests.js.map +1 -0
  206. package/dist/release/snapshot.d.ts +67 -0
  207. package/dist/release/snapshot.js +97 -0
  208. package/dist/release/snapshot.js.map +1 -0
  209. package/dist/release/stable.d.ts +38 -0
  210. package/dist/release/stable.js +55 -0
  211. package/dist/release/stable.js.map +1 -0
  212. package/dist/runs/agent-tmpdir.d.ts +41 -0
  213. package/dist/runs/agent-tmpdir.js +183 -0
  214. package/dist/runs/agent-tmpdir.js.map +1 -0
  215. package/dist/runs/auto-name.d.ts +75 -0
  216. package/dist/runs/auto-name.js +179 -0
  217. package/dist/runs/auto-name.js.map +1 -0
  218. package/dist/runs/event-history.d.ts +50 -0
  219. package/dist/runs/event-history.js +613 -0
  220. package/dist/runs/event-history.js.map +1 -0
  221. package/dist/runs/retention.d.ts +60 -0
  222. package/dist/runs/retention.js +86 -0
  223. package/dist/runs/retention.js.map +1 -0
  224. package/dist/runs/review-gate.d.ts +18 -0
  225. package/dist/runs/review-gate.js +21 -0
  226. package/dist/runs/review-gate.js.map +1 -0
  227. package/dist/runs/run-index.d.ts +19 -0
  228. package/dist/runs/run-index.js +43 -0
  229. package/dist/runs/run-index.js.map +1 -0
  230. package/dist/runs/store.d.ts +446 -0
  231. package/dist/runs/store.js +1118 -0
  232. package/dist/runs/store.js.map +1 -0
  233. package/dist/runs/task-markers.d.ts +28 -0
  234. package/dist/runs/task-markers.js +74 -0
  235. package/dist/runs/task-markers.js.map +1 -0
  236. package/dist/runs/task-refs.d.ts +25 -0
  237. package/dist/runs/task-refs.js +74 -0
  238. package/dist/runs/task-refs.js.map +1 -0
  239. package/dist/runs/ui-event-sink.d.ts +81 -0
  240. package/dist/runs/ui-event-sink.js +210 -0
  241. package/dist/runs/ui-event-sink.js.map +1 -0
  242. package/dist/server/app-type.d.ts +21 -0
  243. package/dist/server/app-type.js +2 -0
  244. package/dist/server/app-type.js.map +1 -0
  245. package/dist/server/capabilities.d.ts +70 -0
  246. package/dist/server/capabilities.js +152 -0
  247. package/dist/server/capabilities.js.map +1 -0
  248. package/dist/server/checkout.d.ts +128 -0
  249. package/dist/server/checkout.js +296 -0
  250. package/dist/server/checkout.js.map +1 -0
  251. package/dist/server/forge/github.d.ts +513 -0
  252. package/dist/server/forge/github.js +2364 -0
  253. package/dist/server/forge/github.js.map +1 -0
  254. package/dist/server/forge/index.d.ts +40 -0
  255. package/dist/server/forge/index.js +72 -0
  256. package/dist/server/forge/index.js.map +1 -0
  257. package/dist/server/forge/types.d.ts +242 -0
  258. package/dist/server/forge/types.js +2 -0
  259. package/dist/server/forge/types.js.map +1 -0
  260. package/dist/server/fs-browse.d.ts +105 -0
  261. package/dist/server/fs-browse.js +182 -0
  262. package/dist/server/fs-browse.js.map +1 -0
  263. package/dist/server/git-changes.d.ts +213 -0
  264. package/dist/server/git-changes.js +555 -0
  265. package/dist/server/git-changes.js.map +1 -0
  266. package/dist/server/git.d.ts +28 -0
  267. package/dist/server/git.js +112 -0
  268. package/dist/server/git.js.map +1 -0
  269. package/dist/server/github.d.ts +9 -0
  270. package/dist/server/github.js +8 -0
  271. package/dist/server/github.js.map +1 -0
  272. package/dist/server/launch-key.d.ts +7 -0
  273. package/dist/server/launch-key.js +33 -0
  274. package/dist/server/launch-key.js.map +1 -0
  275. package/dist/server/open-in-app.d.ts +66 -0
  276. package/dist/server/open-in-app.js +211 -0
  277. package/dist/server/open-in-app.js.map +1 -0
  278. package/dist/server/open-in-terminal.d.ts +70 -0
  279. package/dist/server/open-in-terminal.js +179 -0
  280. package/dist/server/open-in-terminal.js.map +1 -0
  281. package/dist/server/pr.d.ts +7 -0
  282. package/dist/server/pr.js +7 -0
  283. package/dist/server/pr.js.map +1 -0
  284. package/dist/server/project-context.d.ts +120 -0
  285. package/dist/server/project-context.js +182 -0
  286. package/dist/server/project-context.js.map +1 -0
  287. package/dist/server/provider-action-gate.d.ts +8 -0
  288. package/dist/server/provider-action-gate.js +56 -0
  289. package/dist/server/provider-action-gate.js.map +1 -0
  290. package/dist/server/provider-auth-runtime.d.ts +21 -0
  291. package/dist/server/provider-auth-runtime.js +66 -0
  292. package/dist/server/provider-auth-runtime.js.map +1 -0
  293. package/dist/server/server.d.ts +13138 -0
  294. package/dist/server/server.js +5263 -0
  295. package/dist/server/server.js.map +1 -0
  296. package/dist/server/static-ui.d.ts +49 -0
  297. package/dist/server/static-ui.js +92 -0
  298. package/dist/server/static-ui.js.map +1 -0
  299. package/dist/server/validators.d.ts +97 -0
  300. package/dist/server/validators.js +86 -0
  301. package/dist/server/validators.js.map +1 -0
  302. package/dist/server/ws.d.ts +85 -0
  303. package/dist/server/ws.js +218 -0
  304. package/dist/server/ws.js.map +1 -0
  305. package/dist/server/wsl.d.ts +25 -0
  306. package/dist/server/wsl.js +92 -0
  307. package/dist/server/wsl.js.map +1 -0
  308. package/dist/server-install/engine.d.ts +50 -0
  309. package/dist/server-install/engine.js +324 -0
  310. package/dist/server-install/engine.js.map +1 -0
  311. package/dist/server-install/platforms/macosx-ngrok.d.ts +6 -0
  312. package/dist/server-install/platforms/macosx-ngrok.js +345 -0
  313. package/dist/server-install/platforms/macosx-ngrok.js.map +1 -0
  314. package/dist/server-install/platforms/ubuntu-vps.d.ts +78 -0
  315. package/dist/server-install/platforms/ubuntu-vps.js +1016 -0
  316. package/dist/server-install/platforms/ubuntu-vps.js.map +1 -0
  317. package/dist/server-install/state.d.ts +52 -0
  318. package/dist/server-install/state.js +182 -0
  319. package/dist/server-install/state.js.map +1 -0
  320. package/dist/server-install/steps.d.ts +109 -0
  321. package/dist/server-install/steps.js +334 -0
  322. package/dist/server-install/steps.js.map +1 -0
  323. package/dist/server-install/strategies.d.ts +4 -0
  324. package/dist/server-install/strategies.js +20 -0
  325. package/dist/server-install/strategies.js.map +1 -0
  326. package/dist/server-install/types.d.ts +287 -0
  327. package/dist/server-install/types.js +121 -0
  328. package/dist/server-install/types.js.map +1 -0
  329. package/dist/server-install/ui.d.ts +42 -0
  330. package/dist/server-install/ui.js +130 -0
  331. package/dist/server-install/ui.js.map +1 -0
  332. package/dist/skills-banner.d.ts +22 -0
  333. package/dist/skills-banner.js +41 -0
  334. package/dist/skills-banner.js.map +1 -0
  335. package/dist/skills-remote.d.ts +84 -0
  336. package/dist/skills-remote.js +468 -0
  337. package/dist/skills-remote.js.map +1 -0
  338. package/dist/skills-update.d.ts +88 -0
  339. package/dist/skills-update.js +392 -0
  340. package/dist/skills-update.js.map +1 -0
  341. package/dist/skills.d.ts +82 -0
  342. package/dist/skills.js +251 -0
  343. package/dist/skills.js.map +1 -0
  344. package/dist/todos.d.ts +48 -0
  345. package/dist/todos.js +201 -0
  346. package/dist/todos.js.map +1 -0
  347. package/dist/ui-state.d.ts +26 -0
  348. package/dist/ui-state.js +38 -0
  349. package/dist/ui-state.js.map +1 -0
  350. package/dist/update-check.d.ts +12 -0
  351. package/dist/update-check.js +41 -0
  352. package/dist/update-check.js.map +1 -0
  353. package/dist/workflows/load.d.ts +15 -0
  354. package/dist/workflows/load.js +56 -0
  355. package/dist/workflows/load.js.map +1 -0
  356. package/dist/workflows/run.d.ts +758 -0
  357. package/dist/workflows/run.js +3389 -0
  358. package/dist/workflows/run.js.map +1 -0
  359. package/dist/workflows/types.d.ts +153 -0
  360. package/dist/workflows/types.js +212 -0
  361. package/dist/workflows/types.js.map +1 -0
  362. package/dist/workspace/agent-accounts.d.ts +153 -0
  363. package/dist/workspace/agent-accounts.js +304 -0
  364. package/dist/workspace/agent-accounts.js.map +1 -0
  365. package/dist/workspace/agent-profiles.d.ts +78 -0
  366. package/dist/workspace/agent-profiles.js +115 -0
  367. package/dist/workspace/agent-profiles.js.map +1 -0
  368. package/dist/workspace/config.d.ts +169 -0
  369. package/dist/workspace/config.js +379 -0
  370. package/dist/workspace/config.js.map +1 -0
  371. package/dist/workspace/migrations.d.ts +45 -0
  372. package/dist/workspace/migrations.js +147 -0
  373. package/dist/workspace/migrations.js.map +1 -0
  374. package/dist/workspace/projects-cli.d.ts +25 -0
  375. package/dist/workspace/projects-cli.js +172 -0
  376. package/dist/workspace/projects-cli.js.map +1 -0
  377. package/dist/workspace/projects.d.ts +109 -0
  378. package/dist/workspace/projects.js +250 -0
  379. package/dist/workspace/projects.js.map +1 -0
  380. package/dist/workspace/semaphore.d.ts +179 -0
  381. package/dist/workspace/semaphore.js +195 -0
  382. package/dist/workspace/semaphore.js.map +1 -0
  383. package/dist/workspace/ui-state.d.ts +34 -0
  384. package/dist/workspace/ui-state.js +53 -0
  385. package/dist/workspace/ui-state.js.map +1 -0
  386. package/package.json +70 -0
  387. package/scripts/check-pack.mjs +46 -0
  388. package/scripts/inline-contract.mjs +112 -0
  389. package/scripts/install-as-command.mjs +120 -0
  390. package/scripts/mock-claude.mjs +520 -0
  391. package/scripts/mock-pi-rpc.mjs +83 -0
  392. package/scripts/sync-readme.mjs +20 -0
  393. package/scripts/test-process-usage.mjs +47 -0
  394. package/web/dist/assets/alert-dialog-B4Ofsgv7.js +1 -0
  395. package/web/dist/assets/arrow-down-Dy8dup7j.js +1 -0
  396. package/web/dist/assets/arrow-left-BJaucbhn.js +1 -0
  397. package/web/dist/assets/bundle-mjs-BT31bpU6.js +1 -0
  398. package/web/dist/assets/centered-state-duPW0phQ.js +43 -0
  399. package/web/dist/assets/chevron-right-Be4A5TCS.js +1 -0
  400. package/web/dist/assets/chunk-BO2N2NFS-DE6qKn3r.js +131 -0
  401. package/web/dist/assets/collapsible-DdcNBdSk.js +1 -0
  402. package/web/dist/assets/commit-list-CgvN9vec.js +1 -0
  403. package/web/dist/assets/compare-variants-CQA2nd65.js +1 -0
  404. package/web/dist/assets/core-BCsw8oQw.js +12 -0
  405. package/web/dist/assets/css-BsVw1vtW.js +1 -0
  406. package/web/dist/assets/diff-B6Agp5Hl.js +3 -0
  407. package/web/dist/assets/diff-stat-BoXuGkgq.js +1 -0
  408. package/web/dist/assets/diff-view-CD8XI-fj.js +6 -0
  409. package/web/dist/assets/diff-woXpYk--.js +1 -0
  410. package/web/dist/assets/dropdown-menu-B3SYw-k5.js +1 -0
  411. package/web/dist/assets/editable-title-B-hjp5wl.js +1 -0
  412. package/web/dist/assets/ellipsis-vertical-BYwzw0xl.js +1 -0
  413. package/web/dist/assets/engine-javascript-FQvzRocB.js +141 -0
  414. package/web/dist/assets/file-BRj5eISx.js +1 -0
  415. package/web/dist/assets/folder-z4oT5981.js +1 -0
  416. package/web/dist/assets/git-toolbar-owSEkYld.js +1 -0
  417. package/web/dist/assets/github-Bz2VgRX3.js +1 -0
  418. package/web/dist/assets/go-rLFTqkRN.js +1 -0
  419. package/web/dist/assets/highlighted-body-OFNGDK62-BL-MfFgl.js +1 -0
  420. package/web/dist/assets/highlighter-CdHqIwFr.js +3 -0
  421. package/web/dist/assets/html-BY76lXLH.js +1 -0
  422. package/web/dist/assets/image-preview-h3WFluuy.js +1 -0
  423. package/web/dist/assets/index-BbcQNT92.css +2 -0
  424. package/web/dist/assets/index-EtQQQ6Kj.js +7 -0
  425. package/web/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  426. package/web/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  427. package/web/dist/assets/javascript-BgS3c2Ky.js +1 -0
  428. package/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  429. package/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  430. package/web/dist/assets/json-qhed-kSA.js +1 -0
  431. package/web/dist/assets/jsonc-CYpm1nAK.js +1 -0
  432. package/web/dist/assets/jsx-Bz0zcwM4.js +1 -0
  433. package/web/dist/assets/lib-BQXq3kEf.js +1 -0
  434. package/web/dist/assets/lib-BxQXEXDF.js +1 -0
  435. package/web/dist/assets/markdown-BYOwaDjH.js +1 -0
  436. package/web/dist/assets/markdown-DqBKYPiB.js +2 -0
  437. package/web/dist/assets/mermaid-GHXKKRXX-C4jxqUUb.js +1 -0
  438. package/web/dist/assets/new-task-form-BdJKRBJX.js +1 -0
  439. package/web/dist/assets/pill-BQfmfpYp.js +1 -0
  440. package/web/dist/assets/project-router-DxgFZY1l.js +1 -0
  441. package/web/dist/assets/prompt-templates-B6m16gq-.js +15 -0
  442. package/web/dist/assets/python-gzcpVVnB.js +1 -0
  443. package/web/dist/assets/react-runtime-CCIEwYL0.js +9 -0
  444. package/web/dist/assets/refresh-cw-mhSpxf2a.js +1 -0
  445. package/web/dist/assets/repo-git-CUNRxR3_.js +1 -0
  446. package/web/dist/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  447. package/web/dist/assets/run-diff-DsmmDVfx.js +3 -0
  448. package/web/dist/assets/run-header-BkhrseLJ.js +1 -0
  449. package/web/dist/assets/rust-Cfkwpbl8.js +1 -0
  450. package/web/dist/assets/search-x-BqDMB2g8.js +1 -0
  451. package/web/dist/assets/shellscript-CLZ0U2zV.js +1 -0
  452. package/web/dist/assets/skill-empty-hint-BWEvTggc.js +1 -0
  453. package/web/dist/assets/skills-9oR_oHse.js +1 -0
  454. package/web/dist/assets/skills-DwIxnnWO.js +1 -0
  455. package/web/dist/assets/sparkles-DIoTQpyx.js +1 -0
  456. package/web/dist/assets/sql-BsFa4tDR.js +1 -0
  457. package/web/dist/assets/square-terminal-Cc7CuQxc.js +1 -0
  458. package/web/dist/assets/tab-link-D1fQgpmO.js +1 -0
  459. package/web/dist/assets/task-changes-BKeLlDpK.js +1 -0
  460. package/web/dist/assets/task-commits-gcEFZIa5.js +1 -0
  461. package/web/dist/assets/task-files-BGAqoXTW.js +2 -0
  462. package/web/dist/assets/task-thread-DT8aUYTS.js +9 -0
  463. package/web/dist/assets/textarea-BOVbfy5C.js +1 -0
  464. package/web/dist/assets/thread-loading-CypW73KD.js +1 -0
  465. package/web/dist/assets/toml-CcmNWLt0.js +1 -0
  466. package/web/dist/assets/trash-2-CJq6LHWn.js +1 -0
  467. package/web/dist/assets/triangle-alert-CjDFvU27.js +1 -0
  468. package/web/dist/assets/tsx-udAQXfEw.js +1 -0
  469. package/web/dist/assets/typescript-bsJCZSQ-.js +1 -0
  470. package/web/dist/assets/upload-CPDZlJeK.js +1 -0
  471. package/web/dist/assets/use-desktop-5JsLmi0a.js +1 -0
  472. package/web/dist/assets/use-submit-shortcut-CHVFevty.js +1 -0
  473. package/web/dist/assets/utils-DiO6zyJd.js +64 -0
  474. package/web/dist/assets/workflows-rQDFzWRt.js +11 -0
  475. package/web/dist/assets/yaml-rwi0_p6S.js +1 -0
  476. package/web/dist/assets/zoomable-image-COWqb11v.js +1 -0
  477. package/web/dist/index.html +80 -0
  478. package/web/dist/open-mercato.svg +11 -0
@@ -0,0 +1,92 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { readFileSync } from 'node:fs';
3
+ /**
4
+ * WSL (Windows Subsystem for Linux) support for "Open in…" (#361): when cezar's server runs
5
+ * inside a WSL distro, its own `process.platform` reads `linux` — worktree paths are POSIX
6
+ * (`/home/…`) even though the user's editors, file explorer and terminal emulator mostly live on
7
+ * the Windows side, reachable through WSL interop (binfmt_misc lets a WSL process exec a `.exe`
8
+ * directly). Two things are needed to hand a worktree off correctly:
9
+ * 1. detect that we ARE inside WSL (`isWsl`), so the terminal/file-manager branches in
10
+ * open-in-terminal.ts / open-in-app.ts know to go through interop instead of xdg-open;
11
+ * 2. translate the POSIX path to the `\\wsl$\<Distro>\…` (or `C:\…` for a `/mnt/<drive>` path)
12
+ * form a Windows-side executable actually understands (`translateToWindowsPath`).
13
+ *
14
+ * Every helper here takes its inputs as optional parameters (defaulting to the real
15
+ * env/platform/`/proc/version`) so the detection and translation logic is unit-testable from any
16
+ * host OS, without needing to actually run inside WSL or stub globals.
17
+ */
18
+ /** Best-effort read of `/proc/version`; empty string when unavailable (non-Linux, sandboxed,
19
+ * permission-denied, etc) — absence just means "not WSL", never a crash. */
20
+ function safeProcVersion() {
21
+ try {
22
+ return readFileSync('/proc/version', 'utf8');
23
+ }
24
+ catch {
25
+ return '';
26
+ }
27
+ }
28
+ /** True when this process is running inside WSL. The Linux kernel WSL ships identifies itself
29
+ * in `/proc/version` (contains "microsoft"); WSL also sets `WSL_DISTRO_NAME`/`WSL_INTEROP` for
30
+ * every process it starts, which is cheaper to check first. */
31
+ export function isWsl(env = process.env, platform = process.platform, procVersion = safeProcVersion()) {
32
+ if (platform !== 'linux')
33
+ return false;
34
+ if (env.WSL_DISTRO_NAME || env.WSL_INTEROP)
35
+ return true;
36
+ return /microsoft/i.test(procVersion);
37
+ }
38
+ /** Distro names are user-chosen (`wsl --import <name> …`), so `WSL_DISTRO_NAME` is untrusted
39
+ * input that we go on to put on a command line and into a UNC path. WSL's own naming rules are
40
+ * narrower than this, so nothing legitimate is rejected — but a name like `a&calc&` is. */
41
+ const SAFE_DISTRO_NAME = /^[A-Za-z0-9._-]+$/;
42
+ /** The distro name Windows-side tools address this environment as (`wsl.exe -d <name>`, the
43
+ * `\\wsl$\<name>\…` UNC prefix). Falls back to "Ubuntu" — WSL's own default — when unset or
44
+ * when the name fails `SAFE_DISTRO_NAME`, so no unvalidated env value is ever interpolated into
45
+ * a command line or a path. The launchers this feeds are shell-free anyway
46
+ * (`wslTerminalLaunchers`); this is the belt to their braces. */
47
+ export function wslDistroName(env = process.env) {
48
+ const name = env.WSL_DISTRO_NAME;
49
+ return name && SAFE_DISTRO_NAME.test(name) ? name : 'Ubuntu';
50
+ }
51
+ /** Pure POSIX → Windows path translation, no `wslpath` required (used as its fallback, and
52
+ * directly in tests). Two cases:
53
+ * - `/mnt/<drive>/…` (the Windows filesystem mounted into WSL) → `<DRIVE>:\…`, the native path,
54
+ * not a UNC round-trip through the distro.
55
+ * - anything else (the Linux filesystem proper) → `\\wsl$\<Distro>\…`, the UNC path Windows
56
+ * apps use to reach into the distro. */
57
+ export function toWindowsPath(posixPath, distro = wslDistroName()) {
58
+ const mnt = /^\/mnt\/([a-zA-Z])(\/.*)?$/.exec(posixPath);
59
+ if (mnt) {
60
+ const drive = mnt[1].toUpperCase();
61
+ const rest = (mnt[2] ?? '').split('/').filter(Boolean).join('\\');
62
+ return rest ? `${drive}:\\${rest}` : `${drive}:\\`;
63
+ }
64
+ const trimmed = posixPath.replace(/^\/+/, '');
65
+ const backslashed = trimmed.split('/').filter(Boolean).join('\\');
66
+ return backslashed ? `\\\\wsl$\\${distro}\\${backslashed}` : `\\\\wsl$\\${distro}`;
67
+ }
68
+ /** The reverse of the UNC case above: `\\wsl$\<Distro>\…` or `\\wsl.localhost\<Distro>\…` →
69
+ * the POSIX path WSL-side tools expect. Anything else (a plain `C:\…`, an unrecognized UNC
70
+ * share) passes through unchanged — it isn't a WSL path to begin with. */
71
+ export function toPosixPath(windowsPath) {
72
+ const match = /^\\\\(?:wsl\$|wsl\.localhost)\\[^\\]+(\\.*)?$/i.exec(windowsPath);
73
+ if (!match)
74
+ return windowsPath;
75
+ const rest = match[1] ?? '';
76
+ return `/${rest.replace(/^\\+/, '').split('\\').join('/')}`;
77
+ }
78
+ /** The translation actually used at launch time: prefer the real `wslpath -w` (it knows about
79
+ * every mount, not just `/mnt/<drive>`), falling back to the pure `toWindowsPath` above when
80
+ * `wslpath` is missing or errors — degrade, never throw. */
81
+ export function translateToWindowsPath(posixPath) {
82
+ try {
83
+ const out = execFileSync('wslpath', ['-w', posixPath], { encoding: 'utf8', timeout: 2000 }).trim();
84
+ if (out)
85
+ return out;
86
+ }
87
+ catch {
88
+ // wslpath not on PATH (shouldn't happen inside real WSL, but never trust it) — fall through.
89
+ }
90
+ return toWindowsPath(posixPath);
91
+ }
92
+ //# sourceMappingURL=wsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsl.js","sourceRoot":"","sources":["../../src/server/wsl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { type PlatformStrategy, type Runner, type ServerState, type Ui } from './types.ts';
2
+ /**
3
+ * The engine — pure control flow over a strategy's ordered steps. It never
4
+ * knows what a step *does*, only `check`/`run`/`undo`. `runInstall` resumes
5
+ * from `~/.cezar/server.json` (skips resolved steps unless `--reconfigure`
6
+ * names them); `runUninstall` walks completed steps in reverse. Both hold the
7
+ * single-writer lock for their whole run.
8
+ */
9
+ export interface RunOptions {
10
+ dryRun: boolean;
11
+ assumeYes: boolean;
12
+ reconfigure: ReadonlySet<string>;
13
+ /** `--reinstall`: force every step to re-run, ignoring recorded/present state. */
14
+ reinstall?: boolean;
15
+ repoRoot: string;
16
+ /** ISO timestamp from the caller (Date.now is guarded in some contexts). */
17
+ now: string;
18
+ ui?: Ui;
19
+ runner?: Runner;
20
+ /**
21
+ * Instance id (slug) to act on. Omit / `default` for the original
22
+ * single-cockpit host (legacy `~/.cezar/server.json`); a domain-derived slug
23
+ * targets a named instance under `~/.cezar/server-instances/`.
24
+ */
25
+ instance?: string;
26
+ /** Public domain for this instance — recorded up front so instance selection
27
+ * and the SSL step share one source of truth. */
28
+ domain?: string;
29
+ /** Loopback port for this instance. For a NEW named instance the caller
30
+ * passes an auto-picked free port; a resume keeps the recorded one. */
31
+ port?: number;
32
+ /** `--external-proxy`: an existing reverse proxy fronts cezar, so the
33
+ * platform installs no nginx/SSL of its own. */
34
+ externalProxy?: boolean;
35
+ /** `--bind-host`: interface the cockpit binds so that proxy can reach it. */
36
+ bindHost?: string;
37
+ }
38
+ export type RunStatus = 'complete' | 'cancelled' | 'failed';
39
+ export interface RunResult {
40
+ status: RunStatus;
41
+ state: ServerState;
42
+ }
43
+ export declare function runInstall(strategy: PlatformStrategy, opts: RunOptions): Promise<RunResult>;
44
+ export declare function runUninstall(strategy: PlatformStrategy, opts: RunOptions): Promise<RunResult>;
45
+ /**
46
+ * Reload the running cockpit to pick up a new cezar version — the standardized
47
+ * `server-deploy` flow. Delegates to the platform's `redeploy` (restart service
48
+ * + re-verify); holds the single-writer lock for the whole run.
49
+ */
50
+ export declare function runDeploy(strategy: PlatformStrategy, opts: RunOptions): Promise<RunResult>;
@@ -0,0 +1,324 @@
1
+ import { loadWorkspaceConfig } from '../workspace/config.js';
2
+ import { acquireLock, deleteServerState, isResolved, loadServerState, saveServerState } from './state.js';
3
+ import { StepAborted, StepCancelled, StepSkipped, defaultRunner } from './steps.js';
4
+ import { createAutoUi, createClackUi } from './ui.js';
5
+ import { CANCEL, PreflightError, } from './types.js';
6
+ /**
7
+ * Record a step outcome WITHOUT losing the artifact ledger: `server.json`
8
+ * exists so uninstall can reverse what was created, so a re-run that is
9
+ * cancelled/skipped/failed must keep the artifacts recorded by the previous
10
+ * successful run. Only a successful `run()` (which re-creates or supersedes
11
+ * them) may replace `created`.
12
+ */
13
+ function recordOutcome(state, id, status) {
14
+ state.steps[id] = { status, created: state.steps[id]?.created ?? null };
15
+ }
16
+ /** An outcome uninstall must reverse: completed, failed mid-run, or anything
17
+ * that still has recorded artifacts (e.g. a done step later downgraded). */
18
+ function needsUndo(outcome) {
19
+ if (!outcome)
20
+ return false;
21
+ if (outcome.status === 'done' || outcome.status === 'failed')
22
+ return true;
23
+ return (outcome.created?.artifacts.length ?? 0) > 0;
24
+ }
25
+ /**
26
+ * A `CEZ_DRY_RUN` preview persists a full ledger with no real side effects
27
+ * (the packaged e2e round-trip depends on that). Two invariants keep previews
28
+ * from destroying real state:
29
+ *
30
+ * 1. A dry-run NEVER persists over a REAL record — the preview mutates its
31
+ * in-memory copy only, so a preview on an installed host can't stamp
32
+ * `dryRun: true` onto (or delete steps from) the genuine ledger.
33
+ * 2. A REAL run never resumes from a preview record — steps would all report
34
+ * "already done" while nothing is installed. It self-heals by resetting.
35
+ */
36
+ function reconcileDryRun(state, opts, ui) {
37
+ const realRecord = !state.dryRun && (state.installed || Object.keys(state.steps).length > 0);
38
+ if (opts.dryRun && realRecord) {
39
+ ui.info('DRY RUN over a real install record — previewing only, nothing will be saved to server.json.');
40
+ return { persist: false };
41
+ }
42
+ if (!opts.dryRun && state.dryRun) {
43
+ ui.info('The recorded state came from a CEZ_DRY_RUN preview — starting from a clean slate.');
44
+ state.steps = {};
45
+ state.installed = false;
46
+ state.platform = undefined;
47
+ state.publicUrl = undefined;
48
+ state.ephemeral = undefined;
49
+ }
50
+ if (opts.dryRun)
51
+ state.dryRun = true;
52
+ else
53
+ delete state.dryRun;
54
+ return { persist: true };
55
+ }
56
+ function buildContext(state, opts) {
57
+ // Real `--yes` runs fail closed on prompts they cannot answer; dry-run
58
+ // previews stay lenient so they can walk every step.
59
+ const ui = opts.ui ??
60
+ (opts.dryRun || opts.assumeYes
61
+ ? createAutoUi({}, (m) => console.log(m), { strictValidate: !opts.dryRun })
62
+ : createClackUi());
63
+ const instance = opts.instance ?? 'default';
64
+ const ctx = {
65
+ state,
66
+ ui,
67
+ instance,
68
+ runner: opts.runner ?? defaultRunner,
69
+ save: async () => saveServerState(state, instance),
70
+ dryRun: opts.dryRun,
71
+ assumeYes: opts.assumeYes,
72
+ reconfigure: opts.reconfigure,
73
+ repoRoot: opts.repoRoot,
74
+ now: opts.now,
75
+ prefs: {},
76
+ };
77
+ const { persist } = reconcileDryRun(state, opts, ui);
78
+ if (!persist)
79
+ ctx.save = async () => { };
80
+ return ctx;
81
+ }
82
+ export async function runInstall(strategy, opts) {
83
+ const release = acquireLock(opts.instance);
84
+ try {
85
+ const state = loadServerState(opts.instance);
86
+ // buildContext reconciles dry-run records first, so a preview of platform A
87
+ // never blocks a real install of platform B (the reset clears `platform`).
88
+ const ctx = buildContext(state, opts);
89
+ if (state.platform && state.platform !== strategy.id) {
90
+ throw new PreflightError(`this host already has a ${state.platform} install recorded — run \`server-uninstall\` first to switch platforms`);
91
+ }
92
+ state.platform = strategy.id;
93
+ // Record instance identity so the file is self-describing and later
94
+ // uninstall/deploy runs (and `server-instances/` listings) agree on it.
95
+ state.instance = opts.instance ?? state.instance ?? 'default';
96
+ if (opts.domain)
97
+ state.domain = opts.domain;
98
+ // Proxy mode + bind host are recorded before `steps(ctx)` runs, because the
99
+ // platform selects its step list from them (external proxy ⇒ no nginx/SSL).
100
+ if (opts.externalProxy !== undefined)
101
+ state.externalProxy = opts.externalProxy;
102
+ if (opts.bindHost)
103
+ state.bindHost = opts.bindHost;
104
+ // A caller-supplied port wins (a new named instance auto-picks a free one);
105
+ // otherwise keep whatever the resumed record already carries.
106
+ if (opts.port)
107
+ state.primaryPort = opts.port;
108
+ state.createdAt ??= opts.now;
109
+ state.updatedAt = opts.now;
110
+ await strategy.preflight(ctx); // throws PreflightError to refuse politely
111
+ const steps = strategy.steps(ctx);
112
+ const knownIds = new Set(steps.map((s) => s.id));
113
+ const unknownIds = [...opts.reconfigure].filter((id) => !knownIds.has(id));
114
+ if (unknownIds.length > 0) {
115
+ throw new PreflightError(`unknown --reconfigure step id(s): ${unknownIds.join(', ')} — ` +
116
+ `valid ids for ${strategy.id}: ${[...knownIds].join(', ')}`);
117
+ }
118
+ if (opts.reinstall) {
119
+ ctx.ui.info(`Reinstalling ${strategy.label} — every step will re-run.`);
120
+ }
121
+ else {
122
+ const resolvedCount = steps.filter((s) => isResolved(state.steps[s.id])).length;
123
+ if (resolvedCount > 0) {
124
+ ctx.ui.info(`Resuming ${strategy.label} — ${resolvedCount}/${steps.length} steps already done.`);
125
+ }
126
+ }
127
+ for (const step of steps) {
128
+ // `--reinstall` forces every step; `--reconfigure` forces the named ones.
129
+ const forced = opts.reinstall === true || opts.reconfigure.has(step.id);
130
+ if (!forced && isResolved(state.steps[step.id])) {
131
+ ctx.ui.info(`= ${step.title} (already done)`);
132
+ continue;
133
+ }
134
+ // Already satisfied on the box (fresh install, nothing recorded yet)?
135
+ if (!forced && (await step.check(ctx))) {
136
+ state.steps[step.id] = { status: 'done', created: state.steps[step.id]?.created ?? null };
137
+ await ctx.save();
138
+ ctx.ui.info(`= ${step.title} (already present)`);
139
+ continue;
140
+ }
141
+ if (step.optional) {
142
+ // `--yes` = accept safe defaults, and the safe default for an optional
143
+ // step (SSL against a real domain, autostart) is to SKIP it — never run
144
+ // it non-interactively against placeholder input.
145
+ if (ctx.assumeYes) {
146
+ recordOutcome(state, step.id, 'skipped');
147
+ await ctx.save();
148
+ ctx.ui.info(`— ${step.title} (skipped: --yes)`);
149
+ continue;
150
+ }
151
+ const proceed = await ctx.ui.confirm({ message: `Set up ${step.title}?`, initialValue: true });
152
+ if (proceed === CANCEL) {
153
+ recordOutcome(state, step.id, 'pending');
154
+ await ctx.save();
155
+ ctx.ui.warn(`Cancelled at "${step.title}". Progress saved — re-run to resume.`);
156
+ return { status: 'cancelled', state };
157
+ }
158
+ if (proceed !== true) {
159
+ recordOutcome(state, step.id, 'skipped');
160
+ await ctx.save();
161
+ ctx.ui.info(`— ${step.title} (skipped)`);
162
+ continue;
163
+ }
164
+ }
165
+ try {
166
+ const created = await step.run(ctx);
167
+ state.steps[step.id] = { status: 'done', created };
168
+ state.updatedAt = opts.now;
169
+ await ctx.save();
170
+ }
171
+ catch (err) {
172
+ if (err instanceof StepSkipped) {
173
+ recordOutcome(state, step.id, 'skipped');
174
+ await ctx.save();
175
+ ctx.ui.info(`— ${step.title} (skipped: ${err.message})`);
176
+ continue;
177
+ }
178
+ if (err instanceof StepCancelled) {
179
+ recordOutcome(state, step.id, 'pending');
180
+ await ctx.save();
181
+ ctx.ui.warn(`Cancelled at "${step.title}". Progress saved — re-run to resume.`);
182
+ return { status: 'cancelled', state };
183
+ }
184
+ if (err instanceof StepAborted) {
185
+ recordOutcome(state, step.id, 'failed');
186
+ await ctx.save();
187
+ ctx.ui.error(`Stopped at "${step.title}": ${err.message}`);
188
+ return { status: 'failed', state };
189
+ }
190
+ recordOutcome(state, step.id, 'failed');
191
+ await ctx.save();
192
+ throw err;
193
+ }
194
+ }
195
+ const requiredAllDone = steps
196
+ .filter((s) => !s.optional)
197
+ .every((s) => state.steps[s.id]?.status === 'done');
198
+ state.installed = requiredAllDone;
199
+ state.updatedAt = opts.now;
200
+ await ctx.save();
201
+ return { status: 'complete', state };
202
+ }
203
+ finally {
204
+ release();
205
+ }
206
+ }
207
+ export async function runUninstall(strategy, opts) {
208
+ const release = acquireLock(opts.instance);
209
+ try {
210
+ const state = loadServerState(opts.instance);
211
+ const ctx = buildContext(state, opts);
212
+ // Same guard as install/deploy: undoing with the wrong strategy would skip
213
+ // the real artifacts and (before this guard existed) destroy their ledger.
214
+ if (state.platform && state.platform !== strategy.id) {
215
+ throw new PreflightError(`this host has a ${state.platform} install recorded — run \`server-uninstall --platform ${state.platform}\``);
216
+ }
217
+ const registeredProjects = (await loadWorkspaceConfig()).projects.length;
218
+ if (registeredProjects > 0) {
219
+ ctx.ui.warn(`${registeredProjects} ${registeredProjects === 1 ? 'project is' : 'projects are'} registered in ~/.cezar/config.json.`);
220
+ const proceed = await ctx.ui.confirm({
221
+ message: 'Removing this server will make them unavailable. Continue?',
222
+ initialValue: false,
223
+ });
224
+ if (proceed !== true)
225
+ return { status: 'cancelled', state };
226
+ }
227
+ // Reverse order: undo the last-created first. `failed` outcomes are undone
228
+ // too — the step may have created artifacts before failing, and every undo
229
+ // is written to work from constants with a null/partial `created`.
230
+ const steps = [...strategy.steps(ctx)].reverse();
231
+ for (const step of steps) {
232
+ const outcome = state.steps[step.id];
233
+ if (!needsUndo(outcome))
234
+ continue;
235
+ try {
236
+ await step.undo(ctx, outcome.created ?? null);
237
+ delete state.steps[step.id];
238
+ state.updatedAt = opts.now;
239
+ await ctx.save();
240
+ }
241
+ catch (err) {
242
+ if (err instanceof StepCancelled) {
243
+ ctx.ui.warn(`Cancelled during uninstall at "${step.title}". Re-run to continue.`);
244
+ return { status: 'cancelled', state };
245
+ }
246
+ ctx.ui.error(`Failed to reverse "${step.title}": ${err instanceof Error ? err.message : String(err)}`);
247
+ return { status: 'failed', state };
248
+ }
249
+ }
250
+ // Drop entries that never had a system effect; anything left was recorded
251
+ // by a step id this binary doesn't know (a newer cezar) and was NOT
252
+ // reversed — keep its ledger and say so instead of silently erasing it.
253
+ for (const id of Object.keys(state.steps)) {
254
+ if (!needsUndo(state.steps[id]))
255
+ delete state.steps[id];
256
+ }
257
+ const leftover = Object.keys(state.steps);
258
+ state.installed = false;
259
+ state.updatedAt = opts.now;
260
+ if (leftover.length > 0) {
261
+ ctx.ui.warn(`Not reversed (recorded by a different cezar version): ${leftover.join(', ')}. ` +
262
+ 'Their record is kept — re-run server-uninstall with the cezar version that installed them.');
263
+ await ctx.save();
264
+ return { status: 'failed', state };
265
+ }
266
+ // A completed uninstall leaves the record empty so the host can be
267
+ // re-installed with any platform (the install guard keys off `platform`,
268
+ // so it must be cleared here too).
269
+ state.platform = undefined;
270
+ state.publicUrl = undefined;
271
+ state.ephemeral = undefined;
272
+ state.domain = undefined;
273
+ await ctx.save();
274
+ // A named instance is fully gone now — drop its (empty) record so it no
275
+ // longer reserves a port or shows up as an install. The default record is
276
+ // kept, matching the legacy single-host behavior.
277
+ if (ctx.instance !== 'default')
278
+ deleteServerState(ctx.instance);
279
+ return { status: 'complete', state };
280
+ }
281
+ finally {
282
+ release();
283
+ }
284
+ }
285
+ /**
286
+ * Reload the running cockpit to pick up a new cezar version — the standardized
287
+ * `server-deploy` flow. Delegates to the platform's `redeploy` (restart service
288
+ * + re-verify); holds the single-writer lock for the whole run.
289
+ */
290
+ export async function runDeploy(strategy, opts) {
291
+ const release = acquireLock(opts.instance);
292
+ try {
293
+ const state = loadServerState(opts.instance);
294
+ const ctx = buildContext(state, opts);
295
+ if (state.platform && state.platform !== strategy.id) {
296
+ throw new PreflightError(`this host has a ${state.platform} install recorded — deploy it with --platform ${state.platform}`);
297
+ }
298
+ if (!state.installed) {
299
+ ctx.ui.warn(`no completed ${strategy.label} install is recorded on this host — run \`server-install --platform ${strategy.id}\` first.`);
300
+ return { status: 'failed', state };
301
+ }
302
+ if (!strategy.redeploy) {
303
+ ctx.ui.warn(`${strategy.label} does not support server-deploy.`);
304
+ return { status: 'failed', state };
305
+ }
306
+ try {
307
+ await strategy.redeploy(ctx);
308
+ }
309
+ catch (err) {
310
+ if (err instanceof StepAborted || err instanceof StepCancelled) {
311
+ ctx.ui.error(`Deploy did not complete: ${err.message}`);
312
+ return { status: 'failed', state };
313
+ }
314
+ throw err;
315
+ }
316
+ state.updatedAt = opts.now;
317
+ await ctx.save();
318
+ return { status: 'complete', state };
319
+ }
320
+ finally {
321
+ release();
322
+ }
323
+ }
324
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/server-install/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type PlatformStrategy } from '../types.ts';
2
+ /** launchd agent that keeps an authenticated ngrok tunnel to the local cockpit up. */
3
+ export declare function launchdPlist(port: number, basicAuth: string, domain?: string, ngrokBin?: string): string;
4
+ /** launchd agent that keeps the cezar cockpit running on the given port. */
5
+ export declare function cezarLaunchdPlist(repoRoot: string, port: number, argv: string[]): string;
6
+ export declare const macosxNgrok: PlatformStrategy;