@polderlabs/bizar-omp 0.6.2 → 0.6.3

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 (371) hide show
  1. package/README.md +54 -0
  2. package/dist/cli/agents.d.ts +1 -0
  3. package/dist/cli/agents.d.ts.map +1 -1
  4. package/dist/cli/agents.js +11 -0
  5. package/dist/cli/agents.js.map +1 -1
  6. package/dist/cli/omb-commands.d.ts +30 -0
  7. package/dist/cli/omb-commands.d.ts.map +1 -0
  8. package/dist/cli/omb-commands.js +109 -0
  9. package/dist/cli/omb-commands.js.map +1 -0
  10. package/dist/cli/omb-daemon.d.ts +1 -0
  11. package/dist/cli/omb-daemon.d.ts.map +1 -1
  12. package/dist/cli/omb-daemon.js +15 -1
  13. package/dist/cli/omb-daemon.js.map +1 -1
  14. package/dist/cli/omb-dashboard.d.ts +1 -1
  15. package/dist/cli/omb-dashboard.d.ts.map +1 -1
  16. package/dist/cli/omb-dashboard.js +2 -1
  17. package/dist/cli/omb-dashboard.js.map +1 -1
  18. package/dist/cli/omb-runtime.d.ts +42 -0
  19. package/dist/cli/omb-runtime.d.ts.map +1 -0
  20. package/dist/cli/omb-runtime.js +507 -0
  21. package/dist/cli/omb-runtime.js.map +1 -0
  22. package/dist/cli/omb-tray.d.ts +3 -0
  23. package/dist/cli/omb-tray.d.ts.map +1 -0
  24. package/dist/cli/omb-tray.js +44 -0
  25. package/dist/cli/omb-tray.js.map +1 -0
  26. package/dist/cli/omb.js +8 -33
  27. package/dist/cli/omb.js.map +1 -1
  28. package/dist/omp/daemon.d.ts +1 -0
  29. package/dist/omp/daemon.d.ts.map +1 -1
  30. package/dist/omp/daemon.js +1 -1
  31. package/dist/omp/daemon.js.map +1 -1
  32. package/dist/omp/omb-sessions.d.ts +24 -0
  33. package/dist/omp/omb-sessions.d.ts.map +1 -1
  34. package/dist/omp/omb-sessions.js +30 -12
  35. package/dist/omp/omb-sessions.js.map +1 -1
  36. package/dist/omp/tmux.d.ts +18 -0
  37. package/dist/omp/tmux.d.ts.map +1 -1
  38. package/dist/omp/tmux.js +131 -4
  39. package/dist/omp/tmux.js.map +1 -1
  40. package/dist/omp/tray.d.ts +2 -0
  41. package/dist/omp/tray.d.ts.map +1 -1
  42. package/dist/omp/tray.js +30 -4
  43. package/dist/omp/tray.js.map +1 -1
  44. package/dist/src/cli/agents-ink.d.ts +25 -0
  45. package/dist/src/cli/agents-ink.js +517 -0
  46. package/dist/src/cli/agents-ink.js.map +1 -0
  47. package/dist/src/cli/agents.d.ts +14 -0
  48. package/dist/src/cli/agents.js +197 -0
  49. package/dist/src/cli/agents.js.map +1 -0
  50. package/dist/src/cli/directory-selector.d.ts +60 -0
  51. package/dist/src/cli/directory-selector.js +208 -0
  52. package/dist/src/cli/directory-selector.js.map +1 -0
  53. package/dist/src/cli/doctor.d.ts +41 -0
  54. package/dist/src/cli/doctor.js +31 -0
  55. package/dist/src/cli/doctor.js.map +1 -0
  56. package/dist/src/cli/install.d.ts +129 -0
  57. package/dist/src/cli/install.js +164 -0
  58. package/dist/src/cli/install.js.map +1 -0
  59. package/dist/src/cli/main.d.ts +2 -0
  60. package/dist/src/cli/main.js +117 -0
  61. package/dist/src/cli/main.js.map +1 -0
  62. package/dist/src/cli/migrate.d.ts +18 -0
  63. package/dist/src/cli/migrate.js +14 -0
  64. package/dist/src/cli/migrate.js.map +1 -0
  65. package/dist/src/cli/omb-commands.d.ts +29 -0
  66. package/dist/src/cli/omb-commands.js +107 -0
  67. package/dist/src/cli/omb-commands.js.map +1 -0
  68. package/dist/src/cli/omb-daemon.d.ts +2 -0
  69. package/dist/src/cli/omb-daemon.js +135 -0
  70. package/dist/src/cli/omb-daemon.js.map +1 -0
  71. package/dist/src/cli/omb-dashboard.d.ts +12 -0
  72. package/dist/src/cli/omb-dashboard.js +113 -0
  73. package/dist/src/cli/omb-dashboard.js.map +1 -0
  74. package/dist/src/cli/omb-invocation.d.ts +8 -0
  75. package/dist/src/cli/omb-invocation.js +41 -0
  76. package/dist/src/cli/omb-invocation.js.map +1 -0
  77. package/dist/src/cli/omb-runtime.d.ts +41 -0
  78. package/dist/src/cli/omb-runtime.js +371 -0
  79. package/dist/src/cli/omb-runtime.js.map +1 -0
  80. package/dist/src/cli/omb-tray.d.ts +2 -0
  81. package/dist/src/cli/omb-tray.js +38 -0
  82. package/dist/src/cli/omb-tray.js.map +1 -0
  83. package/dist/src/cli/omb.d.ts +2 -0
  84. package/dist/src/cli/omb.js +31 -0
  85. package/dist/src/cli/omb.js.map +1 -0
  86. package/dist/src/cli/omp-theme.d.ts +17 -0
  87. package/dist/src/cli/omp-theme.js +22 -0
  88. package/dist/src/cli/omp-theme.js.map +1 -0
  89. package/dist/src/cli/process.d.ts +6 -0
  90. package/dist/src/cli/process.js +54 -0
  91. package/dist/src/cli/process.js.map +1 -0
  92. package/dist/src/cli/run.d.ts +2 -0
  93. package/dist/src/cli/run.js +5 -0
  94. package/dist/src/cli/run.js.map +1 -0
  95. package/dist/src/cli/setup-ui.d.ts +37 -0
  96. package/dist/src/cli/setup-ui.js +90 -0
  97. package/dist/src/cli/setup-ui.js.map +1 -0
  98. package/dist/src/core/acceptance.d.ts +32 -0
  99. package/dist/src/core/acceptance.js +87 -0
  100. package/dist/src/core/acceptance.js.map +1 -0
  101. package/dist/src/core/errors.d.ts +20 -0
  102. package/dist/src/core/errors.js +30 -0
  103. package/dist/src/core/errors.js.map +1 -0
  104. package/dist/src/core/evidence.d.ts +10 -0
  105. package/dist/src/core/evidence.js +35 -0
  106. package/dist/src/core/evidence.js.map +1 -0
  107. package/dist/src/core/policies.d.ts +10 -0
  108. package/dist/src/core/policies.js +60 -0
  109. package/dist/src/core/policies.js.map +1 -0
  110. package/dist/src/core/recovery.d.ts +6 -0
  111. package/dist/src/core/recovery.js +56 -0
  112. package/dist/src/core/recovery.js.map +1 -0
  113. package/dist/src/core/transitions.d.ts +13 -0
  114. package/dist/src/core/transitions.js +59 -0
  115. package/dist/src/core/transitions.js.map +1 -0
  116. package/dist/src/core/types.d.ts +256 -0
  117. package/dist/src/core/types.js +2 -0
  118. package/dist/src/core/types.js.map +1 -0
  119. package/dist/src/extension.d.ts +60 -0
  120. package/dist/src/extension.js +538 -0
  121. package/dist/src/extension.js.map +1 -0
  122. package/dist/src/index.d.ts +29 -0
  123. package/dist/src/index.js +30 -0
  124. package/dist/src/index.js.map +1 -0
  125. package/dist/src/omp/autonomous-settings.d.ts +14 -0
  126. package/dist/src/omp/autonomous-settings.js +65 -0
  127. package/dist/src/omp/autonomous-settings.js.map +1 -0
  128. package/dist/src/omp/capabilities.d.ts +23 -0
  129. package/dist/src/omp/capabilities.js +6 -0
  130. package/dist/src/omp/capabilities.js.map +1 -0
  131. package/dist/src/omp/compatibility.d.ts +30 -0
  132. package/dist/src/omp/compatibility.js +34 -0
  133. package/dist/src/omp/compatibility.js.map +1 -0
  134. package/dist/src/omp/completion.d.ts +7 -0
  135. package/dist/src/omp/completion.js +10 -0
  136. package/dist/src/omp/completion.js.map +1 -0
  137. package/dist/src/omp/config.d.ts +10 -0
  138. package/dist/src/omp/config.js +14 -0
  139. package/dist/src/omp/config.js.map +1 -0
  140. package/dist/src/omp/context.d.ts +15 -0
  141. package/dist/src/omp/context.js +3 -0
  142. package/dist/src/omp/context.js.map +1 -0
  143. package/dist/src/omp/daemon-service.d.ts +25 -0
  144. package/dist/src/omp/daemon-service.js +483 -0
  145. package/dist/src/omp/daemon-service.js.map +1 -0
  146. package/dist/src/omp/daemon.d.ts +48 -0
  147. package/dist/src/omp/daemon.js +194 -0
  148. package/dist/src/omp/daemon.js.map +1 -0
  149. package/dist/src/omp/dashboard-html.d.ts +3 -0
  150. package/dist/src/omp/dashboard-html.js +419 -0
  151. package/dist/src/omp/dashboard-html.js.map +1 -0
  152. package/dist/src/omp/dispatch-admission.d.ts +2 -0
  153. package/dist/src/omp/dispatch-admission.js +12 -0
  154. package/dist/src/omp/dispatch-admission.js.map +1 -0
  155. package/dist/src/omp/integration-recovery.d.ts +10 -0
  156. package/dist/src/omp/integration-recovery.js +18 -0
  157. package/dist/src/omp/integration-recovery.js.map +1 -0
  158. package/dist/src/omp/isolation-policy.d.ts +14 -0
  159. package/dist/src/omp/isolation-policy.js +9 -0
  160. package/dist/src/omp/isolation-policy.js.map +1 -0
  161. package/dist/src/omp/lifecycle.d.ts +14 -0
  162. package/dist/src/omp/lifecycle.js +14 -0
  163. package/dist/src/omp/lifecycle.js.map +1 -0
  164. package/dist/src/omp/memory.d.ts +16 -0
  165. package/dist/src/omp/memory.js +4 -0
  166. package/dist/src/omp/memory.js.map +1 -0
  167. package/dist/src/omp/model-role-assignment.d.ts +296 -0
  168. package/dist/src/omp/model-role-assignment.js +559 -0
  169. package/dist/src/omp/model-role-assignment.js.map +1 -0
  170. package/dist/src/omp/model-roles.d.ts +19 -0
  171. package/dist/src/omp/model-roles.js +6 -0
  172. package/dist/src/omp/model-roles.js.map +1 -0
  173. package/dist/src/omp/omb-sessions.d.ts +122 -0
  174. package/dist/src/omp/omb-sessions.js +512 -0
  175. package/dist/src/omp/omb-sessions.js.map +1 -0
  176. package/dist/src/omp/omb-settings.d.ts +35 -0
  177. package/dist/src/omp/omb-settings.js +104 -0
  178. package/dist/src/omp/omb-settings.js.map +1 -0
  179. package/dist/src/omp/result-reconciliation.d.ts +2 -0
  180. package/dist/src/omp/result-reconciliation.js +9 -0
  181. package/dist/src/omp/result-reconciliation.js.map +1 -0
  182. package/dist/src/omp/rpc.d.ts +67 -0
  183. package/dist/src/omp/rpc.js +4 -0
  184. package/dist/src/omp/rpc.js.map +1 -0
  185. package/dist/src/omp/run-log.d.ts +25 -0
  186. package/dist/src/omp/run-log.js +24 -0
  187. package/dist/src/omp/run-log.js.map +1 -0
  188. package/dist/src/omp/session-activity.d.ts +70 -0
  189. package/dist/src/omp/session-activity.js +361 -0
  190. package/dist/src/omp/session-activity.js.map +1 -0
  191. package/dist/src/omp/session-controls.d.ts +17 -0
  192. package/dist/src/omp/session-controls.js +14 -0
  193. package/dist/src/omp/session-controls.js.map +1 -0
  194. package/dist/src/omp/tmux.d.ts +89 -0
  195. package/dist/src/omp/tmux.js +445 -0
  196. package/dist/src/omp/tmux.js.map +1 -0
  197. package/dist/src/omp/tray-icons.d.ts +5 -0
  198. package/dist/src/omp/tray-icons.js +78 -0
  199. package/dist/src/omp/tray-icons.js.map +1 -0
  200. package/dist/src/omp/tray.d.ts +23 -0
  201. package/dist/src/omp/tray.js +167 -0
  202. package/dist/src/omp/tray.js.map +1 -0
  203. package/dist/src/services/budget.d.ts +19 -0
  204. package/dist/src/services/budget.js +10 -0
  205. package/dist/src/services/budget.js.map +1 -0
  206. package/dist/src/services/candidate-local.d.ts +13 -0
  207. package/dist/src/services/candidate-local.js +15 -0
  208. package/dist/src/services/candidate-local.js.map +1 -0
  209. package/dist/src/services/candidates.d.ts +20 -0
  210. package/dist/src/services/candidates.js +100 -0
  211. package/dist/src/services/candidates.js.map +1 -0
  212. package/dist/src/services/evidence-bundle.d.ts +17 -0
  213. package/dist/src/services/evidence-bundle.js +21 -0
  214. package/dist/src/services/evidence-bundle.js.map +1 -0
  215. package/dist/src/services/inspector.d.ts +11 -0
  216. package/dist/src/services/inspector.js +6 -0
  217. package/dist/src/services/inspector.js.map +1 -0
  218. package/dist/src/services/lessons.d.ts +13 -0
  219. package/dist/src/services/lessons.js +11 -0
  220. package/dist/src/services/lessons.js.map +1 -0
  221. package/dist/src/services/projection.d.ts +21 -0
  222. package/dist/src/services/projection.js +10 -0
  223. package/dist/src/services/projection.js.map +1 -0
  224. package/dist/src/services/readiness.d.ts +4 -0
  225. package/dist/src/services/readiness.js +35 -0
  226. package/dist/src/services/readiness.js.map +1 -0
  227. package/dist/src/services/recipes.d.ts +15 -0
  228. package/dist/src/services/recipes.js +42 -0
  229. package/dist/src/services/recipes.js.map +1 -0
  230. package/dist/src/services/recovery.d.ts +19 -0
  231. package/dist/src/services/recovery.js +9 -0
  232. package/dist/src/services/recovery.js.map +1 -0
  233. package/dist/src/services/review.d.ts +15 -0
  234. package/dist/src/services/review.js +9 -0
  235. package/dist/src/services/review.js.map +1 -0
  236. package/dist/src/storage/journal-recovery.d.ts +10 -0
  237. package/dist/src/storage/journal-recovery.js +33 -0
  238. package/dist/src/storage/journal-recovery.js.map +1 -0
  239. package/dist/src/storage/journal.d.ts +12 -0
  240. package/dist/src/storage/journal.js +82 -0
  241. package/dist/src/storage/journal.js.map +1 -0
  242. package/dist/src/storage/migrations.d.ts +22 -0
  243. package/dist/src/storage/migrations.js +107 -0
  244. package/dist/src/storage/migrations.js.map +1 -0
  245. package/dist/src/storage/repository-identity.d.ts +11 -0
  246. package/dist/src/storage/repository-identity.js +67 -0
  247. package/dist/src/storage/repository-identity.js.map +1 -0
  248. package/dist/src/storage/resources.d.ts +66 -0
  249. package/dist/src/storage/resources.js +148 -0
  250. package/dist/src/storage/resources.js.map +1 -0
  251. package/dist/src/tools/evidence.d.ts +8 -0
  252. package/dist/src/tools/evidence.js +9 -0
  253. package/dist/src/tools/evidence.js.map +1 -0
  254. package/dist/src/tools/integrate.d.ts +13 -0
  255. package/dist/src/tools/integrate.js +90 -0
  256. package/dist/src/tools/integrate.js.map +1 -0
  257. package/dist/src/tools/result.d.ts +9 -0
  258. package/dist/src/tools/result.js +2 -0
  259. package/dist/src/tools/result.js.map +1 -0
  260. package/dist/src/tools/verify.d.ts +13 -0
  261. package/dist/src/tools/verify.js +61 -0
  262. package/dist/src/tools/verify.js.map +1 -0
  263. package/dist/src/tools/workflow.d.ts +8 -0
  264. package/dist/src/tools/workflow.js +65 -0
  265. package/dist/src/tools/workflow.js.map +1 -0
  266. package/dist/src/workflows/direct.d.ts +9 -0
  267. package/dist/src/workflows/direct.js +2 -0
  268. package/dist/src/workflows/direct.js.map +1 -0
  269. package/dist/src/workflows/implement.d.ts +2 -0
  270. package/dist/src/workflows/implement.js +4 -0
  271. package/dist/src/workflows/implement.js.map +1 -0
  272. package/dist/src/workflows/plan.d.ts +17 -0
  273. package/dist/src/workflows/plan.js +6 -0
  274. package/dist/src/workflows/plan.js.map +1 -0
  275. package/dist/src/workflows/research.d.ts +15 -0
  276. package/dist/src/workflows/research.js +2 -0
  277. package/dist/src/workflows/research.js.map +1 -0
  278. package/dist/src/workflows/review.d.ts +15 -0
  279. package/dist/src/workflows/review.js +2 -0
  280. package/dist/src/workflows/review.js.map +1 -0
  281. package/dist/src/workflows/verify.d.ts +9 -0
  282. package/dist/src/workflows/verify.js +2 -0
  283. package/dist/src/workflows/verify.js.map +1 -0
  284. package/dist/tests/acceptance.test.d.ts +1 -0
  285. package/dist/tests/acceptance.test.js +27 -0
  286. package/dist/tests/acceptance.test.js.map +1 -0
  287. package/dist/tests/agents.test.d.ts +1 -0
  288. package/dist/tests/agents.test.js +369 -0
  289. package/dist/tests/agents.test.js.map +1 -0
  290. package/dist/tests/candidates.test.d.ts +1 -0
  291. package/dist/tests/candidates.test.js +60 -0
  292. package/dist/tests/candidates.test.js.map +1 -0
  293. package/dist/tests/core.test.d.ts +1 -0
  294. package/dist/tests/core.test.js +39 -0
  295. package/dist/tests/core.test.js.map +1 -0
  296. package/dist/tests/daemon.test.d.ts +1 -0
  297. package/dist/tests/daemon.test.js +157 -0
  298. package/dist/tests/daemon.test.js.map +1 -0
  299. package/dist/tests/dashboard.test.d.ts +1 -0
  300. package/dist/tests/dashboard.test.js +414 -0
  301. package/dist/tests/dashboard.test.js.map +1 -0
  302. package/dist/tests/directory-selector.test.d.ts +1 -0
  303. package/dist/tests/directory-selector.test.js +93 -0
  304. package/dist/tests/directory-selector.test.js.map +1 -0
  305. package/dist/tests/doctor.test.d.ts +1 -0
  306. package/dist/tests/doctor.test.js +32 -0
  307. package/dist/tests/doctor.test.js.map +1 -0
  308. package/dist/tests/install.test.d.ts +1 -0
  309. package/dist/tests/install.test.js +101 -0
  310. package/dist/tests/install.test.js.map +1 -0
  311. package/dist/tests/integration.test.d.ts +1 -0
  312. package/dist/tests/integration.test.js +49 -0
  313. package/dist/tests/integration.test.js.map +1 -0
  314. package/dist/tests/journal.test.d.ts +1 -0
  315. package/dist/tests/journal.test.js +50 -0
  316. package/dist/tests/journal.test.js.map +1 -0
  317. package/dist/tests/model-role-assignment.test.d.ts +1 -0
  318. package/dist/tests/model-role-assignment.test.js +294 -0
  319. package/dist/tests/model-role-assignment.test.js.map +1 -0
  320. package/dist/tests/omb-runtime.test.d.ts +1 -0
  321. package/dist/tests/omb-runtime.test.js +554 -0
  322. package/dist/tests/omb-runtime.test.js.map +1 -0
  323. package/dist/tests/omb-session-actions.test.d.ts +1 -0
  324. package/dist/tests/omb-session-actions.test.js +191 -0
  325. package/dist/tests/omb-session-actions.test.js.map +1 -0
  326. package/dist/tests/omb-settings.test.d.ts +1 -0
  327. package/dist/tests/omb-settings.test.js +82 -0
  328. package/dist/tests/omb-settings.test.js.map +1 -0
  329. package/dist/tests/omp-contract.test.d.ts +1 -0
  330. package/dist/tests/omp-contract.test.js +362 -0
  331. package/dist/tests/omp-contract.test.js.map +1 -0
  332. package/dist/tests/process.test.d.ts +1 -0
  333. package/dist/tests/process.test.js +12 -0
  334. package/dist/tests/process.test.js.map +1 -0
  335. package/dist/tests/psmux-windows.test.d.ts +1 -0
  336. package/dist/tests/psmux-windows.test.js +105 -0
  337. package/dist/tests/psmux-windows.test.js.map +1 -0
  338. package/dist/tests/recovery.test.d.ts +1 -0
  339. package/dist/tests/recovery.test.js +9 -0
  340. package/dist/tests/recovery.test.js.map +1 -0
  341. package/dist/tests/resources.test.d.ts +1 -0
  342. package/dist/tests/resources.test.js +55 -0
  343. package/dist/tests/resources.test.js.map +1 -0
  344. package/dist/tests/session-activity.test.d.ts +1 -0
  345. package/dist/tests/session-activity.test.js +159 -0
  346. package/dist/tests/session-activity.test.js.map +1 -0
  347. package/dist/tests/setup-ui.test.d.ts +1 -0
  348. package/dist/tests/setup-ui.test.js +37 -0
  349. package/dist/tests/setup-ui.test.js.map +1 -0
  350. package/dist/tests/storage-integrity.test.d.ts +1 -0
  351. package/dist/tests/storage-integrity.test.js +88 -0
  352. package/dist/tests/storage-integrity.test.js.map +1 -0
  353. package/dist/tests/tmux.test.d.ts +1 -0
  354. package/dist/tests/tmux.test.js +239 -0
  355. package/dist/tests/tmux.test.js.map +1 -0
  356. package/dist/tests/tray.test.d.ts +1 -0
  357. package/dist/tests/tray.test.js +37 -0
  358. package/dist/tests/tray.test.js.map +1 -0
  359. package/dist/tests/verification.test.d.ts +1 -0
  360. package/dist/tests/verification.test.js +61 -0
  361. package/dist/tests/verification.test.js.map +1 -0
  362. package/dist/tests/workflow-features.test.d.ts +1 -0
  363. package/dist/tests/workflow-features.test.js +82 -0
  364. package/dist/tests/workflow-features.test.js.map +1 -0
  365. package/dist/tests/workflow-safety.test.d.ts +1 -0
  366. package/dist/tests/workflow-safety.test.js +57 -0
  367. package/dist/tests/workflow-safety.test.js.map +1 -0
  368. package/docs/compatibility/baseline.json +1 -1
  369. package/docs/releases/0.6.2.md +2 -2
  370. package/docs/releases/0.6.3.md +27 -0
  371. package/package.json +1 -1
