@qodeca/xezar 0.10.1

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 (481) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +810 -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 +71 -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 +597 -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 +1953 -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 +1527 -0
  74. package/dist/contract/skills.d.ts +234 -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 +115 -0
  90. package/dist/core/ask.js +256 -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 +65 -0
  96. package/dist/core/claude-cli-runner.js +479 -0
  97. package/dist/core/claude-cli-runner.js.map +1 -0
  98. package/dist/core/claude-model-catalog.d.ts +24 -0
  99. package/dist/core/claude-model-catalog.js +208 -0
  100. package/dist/core/claude-model-catalog.js.map +1 -0
  101. package/dist/core/claude-ui-mapper.d.ts +79 -0
  102. package/dist/core/claude-ui-mapper.js +597 -0
  103. package/dist/core/claude-ui-mapper.js.map +1 -0
  104. package/dist/core/codex-app-server-runner.d.ts +41 -0
  105. package/dist/core/codex-app-server-runner.js +584 -0
  106. package/dist/core/codex-app-server-runner.js.map +1 -0
  107. package/dist/core/codex-app-server-transport.d.ts +35 -0
  108. package/dist/core/codex-app-server-transport.js +150 -0
  109. package/dist/core/codex-app-server-transport.js.map +1 -0
  110. package/dist/core/codex-model-catalog.d.ts +10 -0
  111. package/dist/core/codex-model-catalog.js +110 -0
  112. package/dist/core/codex-model-catalog.js.map +1 -0
  113. package/dist/core/codex-ui-mapper.d.ts +109 -0
  114. package/dist/core/codex-ui-mapper.js +764 -0
  115. package/dist/core/codex-ui-mapper.js.map +1 -0
  116. package/dist/core/model-identity.d.ts +125 -0
  117. package/dist/core/model-identity.js +132 -0
  118. package/dist/core/model-identity.js.map +1 -0
  119. package/dist/core/model-presets.d.ts +21 -0
  120. package/dist/core/model-presets.js +91 -0
  121. package/dist/core/model-presets.js.map +1 -0
  122. package/dist/core/ndjson.d.ts +6 -0
  123. package/dist/core/ndjson.js +23 -0
  124. package/dist/core/ndjson.js.map +1 -0
  125. package/dist/core/opencode-model-catalog.d.ts +32 -0
  126. package/dist/core/opencode-model-catalog.js +153 -0
  127. package/dist/core/opencode-model-catalog.js.map +1 -0
  128. package/dist/core/opencode-server-runner.d.ts +32 -0
  129. package/dist/core/opencode-server-runner.js +535 -0
  130. package/dist/core/opencode-server-runner.js.map +1 -0
  131. package/dist/core/opencode-ui-mapper.d.ts +111 -0
  132. package/dist/core/opencode-ui-mapper.js +668 -0
  133. package/dist/core/opencode-ui-mapper.js.map +1 -0
  134. package/dist/core/pi-runner.d.ts +24 -0
  135. package/dist/core/pi-runner.js +349 -0
  136. package/dist/core/pi-runner.js.map +1 -0
  137. package/dist/core/pi-ui-mapper.d.ts +34 -0
  138. package/dist/core/pi-ui-mapper.js +270 -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 +28 -0
  153. package/dist/core/runner-model-catalog.js +62 -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 +332 -0
  165. package/dist/core/ui-events.js +22 -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 +684 -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 +78 -0
  204. package/dist/release/manifests.js +57 -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 +33 -0
  210. package/dist/release/stable.js +50 -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/arm-repo-handle.d.ts +17 -0
  216. package/dist/runs/arm-repo-handle.js +24 -0
  217. package/dist/runs/arm-repo-handle.js.map +1 -0
  218. package/dist/runs/auto-name.d.ts +75 -0
  219. package/dist/runs/auto-name.js +179 -0
  220. package/dist/runs/auto-name.js.map +1 -0
  221. package/dist/runs/event-history.d.ts +50 -0
  222. package/dist/runs/event-history.js +613 -0
  223. package/dist/runs/event-history.js.map +1 -0
  224. package/dist/runs/retention.d.ts +60 -0
  225. package/dist/runs/retention.js +86 -0
  226. package/dist/runs/retention.js.map +1 -0
  227. package/dist/runs/review-gate.d.ts +18 -0
  228. package/dist/runs/review-gate.js +21 -0
  229. package/dist/runs/review-gate.js.map +1 -0
  230. package/dist/runs/run-index.d.ts +19 -0
  231. package/dist/runs/run-index.js +43 -0
  232. package/dist/runs/run-index.js.map +1 -0
  233. package/dist/runs/store.d.ts +490 -0
  234. package/dist/runs/store.js +1283 -0
  235. package/dist/runs/store.js.map +1 -0
  236. package/dist/runs/task-markers.d.ts +28 -0
  237. package/dist/runs/task-markers.js +74 -0
  238. package/dist/runs/task-markers.js.map +1 -0
  239. package/dist/runs/task-refs.d.ts +25 -0
  240. package/dist/runs/task-refs.js +74 -0
  241. package/dist/runs/task-refs.js.map +1 -0
  242. package/dist/runs/ui-event-sink.d.ts +80 -0
  243. package/dist/runs/ui-event-sink.js +209 -0
  244. package/dist/runs/ui-event-sink.js.map +1 -0
  245. package/dist/server/app-type.d.ts +21 -0
  246. package/dist/server/app-type.js +2 -0
  247. package/dist/server/app-type.js.map +1 -0
  248. package/dist/server/capabilities.d.ts +70 -0
  249. package/dist/server/capabilities.js +152 -0
  250. package/dist/server/capabilities.js.map +1 -0
  251. package/dist/server/checkout.d.ts +128 -0
  252. package/dist/server/checkout.js +296 -0
  253. package/dist/server/checkout.js.map +1 -0
  254. package/dist/server/forge/github.d.ts +535 -0
  255. package/dist/server/forge/github.js +2544 -0
  256. package/dist/server/forge/github.js.map +1 -0
  257. package/dist/server/forge/index.d.ts +40 -0
  258. package/dist/server/forge/index.js +72 -0
  259. package/dist/server/forge/index.js.map +1 -0
  260. package/dist/server/forge/types.d.ts +267 -0
  261. package/dist/server/forge/types.js +2 -0
  262. package/dist/server/forge/types.js.map +1 -0
  263. package/dist/server/fs-browse.d.ts +105 -0
  264. package/dist/server/fs-browse.js +182 -0
  265. package/dist/server/fs-browse.js.map +1 -0
  266. package/dist/server/git-changes.d.ts +213 -0
  267. package/dist/server/git-changes.js +555 -0
  268. package/dist/server/git-changes.js.map +1 -0
  269. package/dist/server/git.d.ts +28 -0
  270. package/dist/server/git.js +112 -0
  271. package/dist/server/git.js.map +1 -0
  272. package/dist/server/github.d.ts +9 -0
  273. package/dist/server/github.js +8 -0
  274. package/dist/server/github.js.map +1 -0
  275. package/dist/server/launch-key.d.ts +7 -0
  276. package/dist/server/launch-key.js +33 -0
  277. package/dist/server/launch-key.js.map +1 -0
  278. package/dist/server/open-in-app.d.ts +66 -0
  279. package/dist/server/open-in-app.js +211 -0
  280. package/dist/server/open-in-app.js.map +1 -0
  281. package/dist/server/open-in-terminal.d.ts +70 -0
  282. package/dist/server/open-in-terminal.js +179 -0
  283. package/dist/server/open-in-terminal.js.map +1 -0
  284. package/dist/server/pr.d.ts +7 -0
  285. package/dist/server/pr.js +7 -0
  286. package/dist/server/pr.js.map +1 -0
  287. package/dist/server/project-context.d.ts +120 -0
  288. package/dist/server/project-context.js +192 -0
  289. package/dist/server/project-context.js.map +1 -0
  290. package/dist/server/provider-action-gate.d.ts +8 -0
  291. package/dist/server/provider-action-gate.js +56 -0
  292. package/dist/server/provider-action-gate.js.map +1 -0
  293. package/dist/server/provider-auth-runtime.d.ts +21 -0
  294. package/dist/server/provider-auth-runtime.js +66 -0
  295. package/dist/server/provider-auth-runtime.js.map +1 -0
  296. package/dist/server/server.d.ts +13578 -0
  297. package/dist/server/server.js +5284 -0
  298. package/dist/server/server.js.map +1 -0
  299. package/dist/server/static-ui.d.ts +49 -0
  300. package/dist/server/static-ui.js +92 -0
  301. package/dist/server/static-ui.js.map +1 -0
  302. package/dist/server/validators.d.ts +97 -0
  303. package/dist/server/validators.js +86 -0
  304. package/dist/server/validators.js.map +1 -0
  305. package/dist/server/ws.d.ts +83 -0
  306. package/dist/server/ws.js +216 -0
  307. package/dist/server/ws.js.map +1 -0
  308. package/dist/server/wsl.d.ts +25 -0
  309. package/dist/server/wsl.js +92 -0
  310. package/dist/server/wsl.js.map +1 -0
  311. package/dist/server-install/engine.d.ts +50 -0
  312. package/dist/server-install/engine.js +324 -0
  313. package/dist/server-install/engine.js.map +1 -0
  314. package/dist/server-install/platforms/macosx-ngrok.d.ts +6 -0
  315. package/dist/server-install/platforms/macosx-ngrok.js +348 -0
  316. package/dist/server-install/platforms/macosx-ngrok.js.map +1 -0
  317. package/dist/server-install/platforms/ubuntu-vps.d.ts +63 -0
  318. package/dist/server-install/platforms/ubuntu-vps.js +997 -0
  319. package/dist/server-install/platforms/ubuntu-vps.js.map +1 -0
  320. package/dist/server-install/state.d.ts +52 -0
  321. package/dist/server-install/state.js +182 -0
  322. package/dist/server-install/state.js.map +1 -0
  323. package/dist/server-install/steps.d.ts +109 -0
  324. package/dist/server-install/steps.js +334 -0
  325. package/dist/server-install/steps.js.map +1 -0
  326. package/dist/server-install/strategies.d.ts +4 -0
  327. package/dist/server-install/strategies.js +20 -0
  328. package/dist/server-install/strategies.js.map +1 -0
  329. package/dist/server-install/types.d.ts +287 -0
  330. package/dist/server-install/types.js +121 -0
  331. package/dist/server-install/types.js.map +1 -0
  332. package/dist/server-install/ui.d.ts +42 -0
  333. package/dist/server-install/ui.js +130 -0
  334. package/dist/server-install/ui.js.map +1 -0
  335. package/dist/skills-banner.d.ts +22 -0
  336. package/dist/skills-banner.js +41 -0
  337. package/dist/skills-banner.js.map +1 -0
  338. package/dist/skills-remote.d.ts +84 -0
  339. package/dist/skills-remote.js +468 -0
  340. package/dist/skills-remote.js.map +1 -0
  341. package/dist/skills-update.d.ts +88 -0
  342. package/dist/skills-update.js +392 -0
  343. package/dist/skills-update.js.map +1 -0
  344. package/dist/skills.d.ts +82 -0
  345. package/dist/skills.js +251 -0
  346. package/dist/skills.js.map +1 -0
  347. package/dist/todos.d.ts +48 -0
  348. package/dist/todos.js +201 -0
  349. package/dist/todos.js.map +1 -0
  350. package/dist/ui-state.d.ts +26 -0
  351. package/dist/ui-state.js +38 -0
  352. package/dist/ui-state.js.map +1 -0
  353. package/dist/update-check.d.ts +12 -0
  354. package/dist/update-check.js +41 -0
  355. package/dist/update-check.js.map +1 -0
  356. package/dist/workflows/load.d.ts +15 -0
  357. package/dist/workflows/load.js +56 -0
  358. package/dist/workflows/load.js.map +1 -0
  359. package/dist/workflows/run.d.ts +803 -0
  360. package/dist/workflows/run.js +3483 -0
  361. package/dist/workflows/run.js.map +1 -0
  362. package/dist/workflows/types.d.ts +145 -0
  363. package/dist/workflows/types.js +194 -0
  364. package/dist/workflows/types.js.map +1 -0
  365. package/dist/workspace/agent-accounts.d.ts +153 -0
  366. package/dist/workspace/agent-accounts.js +304 -0
  367. package/dist/workspace/agent-accounts.js.map +1 -0
  368. package/dist/workspace/agent-profiles.d.ts +78 -0
  369. package/dist/workspace/agent-profiles.js +115 -0
  370. package/dist/workspace/agent-profiles.js.map +1 -0
  371. package/dist/workspace/config.d.ts +169 -0
  372. package/dist/workspace/config.js +379 -0
  373. package/dist/workspace/config.js.map +1 -0
  374. package/dist/workspace/migrations.d.ts +45 -0
  375. package/dist/workspace/migrations.js +147 -0
  376. package/dist/workspace/migrations.js.map +1 -0
  377. package/dist/workspace/projects-cli.d.ts +25 -0
  378. package/dist/workspace/projects-cli.js +172 -0
  379. package/dist/workspace/projects-cli.js.map +1 -0
  380. package/dist/workspace/projects.d.ts +109 -0
  381. package/dist/workspace/projects.js +250 -0
  382. package/dist/workspace/projects.js.map +1 -0
  383. package/dist/workspace/semaphore.d.ts +179 -0
  384. package/dist/workspace/semaphore.js +195 -0
  385. package/dist/workspace/semaphore.js.map +1 -0
  386. package/dist/workspace/ui-state.d.ts +34 -0
  387. package/dist/workspace/ui-state.js +53 -0
  388. package/dist/workspace/ui-state.js.map +1 -0
  389. package/package.json +85 -0
  390. package/scripts/check-pack.mjs +46 -0
  391. package/scripts/inline-contract.mjs +112 -0
  392. package/scripts/install-as-command.mjs +120 -0
  393. package/scripts/mock-claude.mjs +524 -0
  394. package/scripts/mock-pi-rpc.mjs +83 -0
  395. package/scripts/sync-readme.mjs +20 -0
  396. package/scripts/test-process-usage.mjs +47 -0
  397. package/web/dist/assets/alert-dialog-CGskMvgc.js +1 -0
  398. package/web/dist/assets/arrow-down-G8adPhbu.js +1 -0
  399. package/web/dist/assets/arrow-left-BJsIW6A0.js +1 -0
  400. package/web/dist/assets/bundle-mjs-BT31bpU6.js +1 -0
  401. package/web/dist/assets/centered-state-B_V_Ai2h.js +43 -0
  402. package/web/dist/assets/chevron-right-CFzn-von.js +1 -0
  403. package/web/dist/assets/chunk-BO2N2NFS-DE6qKn3r.js +131 -0
  404. package/web/dist/assets/collapsible-B_8uYwHb.js +1 -0
  405. package/web/dist/assets/commit-list-C4Dv6vUL.js +1 -0
  406. package/web/dist/assets/compare-variants-SR2zZfZq.js +1 -0
  407. package/web/dist/assets/core-BCsw8oQw.js +12 -0
  408. package/web/dist/assets/css-BsVw1vtW.js +1 -0
  409. package/web/dist/assets/diff-CbozNUJq.js +3 -0
  410. package/web/dist/assets/diff-stat-btAmKFJr.js +1 -0
  411. package/web/dist/assets/diff-view-BpFTcG3R.js +6 -0
  412. package/web/dist/assets/diff-woXpYk--.js +1 -0
  413. package/web/dist/assets/dropdown-menu-Z80KMInL.js +1 -0
  414. package/web/dist/assets/editable-title-wS5NWwob.js +1 -0
  415. package/web/dist/assets/ellipsis-vertical-Bmi2u2TG.js +1 -0
  416. package/web/dist/assets/engine-javascript-FQvzRocB.js +141 -0
  417. package/web/dist/assets/file-DKoYWRsv.js +1 -0
  418. package/web/dist/assets/folder-u01HScRT.js +1 -0
  419. package/web/dist/assets/git-toolbar-DZlZjTGz.js +1 -0
  420. package/web/dist/assets/github-CFURo9kf.js +1 -0
  421. package/web/dist/assets/go-rLFTqkRN.js +1 -0
  422. package/web/dist/assets/highlighted-body-OFNGDK62-BL-MfFgl.js +1 -0
  423. package/web/dist/assets/highlighter-C8DK1_sG.js +3 -0
  424. package/web/dist/assets/html-BY76lXLH.js +1 -0
  425. package/web/dist/assets/image-preview-BR3iIIhf.js +1 -0
  426. package/web/dist/assets/index-BcI5hug3.css +2 -0
  427. package/web/dist/assets/index-DlC81_GI.js +7 -0
  428. package/web/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  429. package/web/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  430. package/web/dist/assets/javascript-BgS3c2Ky.js +1 -0
  431. package/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  432. package/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  433. package/web/dist/assets/json-qhed-kSA.js +1 -0
  434. package/web/dist/assets/jsonc-CYpm1nAK.js +1 -0
  435. package/web/dist/assets/jsx-Bz0zcwM4.js +1 -0
  436. package/web/dist/assets/lib-BQXq3kEf.js +1 -0
  437. package/web/dist/assets/lib-BxQXEXDF.js +1 -0
  438. package/web/dist/assets/markdown-5FuCZDA4.js +2 -0
  439. package/web/dist/assets/markdown-BYOwaDjH.js +1 -0
  440. package/web/dist/assets/mermaid-GHXKKRXX-C4jxqUUb.js +1 -0
  441. package/web/dist/assets/new-task-form-BydHBbef.js +1 -0
  442. package/web/dist/assets/pill-vNzaaYxj.js +1 -0
  443. package/web/dist/assets/project-router-BbCzrHKs.js +1 -0
  444. package/web/dist/assets/prompt-templates-B7Fs2b1S.js +15 -0
  445. package/web/dist/assets/python-gzcpVVnB.js +1 -0
  446. package/web/dist/assets/react-runtime-CCIEwYL0.js +9 -0
  447. package/web/dist/assets/refresh-cw-DGliez3E.js +1 -0
  448. package/web/dist/assets/repo-git-CJFDMauC.js +1 -0
  449. package/web/dist/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  450. package/web/dist/assets/run-diff-Bq9vkSNK.js +3 -0
  451. package/web/dist/assets/run-header-Cd8mSKBG.js +1 -0
  452. package/web/dist/assets/rust-Cfkwpbl8.js +1 -0
  453. package/web/dist/assets/search-x-69n_672Y.js +1 -0
  454. package/web/dist/assets/shellscript-CLZ0U2zV.js +1 -0
  455. package/web/dist/assets/skill-empty-hint-DTu0LzaJ.js +1 -0
  456. package/web/dist/assets/skills-Cs-auniL.js +1 -0
  457. package/web/dist/assets/skills-D4P-Hgey.js +1 -0
  458. package/web/dist/assets/sparkles-B8agSxBZ.js +1 -0
  459. package/web/dist/assets/sql-BsFa4tDR.js +1 -0
  460. package/web/dist/assets/square-terminal-Cf4Og6ct.js +1 -0
  461. package/web/dist/assets/tab-link-Cp2-CJS8.js +1 -0
  462. package/web/dist/assets/task-changes-DYgNXOyY.js +1 -0
  463. package/web/dist/assets/task-commits-BRpZSz1G.js +1 -0
  464. package/web/dist/assets/task-files-pKOwSyLh.js +2 -0
  465. package/web/dist/assets/task-thread-Bfyqqy-t.js +9 -0
  466. package/web/dist/assets/textarea--cpYshee.js +1 -0
  467. package/web/dist/assets/thread-loading-GyH2Atwo.js +1 -0
  468. package/web/dist/assets/toml-CcmNWLt0.js +1 -0
  469. package/web/dist/assets/trash-2--ZtrzUx3.js +1 -0
  470. package/web/dist/assets/triangle-alert-D5tJwRD2.js +1 -0
  471. package/web/dist/assets/tsx-udAQXfEw.js +1 -0
  472. package/web/dist/assets/typescript-bsJCZSQ-.js +1 -0
  473. package/web/dist/assets/upload-SnwVxKOA.js +1 -0
  474. package/web/dist/assets/use-desktop-C31lOFUD.js +1 -0
  475. package/web/dist/assets/use-submit-shortcut-JY8M_MPL.js +1 -0
  476. package/web/dist/assets/utils-Bb8ohcr3.js +64 -0
  477. package/web/dist/assets/workflows-BmOehP-A.js +11 -0
  478. package/web/dist/assets/yaml-rwi0_p6S.js +1 -0
  479. package/web/dist/assets/zoomable-image-0G3IBXWC.js +1 -0
  480. package/web/dist/index.html +80 -0
  481. package/web/dist/xezar.svg +14 -0
