@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,179 @@
1
+ /**
2
+ * Tool display model — turns a backend tool name + raw input into the
3
+ * `{toolKind, title, subtitle?}` a tool card renders. Computed ONCE here in
4
+ * the protocol layer (paseo's pattern), never in components, so the thread,
5
+ * activity groups and notifications all say the same thing.
6
+ *
7
+ * Pure function over untrusted input: tool inputs come off the wire and may
8
+ * be null, partial (streamed incrementally) or arbitrarily malformed —
9
+ * `toolDisplay` must never throw.
10
+ *
11
+ * Known names covered (matched case-insensitively so claude's `Bash` and
12
+ * opencode's `bash` share one row):
13
+ * - claude: Bash, Edit, Write, NotebookEdit, Read, Glob, Grep, WebFetch,
14
+ * WebSearch, Task, Agent, Skill, TodoWrite, TaskCreate,
15
+ * TaskUpdate, TaskList, mcp__server__tool
16
+ * - codex: commandExecution, contextCompaction, fileChange, imageView,
17
+ * mcpToolCall, webSearch, plan
18
+ * (codex's checklist arrives as the `turn/plan/updated`
19
+ * notification, not as a tool call — `todoList` is kept below only
20
+ * as tolerance for its non-app-server transports)
21
+ * - opencode: bash, edit, write, read, grep, glob, webfetch, task, todowrite
22
+ */
23
+ /** Longest title/subtitle we emit — display truncation belongs here, not in
24
+ * every component that renders a tool line. */
25
+ const MAX_LABEL = 120;
26
+ function isRecord(value) {
27
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
28
+ }
29
+ /** Collapse whitespace (multi-line commands become one line) and cap length. */
30
+ function oneLine(text) {
31
+ const collapsed = text.replace(/\s+/g, ' ').trim();
32
+ return collapsed.length > MAX_LABEL ? `${collapsed.slice(0, MAX_LABEL - 1)}…` : collapsed;
33
+ }
34
+ /** First non-empty string among `input[keys...]`, normalized for display. */
35
+ function field(input, ...keys) {
36
+ if (!isRecord(input))
37
+ return undefined;
38
+ for (const key of keys) {
39
+ const value = input[key];
40
+ if (typeof value === 'string' && value.trim() !== '')
41
+ return oneLine(value);
42
+ }
43
+ return undefined;
44
+ }
45
+ /** claude Bash carries `command: string`; codex commandExecution may carry
46
+ * a string or an argv array — join the string members. */
47
+ function commandText(input) {
48
+ if (!isRecord(input))
49
+ return undefined;
50
+ const command = input.command;
51
+ if (typeof command === 'string' && command.trim() !== '')
52
+ return oneLine(command);
53
+ if (Array.isArray(command)) {
54
+ const argv = command.filter((part) => typeof part === 'string');
55
+ if (argv.length > 0)
56
+ return oneLine(argv.join(' '));
57
+ }
58
+ return undefined;
59
+ }
60
+ /** File paths listed by a codex `fileChange` item (`changes: [{path}]`). */
61
+ function changePaths(input) {
62
+ if (!isRecord(input) || !Array.isArray(input.changes))
63
+ return [];
64
+ const paths = [];
65
+ for (const change of input.changes) {
66
+ if (isRecord(change) && typeof change.path === 'string' && change.path.trim() !== '') {
67
+ paths.push(change.path);
68
+ }
69
+ }
70
+ return paths;
71
+ }
72
+ /** The opencode research heuristic for unknown tools: the first plausible
73
+ * human label in the input, in a fixed priority order. */
74
+ function heuristicLabel(input) {
75
+ return field(input, 'description', 'query', 'url', 'filePath', 'file_path', 'path', 'pattern', 'name');
76
+ }
77
+ /** Verb + optional object → "Read src/a.ts", or just the verb when the
78
+ * input gave us nothing usable. */
79
+ function titled(verb, label) {
80
+ return label ? `${verb} ${label}` : verb;
81
+ }
82
+ export function toolDisplay(name, input) {
83
+ const key = typeof name === 'string' ? name.toLowerCase() : '';
84
+ switch (key) {
85
+ case 'bash':
86
+ case 'commandexecution':
87
+ return {
88
+ toolKind: 'execute',
89
+ title: titled('Ran', commandText(input)),
90
+ subtitle: field(input, 'description'),
91
+ };
92
+ case 'edit':
93
+ case 'multiedit':
94
+ return { toolKind: 'edit', title: titled('Edit', field(input, 'file_path', 'filePath', 'path')) };
95
+ case 'write':
96
+ return { toolKind: 'edit', title: titled('Write', field(input, 'file_path', 'filePath', 'path')) };
97
+ case 'notebookedit':
98
+ return {
99
+ toolKind: 'edit',
100
+ title: titled('Edit', field(input, 'notebook_path', 'notebookPath', 'file_path', 'filePath', 'path')),
101
+ };
102
+ case 'filechange': {
103
+ const paths = changePaths(input);
104
+ const label = paths.length === 1 ? paths[0] : paths.length > 1 ? `${paths.length} files` : undefined;
105
+ return { toolKind: 'edit', title: titled('Edit', label) };
106
+ }
107
+ case 'read':
108
+ return { toolKind: 'read', title: titled('Read', field(input, 'file_path', 'filePath', 'path')) };
109
+ case 'imageview':
110
+ return { toolKind: 'read', title: titled('View image', field(input, 'path')) };
111
+ case 'glob':
112
+ case 'grep':
113
+ return {
114
+ toolKind: 'search',
115
+ title: titled('Search', field(input, 'pattern', 'query')),
116
+ subtitle: field(input, 'path'),
117
+ };
118
+ case 'webfetch':
119
+ return { toolKind: 'fetch', title: titled('Fetch', field(input, 'url')) };
120
+ case 'websearch':
121
+ return { toolKind: 'fetch', title: titled('Web search', field(input, 'query')) };
122
+ // Sub-agent spawns. claude dispatches these through `Agent` today and
123
+ // `Task` historically (opencode uses `task`) — both spellings resolve, and
124
+ // the row says which agent, falling back to the subagent type when the
125
+ // call carried no description.
126
+ case 'task':
127
+ case 'agent': {
128
+ const verb = key === 'agent' ? 'Agent' : 'Task';
129
+ const subagent = field(input, 'subagent_type', 'subagentType');
130
+ const label = field(input, 'description', 'prompt') ?? subagent;
131
+ return {
132
+ toolKind: 'task',
133
+ title: label ? `${verb}: ${label}` : verb,
134
+ // Don't repeat the subagent type when it is already the title.
135
+ subtitle: label === subagent ? undefined : subagent,
136
+ };
137
+ }
138
+ // claude's `Skill` invocation: `{skill, args?}` — the skill name is the
139
+ // whole point of the row, so it goes in the title.
140
+ case 'skill': {
141
+ const skill = field(input, 'skill', 'name', 'command');
142
+ return {
143
+ toolKind: 'task',
144
+ title: skill ? `Skill: ${skill}` : 'Skill',
145
+ subtitle: field(input, 'args', 'description'),
146
+ };
147
+ }
148
+ case 'todowrite':
149
+ case 'todolist':
150
+ case 'plan':
151
+ case 'taskcreate':
152
+ case 'taskupdate':
153
+ case 'tasklist':
154
+ return { toolKind: 'plan', title: 'Update plan' };
155
+ case 'contextcompaction':
156
+ return { toolKind: 'other', title: 'Compacted context' };
157
+ case 'mcptoolcall': {
158
+ const server = field(input, 'server');
159
+ const tool = field(input, 'tool');
160
+ if (server && tool)
161
+ return { toolKind: 'other', title: `${server}.${tool}` };
162
+ return { toolKind: 'other', title: 'MCP tool', subtitle: heuristicLabel(input) };
163
+ }
164
+ }
165
+ // claude/opencode MCP tools are named `mcp__server__tool` → "server.tool".
166
+ if (key.startsWith('mcp__')) {
167
+ const parts = name.split('__').filter((part) => part !== '');
168
+ if (parts.length >= 3) {
169
+ return { toolKind: 'other', title: `${parts[1]}.${parts.slice(2).join('__')}` };
170
+ }
171
+ }
172
+ // Unknown tool: keep the backend's name as the title, heuristic subtitle.
173
+ return {
174
+ toolKind: 'other',
175
+ title: typeof name === 'string' && name.trim() !== '' ? oneLine(name) : 'Tool',
176
+ subtitle: heuristicLabel(input),
177
+ };
178
+ }
179
+ //# sourceMappingURL=tool-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-display.js","sourceRoot":"","sources":["../../src/core/tool-display.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,335 @@
1
+ /**
2
+ * Normalized agent-event protocol v2 — the shared vocabulary every runner
3
+ * emits ALONGSIDE the v1 `AgentEvent` stream (never replacing it; mixed
4
+ * NDJSON files stay valid — old recordings must keep replaying).
5
+ *
6
+ * Contract sources (authoritative, in this order):
7
+ * - `.ai/analysis/cockpit-ui-redesign/agent-event-protocols.md` §7 (schema)
8
+ * and §7.1 (per-backend mapping tables);
9
+ * - the spec `.ai/specs/2026-07-14-cockpit-ui-redesign.md`
10
+ * §"Normalized agent-event protocol v2".
11
+ *
12
+ * Design rules baked in:
13
+ * 1. Item-lifecycle model (Codex/ACP style): one stable `id` per item with
14
+ * started/delta/updated/completed phases — two of the three backends are
15
+ * natively item-shaped and claude maps trivially.
16
+ * 2. ACP vocabulary wherever a choice is arbitrary (tool status/kind, plan
17
+ * entries, diff shape, stop reasons) for ecosystem alignment.
18
+ * 3. Every v1 `AgentEvent` stays derivable from this stream, so consumers
19
+ * can migrate one panel at a time.
20
+ *
21
+ * This module is pure vocabulary: no runtime imports, no runner coupling.
22
+ * Mirrored into `packages/api-client/src/protocol/`.
23
+ */
24
+ /** The backend that produced a session — mirrors `RunnerId` in
25
+ * `agent-runner.ts` (kept structurally identical; a type-level test
26
+ * guards against drift so this module stays dependency-free). */
27
+ export type UiBackend = 'claude' | 'codex' | 'opencode' | 'pi';
28
+ /**
29
+ * Tool lifecycle status (ACP: pending/in_progress/completed/failed).
30
+ * `running` ≡ ACP `in_progress` (opencode's word — reads better in code);
31
+ * `declined` covers codex approval declines and claude `permission_denials`.
32
+ *
33
+ * Per backend: claude has no pending phase (`tool_use` arrives already
34
+ * running); codex maps `inProgress→running`, `completed/failed/declined`
35
+ * verbatim; opencode maps `pending/running` verbatim and `error→failed`.
36
+ */
37
+ export type ToolStatus = 'pending' | 'running' | 'completed' | 'failed' | 'declined';
38
+ /**
39
+ * Icon/verb hint for a tool item — a superset of ACP's ToolKind.
40
+ * `task` = subagent spawn (claude Task / opencode subtask / codex review).
41
+ */
42
+ export type ToolKind = 'read' | 'edit' | 'delete' | 'move' | 'search' | 'execute' | 'think' | 'fetch' | 'task' | 'plan' | 'other';
43
+ /**
44
+ * Why a turn (or the session) stopped.
45
+ *
46
+ * Per backend: claude `result` subtype success→`end_turn`,
47
+ * error_max_turns→`max_tokens`, error_during_execution→`error`; codex
48
+ * turn/completed→`end_turn`, turn/failed→`error`, interrupt→`cancelled`;
49
+ * opencode `session.idle`→`end_turn` (or `error` when a session.error
50
+ * preceded it).
51
+ */
52
+ export type StopReason = 'end_turn' | 'max_tokens' | 'refusal' | 'cancelled' | 'timeout' | 'error';
53
+ /**
54
+ * Status of one plan/todo entry. claude TodoWrite/TaskUpdate use the first
55
+ * three words verbatim; codex `turn/plan/updated` sends camelCase
56
+ * (`inProgress`) and is normalized here; opencode `todowrite` adds
57
+ * `cancelled` ("no longer needed") — its status field is a free-form string
58
+ * whose documented vocabulary is pending|in_progress|completed|cancelled.
59
+ *
60
+ * `cancelled` is opencode-only today. It is a first-class status rather than a
61
+ * dropped row: an abandoned todo must stay visible (struck through) instead of
62
+ * silently vanishing from the dock mid-run.
63
+ */
64
+ export type PlanStatus = 'pending' | 'in_progress' | 'completed' | 'cancelled';
65
+ /** One entry of the session plan — full-replacement semantics (ACP style). */
66
+ export interface PlanEntry {
67
+ content: string;
68
+ status: PlanStatus;
69
+ priority?: 'high' | 'medium' | 'low';
70
+ /** Present-continuous label shown while the entry is in progress
71
+ * (claude TodoWrite's `activeForm`). */
72
+ activeForm?: string;
73
+ }
74
+ /**
75
+ * Raw token counts — never pre-weighted (cost weighting is a presentation
76
+ * concern, not a wire concern).
77
+ *
78
+ * Per backend: claude `result.usage` (+ `total_cost_usd` as `costUsd` on the
79
+ * carrying event); codex `thread/tokenUsage/updated` (no USD); opencode
80
+ * `message.updated` info.tokens/cost and `step-finish` parts.
81
+ */
82
+ export interface TokenUsage {
83
+ input: number;
84
+ output: number;
85
+ cacheRead?: number;
86
+ cacheWrite?: number;
87
+ reasoning?: number;
88
+ /** The backend's own total when given, else the sum of the parts. */
89
+ total: number;
90
+ /** Model context-window size when known — feeds the fill gauge. */
91
+ contextWindow?: number;
92
+ }
93
+ /**
94
+ * One file change carried by an edit-tool item.
95
+ * claude `Edit`/`Write` input → `oldText`/`newText`; codex
96
+ * `fileChange.changes[]` → `unified`; opencode `patch` parts → `unified`.
97
+ * `oldText: null` means the file is newly created.
98
+ */
99
+ export interface FileDiff {
100
+ path: string;
101
+ oldText: string | null;
102
+ newText?: string;
103
+ unified?: string;
104
+ }
105
+ /** A file location a tool touched (feeds "jump to file" affordances). */
106
+ export interface ToolLocation {
107
+ path: string;
108
+ line?: number;
109
+ }
110
+ /** A choice offered by a permission request (ACP option kinds). */
111
+ export type PermissionOptionKind = 'allow_once' | 'allow_always' | 'reject_once' | 'reject_always';
112
+ export interface PermissionOption {
113
+ id: string;
114
+ label: string;
115
+ kind: PermissionOptionKind;
116
+ }
117
+ /**
118
+ * A chat message.
119
+ * claude: `assistant` `text` blocks (whole-block, or true deltas via
120
+ * `--include-partial-messages`); codex: `agentMessage` items (`phase` from
121
+ * the item's own phase field); opencode: text parts of a message.
122
+ */
123
+ export interface UiMessageItem {
124
+ kind: 'message';
125
+ id: string;
126
+ role: 'assistant' | 'user';
127
+ text: string;
128
+ phase?: 'commentary' | 'final';
129
+ parentItemId?: string;
130
+ }
131
+ /**
132
+ * Extended thinking / reasoning summary.
133
+ * claude: `thinking` blocks; codex: `reasoning` items (+ textDelta);
134
+ * opencode: `reasoning` parts.
135
+ */
136
+ export interface UiReasoningItem {
137
+ kind: 'reasoning';
138
+ id: string;
139
+ text: string;
140
+ parentItemId?: string;
141
+ }
142
+ /**
143
+ * One tool invocation with its full lifecycle.
144
+ * claude: `tool_use` (started, status `running`) + `tool_result`
145
+ * (completed/failed; `permission_denials` → `declined`); codex: typed items
146
+ * (`commandExecution`→execute with `exitCode`, `fileChange`→edit with
147
+ * `diffs`, `mcpToolCall`→other, `webSearch`→fetch); opencode: tool parts
148
+ * (state pending/running/completed/error, `patch` parts → `diffs`).
149
+ *
150
+ * `parentItemId` nests subagent work under its spawning task item —
151
+ * claude `parent_tool_use_id`, opencode `subtask` parts, codex review items.
152
+ */
153
+ export interface UiToolItem {
154
+ kind: 'tool';
155
+ id: string;
156
+ /** The backend's tool name / item type (e.g. `Bash`, `commandExecution`). */
157
+ name: string;
158
+ /** ACP-style icon/verb hint — see `toolDisplay()` in `tool-display.ts`. */
159
+ toolKind: ToolKind;
160
+ /** Human line, computed once in the protocol layer: "Ran npm test". */
161
+ title: string;
162
+ status: ToolStatus;
163
+ /** Raw input — may arrive incrementally. */
164
+ input?: unknown;
165
+ output?: string;
166
+ error?: string;
167
+ diffs?: FileDiff[];
168
+ locations?: ToolLocation[];
169
+ /** commandExecution / bash exit code, when the backend reports one. */
170
+ exitCode?: number;
171
+ parentItemId?: string;
172
+ }
173
+ export type UiItem = UiMessageItem | UiReasoningItem | UiToolItem;
174
+ /**
175
+ * Session opened.
176
+ * claude: `system/init` (model, tools, cwd); codex: `thread/started` or the
177
+ * `thread/start` result; opencode: `POST /session` response.
178
+ */
179
+ export interface UiSessionStartedEvent {
180
+ type: 'session.started';
181
+ sessionId: string;
182
+ backend: UiBackend;
183
+ model?: string;
184
+ cwd?: string;
185
+ tools?: string[];
186
+ }
187
+ /** Session over (replaces v1 `done` / fatal `error`). */
188
+ export interface UiSessionEndedEvent {
189
+ type: 'session.ended';
190
+ reason: StopReason;
191
+ message?: string;
192
+ }
193
+ /** v1 `note` + `error` unified — severity explicit instead of implied. */
194
+ export interface UiSessionErrorEvent {
195
+ type: 'session.error';
196
+ message: string;
197
+ fatal: boolean;
198
+ }
199
+ /**
200
+ * A turn began.
201
+ * claude: on each stdin user message; codex: `turn/started`;
202
+ * opencode: on each prompt POST.
203
+ */
204
+ export interface UiTurnStartedEvent {
205
+ type: 'turn.started';
206
+ turnId: string;
207
+ }
208
+ /**
209
+ * A turn finished.
210
+ * claude: `result` (usage + `total_cost_usd`); codex: `turn/completed` /
211
+ * `turn/failed`; opencode: `session.idle`.
212
+ */
213
+ export interface UiTurnCompletedEvent {
214
+ type: 'turn.completed';
215
+ turnId: string;
216
+ stopReason: StopReason;
217
+ usage?: TokenUsage;
218
+ costUsd?: number;
219
+ }
220
+ /** An item entered the stream (tools usually with status pending/running). */
221
+ export interface UiItemStartedEvent {
222
+ type: 'item.started';
223
+ item: UiItem;
224
+ }
225
+ /**
226
+ * Streaming append to one field of a live item.
227
+ * claude: partial-message text deltas; codex: `item/agentMessage/delta`
228
+ * (`text`), `item/reasoning/textDelta` (`reasoning`),
229
+ * `item/commandExecution/outputDelta` (`output` — live terminal); opencode:
230
+ * text/reasoning part cursor deltas, running-state metadata for `output`.
231
+ * claude has no live command output — the tool card fills on completion
232
+ * (per-capability degradation, never per-backend).
233
+ */
234
+ export interface UiItemDeltaEvent {
235
+ type: 'item.delta';
236
+ itemId: string;
237
+ field: 'text' | 'reasoning' | 'output';
238
+ delta: string;
239
+ }
240
+ /** Status flips and streamed-content snapshots (codex `item/updated`,
241
+ * opencode part-state flips such as pending→running). */
242
+ export interface UiItemUpdatedEvent {
243
+ type: 'item.updated';
244
+ item: UiItem;
245
+ }
246
+ /** Final snapshot of an item — safe to persist (snapshots, not deltas). */
247
+ export interface UiItemCompletedEvent {
248
+ type: 'item.completed';
249
+ item: UiItem;
250
+ }
251
+ /**
252
+ * Full-replacement plan snapshot (ACP semantics).
253
+ * claude: `TodoWrite` tool input, or a snapshot folded from the incremental
254
+ * `TaskCreate`/`TaskUpdate`/`TaskList` calls (keyed by the task id the harness
255
+ * reports in each tool's RESULT — see `claude-ui-mapper`); codex: the
256
+ * `turn/plan/updated` notification carrying the whole `update_plan` list (it is
257
+ * a turn-level notification, NOT an item — the app-server `ThreadItem` union has
258
+ * no todo variant); opencode: `todowrite` tool input — identical
259
+ * full-replacement semantics across all three.
260
+ */
261
+ export interface UiPlanUpdatedEvent {
262
+ type: 'plan.updated';
263
+ entries: PlanEntry[];
264
+ }
265
+ /**
266
+ * RESERVED — wired when auto-approve becomes optional. Types only for now.
267
+ * claude: `control_request can_use_tool`; codex: the per-item
268
+ * `requestApproval` JSON-RPC requests; opencode: `permission.updated`.
269
+ */
270
+ export interface UiPermissionRequestedEvent {
271
+ type: 'permission.requested';
272
+ requestId: string;
273
+ itemId?: string;
274
+ title: string;
275
+ options: PermissionOption[];
276
+ }
277
+ /** RESERVED — the counterpart resolution (see `permission.requested`). */
278
+ export interface UiPermissionResolvedEvent {
279
+ type: 'permission.resolved';
280
+ requestId: string;
281
+ optionId: string;
282
+ }
283
+ /** One option in an AskUser question — see `src/core/ask.ts`. */
284
+ export interface UiAskOption {
285
+ label: string;
286
+ description?: string;
287
+ }
288
+ /** One structured multiple-choice question — modeled on Claude Code's
289
+ * `AskUserQuestion` (see `src/core/ask.ts`). */
290
+ export interface UiAskQuestion {
291
+ id?: string;
292
+ header: string;
293
+ question: string;
294
+ options: UiAskOption[];
295
+ multiSelect?: boolean;
296
+ }
297
+ /**
298
+ * The agent asked the user a structured multiple-choice question via a
299
+ * `CEZ:ASK` marker (spec `2026-07-18-askuser-across-runners`). Emitted by the
300
+ * RunManager off the assembled turn text — uniform across claude/codex/opencode
301
+ * with no per-backend mapper work. The run parks `waiting`; the cockpit renders
302
+ * clickable option chips. Resolution is client-side — the next user message for
303
+ * the run closes the card — so there is no separate `ask.resolved` event.
304
+ */
305
+ export interface UiAskRequestedEvent {
306
+ type: 'ask.requested';
307
+ requestId: string;
308
+ questions: UiAskQuestion[];
309
+ }
310
+ /**
311
+ * Cumulative-for-session raw telemetry.
312
+ * claude: `result.usage` + `total_cost_usd`; codex:
313
+ * `thread/tokenUsage/updated` (cost stays absent); opencode:
314
+ * `message.updated` tokens/cost + `step-finish` increments.
315
+ */
316
+ export interface UiUsageUpdatedEvent {
317
+ type: 'usage.updated';
318
+ usage: TokenUsage;
319
+ costUsd?: number;
320
+ }
321
+ /**
322
+ * An image emitted mid-stream (kept from v1) — raw base64 on the wire here;
323
+ * the run manager persists it and re-emits a URL. claude: image blocks in
324
+ * `tool_result` (with `itemId` linking back to the tool item).
325
+ */
326
+ export interface UiImageEvent {
327
+ type: 'image';
328
+ itemId?: string;
329
+ mediaType: string;
330
+ data: string;
331
+ }
332
+ export type UiEvent = UiSessionStartedEvent | UiSessionEndedEvent | UiSessionErrorEvent | UiTurnStartedEvent | UiTurnCompletedEvent | UiItemStartedEvent | UiItemDeltaEvent | UiItemUpdatedEvent | UiItemCompletedEvent | UiPlanUpdatedEvent | UiPermissionRequestedEvent | UiPermissionResolvedEvent | UiAskRequestedEvent | UiUsageUpdatedEvent | UiImageEvent;
333
+ /** Every v2 event discriminator — `satisfies Record<UiEventType, …>` maps
334
+ * downstream keep new event types honest at compile time. */
335
+ export type UiEventType = UiEvent['type'];
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Normalized agent-event protocol v2 — the shared vocabulary every runner
3
+ * emits ALONGSIDE the v1 `AgentEvent` stream (never replacing it; mixed
4
+ * NDJSON files stay valid — old recordings must keep replaying).
5
+ *
6
+ * Contract sources (authoritative, in this order):
7
+ * - `.ai/analysis/cockpit-ui-redesign/agent-event-protocols.md` §7 (schema)
8
+ * and §7.1 (per-backend mapping tables);
9
+ * - the spec `.ai/specs/2026-07-14-cockpit-ui-redesign.md`
10
+ * §"Normalized agent-event protocol v2".
11
+ *
12
+ * Design rules baked in:
13
+ * 1. Item-lifecycle model (Codex/ACP style): one stable `id` per item with
14
+ * started/delta/updated/completed phases — two of the three backends are
15
+ * natively item-shaped and claude maps trivially.
16
+ * 2. ACP vocabulary wherever a choice is arbitrary (tool status/kind, plan
17
+ * entries, diff shape, stop reasons) for ecosystem alignment.
18
+ * 3. Every v1 `AgentEvent` stays derivable from this stream, so consumers
19
+ * can migrate one panel at a time.
20
+ *
21
+ * This module is pure vocabulary: no runtime imports, no runner coupling.
22
+ * Mirrored into `packages/api-client/src/protocol/`.
23
+ */
24
+ export {};
25
+ //# sourceMappingURL=ui-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-events.js","sourceRoot":"","sources":["../../src/core/ui-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Provider usage-limit detection (spec 2026-08-03-auto-resume-after-usage-limit).
3
+ *
4
+ * A subscription that runs out of its window does not fail like an agent bug does: the work is
5
+ * fine, the account is simply closed until a KNOWN instant. That instant is the whole feature —
6
+ * without it there is nothing to schedule, so this module answers exactly one question about a
7
+ * terminal error string: "is this a usage limit, and when does it lift?".
8
+ *
9
+ * The evidence differs per backend, so the shapes are recognized in order of how exact they are:
10
+ *
11
+ * 1. Claude Code's machine-readable envelope, `Claude AI usage limit reached|<epoch>` — the CLI
12
+ * puts it in an `is_error` result frame, which reaches cezar verbatim as the run's `error`.
13
+ * Exact, no locale, no parsing of prose. This is the one that matters in practice.
14
+ * 2. An explicit reset instant in the prose (`try again at 2026-08-03T18:00:00Z`) — how Codex and
15
+ * OpenCode phrase the same thing when they carry a timestamp at all.
16
+ * 3. A clock-only reset in prose (`resets 8:10pm (Europe/Warsaw)`) — how Claude Code phrases
17
+ * session windows in some interactive output.
18
+ * 4. A relative delay (`try again in 42 minutes`, `retry-after: 3600`).
19
+ *
20
+ * Nothing else counts. A limit message with no recoverable reset instant returns `null` on
21
+ * purpose: guessing a window would turn one interruption into a retry loop against a provider
22
+ * that is still refusing, and "we don't know when" is an honest answer the caller can surface.
23
+ */
24
+ export interface UsageLimitHit {
25
+ /** When the provider says the limit lifts. Never in the past — a stale instant clamps to now. */
26
+ resetAt: Date;
27
+ /** Which shape carried it — the lifecycle note quotes this so the schedule is auditable. */
28
+ evidence: 'claude-marker' | 'timestamp' | 'clock' | 'delay';
29
+ }
30
+ /**
31
+ * The furthest ahead a reset may sit and still be believed. Claude's weekly window is the real
32
+ * ceiling; anything beyond a week is a corrupt or unit-confused number, and parking a task on it
33
+ * would be indistinguishable from losing the task.
34
+ */
35
+ export declare const MAX_USAGE_LIMIT_WAIT_MS: number;
36
+ /**
37
+ * Read a usage limit out of a terminal error message, or `null` when it is not one (or carries no
38
+ * usable reset instant). `now` is injected so callers and tests share one clock.
39
+ *
40
+ * Never throws: this runs on the failure path of every run, where a second failure helps nobody.
41
+ */
42
+ export declare function parseUsageLimit(message: string | undefined, now?: number): UsageLimitHit | null;