@@ -0,0 +1,517 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef, useState } from "react";
3
+ import { Box, Text, useApp, useInput, useStdin, useStdout, useWindowSize, render } from "ink";
4
+ import { listOmbSessions, ombSessionDisplayName } from "../omp/omb-sessions.js";
5
+ import { activitySummary, compactAge } from "../omp/session-activity.js";
6
+ import { directoryKeyAction, expandDirectoryPath, filterDirectoryOptions, readDirectoryCompletions, readDirectoryOptions } from "./directory-selector.js";
7
+ import { OMP_THEME } from "./omp-theme.js";
8
+ const STATUS_STYLE = {
9
+ working: { label: "WORKING", mark: "●", color: OMP_THEME.success },
10
+ waiting: { label: "WAITING", mark: "◐", color: OMP_THEME.warning },
11
+ connected: { label: "CONNECTED", mark: "◉", color: OMP_THEME.accent },
12
+ disconnected: { label: "DISCONNECTED", mark: "◌", color: OMP_THEME.muted },
13
+ stopped: { label: "STOPPED", mark: "○", color: OMP_THEME.border },
14
+ };
15
+ /** Display order for counts and ranking, mirroring STATE_RANK in omb-sessions.ts. */
16
+ const HUB_STATES = ["working", "waiting", "connected", "disconnected", "stopped"];
17
+ /** One-line meaning of each state, used by the help overlay. */
18
+ const STATUS_HINT = {
19
+ working: "the journal shows unfinished work",
20
+ waiting: "attached and waiting for your input",
21
+ connected: "attached with nothing in flight",
22
+ disconnected: "no client attached and nothing in flight",
23
+ stopped: "no host observed and the journal went silent",
24
+ };
25
+ function activityColor(activity) {
26
+ if (activity?.phase === "stalled")
27
+ return OMP_THEME.error;
28
+ if (activity?.stale)
29
+ return OMP_THEME.muted;
30
+ return OMP_THEME.accentSoft;
31
+ }
32
+ const short = (value, width) => value.length <= width ? value : width <= 1 ? value.slice(0, width) : `${value.slice(0, width - 1)}…`;
33
+ function age(session) {
34
+ const timestamp = session.lastAttachedAt ?? session.createdAt;
35
+ if (!timestamp)
36
+ return "age unknown";
37
+ const seconds = Math.max(0, Math.floor(Date.now() / 1000) - timestamp);
38
+ if (seconds < 60)
39
+ return "just now";
40
+ if (seconds < 3600)
41
+ return `${Math.floor(seconds / 60)}m ago`;
42
+ if (seconds < 86400)
43
+ return `${Math.floor(seconds / 3600)}h ago`;
44
+ return `${Math.floor(seconds / 86400)}d ago`;
45
+ }
46
+ function workspacePath(session) {
47
+ return session.cwd === "?" ? session.project : session.cwd;
48
+ }
49
+ function visibleSessions(allSessions, settings) {
50
+ return [...(settings.showStoppedSessions ? allSessions : allSessions.filter(session => session.state !== "stopped"))]
51
+ .sort((a, b) => workspacePath(a).localeCompare(workspacePath(b)) || HUB_STATES.indexOf(a.state) - HUB_STATES.indexOf(b.state) || a.name.localeCompare(b.name));
52
+ }
53
+ function Header({ sessions }) {
54
+ const working = sessions.filter(session => session.state === "working").length;
55
+ const waiting = sessions.filter(session => session.state === "waiting").length;
56
+ return (_jsxs(Box, { borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 2, justifyContent: "space-between", children: [_jsxs(Text, { bold: true, color: OMP_THEME.accent, children: ["\u03C0 ", _jsx(Text, { color: OMP_THEME.text, children: "BIZAR SESSIONS" })] }), _jsxs(Text, { color: OMP_THEME.muted, children: [sessions.length, " total ", _jsxs(Text, { color: OMP_THEME.success, children: ["\u00B7 ", working, " working"] }), " ", _jsxs(Text, { color: OMP_THEME.warning, children: ["\u00B7 ", waiting, " waiting"] })] })] }));
57
+ }
58
+ function SessionRow({ session, selected, width }) {
59
+ const status = STATUS_STYLE[session.state];
60
+ const activity = session.activity;
61
+ const displayName = ombSessionDisplayName(session);
62
+ return (_jsxs(Box, { width: "100%", paddingX: 1, backgroundColor: selected ? OMP_THEME.selectedBackground : undefined, justifyContent: "space-between", children: [_jsx(Box, { justifyContent: "space-between", children: _jsxs(Text, { color: selected ? OMP_THEME.text : status.color, bold: selected, children: [selected ? _jsx(Text, { color: OMP_THEME.accent, children: "\u203A" }) : " ", " ", status.mark, " ", short(displayName, Math.max(18, width - (width >= 100 ? 58 : 24)))] }) }), _jsxs(Text, { color: selected ? OMP_THEME.accent : status.color, children: [" ", status.label] }), width >= 100 && _jsxs(Text, { color: activityColor(activity), children: [" \u00B7 ", short(activitySummary(activity), 24), " ", _jsxs(Text, { color: OMP_THEME.muted, children: ["\u00B7 ", activity ? compactAge(activity.ageSeconds) : age(session)] })] })] }));
63
+ }
64
+ function sessionWindow(sessions, selected, rows) {
65
+ if (!sessions.length)
66
+ return { start: 0, visible: [] };
67
+ const budget = Math.max(3, rows - 14);
68
+ const lineCost = (items) => items.reduce((cost, session, index) => cost + 1 + (index === 0 || workspacePath(items[index - 1]) !== workspacePath(session) ? 1 : 0), 0);
69
+ let start = Math.max(0, Math.min(selected, sessions.length - 1));
70
+ let end = start + 1;
71
+ while (true) {
72
+ let changed = false;
73
+ if (start > 0 && lineCost(sessions.slice(start - 1, end)) <= budget) {
74
+ start -= 1;
75
+ changed = true;
76
+ }
77
+ if (end < sessions.length && lineCost(sessions.slice(start, end + 1)) <= budget) {
78
+ end += 1;
79
+ changed = true;
80
+ }
81
+ if (!changed)
82
+ break;
83
+ }
84
+ return { start, visible: sessions.slice(start, end) };
85
+ }
86
+ function SessionList({ sessions, selected, rows, width }) {
87
+ const { start, visible } = sessionWindow(sessions, selected, rows);
88
+ let previousWorkspace;
89
+ return (_jsx(Box, { flexDirection: "column", flexGrow: 1, borderStyle: "round", borderColor: OMP_THEME.border, paddingX: 1, children: _jsxs(Box, { flexDirection: "column", flexGrow: 1, backgroundColor: OMP_THEME.surface, paddingX: 1, children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsx(Text, { bold: true, color: OMP_THEME.accent, children: "SESSIONS" }), _jsx(Text, { color: OMP_THEME.muted, children: sessions.length ? `${start + 1}-${start + visible.length} of ${sessions.length}` : "empty" })] }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: visible.length === 0 ? (_jsx(Box, { flexDirection: "column", paddingY: 2, children: _jsx(Text, { color: OMP_THEME.warning, children: "No sessions. Press n to create one." }) })) : visible.map((session, offset) => {
90
+ const index = start + offset;
91
+ const workspace = workspacePath(session);
92
+ const workspaceChanged = workspace !== previousWorkspace;
93
+ if (workspaceChanged)
94
+ previousWorkspace = workspace;
95
+ return (_jsxs(Box, { flexDirection: "column", children: [workspaceChanged && _jsxs(Text, { color: OMP_THEME.muted, children: [" ", short(session.project, 20), " \u00B7 ", short(workspace, Math.max(20, width - 24))] }), _jsx(SessionRow, { session: session, selected: index === selected, width: width })] }, session.name));
96
+ }) })] }) }));
97
+ }
98
+ function SelectedSummary({ session, width }) {
99
+ if (!session)
100
+ return _jsx(Box, { borderStyle: "round", borderColor: OMP_THEME.border, paddingX: 1, children: _jsx(Text, { color: OMP_THEME.muted, children: "No session selected" }) });
101
+ const status = STATUS_STYLE[session.state];
102
+ const activity = session.activity;
103
+ return (_jsxs(Box, { borderStyle: "round", borderColor: OMP_THEME.border, paddingX: 1, justifyContent: "space-between", children: [_jsxs(Text, { children: [_jsx(Text, { bold: true, children: short(ombSessionDisplayName(session), Math.max(16, Math.floor(width * .3))) }), " ", _jsxs(Text, { color: status.color, children: [status.mark, " ", status.label] })] }), _jsx(Text, { color: activityColor(activity), children: short(activitySummary(activity), Math.max(16, Math.floor(width * .3))) }), _jsx(Text, { color: OMP_THEME.muted, children: session.hosted === false ? "history only" : short(session.cwd, Math.max(18, Math.floor(width * .28))) })] }));
104
+ }
105
+ function Footer() {
106
+ return (_jsx(Box, { borderStyle: "round", borderColor: OMP_THEME.border, paddingX: 1, children: _jsxs(Text, { color: OMP_THEME.muted, children: [_jsx(Text, { color: OMP_THEME.accent, children: "Enter" }), " open ", _jsx(Text, { color: OMP_THEME.accent, children: "n" }), " new ", _jsx(Text, { color: OMP_THEME.accent, children: "e" }), " rename ", _jsx(Text, { color: OMP_THEME.accent, children: "d" }), " delete ", _jsx(Text, { color: OMP_THEME.accent, children: "s" }), " settings ", _jsx(Text, { color: OMP_THEME.accent, children: "?" }), " more ", _jsx(Text, { color: OMP_THEME.accent, children: "q" }), " quit"] }) }));
107
+ }
108
+ function Modal({ title, children, width, columns }) {
109
+ return (_jsxs(Box, { position: "absolute", top: 2, left: Math.max(0, Math.floor((columns - width) / 2)), width: width, flexDirection: "column", borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 2, paddingY: 1, children: [_jsxs(Text, { bold: true, color: OMP_THEME.accent, children: ["\u03C0 \u203A ", title] }), _jsx(Box, { marginTop: 1, width: "100%", flexDirection: "column", backgroundColor: OMP_THEME.surface, children: children })] }));
110
+ }
111
+ function NewSessionModal({ cwd, sessions, projectsFolder, initialDirectory: workspaceDirectory, selected, columns, rows, onSubmit, onClose, }) {
112
+ const initialDirectory = workspaceDirectory?.trim()
113
+ ? expandDirectoryPath(workspaceDirectory, cwd)
114
+ : projectsFolder.trim()
115
+ ? expandDirectoryPath(projectsFolder, cwd)
116
+ : selected?.cwd && selected.cwd !== "?" ? selected.cwd : cwd;
117
+ const [mode, setMode] = useState("directory");
118
+ const [directoryPath, setDirectoryPath] = useState(initialDirectory);
119
+ const [directoryQuery, setDirectoryQuery] = useState("");
120
+ const [directoryOptions, setDirectoryOptions] = useState([]);
121
+ const [pathOptions, setPathOptions] = useState([]);
122
+ const [directorySelected, setDirectorySelected] = useState(0);
123
+ const [projectCwd, setProjectCwd] = useState(initialDirectory);
124
+ const [task, setTask] = useState("");
125
+ const [sessionId, setSessionId] = useState("");
126
+ const [loading, setLoading] = useState(true);
127
+ const recentPaths = useMemo(() => [...new Set(sessions.map(session => session.cwd).filter(path => path && path !== "?"))], [sessions]);
128
+ const recentPathsKey = useMemo(() => [...recentPaths].sort().join("\0"), [recentPaths]);
129
+ const filteredDirectories = useMemo(() => filterDirectoryOptions([...pathOptions, ...directoryOptions], directoryQuery), [directoryOptions, directoryQuery, pathOptions]);
130
+ const visibleCount = Math.max(4, Math.min(9, rows - 14));
131
+ const directoryStart = Math.max(0, Math.min(Math.max(0, filteredDirectories.length - visibleCount), directorySelected - Math.floor(visibleCount / 2)));
132
+ const visibleDirectories = filteredDirectories.slice(directoryStart, directoryStart + visibleCount);
133
+ const selectedDirectory = filteredDirectories[directorySelected];
134
+ useEffect(() => {
135
+ let active = true;
136
+ setLoading(true);
137
+ void readDirectoryOptions(directoryPath, recentPaths, "", projectsFolder).then(options => {
138
+ if (!active)
139
+ return;
140
+ setDirectoryOptions(options);
141
+ setDirectorySelected(0);
142
+ setLoading(false);
143
+ });
144
+ return () => { active = false; };
145
+ }, [directoryPath, projectsFolder, recentPathsKey]);
146
+ useEffect(() => {
147
+ setDirectorySelected(0);
148
+ if (!directoryQuery.includes("/") && !directoryQuery.startsWith("~")) {
149
+ setPathOptions([]);
150
+ return;
151
+ }
152
+ let active = true;
153
+ void readDirectoryOptions(directoryPath, [], directoryQuery).then(options => {
154
+ if (active)
155
+ setPathOptions(options.filter(option => option.kind === "path"));
156
+ });
157
+ return () => { active = false; };
158
+ }, [directoryPath, directoryQuery]);
159
+ useEffect(() => {
160
+ setDirectorySelected(value => Math.min(value, Math.max(0, filteredDirectories.length - 1)));
161
+ }, [filteredDirectories.length]);
162
+ const selectDirectory = (option) => {
163
+ if (!option)
164
+ return;
165
+ if (option.kind === "parent") {
166
+ setDirectoryPath(option.path);
167
+ setDirectoryQuery("");
168
+ return;
169
+ }
170
+ setProjectCwd(option.path);
171
+ setMode("task");
172
+ };
173
+ const openDirectory = (option) => {
174
+ if (!option || option.kind === "current")
175
+ return;
176
+ setDirectoryPath(option.path);
177
+ setDirectoryQuery("");
178
+ };
179
+ const goToParent = () => {
180
+ const parent = directoryPath.replace(/[\\/]$/, "").split(/[\\/]/).slice(0, -1).join("/") || "/";
181
+ if (parent !== directoryPath) {
182
+ setDirectoryPath(parent);
183
+ setDirectoryQuery("");
184
+ }
185
+ };
186
+ useInput((input, key) => {
187
+ if (key.escape) {
188
+ if (mode === "name")
189
+ setMode("task");
190
+ else if (mode === "task")
191
+ setMode("directory");
192
+ else
193
+ onClose();
194
+ return;
195
+ }
196
+ if (mode === "directory") {
197
+ const action = directoryKeyAction(input, key);
198
+ if (action.kind === "cursor-up")
199
+ setDirectorySelected(value => Math.max(0, value - 1));
200
+ else if (action.kind === "cursor-down")
201
+ setDirectorySelected(value => Math.min(Math.max(0, filteredDirectories.length - 1), value + 1));
202
+ else if (action.kind === "select")
203
+ selectDirectory(selectedDirectory);
204
+ else if (action.kind === "open")
205
+ openDirectory(selectedDirectory);
206
+ else if (action.kind === "parent")
207
+ goToParent();
208
+ else if (action.kind === "backspace") {
209
+ setDirectoryQuery(value => value.slice(0, -1));
210
+ setDirectorySelected(0);
211
+ }
212
+ else if (action.kind === "clear") {
213
+ setDirectoryQuery("");
214
+ setDirectorySelected(0);
215
+ }
216
+ else if (action.kind === "type") {
217
+ setDirectoryQuery(value => `${value}${action.input}`);
218
+ setDirectorySelected(0);
219
+ }
220
+ return;
221
+ }
222
+ const updateText = (setter) => {
223
+ if (key.backspace || (key.ctrl && input === "h"))
224
+ setter(value => value.slice(0, -1));
225
+ else if (key.ctrl && input === "u")
226
+ setter("");
227
+ else if (input && !key.ctrl && !key.meta && input >= " ")
228
+ setter(value => `${value}${input}`);
229
+ };
230
+ if (mode === "task") {
231
+ if (key.return)
232
+ setMode("name");
233
+ else
234
+ updateText(setTask);
235
+ }
236
+ else if (key.return) {
237
+ onSubmit({ projectCwd, task: task.trim(), sessionId: sessionId.trim() });
238
+ }
239
+ else {
240
+ updateText(setSessionId);
241
+ }
242
+ });
243
+ const width = Math.min(92, Math.max(54, columns - 6));
244
+ return (_jsx(Modal, { title: "NEW BIZAR SESSION", width: width, columns: columns, children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: mode === "directory" ? OMP_THEME.accent : OMP_THEME.text, bold: mode === "directory", children: "1 Project directory" }), mode === "directory" ? (_jsxs(_Fragment, { children: [_jsxs(Box, { borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 1, marginTop: 1, children: [_jsx(Text, { color: OMP_THEME.accent, children: "\u2315 " }), _jsx(Text, { color: OMP_THEME.text, children: directoryQuery || "Type to fuzzy-search directories" })] }), _jsx(Text, { color: OMP_THEME.muted, children: directoryPath }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: loading ? _jsx(Text, { color: OMP_THEME.warning, children: "Scanning directories\u2026" }) : visibleDirectories.length === 0 ? _jsx(Text, { color: OMP_THEME.warning, children: "No matching directories. Type an absolute path to jump." }) : visibleDirectories.map((option, offset) => {
245
+ const index = directoryStart + offset;
246
+ const isSelected = index === directorySelected;
247
+ return (_jsxs(Box, { width: "100%", flexDirection: "column", backgroundColor: isSelected ? OMP_THEME.selectedBackground : undefined, children: [_jsxs(Text, { color: isSelected ? OMP_THEME.text : option.kind === "recent" ? OMP_THEME.success : OMP_THEME.muted, bold: isSelected, children: [isSelected ? _jsx(Text, { color: OMP_THEME.accent, children: "\u203A" }) : " ", " ", option.kind === "parent" ? "↰" : option.kind === "recent" ? "●" : option.kind === "current" ? "◆" : option.kind === "projects-root" ? "▣" : option.kind === "project" ? "◇" : "□", " ", option.label] }), isSelected && _jsxs(Text, { color: OMP_THEME.muted, children: [" ", option.detail ?? option.path] })] }, `${option.kind}:${option.path}`));
248
+ }) }), _jsxs(Text, { color: OMP_THEME.muted, children: [filteredDirectories.length ? `${directoryStart + 1}-${Math.min(directoryStart + visibleCount, filteredDirectories.length)} of ${filteredDirectories.length}` : "0 directories", " \u00B7 Enter choose \u2192 open \u2190 parent \u00B7 fuzzy matches scan all subdirectories"] })] })) : (_jsxs(Text, { color: OMP_THEME.muted, children: [" ", projectCwd] })), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: mode === "task" ? OMP_THEME.accent : OMP_THEME.text, bold: mode === "task", children: "2 Initial task" }), mode === "task" ? _jsxs(Box, { borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 1, children: [_jsx(Text, { color: OMP_THEME.accent, children: "\u203A " }), _jsx(Text, { children: task || "Optional task description" })] }) : _jsxs(Text, { color: OMP_THEME.muted, children: [" ", task || "Optional"] })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: mode === "name" ? OMP_THEME.accent : OMP_THEME.text, bold: mode === "name", children: "3 Session name" }), mode === "name" ? _jsxs(Box, { borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 1, children: [_jsx(Text, { color: OMP_THEME.accent, children: "\u203A " }), _jsx(Text, { children: sessionId || "Blank generates a name" })] }) : _jsxs(Text, { color: OMP_THEME.muted, children: [" ", sessionId || "Generated automatically"] })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: OMP_THEME.muted, children: "Type to search or edit \u00B7 Up/Down select \u00B7 Enter continue \u00B7 Esc back" }), _jsx(Text, { color: OMP_THEME.warning, children: mode === "directory" ? projectsFolder ? `Global sessions are listed below; ${projectsFolder} is indexed here.` : "Global sessions are listed below; configure a projects folder in settings for faster picking." : mode === "name" ? "Enter starts the durable OMB host." : "Enter moves to the session name." })] })] }) }));
249
+ }
250
+ function SettingsModal({ cwd, settings, selected, columns, onToggle, onMove, onSetProjectsFolder, onSave, onClose }) {
251
+ const options = [
252
+ ["Project directory root", settings.projectsFolder || "not set"],
253
+ ["Attach plain omb to latest live session", settings.autoAttachLatest],
254
+ ["Enable mouse scrolling in OMB sessions", settings.mouseScrolling],
255
+ ["Show stopped sessions in this view", settings.showStoppedSessions],
256
+ ["Enable system tray icon", settings.trayEnabled],
257
+ ];
258
+ const [editingFolder, setEditingFolder] = useState(false);
259
+ const [folderInput, setFolderInput] = useState(settings.projectsFolder);
260
+ const [folderSuggestions, setFolderSuggestions] = useState([]);
261
+ const [folderSuggestionSelected, setFolderSuggestionSelected] = useState(0);
262
+ useEffect(() => {
263
+ if (!editingFolder) {
264
+ setFolderSuggestions([]);
265
+ return;
266
+ }
267
+ let active = true;
268
+ void readDirectoryCompletions(folderInput, cwd).then(options => {
269
+ if (!active)
270
+ return;
271
+ setFolderSuggestions(options);
272
+ setFolderSuggestionSelected(0);
273
+ });
274
+ return () => { active = false; };
275
+ }, [cwd, editingFolder, folderInput]);
276
+ useInput((input, key) => {
277
+ if (editingFolder) {
278
+ if (key.escape) {
279
+ setFolderInput(settings.projectsFolder);
280
+ setEditingFolder(false);
281
+ }
282
+ else if (key.upArrow)
283
+ setFolderSuggestionSelected(value => Math.max(0, value - 1));
284
+ else if (key.downArrow)
285
+ setFolderSuggestionSelected(value => Math.min(Math.max(0, folderSuggestions.length - 1), value + 1));
286
+ else if (key.tab || key.rightArrow) {
287
+ const suggestion = folderSuggestions[folderSuggestionSelected];
288
+ if (suggestion)
289
+ setFolderInput(suggestion.path);
290
+ }
291
+ else if (key.return) {
292
+ onSetProjectsFolder(folderSuggestions[folderSuggestionSelected]?.path ?? folderInput.trim());
293
+ setEditingFolder(false);
294
+ }
295
+ else if (key.backspace || (key.ctrl && input === "h"))
296
+ setFolderInput(value => value.slice(0, -1));
297
+ else if (key.ctrl && input === "u")
298
+ setFolderInput("");
299
+ else if (input && !key.ctrl && !key.meta && input >= " ")
300
+ setFolderInput(value => `${value}${input}`);
301
+ return;
302
+ }
303
+ if (key.upArrow)
304
+ onMove(Math.max(0, selected - 1));
305
+ else if (key.downArrow)
306
+ onMove(Math.min(options.length - 1, selected + 1));
307
+ else if (key.escape || input === "q")
308
+ onClose();
309
+ else if (input === "s")
310
+ onSave();
311
+ else if (input === " " || key.return) {
312
+ if (selected === 0)
313
+ setEditingFolder(true);
314
+ else
315
+ onToggle();
316
+ }
317
+ });
318
+ return (_jsxs(Modal, { title: "OMB SETTINGS", width: Math.min(70, Math.max(46, columns - 6)), columns: columns, children: [options.map(([label, enabled], index) => (_jsx(Box, { width: "100%", backgroundColor: index === selected ? OMP_THEME.selectedBackground : OMP_THEME.surface, children: _jsxs(Text, { color: index === selected ? OMP_THEME.text : OMP_THEME.muted, children: [index === selected ? _jsx(Text, { color: OMP_THEME.accent, children: "\u203A" }) : " ", " ", typeof enabled === "boolean" ? `[${enabled ? "on " : "off"}]` : enabled, " ", label] }) }, label))), selected === 0 && (_jsxs(Box, { marginTop: 1, borderStyle: "round", borderColor: editingFolder ? OMP_THEME.accent : OMP_THEME.border, backgroundColor: OMP_THEME.surface, paddingX: 1, children: [_jsx(Text, { color: OMP_THEME.accent, children: "\u2315 " }), _jsx(Text, { children: editingFolder ? folderInput || "Type ~/projects or an absolute path" : settings.projectsFolder || "Press Enter to set a projects folder" })] })), selected === 0 && editingFolder && folderSuggestions.length > 0 && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: OMP_THEME.muted, children: "Autocomplete" }), folderSuggestions.slice(0, 5).map((suggestion, index) => (_jsx(Box, { width: "100%", backgroundColor: index === folderSuggestionSelected ? OMP_THEME.selectedBackground : OMP_THEME.surface, children: _jsxs(Text, { color: index === folderSuggestionSelected ? OMP_THEME.text : OMP_THEME.muted, children: [index === folderSuggestionSelected ? _jsx(Text, { color: OMP_THEME.accent, children: "\u203A" }) : " ", " ", suggestion.path] }) }, suggestion.path)))] })), _jsx(Text, { children: " " }), _jsx(Text, { color: OMP_THEME.muted, children: editingFolder ? "Type path Enter apply Ctrl-U clear Esc cancel" : "Up/Down select Space/Enter edit s save Esc cancel" }), _jsx(Text, { color: OMP_THEME.warning, children: selected === 0 ? "Child directories from this folder appear in the new-session picker." : selected === 2 ? "Mouse mode applies to existing OMB sessions when saved." : selected === 4 ? "The tray starts a native menu for supported Linux, macOS, and Windows hosts." : "The hub always shows every Bizar session across projects." })] }));
319
+ }
320
+ function HelpModal({ columns, onClose }) {
321
+ useInput((input, key) => { if (key.escape || key.return || input === "q")
322
+ onClose(); });
323
+ return (_jsxs(Modal, { title: "OMB AGENTS SHORTCUTS", width: Math.min(64, Math.max(42, columns - 6)), columns: columns, children: [_jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "Enter" }), " open the selected live session"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "n" }), " create a session"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "Mouse" }), " click rows and scroll the list"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "e" }), " rename the selected session"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "d" }), " delete after confirmation"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "s" }), " open launcher settings"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "r" }), " refresh the session list"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "q / Esc" }), " leave this view"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: OMP_THEME.muted, children: "STATES" }), HUB_STATES.map(state => (_jsxs(Text, { color: OMP_THEME.muted, children: [_jsxs(Text, { color: STATUS_STYLE[state].color, children: [STATUS_STYLE[state].mark, " ", state] }), " ", STATUS_HINT[state]] }, state))), _jsx(Text, { color: OMP_THEME.muted, children: "Enter or Esc returns." })] }));
324
+ }
325
+ function DeleteModal({ session, columns, onConfirm, onClose }) {
326
+ useInput((input, key) => {
327
+ if (input.toLowerCase() === "y")
328
+ onConfirm();
329
+ else if (key.escape || key.return || input.length > 0)
330
+ onClose();
331
+ });
332
+ return (_jsxs(Modal, { title: session.hosted === false ? "REMOVE SESSION?" : "DELETE SESSION?", width: Math.min(64, Math.max(42, columns - 6)), columns: columns, children: [_jsx(Text, { bold: true, children: ombSessionDisplayName(session) }), _jsxs(Text, { color: STATUS_STYLE[session.state].color, children: [STATUS_STYLE[session.state].mark, " ", STATUS_STYLE[session.state].label] }), _jsx(Text, { color: OMP_THEME.muted, children: short(session.cwd, 54) }), _jsx(Text, { children: " " }), _jsx(Text, { color: OMP_THEME.warning, children: session.hosted === false ? "This removes the stale history entry." : "This stops OMP and removes the tmux session." }), _jsxs(Text, { children: ["Press ", _jsx(Text, { color: OMP_THEME.error, bold: true, children: "y" }), " to confirm, any other key to cancel."] })] }));
333
+ }
334
+ function RenameModal({ session, columns, onConfirm, onClose }) {
335
+ const [value, setValue] = useState(session.id);
336
+ useInput((input, key) => {
337
+ if (key.escape)
338
+ onClose();
339
+ else if (key.return)
340
+ onConfirm(value.trim() || session.id);
341
+ else if (key.backspace || (key.ctrl && input === "h"))
342
+ setValue(current => current.slice(0, -1));
343
+ else if (key.ctrl && input === "u")
344
+ setValue("");
345
+ else if (input && !key.ctrl && !key.meta && input >= " ")
346
+ setValue(current => `${current}${input}`);
347
+ });
348
+ return (_jsxs(Modal, { title: "RENAME SESSION", width: Math.min(64, Math.max(42, columns - 6)), columns: columns, children: [_jsx(Text, { color: OMP_THEME.muted, children: short(session.cwd, 54) }), _jsxs(Box, { marginTop: 1, borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 1, children: [_jsx(Text, { color: OMP_THEME.accent, children: "\u203A " }), _jsx(Text, { children: value || "Type a session name" })] }), _jsx(Text, { children: " " }), _jsx(Text, { color: OMP_THEME.muted, children: "Enter save Ctrl-U clear Esc cancel" })] }));
349
+ }
350
+ /** Enable SGR mouse reporting while the hub owns the alternate screen. */
351
+ function useTerminalMouse(onMouse) {
352
+ const { stdin } = useStdin();
353
+ const { stdout } = useStdout();
354
+ const onMouseRef = useRef(onMouse);
355
+ useEffect(() => { onMouseRef.current = onMouse; }, [onMouse]);
356
+ useEffect(() => {
357
+ if (!stdin.isTTY)
358
+ return;
359
+ const enable = "\u001b[?1000h\u001b[?1006h";
360
+ const disable = "\u001b[?1000l\u001b[?1006l";
361
+ stdout.write(enable);
362
+ let buffer = "";
363
+ const pattern = /\u001b\[<(\d+);(\d+);(\d+)([mM])/g;
364
+ const onData = (chunk) => {
365
+ buffer += chunk.toString();
366
+ pattern.lastIndex = 0;
367
+ let consumed = 0;
368
+ let match;
369
+ while ((match = pattern.exec(buffer))) {
370
+ consumed = pattern.lastIndex;
371
+ onMouseRef.current({ button: Number(match[1]), x: Number(match[2]), y: Number(match[3]), release: match[4] === "m" });
372
+ }
373
+ const remainder = buffer.slice(consumed);
374
+ const escape = remainder.lastIndexOf("\u001b");
375
+ buffer = escape >= 0 ? remainder.slice(escape) : "";
376
+ if (buffer.length > 64)
377
+ buffer = buffer.slice(-64);
378
+ };
379
+ stdin.on("data", onData);
380
+ return () => {
381
+ stdin.off("data", onData);
382
+ stdout.write(disable);
383
+ };
384
+ }, [stdin, stdout]);
385
+ }
386
+ function sessionMouseIndex(sessions, selected, rows, y) {
387
+ const { start, visible } = sessionWindow(sessions, selected, rows);
388
+ // Header, one-row gap, list border, and list title precede the first group.
389
+ let line = 7;
390
+ let previousWorkspace;
391
+ for (const [offset, session] of visible.entries()) {
392
+ if (workspacePath(session) !== previousWorkspace) {
393
+ line += 1;
394
+ previousWorkspace = workspacePath(session);
395
+ }
396
+ if (y === line)
397
+ return start + offset;
398
+ line += 1;
399
+ }
400
+ return undefined;
401
+ }
402
+ function AgentsApp({ cwd, env, sessions: initialSessions, settings: initialSettings, initialSelectedName, openNewSessionOnStart = false, onAction }) {
403
+ const { columns, rows } = useWindowSize();
404
+ const [allSessions, setAllSessions] = useState(initialSessions);
405
+ const [settings, setSettings] = useState(initialSettings);
406
+ const [selectedName, setSelectedName] = useState(initialSelectedName ?? initialSessions[0]?.name);
407
+ const [newSessionDirectory, setNewSessionDirectory] = useState();
408
+ const [overlay, setOverlay] = useState(openNewSessionOnStart ? "new" : undefined);
409
+ const [overlaySelected, setOverlaySelected] = useState(0);
410
+ const [draftSettings, setDraftSettings] = useState(initialSettings);
411
+ const refreshSequence = useRef(0);
412
+ const { exit } = useApp();
413
+ const sessions = useMemo(() => visibleSessions(allSessions, settings), [allSessions, settings]);
414
+ const selected = Math.max(0, sessions.findIndex(session => session.name === selectedName));
415
+ const selectedSession = sessions[selected];
416
+ const refresh = async (current = settings) => {
417
+ const sequence = ++refreshSequence.current;
418
+ const next = await listOmbSessions(cwd, env, { includeStopped: current.showStoppedSessions });
419
+ if (sequence === refreshSequence.current)
420
+ setAllSessions(next);
421
+ };
422
+ useEffect(() => {
423
+ const timer = setInterval(() => { void refresh(); }, 3000);
424
+ return () => clearInterval(timer);
425
+ }, [cwd, env, settings.showStoppedSessions]);
426
+ useEffect(() => {
427
+ if (sessions.length === 0) {
428
+ setSelectedName(undefined);
429
+ }
430
+ else if (!selectedName || !sessions.some(session => session.name === selectedName)) {
431
+ setSelectedName(sessions[0]?.name);
432
+ }
433
+ }, [sessions, selectedName]);
434
+ const finish = (action) => { onAction(action); exit(); };
435
+ const openNewSession = (workspacePath) => {
436
+ setNewSessionDirectory(workspacePath);
437
+ setOverlay("new");
438
+ };
439
+ const selectSession = (index) => {
440
+ const session = sessions[index];
441
+ if (!session)
442
+ return;
443
+ setSelectedName(session.name);
444
+ };
445
+ useTerminalMouse(event => {
446
+ if (overlay || event.release)
447
+ return;
448
+ if (event.button === 64 || event.button === 65) {
449
+ selectSession(Math.max(0, Math.min(Math.max(0, sessions.length - 1), selected + (event.button === 64 ? -1 : 1))));
450
+ return;
451
+ }
452
+ if (event.button !== 0)
453
+ return;
454
+ const index = sessionMouseIndex(sessions, selected, rows, event.y);
455
+ if (index === undefined)
456
+ return;
457
+ const session = sessions[index];
458
+ if (session?.name === selectedName && session.hosted !== false && session.state !== "stopped")
459
+ finish({ type: "attach", session });
460
+ else
461
+ selectSession(index);
462
+ });
463
+ useInput((input, key) => {
464
+ if (overlay)
465
+ return;
466
+ if (key.ctrl && input === "c") {
467
+ finish({ type: "quit" });
468
+ return;
469
+ }
470
+ if (key.escape || input === "q") {
471
+ finish({ type: "quit" });
472
+ return;
473
+ }
474
+ if (key.upArrow || input === "k")
475
+ selectSession(Math.max(0, selected - 1));
476
+ else if (key.downArrow || input === "j")
477
+ selectSession(Math.min(Math.max(0, sessions.length - 1), selected + 1));
478
+ else if (key.return && selectedSession && selectedSession.hosted !== false && selectedSession.state !== "stopped")
479
+ finish({ type: "attach", session: selectedSession });
480
+ else if (input === "n")
481
+ openNewSession(selectedSession?.cwd === "?" ? undefined : selectedSession?.cwd);
482
+ else if (input === "e" && selectedSession && selectedSession.hosted !== false && selectedSession.state !== "stopped")
483
+ setOverlay("rename");
484
+ else if (input === "d" && selectedSession) {
485
+ setOverlay("delete");
486
+ }
487
+ else if (input === "r") {
488
+ void refresh();
489
+ }
490
+ else if (input === "?")
491
+ setOverlay("help");
492
+ else if (input === "s") {
493
+ setDraftSettings(settings);
494
+ setOverlaySelected(0);
495
+ setOverlay("settings");
496
+ }
497
+ });
498
+ return (_jsxs(Box, { flexDirection: "column", width: "100%", minHeight: Math.max(12, rows - 1), paddingX: 1, children: [_jsx(Header, { sessions: sessions }), _jsx(Box, { flexGrow: 1, marginTop: 1, children: _jsx(SessionList, { sessions: sessions, selected: selected, rows: rows, width: Math.max(34, columns - 4) }) }), _jsx(SelectedSummary, { session: selectedSession, width: Math.max(34, columns - 4) }), _jsx(Footer, {}), overlay === "new" && (_jsx(NewSessionModal, { cwd: cwd, sessions: allSessions, projectsFolder: settings.projectsFolder, initialDirectory: newSessionDirectory, selected: selectedSession, columns: columns, rows: rows, onSubmit: value => finish({ type: "new", ...value }), onClose: () => setOverlay(undefined) })), overlay === "help" && _jsx(HelpModal, { columns: columns, onClose: () => setOverlay(undefined) }), overlay === "delete" && selectedSession && _jsx(DeleteModal, { session: selectedSession, columns: columns, onConfirm: () => finish({ type: "delete", session: selectedSession, nextSessionName: sessions[selected - 1]?.name ?? sessions[selected + 1]?.name }), onClose: () => setOverlay(undefined) }), overlay === "rename" && selectedSession && _jsx(RenameModal, { session: selectedSession, columns: columns, onConfirm: value => finish({ type: "rename", session: selectedSession, nextId: value }), onClose: () => setOverlay(undefined) }), overlay === "settings" && (_jsx(SettingsModal, { cwd: cwd, settings: draftSettings, selected: overlaySelected, onMove: setOverlaySelected, columns: columns, onToggle: () => {
499
+ if (overlaySelected === 0)
500
+ return;
501
+ const field = overlaySelected === 1 ? "autoAttachLatest" : overlaySelected === 2 ? "mouseScrolling" : overlaySelected === 3 ? "showStoppedSessions" : "trayEnabled";
502
+ setDraftSettings(value => ({ ...value, [field]: !value[field] }));
503
+ }, onSetProjectsFolder: value => setDraftSettings(current => ({ ...current, projectsFolder: value })), onSave: () => {
504
+ setSettings(draftSettings);
505
+ void refresh(draftSettings);
506
+ finish({ type: "settings", settings: draftSettings });
507
+ }, onClose: () => setOverlay(undefined) }))] }));
508
+ }
509
+ export async function runInkAgentsHub(cwd, env, sessions, settings, initialSelectedName, openNewSession = false) {
510
+ let action = { type: "quit" };
511
+ const app = render(_jsx(AgentsApp, { cwd: cwd, env: env, sessions: sessions, settings: settings, initialSelectedName: initialSelectedName, openNewSessionOnStart: openNewSession, onAction: value => { action = value; } }), {
512
+ alternateScreen: true,
513
+ });
514
+ await app.waitUntilExit();
515
+ return action;
516
+ }
517
+ //# sourceMappingURL=agents-ink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-ink.js","sourceRoot":"","sources":["../../../src/cli/agents-ink.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import { type OmbSettings } from "../omp/omb-settings.js";
3
+ import { type OmbSessionInfo } from "../omp/omb-sessions.js";
4
+ interface HubRenderOptions {
5
+ currentCwd?: string;
6
+ maxVisible?: number;
7
+ notice?: string;
8
+ }
9
+ export declare const AGENTS_USAGE = "omb agents [--new]\n\n Keyboard-first session hub across every project: attach, start, rename, and\n stop Bizar-owned sessions, and edit settings (tray, stopped-session rows).\n \"omb hub\" is an alias.\n\n --new open the new-session picker immediately";
10
+ export declare function renderAgentsHub(sessions: OmbSessionInfo[], selected: number, options?: HubRenderOptions): string;
11
+ export declare function renderSettingsOverlay(settings: OmbSettings, selected: number): string;
12
+ /** Run the keyboard-first cross-project session manager. */
13
+ export declare function runAgentsHub(cwd?: string, _args?: string[], env?: NodeJS.ProcessEnv): Promise<number>;
14
+ export {};