@@ -0,0 +1,348 @@
1
+ import { chmodSync, existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { dirname, join, resolve } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { CANCEL, PreflightError } from '../types.js';
6
+ import { brewInstallTool, brewRemoveHint, depCheckStep, HOSTNAME_RE, owned, shared, StepAborted, StepCancelled, verifyCommand } from '../steps.js';
7
+ /**
8
+ * The `macosx-ngrok` strategy: the app runs locally on a Mac and ngrok is the
9
+ * public front, in place of nginx+certbot. ngrok's built-in `--basic-auth` is
10
+ * the identity gate (the htpasswd equivalent), and a launchd agent is the
11
+ * autostart (the systemd equivalent). Proves the engine seam with a genuinely
12
+ * different platform — same engine, different steps.
13
+ */
14
+ const PLIST_LABEL = 'ai.xezar.ngrok';
15
+ const plistPath = () => join(homedir(), 'Library', 'LaunchAgents', `${PLIST_LABEL}.plist`);
16
+ /**
17
+ * `launchctl bootstrap` + proof the agent actually loaded. A discarded
18
+ * bootstrap exit code (malformed plist, spawn failure) used to record the
19
+ * step `done` — install reported complete with nothing running.
20
+ */
21
+ async function bootstrapVerified(ctx, uid, label, path, what) {
22
+ const code = await ctx.runner.interactive('launchctl', ['bootstrap', `gui/${uid}`, path]);
23
+ const loaded = (await ctx.runner.capture('launchctl', ['print', `gui/${uid}/${label}`])).code === 0;
24
+ if (code !== 0 || !loaded) {
25
+ throw new StepAborted(`launchctl could not load ${what} (bootstrap exit ${code}) — inspect it with: launchctl print gui/${uid}/${label}`);
26
+ }
27
+ }
28
+ /** Escape a value for inclusion in plist XML text. */
29
+ function escapeXml(s) {
30
+ return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
31
+ }
32
+ /** launchd agent that keeps an authenticated ngrok tunnel to the local cockpit up. */
33
+ export function launchdPlist(port, basicAuth, domain, ngrokBin = '/opt/homebrew/bin/ngrok') {
34
+ const args = ['http', String(port), '--basic-auth', basicAuth];
35
+ if (domain)
36
+ args.push('--domain', domain);
37
+ // Escape every arg — a password/domain with `&`, `<`, `>` would otherwise
38
+ // produce invalid plist XML and launchctl would silently fail to load it.
39
+ const argXml = [ngrokBin, ...args]
40
+ .map((a) => ` <string>${escapeXml(a)}</string>`)
41
+ .join('\n');
42
+ return `<?xml version="1.0" encoding="UTF-8"?>
43
+ <!-- Managed by xezar server-install — do not edit by hand. -->
44
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
45
+ <plist version="1.0">
46
+ <dict>
47
+ <key>Label</key>
48
+ <string>${PLIST_LABEL}</string>
49
+ <key>ProgramArguments</key>
50
+ <array>
51
+ ${argXml}
52
+ </array>
53
+ <key>RunAtLoad</key>
54
+ <true/>
55
+ <key>KeepAlive</key>
56
+ <true/>
57
+ </dict>
58
+ </plist>
59
+ `;
60
+ }
61
+ const ngrokStep = {
62
+ id: 'ngrok',
63
+ title: 'ngrok tunnel (authtoken + domain + basic-auth)',
64
+ async check(ctx) {
65
+ if (ctx.dryRun)
66
+ return false;
67
+ return verifyCommand(ctx, 'test', ['-f', plistPath()]);
68
+ },
69
+ async run(ctx) {
70
+ // 1) ngrok present?
71
+ const present = await verifyCommand(ctx, 'ngrok', ['version']);
72
+ if (!present) {
73
+ if (ctx.dryRun)
74
+ ctx.ui.info('DRY RUN — would run: brew install ngrok/ngrok/ngrok');
75
+ else
76
+ await ctx.runner.interactive('brew', ['install', 'ngrok/ngrok/ngrok']);
77
+ }
78
+ // 2) authtoken (a secret — never stored in server.json; it lives in ngrok's own config)
79
+ const token = await ctx.ui.password({
80
+ message: 'Paste your ngrok authtoken (dashboard.ngrok.com → Your Authtoken)',
81
+ validate: (v) => (v.trim() ? undefined : 'authtoken is required'),
82
+ });
83
+ if (token === CANCEL)
84
+ throw new StepCancelled();
85
+ // The token expands INSIDE the child shell: argv carries only the literal
86
+ // string `"$NGROK_AUTHTOKEN"`, so `ps` never sees the secret. It lands in
87
+ // ngrok's own config (~/Library/Application Support/ngrok/ngrok.yml, 0600
88
+ // by ngrok itself), never in server.json.
89
+ if (!ctx.dryRun) {
90
+ const code = await ctx.runner.interactive('bash', ['-c', 'ngrok config add-authtoken "$NGROK_AUTHTOKEN"'], {
91
+ env: { NGROK_AUTHTOKEN: String(token) },
92
+ });
93
+ if (code !== 0)
94
+ throw new StepAborted('ngrok rejected the authtoken (`ngrok config add-authtoken` failed) — check the token and re-run');
95
+ }
96
+ // 3) reserved domain (optional → ephemeral URL)
97
+ const domainInput = await ctx.ui.text({
98
+ message: 'Reserved ngrok domain (leave blank for an ephemeral URL that changes on restart)',
99
+ placeholder: 'xezar.ngrok.app',
100
+ // Bare hostname only — `https://…` here used to yield `--domain https://…`
101
+ // in the plist and a `https://https://…` publicUrl.
102
+ validate: (v) => (!v.trim() || HOSTNAME_RE.test(v.trim()) ? undefined : 'enter a bare hostname (no scheme), e.g. xezar.ngrok.app'),
103
+ });
104
+ if (domainInput === CANCEL)
105
+ throw new StepCancelled();
106
+ // Guard against `String(undefined)` → `"undefined"` — @clack/prompts can
107
+ // return undefined when the user accepts without typing over the placeholder.
108
+ const domain = typeof domainInput === 'string' && domainInput.trim() ? domainInput.trim() : undefined;
109
+ // 4) basic-auth identity
110
+ const user = await ctx.ui.text({
111
+ message: 'Basic-auth username for the tunnel',
112
+ placeholder: 'ops',
113
+ validate: (v) => (v.trim() ? undefined : 'username is required'),
114
+ });
115
+ if (user === CANCEL)
116
+ throw new StepCancelled();
117
+ const password = await ctx.ui.password({
118
+ message: `Basic-auth password for "${user}"`,
119
+ validate: (v) => (v.length >= 6 ? undefined : 'use at least 6 characters'),
120
+ });
121
+ if (password === CANCEL)
122
+ throw new StepCancelled();
123
+ if (!ctx.dryRun && String(password).length < 6) {
124
+ throw new StepAborted('a basic-auth password (≥6 chars) is required — run server-install without --yes to set one');
125
+ }
126
+ const basicAuth = `${String(user)}:${String(password)}`;
127
+ // 5) launchd agent (the plist embeds the basic-auth creds, like htpasswd on Linux)
128
+ const path = plistPath();
129
+ if (ctx.dryRun) {
130
+ ctx.ui.info(`DRY RUN — would write ${path} and launchctl bootstrap it.`);
131
+ }
132
+ else {
133
+ // Resolve the real ngrok binary path so the plist works on both Apple
134
+ // Silicon (/opt/homebrew/bin) and Intel (/usr/local/bin) Macs.
135
+ const ngrokBin = (await ctx.runner.capture('bash', ['-lc', 'command -v ngrok'])).stdout.trim() || '/opt/homebrew/bin/ngrok';
136
+ mkdirSync(join(homedir(), 'Library', 'LaunchAgents'), { recursive: true });
137
+ // 0600: unlike the Linux htpasswd (a hash, 0640 root:www-data), this file
138
+ // embeds the PLAINTEXT basic-auth credentials. `mode` only applies on
139
+ // create, so chmod too for re-installs over an existing 0644 plist.
140
+ writeFileSync(path, launchdPlist(ctx.state.primaryPort, basicAuth, domain, ngrokBin), { encoding: 'utf8', mode: 0o600 });
141
+ chmodSync(path, 0o600);
142
+ // Use the modern launchctl API — the legacy `launchctl load` returns
143
+ // error 5 (EIO) on recent macOS versions.
144
+ const uid = process.getuid ? process.getuid() : 0;
145
+ // Bootout any prior instance so re-installs don't collide.
146
+ await ctx.runner.capture('launchctl', ['bootout', `gui/${uid}/${PLIST_LABEL}`]);
147
+ await bootstrapVerified(ctx, uid, PLIST_LABEL, path, 'the ngrok tunnel agent');
148
+ }
149
+ if (domain) {
150
+ ctx.state.publicUrl = `https://${domain}`;
151
+ ctx.state.ephemeral = false;
152
+ }
153
+ else {
154
+ ctx.state.ephemeral = true;
155
+ ctx.ui.note('No reserved domain — the tunnel URL is ephemeral and changes each restart. Find it at http://localhost:4040.', 'ngrok');
156
+ }
157
+ return {
158
+ artifacts: [
159
+ shared('ngrok-config', { name: 'authtoken', removeHint: 'ngrok config add-authtoken "" (or edit ~/Library/Application Support/ngrok/ngrok.yml)' }),
160
+ owned('launchd', { name: PLIST_LABEL, path }),
161
+ ],
162
+ };
163
+ },
164
+ async undo(ctx, created) {
165
+ // Work from the static label/path, not just the recorded artifact — a step
166
+ // satisfied via check() records `created: null`, and the agent (whose plist
167
+ // holds the basic-auth credentials) must still be removed.
168
+ const path = (created?.artifacts ?? []).find((a) => a.type === 'launchd')?.path ?? plistPath();
169
+ if (ctx.dryRun) {
170
+ ctx.ui.info('DRY RUN — would launchctl bootout and remove the ngrok agent.');
171
+ }
172
+ else {
173
+ const uid = process.getuid ? process.getuid() : 0;
174
+ await ctx.runner.capture('launchctl', ['bootout', `gui/${uid}/${PLIST_LABEL}`]);
175
+ rmSync(path, { force: true });
176
+ }
177
+ const cfg = (created?.artifacts ?? []).find((a) => a.type === 'ngrok-config');
178
+ if (cfg) {
179
+ ctx.ui.note(`The ngrok authtoken was left in ngrok's own config — remove it yourself if you want it gone:\n${cfg.removeHint ?? ''}`, 'ngrok');
180
+ }
181
+ },
182
+ };
183
+ /* ── autostart: run xezar itself as a launchd agent ─────────────────── */
184
+ const XEZAR_PLIST_LABEL = 'ai.xezar.cockpit';
185
+ const OFFICIAL_CLI_PKG = '@qodeca/xezar';
186
+ /** The commands that package puts on PATH — a package NAME is not a command name. */
187
+ const OFFICIAL_CLI_BINS = ['xezar', 'xez'];
188
+ const xezarPlistPath = () => join(homedir(), 'Library', 'LaunchAgents', `${XEZAR_PLIST_LABEL}.plist`);
189
+ /** Resolve the argv array for the xezar launchd agent, mirroring how the CLI was launched. */
190
+ async function resolveXezarArgv(ctx) {
191
+ const node = process.execPath;
192
+ const pkgRoot = resolve(fileURLToPath(new URL('../../..', import.meta.url)));
193
+ const entry = join(pkgRoot, 'dist', 'index.js');
194
+ const npxPath = join(dirname(node), 'npx');
195
+ if (/[/\\]_npx[/\\]/.test(pkgRoot))
196
+ return [npxPath, '--yes', OFFICIAL_CLI_PKG];
197
+ if (ctx.dryRun || existsSync(entry))
198
+ return [node, entry];
199
+ const lookup = OFFICIAL_CLI_BINS.map((bin) => `command -v ${bin}`).join(' || ');
200
+ const out = (await ctx.runner.capture('bash', ['-lc', lookup])).stdout.trim();
201
+ const globalBin = out.split('\n').map((s) => s.trim()).filter(Boolean).pop();
202
+ if (globalBin)
203
+ return [node, globalBin];
204
+ // No runnable xezar → installing a KeepAlive agent would make launchd
205
+ // respawn-throttle a permanently failing job across reboots. Fail the step.
206
+ throw new StepAborted(`could not locate a runnable xezar (${entry} missing, no global ${OFFICIAL_CLI_BINS.join(' / ')}) — ` +
207
+ `install it (npm i -g ${OFFICIAL_CLI_PKG}) or build the checkout, then re-run with --reconfigure autostart`);
208
+ }
209
+ /** launchd agent that keeps the xezar cockpit running on the given port. */
210
+ export function xezarLaunchdPlist(repoRoot, port, argv) {
211
+ // Give the agent the operator's PATH so xezar can spawn claude/gh/codex.
212
+ const pathDirs = [dirname(process.execPath), ...(process.env.PATH ?? '').split(':'), '/usr/local/bin', '/usr/bin', '/bin']
213
+ .filter((d, i, a) => d && d !== '.' && a.indexOf(d) === i);
214
+ const fullArgv = [...argv, 'serve', '--no-open', '--port', String(port)];
215
+ const argXml = fullArgv.map((a) => ` <string>${escapeXml(a)}</string>`).join('\n');
216
+ return `<?xml version="1.0" encoding="UTF-8"?>
217
+ <!-- Managed by xezar server-install — do not edit by hand. -->
218
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
219
+ <plist version="1.0">
220
+ <dict>
221
+ <key>Label</key>
222
+ <string>${XEZAR_PLIST_LABEL}</string>
223
+ <key>ProgramArguments</key>
224
+ <array>
225
+ ${argXml}
226
+ </array>
227
+ <key>WorkingDirectory</key>
228
+ <string>${escapeXml(repoRoot)}</string>
229
+ <key>EnvironmentVariables</key>
230
+ <dict>
231
+ <key>XEZ_REMOTE</key>
232
+ <string>1</string>
233
+ <key>PATH</key>
234
+ <string>${escapeXml(pathDirs.join(':'))}</string>
235
+ </dict>
236
+ <key>RunAtLoad</key>
237
+ <true/>
238
+ <key>KeepAlive</key>
239
+ <true/>
240
+ </dict>
241
+ </plist>
242
+ `;
243
+ }
244
+ const autostartStep = {
245
+ id: 'autostart',
246
+ title: 'Run xezar as a service (launchd — starts now + on boot)',
247
+ async check(ctx) {
248
+ if (ctx.dryRun)
249
+ return false;
250
+ return verifyCommand(ctx, 'test', ['-f', xezarPlistPath()]);
251
+ },
252
+ async run(ctx) {
253
+ const argv = await resolveXezarArgv(ctx);
254
+ const path = xezarPlistPath();
255
+ if (ctx.dryRun) {
256
+ ctx.ui.info(`DRY RUN — would write ${path} and launchctl bootstrap it.`);
257
+ }
258
+ else {
259
+ mkdirSync(join(homedir(), 'Library', 'LaunchAgents'), { recursive: true });
260
+ writeFileSync(path, xezarLaunchdPlist(ctx.repoRoot, ctx.state.primaryPort, argv), { encoding: 'utf8', mode: 0o600 });
261
+ chmodSync(path, 0o600);
262
+ const uid = process.getuid ? process.getuid() : 0;
263
+ await ctx.runner.capture('launchctl', ['bootout', `gui/${uid}/${XEZAR_PLIST_LABEL}`]);
264
+ await bootstrapVerified(ctx, uid, XEZAR_PLIST_LABEL, path, 'the xezar cockpit agent');
265
+ }
266
+ return { artifacts: [owned('launchd', { name: XEZAR_PLIST_LABEL, path })] };
267
+ },
268
+ async undo(ctx, created) {
269
+ // Static label/path fallback — see the ngrok step's undo.
270
+ const path = (created?.artifacts ?? []).find((a) => a.type === 'launchd')?.path ?? xezarPlistPath();
271
+ if (ctx.dryRun) {
272
+ ctx.ui.info('DRY RUN — would launchctl bootout and remove the xezar agent.');
273
+ }
274
+ else {
275
+ const uid = process.getuid ? process.getuid() : 0;
276
+ await ctx.runner.capture('launchctl', ['bootout', `gui/${uid}/${XEZAR_PLIST_LABEL}`]);
277
+ rmSync(path, { force: true });
278
+ }
279
+ },
280
+ };
281
+ const identityStep = {
282
+ id: 'identity',
283
+ title: 'Identity check (ngrok basic-auth active)',
284
+ async check() {
285
+ return false;
286
+ },
287
+ async run(ctx) {
288
+ if (ctx.dryRun) {
289
+ ctx.ui.info('DRY RUN — would confirm the ngrok tunnel is up and basic-auth is enforced.');
290
+ return { artifacts: [] };
291
+ }
292
+ // ngrok needs a moment after launchctl bootstrap to bind to :4040.
293
+ // Retry a few times with a short delay before giving up.
294
+ let up = false;
295
+ for (let attempt = 0; attempt < 5 && !up; attempt++) {
296
+ if (attempt > 0)
297
+ await new Promise((r) => setTimeout(r, 1500));
298
+ up = await verifyCommand(ctx, 'curl', ['-s', 'http://localhost:4040/api/tunnels'], (r) => r.stdout.includes('public_url'));
299
+ }
300
+ if (up)
301
+ ctx.ui.success('ngrok tunnel is up (basic-auth enforced at the ngrok edge).');
302
+ else
303
+ ctx.ui.warn('Could not reach the ngrok local API (localhost:4040) — check the tunnel started.');
304
+ return { artifacts: [] };
305
+ },
306
+ async undo() {
307
+ // nothing created
308
+ },
309
+ };
310
+ export const macosxNgrok = {
311
+ id: 'macosx-ngrok',
312
+ label: 'macOS + ngrok',
313
+ async preflight(ctx) {
314
+ if (ctx.dryRun) {
315
+ ctx.ui.info('DRY RUN — skipping OS preflight.');
316
+ return;
317
+ }
318
+ if (!(await ctx.runner.capture('uname', ['-s'])).stdout.includes('Darwin')) {
319
+ throw new PreflightError('macosx-ngrok requires macOS. On a Linux VPS use --platform ubuntu-vps.');
320
+ }
321
+ },
322
+ steps() {
323
+ return [
324
+ depCheckStep({ installTool: brewInstallTool, removeHint: brewRemoveHint }),
325
+ autostartStep,
326
+ ngrokStep,
327
+ identityStep,
328
+ ];
329
+ },
330
+ async redeploy(ctx) {
331
+ // Restart both the xezar cockpit and the ngrok tunnel, then re-verify.
332
+ if (ctx.dryRun) {
333
+ ctx.ui.info('DRY RUN — would restart the xezar and ngrok launchd agents and re-verify.');
334
+ return;
335
+ }
336
+ const uid = process.getuid ? process.getuid() : 0;
337
+ ctx.ui.info('Redeploying — restarting the xezar cockpit.');
338
+ const xezarCode = await ctx.runner.interactive('launchctl', ['kickstart', '-k', `gui/${uid}/${XEZAR_PLIST_LABEL}`]);
339
+ if (xezarCode !== 0)
340
+ ctx.ui.warn(`launchctl kickstart returned non-zero — check \`launchctl print gui/${uid}/${XEZAR_PLIST_LABEL}\`.`);
341
+ ctx.ui.info('Redeploying — restarting the ngrok tunnel.');
342
+ const code = await ctx.runner.interactive('launchctl', ['kickstart', '-k', `gui/${uid}/${PLIST_LABEL}`]);
343
+ if (code !== 0)
344
+ ctx.ui.warn(`launchctl kickstart returned non-zero — check \`launchctl print gui/${uid}/${PLIST_LABEL}\`.`);
345
+ await identityStep.run(ctx);
346
+ },
347
+ };
348
+ //# sourceMappingURL=macosx-ngrok.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macosx-ngrok.js","sourceRoot":"","sources":["../../../src/server-install/platforms/macosx-ngrok.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { type InstallContext, type PlatformStrategy } from '../types.ts';
2
+ /**
3
+ * Name of the process listening on `port`, or null when nothing is. Best effort
4
+ * (`ss` output varies, and without root the process name may be hidden) — used
5
+ * only to make a port collision explainable, never to gate the install.
6
+ */
7
+ export declare function portListener(ctx: InstallContext, port: number): Promise<string | null>;
8
+ /** The interface the cockpit listens on — loopback unless an external-proxy
9
+ * install bound it somewhere the proxy can reach (e.g. the docker bridge). */
10
+ export declare function upstreamHost(ctx: InstallContext): string;
11
+ /**
12
+ * The nginx server block: auth_basic identity + SSE-safe proxy to loopback.
13
+ * `serverName` defaults to the catch-all `_`; the SSL step rewrites it to the
14
+ * real domain so the `certbot --nginx` plugin can find this vhost to edit.
15
+ */
16
+ export declare function nginxVhost(port: number, serverName?: string, htpasswd?: string): string;
17
+ /**
18
+ * systemd unit that runs xezar loopback-bound with XEZ_REMOTE=1.
19
+ *
20
+ * `execStart` must be an ABSOLUTE command — systemd resolves the ExecStart
21
+ * executable against its OWN compiled-in PATH (/usr/local/bin:/usr/bin:…), NOT
22
+ * the unit's `Environment=PATH`, so a bare `xezar` gives status=203/EXEC
23
+ * ("Unable to locate executable"). `resolveExecStart` therefore returns an
24
+ * absolute `"<node> <entry.js>"`. We still set `Environment=PATH` (with the
25
+ * installer's node dir) for any child process the app spawns.
26
+ */
27
+ export declare function systemdUnit(repoRoot: string, port: number, scope: 'user' | 'system', execStart: string, bindHost?: string): string;
28
+ /**
29
+ * Decide the absolute ExecStart command for the service, mirroring how the
30
+ * installer itself was launched so the box keeps running the same xezar:
31
+ *
32
+ * - Launched via `npx <alias>` (the CLI package lives in npm's ephemeral
33
+ * `_npx` cache, which gets cleaned): the service can't point there, so it
34
+ * reinstalls-and-runs the same way — `<abs npx> --yes @qodeca/xezar` (bare `npx`
35
+ * would 203/EXEC, so npx is made absolute).
36
+ * - A stable install (a checkout, or a global `xezar`/`xez`): run the
37
+ * CLI's own built entry `<node> <pkg>/dist/index.js`, or a resolved global
38
+ * bin. Absolute node + absolute script → systemd never resolves off PATH.
39
+ */
40
+ export declare function serviceExecStart(opts: {
41
+ node: string;
42
+ pkgRoot: string;
43
+ entry: string;
44
+ entryExists: boolean;
45
+ npxPath: string;
46
+ globalBin?: string;
47
+ }): string;
48
+ /** True when a systemd `ExecStart` string launches xezar via npx (the unpinned
49
+ * `npx --yes @qodeca/xezar` form) rather than a checkout (`<node> …/dist/index.js`)
50
+ * or a global bin. */
51
+ export declare function isNpxExecStart(execStart: string): boolean;
52
+ /**
53
+ * The npx trap (#696): `npx --yes @qodeca/xezar` caches the resolved package under
54
+ * `~/.npm/_npx/<hash>` and reuses it forever — a service restart re-execs the
55
+ * SAME cached build, so `server-deploy` would never actually update. Before
56
+ * restarting an npx-based unit we delete the cache entries that contain
57
+ * `@qodeca/xezar`, so the next launch re-resolves `latest`. Surgical: other npx
58
+ * packages' caches are left untouched. A checkout / global-bin unit has no
59
+ * npx cache to clear and is skipped (its restart picks up the new build/global
60
+ * directly).
61
+ */
62
+ export declare function refreshNpxCacheForRedeploy(ctx: InstallContext, execStart: string): void;
63
+ export declare const ubuntuVps: PlatformStrategy;