very-happy-cli 0.2.192 → 0.2.193

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 (208) hide show
  1. package/dist/{AcpBackend-CGHTDJd9.mjs → AcpBackend-B4PwjqHt.mjs} +3 -3
  2. package/dist/{AcpBackend-BQO4ShOy.cjs → AcpBackend-DtJCgftG.cjs} +3 -3
  3. package/dist/{AcpSessionManager-G0xD6Jbq.mjs → AcpSessionManager-BzKWgkdP.mjs} +2 -2
  4. package/dist/{AcpSessionManager-LlUMmcpB.cjs → AcpSessionManager-D4qshX_H.cjs} +2 -2
  5. package/dist/{BasePermissionHandler-N6Ip3tFt.cjs → BasePermissionHandler-5iG-cvA2.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-BmTIg376.mjs → BasePermissionHandler-DV6UM6e9.mjs} +1 -1
  7. package/dist/{account-CCVT-HO_.mjs → account-Dco_nGT4.mjs} +84 -27
  8. package/dist/{account-DtaouikP.cjs → account-DvpA60oU.cjs} +84 -27
  9. package/dist/{accountService-Dd9uqde2.mjs → accountService-Cd7bnkfd.mjs} +369 -19
  10. package/dist/{accountService-Bddy0zwL.cjs → accountService-CuUSJDhP.cjs} +369 -19
  11. package/dist/{acpSessionResume-BnHDk5eD.cjs → acpSessionResume-Bk9mjXZ9.cjs} +1 -1
  12. package/dist/{acpSessionResume-BWEUxNtC.mjs → acpSessionResume-TQwN9ZZE.mjs} +1 -1
  13. package/dist/{agentHome-B0VnjkZW.mjs → agentHome-Bep8semY.mjs} +4 -4
  14. package/dist/{agentHome-CqQ29YY7.cjs → agentHome-c2dlgcw1.cjs} +4 -4
  15. package/dist/{api-hMDsC6Wg.cjs → api-CBE_a88I.cjs} +10 -10
  16. package/dist/{api-_LeBScjg.mjs → api-DUfunY3x.mjs} +10 -10
  17. package/dist/{apiMachine-CqW2m6Zr.cjs → apiMachine-BqtG0IWm.cjs} +19 -18
  18. package/dist/{apiMachine-CgRldeJ6.mjs → apiMachine-CU_bw5nV.mjs} +19 -18
  19. package/dist/{attachmentContent-BEeT2J5n.cjs → attachmentContent-B3AzuYqk.cjs} +2 -2
  20. package/dist/{attachmentContent-CyptLIfq.mjs → attachmentContent-KNIZxwlu.mjs} +2 -2
  21. package/dist/{auth-CFQikywl.mjs → auth-CZ7pKS-j.mjs} +8 -8
  22. package/dist/{auth-C9NvNHhL.cjs → auth-DCjxpI6Z.cjs} +5 -5
  23. package/dist/{auth-CA1OClsW.cjs → auth-SJ_dPw7H.cjs} +8 -8
  24. package/dist/{auth-DL8_J9vu.mjs → auth-jN5dNqTO.mjs} +5 -5
  25. package/dist/{auto-uQOxlxLp.cjs → auto-B_59RYH1.cjs} +23 -21
  26. package/dist/{auto-CKI05w1D.mjs → auto-DC0Sq-qB.mjs} +23 -21
  27. package/dist/{bootstrap-DaZ0Np7X.mjs → bootstrap-B3gMpU9e.mjs} +2 -2
  28. package/dist/{bootstrap-DsZGc69k.cjs → bootstrap-CoJu9VnB.cjs} +2 -2
  29. package/dist/{browser-BUIaSHK2.mjs → browser-LHW2hBH8.mjs} +1 -1
  30. package/dist/{browser-Ft0ASDm7.cjs → browser-v1pdPP1E.cjs} +1 -1
  31. package/dist/{claudeAccountEnv-ON24i0qv.mjs → claudeAccountEnv-BL1pR_37.mjs} +2 -1
  32. package/dist/{claudeAccountEnv-BOBpJ3k8.cjs → claudeAccountEnv-CEX_EMZr.cjs} +2 -1
  33. package/dist/{claudeLocal-B1ZVtryl.mjs → claudeLocal-BZUgA5G2.mjs} +5 -5
  34. package/dist/{claudeLocal-BMf9t4Fa.cjs → claudeLocal-BrzM2RBI.cjs} +5 -5
  35. package/dist/{claudeLocalLauncher-Bp8bqF4y.mjs → claudeLocalLauncher-A0AQyHFi.mjs} +10 -10
  36. package/dist/{claudeLocalLauncher-C8TeJcfF.cjs → claudeLocalLauncher-XAMpXUM7.cjs} +10 -10
  37. package/dist/{claudeSessionFork-YiktY55n.cjs → claudeSessionFork-Mhn2fYe_.cjs} +1 -1
  38. package/dist/{claudeSessionFork-8AA47z8Y.mjs → claudeSessionFork-_GwIlmMB.mjs} +1 -1
  39. package/dist/{client-Cxlp_D4I.mjs → client-7RnI9J0W.mjs} +2 -2
  40. package/dist/{client-Bm4oKvW7.mjs → client-Bde4QVIn.mjs} +4 -2
  41. package/dist/{client-D8XROyZc.cjs → client-CJr8Pjwm.cjs} +4 -2
  42. package/dist/{client-Crh8_cNx.cjs → client-D2GWkd-T.cjs} +2 -2
  43. package/dist/{client-CFHZfh9x.cjs → client-DLlnmAPL.cjs} +4 -4
  44. package/dist/{client-BmPaBnDK.mjs → client-DwbhrX6D.mjs} +4 -4
  45. package/dist/codex/happyMcpStdioBridge.cjs +16 -16
  46. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  47. package/dist/codexAccount-BDQjRbtI.cjs +1028 -0
  48. package/dist/codexAccount-NOX5pmQf.mjs +1015 -0
  49. package/dist/{codexAppServerClient-BWJbLCQn.mjs → codexAppServerClient-B3QJV6Ey.mjs} +18 -7
  50. package/dist/{codexAppServerClient-q8GHQhyC.cjs → codexAppServerClient-DWEsZUC4.cjs} +18 -7
  51. package/dist/{codexCommand-BgpGg-Zy.cjs → codexCommand-Bg8AmxVm.cjs} +187 -57
  52. package/dist/{codexCommand-BfXfRQr4.mjs → codexCommand-D1xlj4sT.mjs} +188 -58
  53. package/dist/{codexTermination-CVUF0X75.cjs → codexTermination-ByX9GcEJ.cjs} +1 -1
  54. package/dist/{codexTermination-s9fd1gkA.mjs → codexTermination-CaWAVQjZ.mjs} +1 -1
  55. package/dist/{config-BAjyTyYp.cjs → config-B2GGbiTv.cjs} +3 -3
  56. package/dist/{config-BF8XgLyc.mjs → config-C2XYEwXz.mjs} +3 -3
  57. package/dist/{configuration-CXEVKAyF.cjs → configuration-BBK0rmmj.cjs} +1 -1
  58. package/dist/{configuration-IhRiLDVe.mjs → configuration-ThKBP_zY.mjs} +1 -1
  59. package/dist/{connect-LZh1gr08.mjs → connect-BirnCl9q.mjs} +13 -13
  60. package/dist/{connect-rCS56arw.cjs → connect-C3tZs_NC.cjs} +13 -13
  61. package/dist/{context-DO6F5YwH.mjs → context-C0EFLnOg.mjs} +1 -1
  62. package/dist/{context-3_S_mWz9.cjs → context-wDp0aZBK.cjs} +1 -1
  63. package/dist/{controlClient-8ILulwjc.mjs → controlClient-Ckl8N1MS.mjs} +3 -3
  64. package/dist/{controlClient-j7p5p3_7.cjs → controlClient-DwWTns3A.cjs} +3 -3
  65. package/dist/{createSessionMetadata-DwdD_uVo.cjs → createSessionMetadata-DqZ6h02H.cjs} +2 -2
  66. package/dist/{createSessionMetadata-oyaTZm1b.mjs → createSessionMetadata-vug4Cv8z.mjs} +2 -2
  67. package/dist/{daemonAccounts-BCjDgoNt.cjs → daemonAccounts-CpGDY_4k.cjs} +4 -1
  68. package/dist/{daemonAccounts-BJgt6IJe.mjs → daemonAccounts-DwPwKxvv.mjs} +5 -2
  69. package/dist/{defaultPermissionMode-BFShzF55.cjs → defaultPermissionMode-BakXiqRr.cjs} +1 -1
  70. package/dist/{defaultPermissionMode-Lt3PUCwY.mjs → defaultPermissionMode-DF5AfeBb.mjs} +1 -1
  71. package/dist/{deterministicJson-Dfp-7wUZ.mjs → deterministicJson-BzX94gi3.mjs} +13 -13
  72. package/dist/{deterministicJson-DUN0v3St.cjs → deterministicJson-t33SsuRC.cjs} +13 -13
  73. package/dist/{doctor-FgUYTbAT.cjs → doctor-B9ug1LZb.cjs} +7 -7
  74. package/dist/{doctor-B_UwMcVT.mjs → doctor-C1zyOSXw.mjs} +7 -7
  75. package/dist/{downloadTarget-C0d6jRx-.mjs → downloadTarget-Baslc6jW.mjs} +6 -6
  76. package/dist/{downloadTarget-BrrQEDxg.cjs → downloadTarget-T1id2Gh6.cjs} +6 -6
  77. package/dist/{ensureDaemonRunning-KUMFfIil.mjs → ensureDaemonRunning-C6ERYK-O.mjs} +5 -5
  78. package/dist/{ensureDaemonRunning-Cq4FYI5Q.cjs → ensureDaemonRunning-CoAg11Zi.cjs} +5 -5
  79. package/dist/{handleResumeCommand-BGhVo3QH.mjs → handleResumeCommand-CrlqDuz7.mjs} +5 -5
  80. package/dist/{handleResumeCommand-Cl9GIL5F.cjs → handleResumeCommand-DPi-sPm7.cjs} +5 -5
  81. package/dist/{index-CZaLMmPC.cjs → index-B1swQJUS.cjs} +4 -4
  82. package/dist/{index-CQ_hLLCj.cjs → index-B2dJA8VG.cjs} +3 -3
  83. package/dist/{index-BzAYnYct.cjs → index-BUFrKZeQ.cjs} +198 -108
  84. package/dist/{index-JQDyJ3Li.mjs → index-BbdV2mzy.mjs} +3 -3
  85. package/dist/{index-BjXjMhGY.mjs → index-BcSPg3c5.mjs} +4 -4
  86. package/dist/{index-D8ODb0_U.cjs → index-Bkslzin5.cjs} +42 -42
  87. package/dist/{index-v5EmjT8l.mjs → index-Cn73rdtQ.mjs} +4 -4
  88. package/dist/{index-DYD3GM1m.mjs → index-D1YnIih6.mjs} +195 -109
  89. package/dist/{index-Ca1Tt96A.mjs → index-fZO4nF6e.mjs} +43 -43
  90. package/dist/{index-CRipkiqo.cjs → index-rocrvOYG.cjs} +4 -4
  91. package/dist/index.cjs +2 -2
  92. package/dist/index.mjs +2 -2
  93. package/dist/{install-ClUA9tbC.cjs → install-CArXjPfW.cjs} +3 -3
  94. package/dist/{install-D6EHRtAN.mjs → install-CChhyV2G.mjs} +3 -3
  95. package/dist/lib.cjs +12 -12
  96. package/dist/lib.d.cts +97 -25
  97. package/dist/lib.d.mts +97 -25
  98. package/dist/lib.mjs +12 -12
  99. package/dist/{lidState-CZOXXdzv.mjs → lidState-B6yYKjNK.mjs} +1 -1
  100. package/dist/{lidState-DqoN7zH4.cjs → lidState-B_v6qgfE.cjs} +1 -1
  101. package/dist/{localHappyAgentAuth-YHxDZ4x4.mjs → localHappyAgentAuth-KRlg_aI0.mjs} +1 -1
  102. package/dist/{localHappyAgentAuth-BnGCpHRX.cjs → localHappyAgentAuth-jJH0n67S.cjs} +1 -1
  103. package/dist/{logger-8su64lqR.cjs → logger-CX3x2eI4.cjs} +2 -2
  104. package/dist/{logger-Fd_rNvgd.mjs → logger-JV7-4Q_6.mjs} +2 -2
  105. package/dist/{machineMetadata-1HIIC7Bc.mjs → machineMetadata-D5-SW9kv.mjs} +3 -3
  106. package/dist/{machineMetadata-DYXt3p6u.cjs → machineMetadata-DhZuM0iB.cjs} +3 -3
  107. package/dist/{main-C_GrcYkn.cjs → main-1x1HGQEy.cjs} +47 -47
  108. package/dist/{main-BI6GIzUL.mjs → main-CFOdXbPD.mjs} +47 -47
  109. package/dist/{mcp-BycIv9oQ.cjs → mcp-BnKBSEh7.cjs} +18 -18
  110. package/dist/{mcp-XGoxywno.mjs → mcp-R6lMcFLO.mjs} +18 -18
  111. package/dist/{mirrorProtocol-DXT3rv7T.mjs → mirrorProtocol-CD4ntuZJ.mjs} +3 -3
  112. package/dist/{mirrorProtocol-DVnB8EO8.cjs → mirrorProtocol-DO-KtvAL.cjs} +3 -3
  113. package/dist/{package-6KkRAops.mjs → package-Bw3H6VLn.mjs} +7 -7
  114. package/dist/{package-iuLlSiSF.cjs → package-uzlvxa5S.cjs} +7 -7
  115. package/dist/{panels-B5Di2zb2.mjs → panels-BamhZCoZ.mjs} +5 -5
  116. package/dist/{panels-0C89q0Tu.cjs → panels-C46FxjmH.cjs} +5 -5
  117. package/dist/{peerTools-CANTX_mG.cjs → peerTools-D-VNNFw-.cjs} +5 -5
  118. package/dist/{peerTools-CKJ-IDM4.mjs → peerTools-WtRgTSqG.mjs} +5 -5
  119. package/dist/{persistence-DWcHe035.mjs → persistence-Cg4sfjQV.mjs} +2 -2
  120. package/dist/{persistence-B4ttN-fR.cjs → persistence-CsmAgN-C.cjs} +2 -2
  121. package/dist/{piRunnerArgs-Bl5GpBoN.mjs → piRunnerArgs-BbaAQvb4.mjs} +1 -1
  122. package/dist/{piRunnerArgs-BOkfxyak.cjs → piRunnerArgs-vnFygygF.cjs} +1 -1
  123. package/dist/{piRuntime-BhwxzdQf.mjs → piRuntime-Bid7TBf5.mjs} +1 -1
  124. package/dist/{piRuntime-DzrIiZU8.cjs → piRuntime-C2uj5Ucx.cjs} +1 -1
  125. package/dist/{piTerminal-BdS7ol7v.cjs → piTerminal-Ckpjfoqa.cjs} +20 -20
  126. package/dist/{piTerminal-DnA2CbGr.mjs → piTerminal-CqxgrI13.mjs} +20 -20
  127. package/dist/{pushNotifications-BqFoLye2.cjs → pushNotifications-BCg7YAiu.cjs} +3 -3
  128. package/dist/{pushNotifications-DkQ0yvFs.mjs → pushNotifications-BbE-qV9I.mjs} +3 -3
  129. package/dist/{query-BRJYSkb1.mjs → query-Bfr9O_62.mjs} +1 -1
  130. package/dist/{query-BQ4br3yn.cjs → query-vQ-HG394.cjs} +1 -1
  131. package/dist/{rateLimitReporter-DK5SQuCc.cjs → rateLimitReporter-BZ8x0-6-.cjs} +3 -3
  132. package/dist/{rateLimitReporter-BRbYkmuP.mjs → rateLimitReporter-CAz7VMw4.mjs} +3 -3
  133. package/dist/{rateLimitWindows-DBfiuYeg.cjs → rateLimitWindows-BZl6GMwQ.cjs} +1 -1
  134. package/dist/{rateLimitWindows-Da5AR-4u.mjs → rateLimitWindows-CRARnKaI.mjs} +1 -1
  135. package/dist/{registerCommonHandlers-m6pxxf2J.cjs → registerCommonHandlers-CZGmrPbT.cjs} +2 -2
  136. package/dist/{registerCommonHandlers-yQ7Ru-l0.mjs → registerCommonHandlers-Cj3Nl9y-.mjs} +2 -2
  137. package/dist/{registerKillSessionHandler-BDNpi7YO.mjs → registerKillSessionHandler-Bg9t45Ub.mjs} +6 -6
  138. package/dist/{registerKillSessionHandler-BAOIa_Fs.cjs → registerKillSessionHandler-C3EDnW4F.cjs} +6 -6
  139. package/dist/{remoteSessionClient-CZ7aaNgj.mjs → remoteSessionClient--0vfA7I5.mjs} +5 -5
  140. package/dist/{remoteSessionClient-iJMXRN_D.cjs → remoteSessionClient-CcSP24Zq.cjs} +5 -5
  141. package/dist/{reportProgressTool-DfQhPu0s.mjs → reportProgressTool-DVru7jc_.mjs} +3 -3
  142. package/dist/{reportProgressTool-DpFs7pSe.cjs → reportProgressTool-Ddg1yVq2.cjs} +3 -3
  143. package/dist/{run-p-xp1_HY.cjs → run-BTrIT_jU.cjs} +178 -847
  144. package/dist/{run-CwN28mcj.mjs → run-HtvH6BLi.mjs} +176 -845
  145. package/dist/{runClaude-DRKtAGTm.mjs → runClaude-DsHTk5Bu.mjs} +25 -25
  146. package/dist/{runClaude-D6U1Z575.cjs → runClaude-ipjwAHPI.cjs} +25 -25
  147. package/dist/{runClaudeDeps-Dkofokgb.cjs → runClaudeDeps-BKpwL6ln.cjs} +41 -41
  148. package/dist/{runClaudeDeps-BheVcIlD.mjs → runClaudeDeps-BV3vpeyY.mjs} +46 -46
  149. package/dist/{runGemini-C8q3YCc0.cjs → runGemini-B-G0_7Ab.cjs} +33 -33
  150. package/dist/{runGemini-owbvhFbi.mjs → runGemini-DhjK6_Fp.mjs} +33 -33
  151. package/dist/{runOpenClaw-Dky3-mjO.mjs → runOpenClaw-B6lawk8n.mjs} +18 -18
  152. package/dist/{runOpenClaw-DGeN66-t.cjs → runOpenClaw-BHIo8tkn.cjs} +18 -18
  153. package/dist/{sandbox-D2CPyoCA.cjs → sandbox-BAsO0ILe.cjs} +4 -4
  154. package/dist/{sandbox-sq_wy9Gl.mjs → sandbox-CKb7pCXg.mjs} +4 -4
  155. package/dist/selfCheck-CZ-t1Xzq.mjs +88 -0
  156. package/dist/{selfCheck-BgLvQKSt.cjs → selfCheck-D4VvVZNi.cjs} +39 -39
  157. package/dist/{send-Cd10YhXh.cjs → send-Cz5m39QR.cjs} +8 -8
  158. package/dist/{send-K9vg-8t-.mjs → send-D8ipLKMY.mjs} +8 -8
  159. package/dist/{server-De4W1zuK.mjs → server-CjvgT3N9.mjs} +4 -4
  160. package/dist/{server-DRrV64r0.cjs → server-CySyJKPH.cjs} +6 -6
  161. package/dist/{sessionLock-Dl6i7IgA.mjs → sessionLock-B73fhgQN.mjs} +3 -3
  162. package/dist/{sessionLock-BDtSzzKS.cjs → sessionLock-DdDCuNUs.cjs} +3 -3
  163. package/dist/{sessionOps-gU88-W9F.mjs → sessionOps-C65Iej_C.mjs} +50 -8
  164. package/dist/{sessionOps-DvnEH4PL.cjs → sessionOps-XSEjIqNq.cjs} +50 -8
  165. package/dist/{sessionProvider-CKcIo7KO.mjs → sessionProvider-CLVNkfji.mjs} +11 -9
  166. package/dist/{sessionProvider-CbSZeZrl.cjs → sessionProvider-Dgsty8z_.cjs} +11 -9
  167. package/dist/{sessionScanner-7RtcCeyD.cjs → sessionScanner-D8IVXMMH.cjs} +3 -3
  168. package/dist/{sessionScanner-DR32uSby.mjs → sessionScanner-MW1P9Pm9.mjs} +3 -3
  169. package/dist/{sessions-BvuMjgvJ.cjs → sessions-BKz7gZqg.cjs} +10 -10
  170. package/dist/{sessions-DTt2Eguk.mjs → sessions-Dtk_agUL.mjs} +10 -10
  171. package/dist/{setupOfflineReconnection-BGnvhRfb.mjs → setupOfflineReconnection-Bvdy-2xd.mjs} +2 -2
  172. package/dist/{setupOfflineReconnection-DduOsw6p.cjs → setupOfflineReconnection-DxMiW7OV.cjs} +2 -2
  173. package/dist/{spawn-DMB6rRPA.cjs → spawn-DiPkJcrQ.cjs} +26 -16
  174. package/dist/{spawn-CL3cUc7b.mjs → spawn-Dm4xsZBX.mjs} +26 -16
  175. package/dist/{spawnAgents-CClb7buD.cjs → spawnAgents-B9olJ8xn.cjs} +1 -1
  176. package/dist/{spawnAgents-CRMfOJhh.mjs → spawnAgents-I29H9nO8.mjs} +1 -1
  177. package/dist/{spawnHappyCLI-DJdhX_Qx.cjs → spawnHappyCLI-BYGOUda1.cjs} +1 -1
  178. package/dist/{spawnHappyCLI-Cj_6IICe.mjs → spawnHappyCLI-CnMwzjWX.mjs} +1 -1
  179. package/dist/{startFileWatcher-LnOmVW6H.cjs → startFileWatcher-D14W6gn-.cjs} +1 -1
  180. package/dist/{startFileWatcher-DikVa8kg.mjs → startFileWatcher-DePAY1T5.mjs} +1 -1
  181. package/dist/{startupSessionCreate-CDdaLaMq.mjs → startupSessionCreate-DoK0IvJG.mjs} +3 -3
  182. package/dist/{startupSessionCreate-B3ND-917.cjs → startupSessionCreate-rBHd4tc1.cjs} +3 -3
  183. package/dist/{store-DV__wCvP.cjs → store-CkNa6oj4.cjs} +46 -9
  184. package/dist/{store--XN-7MS0.mjs → store-Vej_738f.mjs} +46 -10
  185. package/dist/{streamRelay-DFdOaLOn.cjs → streamRelay-C0G1HOOd.cjs} +1 -1
  186. package/dist/{streamRelay-sABnxEXq.mjs → streamRelay-C5U-C4GS.mjs} +1 -1
  187. package/dist/{sync-JoEZKRo8.mjs → sync-BP6vnxVP.mjs} +1 -1
  188. package/dist/{sync-_2lsZ1U2.cjs → sync-WYBwkJvG.cjs} +1 -1
  189. package/dist/{systemPrompt-CJEvNCuW.cjs → systemPrompt-BkQlCk5_.cjs} +2 -2
  190. package/dist/{systemPrompt-Zq4HyrZ5.mjs → systemPrompt-aRqBmkpw.mjs} +2 -2
  191. package/dist/{teams-qz4LqKJ2.mjs → teams-CGmC4ygu.mjs} +7 -7
  192. package/dist/{teams-BNZafnrT.cjs → teams-phbpwAGD.cjs} +7 -7
  193. package/dist/{template-LgvBbOna.cjs → template-B9pLEP8v.cjs} +2 -2
  194. package/dist/{template-CJ8BWSsc.mjs → template-CL9EvQLQ.mjs} +2 -2
  195. package/dist/{time-CaUlWSNJ.cjs → time-BTLcO8jp.cjs} +1 -1
  196. package/dist/{time-bzmet4s5.mjs → time-Cw0liIqB.mjs} +1 -1
  197. package/dist/{titleGenerator-BuIIu_JP.cjs → titleGenerator-Y1_7ceJC.cjs} +3 -3
  198. package/dist/{titleGenerator-CbTtJ_1D.mjs → titleGenerator-h6TmFe-c.mjs} +2 -2
  199. package/dist/{todo-CQ_BTf9C.cjs → todo-BxiPiCvB.cjs} +6 -6
  200. package/dist/{todo-DIrVF_Ak.mjs → todo-OKcTC_VC.mjs} +6 -6
  201. package/dist/{tools-cLOjBvPn.mjs → tools-BR-drXZ8.mjs} +3 -2
  202. package/dist/{tools-BnmmFZji.cjs → tools-CcebYtLj.cjs} +3 -2
  203. package/dist/{uninstall-uEEGKB84.cjs → uninstall-CnDeCC-M.cjs} +3 -3
  204. package/dist/{uninstall-C5OuW6dE.mjs → uninstall-D3stWKD2.mjs} +3 -3
  205. package/dist/{wrapperAccount-DXlD3bsO.mjs → wrapperAccount-BkufO_9g.mjs} +5 -4
  206. package/dist/{wrapperAccount-DzoGqS2b.cjs → wrapperAccount-D2A4DuZy.cjs} +6 -3
  207. package/package.json +7 -7
  208. package/dist/selfCheck-vkfrgQ7X.mjs +0 -88
package/dist/lib.d.cts CHANGED
@@ -199,25 +199,6 @@ declare const sessionStreamFrameSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
199
199
  t: z.ZodLiteral<"turn-end">;
200
200
  }, z.core.$strip>], "t">;
201
201
  type SessionStreamFrame = z.infer<typeof sessionStreamFrameSchema>;
202
-
203
- /**
204
- * Runtime context occupancy, never cumulative billing. null after compaction is unknown.
205
- *
206
- * B-727 (specs/2026-10-pi-context-usage.md): `contextWindow` stays required so
207
- * older webs keep rendering; `windowSource` says whether it may be used as a
208
- * denominator. Free strings + read whitelist (iron rule 14): an unknown value
209
- * must not make the whole agentState fail to parse.
210
- */
211
- declare const ContextUsageSchema: z$1.ZodObject<{
212
- source: z$1.ZodLiteral<"pi">;
213
- tokens: z$1.ZodNullable<z$1.ZodNumber>;
214
- contextWindow: z$1.ZodNumber;
215
- updatedAt: z$1.ZodNumber;
216
- windowSource: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
217
- model: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
218
- compactedAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;
219
- }, z$1.core.$strip>;
220
- type ContextUsage = z$1.infer<typeof ContextUsageSchema>;
221
202
  declare const AgentProfileSummarySchema: z$1.ZodObject<{
222
203
  id: z$1.ZodString;
223
204
  label: z$1.ZodString;
@@ -233,6 +214,9 @@ declare const AgentProfileSummarySchema: z$1.ZodObject<{
233
214
  keySource: z$1.ZodOptional<z$1.ZodString>;
234
215
  keyRef: z$1.ZodOptional<z$1.ZodString>;
235
216
  legacy: z$1.ZodOptional<z$1.ZodBoolean>;
217
+ provider: z$1.ZodOptional<z$1.ZodString>;
218
+ email: z$1.ZodOptional<z$1.ZodString>;
219
+ planType: z$1.ZodOptional<z$1.ZodString>;
236
220
  }, z$1.core.$strip>;
237
221
  type AgentProfileSummary = z$1.infer<typeof AgentProfileSummarySchema>;
238
222
  /** `daemonState.agentProfiles` — also the result of `agent-profile-list`. */
@@ -254,8 +238,19 @@ declare const AgentProfilesStateSchema: z$1.ZodObject<{
254
238
  keySource: z$1.ZodOptional<z$1.ZodString>;
255
239
  keyRef: z$1.ZodOptional<z$1.ZodString>;
256
240
  legacy: z$1.ZodOptional<z$1.ZodBoolean>;
241
+ provider: z$1.ZodOptional<z$1.ZodString>;
242
+ email: z$1.ZodOptional<z$1.ZodString>;
243
+ planType: z$1.ZodOptional<z$1.ZodString>;
257
244
  }, z$1.core.$strip>>;
258
245
  defaults: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;
246
+ kinds: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
247
+ codexProviders: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
248
+ id: z$1.ZodString;
249
+ name: z$1.ZodOptional<z$1.ZodString>;
250
+ baseUrl: z$1.ZodOptional<z$1.ZodString>;
251
+ envKey: z$1.ZodOptional<z$1.ZodString>;
252
+ }, z$1.core.$strip>>>;
253
+ features: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
259
254
  }, z$1.core.$strip>;
260
255
  type AgentProfilesState = z$1.infer<typeof AgentProfilesStateSchema>;
261
256
  /**
@@ -277,12 +272,16 @@ declare const SessionAgentProfileSchema: z$1.ZodObject<{
277
272
  }, z$1.core.$strip>;
278
273
  type SessionAgentProfile = z$1.infer<typeof SessionAgentProfileSchema>;
279
274
  /**
280
- * waiting-code → (submit) → exchanging → succeeded | failed.
281
- * canceled / expired (10 min without a code) are terminal too.
275
+ * paste-code (Claude): waiting-code → (submit) → exchanging → succeeded | failed.
276
+ * device-code (Codex): waiting-code (the user enters `userCode` at `url`; nothing
277
+ * to submit) → succeeded | failed.
278
+ * canceled / expired (Claude 10 min without a code, Codex 15 min) are terminal too.
282
279
  */
283
280
  declare const AgentProfileLoginStatusSchema: z$1.ZodObject<{
284
281
  loginId: z$1.ZodString;
285
282
  state: z$1.ZodString;
283
+ flow: z$1.ZodOptional<z$1.ZodString>;
284
+ userCode: z$1.ZodOptional<z$1.ZodString>;
286
285
  url: z$1.ZodOptional<z$1.ZodString>;
287
286
  expiresAt: z$1.ZodOptional<z$1.ZodNumber>;
288
287
  account: z$1.ZodOptional<z$1.ZodObject<{
@@ -300,6 +299,9 @@ declare const AgentProfileLoginStatusSchema: z$1.ZodObject<{
300
299
  keySource: z$1.ZodOptional<z$1.ZodString>;
301
300
  keyRef: z$1.ZodOptional<z$1.ZodString>;
302
301
  legacy: z$1.ZodOptional<z$1.ZodBoolean>;
302
+ provider: z$1.ZodOptional<z$1.ZodString>;
303
+ email: z$1.ZodOptional<z$1.ZodString>;
304
+ planType: z$1.ZodOptional<z$1.ZodString>;
303
305
  }, z$1.core.$strip>>;
304
306
  error: z$1.ZodOptional<z$1.ZodString>;
305
307
  }, z$1.core.$strip>;
@@ -326,6 +328,25 @@ type AgentProfileBindResult = {
326
328
  error?: string;
327
329
  };
328
330
 
331
+ /**
332
+ * Runtime context occupancy, never cumulative billing. null after compaction is unknown.
333
+ *
334
+ * B-727 (specs/2026-10-pi-context-usage.md): `contextWindow` stays required so
335
+ * older webs keep rendering; `windowSource` says whether it may be used as a
336
+ * denominator. Free strings + read whitelist (iron rule 14): an unknown value
337
+ * must not make the whole agentState fail to parse.
338
+ */
339
+ declare const ContextUsageSchema: z$1.ZodObject<{
340
+ source: z$1.ZodLiteral<"pi">;
341
+ tokens: z$1.ZodNullable<z$1.ZodNumber>;
342
+ contextWindow: z$1.ZodNumber;
343
+ updatedAt: z$1.ZodNumber;
344
+ windowSource: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
345
+ model: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
346
+ compactedAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;
347
+ }, z$1.core.$strip>;
348
+ type ContextUsage = z$1.infer<typeof ContextUsageSchema>;
349
+
329
350
  declare const CLAUDE_AUTH_PROBE_VERSION: 1;
330
351
  type ClaudeAuthStatus = 'ok' | 'not-logged-in' | 'unknown' | 'error' | 'claude-missing';
331
352
  type ClaudeAuthDiagnosis = 'keychain-empty-item' | 'store-divergence' | 'no-credentials' | 'credentials-rejected' | 'sdk-binary-missing' | 'probe-timeout' | 'probe-crash';
@@ -721,8 +742,19 @@ declare const DaemonStateSchema: z$1.ZodObject<{
721
742
  keySource: z$1.ZodOptional<z$1.ZodString>;
722
743
  keyRef: z$1.ZodOptional<z$1.ZodString>;
723
744
  legacy: z$1.ZodOptional<z$1.ZodBoolean>;
745
+ provider: z$1.ZodOptional<z$1.ZodString>;
746
+ email: z$1.ZodOptional<z$1.ZodString>;
747
+ planType: z$1.ZodOptional<z$1.ZodString>;
724
748
  }, z$1.core.$strip>>;
725
749
  defaults: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;
750
+ kinds: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
751
+ codexProviders: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
752
+ id: z$1.ZodString;
753
+ name: z$1.ZodOptional<z$1.ZodString>;
754
+ baseUrl: z$1.ZodOptional<z$1.ZodString>;
755
+ envKey: z$1.ZodOptional<z$1.ZodString>;
756
+ }, z$1.core.$strip>>>;
757
+ features: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
726
758
  }, z$1.core.$strip>>;
727
759
  rateLimits: z$1.ZodOptional<z$1.ZodObject<{
728
760
  v: z$1.ZodLiteral<1>;
@@ -2038,18 +2070,27 @@ type AccountCheck = {
2038
2070
  at: number;
2039
2071
  detail?: string;
2040
2072
  };
2073
+ type AccountAgent = 'claude' | 'codex';
2074
+ type AccountKind = 'claude-subscription' | 'claude-api' | 'codex-chatgpt' | 'codex-provider';
2041
2075
  type AccountRecord = {
2042
2076
  label: string;
2043
- agent: 'claude';
2044
- kind: 'claude-subscription' | 'claude-api';
2077
+ agent: AccountAgent;
2078
+ kind: AccountKind;
2045
2079
  createdAt: number;
2046
- /** claude-api */
2080
+ /** claude-api, codex-provider (overrides the config.toml provider's base_url) */
2047
2081
  baseUrl?: string;
2048
2082
  models?: string[];
2049
2083
  /** B-794b: model id → real context window. */
2050
2084
  contextWindows?: Record<string, number>;
2051
- /** claude-api: where the key lives. claude-subscription always uses the stored secret. */
2085
+ /** API kinds: where the key lives. claude-subscription always uses the stored secret. */
2052
2086
  key?: AccountKey;
2087
+ /** codex-provider: the `[model_providers.<id>]` of ~/.codex/config.toml it is based on. */
2088
+ provider?: string;
2089
+ /** codex-provider with an own baseUrl: Codex wire API (default responses). */
2090
+ wireApi?: 'responses' | 'chat';
2091
+ /** codex-chatgpt: from `account/read` after sign-in. */
2092
+ email?: string;
2093
+ planType?: string;
2053
2094
  /** claude-subscription: setup-token expiry (1 year after login). */
2054
2095
  expiresAt?: number;
2055
2096
  check?: AccountCheck;
@@ -2057,6 +2098,14 @@ type AccountRecord = {
2057
2098
  legacy?: true;
2058
2099
  };
2059
2100
 
2101
+ type CodexRpc = {
2102
+ request: (method: string, params: unknown, timeoutMs?: number) => Promise<any>;
2103
+ onNotification: (cb: (method: string, params: any) => void) => void;
2104
+ onExit: (cb: (code: number | null) => void) => void;
2105
+ close: () => void;
2106
+ };
2107
+ type SpawnCodexRpc = (codexHome: string, env: Record<string, string>) => CodexRpc;
2108
+
2060
2109
  /** `stillRunning`: the restart failed and the session's old wrapper is alive (on the old credential). */
2061
2110
  type RestartOutcome = {
2062
2111
  ok: true;
@@ -2072,9 +2121,13 @@ type AccountServiceDeps = {
2072
2121
  now?: () => number;
2073
2122
  daemonPid?: number;
2074
2123
  spawnPty?: SpawnPty;
2124
+ /** B-850b: `codex app-server` for ChatGPT sign-in / checks (test seam). */
2125
+ spawnCodexRpc?: SpawnCodexRpc;
2075
2126
  restartSession?: (sessionId: string) => Promise<RestartOutcome>;
2076
2127
  /** Called after every write so the daemon can republish its state. */
2077
2128
  onChanged?: () => void;
2129
+ /** B-850b: the agent a session runs (from its tracked flavor); unknown → no check. */
2130
+ sessionAgent?: (sessionId: string) => string | null | undefined;
2078
2131
  /** Test seam for the 1-token checks. */
2079
2132
  check?: (record: AccountRecord, secret: string) => Promise<AccountCheck>;
2080
2133
  };
@@ -2084,6 +2137,7 @@ declare class AccountService {
2084
2137
  private readonly env;
2085
2138
  private readonly now;
2086
2139
  private logins;
2140
+ private codexLogins;
2087
2141
  /** loginId → account to (re)write when its token arrives. */
2088
2142
  private readonly loginTargets;
2089
2143
  constructor(deps: AccountServiceDeps);
@@ -2110,6 +2164,7 @@ declare class AccountService {
2110
2164
  setDefault(agent: unknown, accountId: unknown): AgentProfilesState;
2111
2165
  private readSecretFor;
2112
2166
  test(accountId: unknown): Promise<AgentProfileSummary>;
2167
+ private checkCodexProvider;
2113
2168
  private loginManager;
2114
2169
  /** Also the terminal path (`very-happy account login`). */
2115
2170
  storeSubscriptionToken(token: string, target: {
@@ -2117,14 +2172,31 @@ declare class AccountService {
2117
2172
  label?: string;
2118
2173
  }): AgentProfileSummary;
2119
2174
  loginStart(params: unknown): Promise<AgentProfileLoginStatus>;
2175
+ private codexLoginManager;
2176
+ /** loginId → the account a Codex sign-in writes. */
2177
+ private readonly codexLoginTargets;
2178
+ private codexLoginStart;
2179
+ /** A finished ChatGPT sign-in → the account record (new) or its refreshed status (re-login). */
2180
+ storeChatgptAccount(target: {
2181
+ accountId: string;
2182
+ label?: string;
2183
+ isNew: boolean;
2184
+ }, info: {
2185
+ email?: string;
2186
+ planType?: string;
2187
+ }): AgentProfileSummary;
2120
2188
  private loginOp;
2121
2189
  loginSubmit(params: unknown): AgentProfileLoginStatus;
2122
2190
  loginStatus(loginId: unknown): AgentProfileLoginStatus;
2123
2191
  loginCancel(loginId: unknown): AgentProfileLoginStatus;
2124
2192
  dispose(): void;
2193
+ /** B-850d2: waits until finished Codex sign-ins are cleaned up (their app-server gone, a canceled new account's overlay removed). */
2194
+ settleLogins(): Promise<void>;
2125
2195
  /** Validates and writes a session binding (no restart). */
2126
2196
  writeBinding(sessionId: string, accountId: string | null, model?: string): void;
2127
2197
  bind(params: unknown): Promise<AgentProfileBindResult>;
2198
+ /** B-850d: the account a session is bound to (null = machine login, also when unbound). */
2199
+ sessionAccount(sessionId: string): string | null;
2128
2200
  /**
2129
2201
  * Spawn-time choice → the account a NEW session starts on.
2130
2202
  * undefined → the machine default for this agent (none = machine login)
package/dist/lib.d.mts CHANGED
@@ -199,25 +199,6 @@ declare const sessionStreamFrameSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
199
199
  t: z.ZodLiteral<"turn-end">;
200
200
  }, z.core.$strip>], "t">;
201
201
  type SessionStreamFrame = z.infer<typeof sessionStreamFrameSchema>;
202
-
203
- /**
204
- * Runtime context occupancy, never cumulative billing. null after compaction is unknown.
205
- *
206
- * B-727 (specs/2026-10-pi-context-usage.md): `contextWindow` stays required so
207
- * older webs keep rendering; `windowSource` says whether it may be used as a
208
- * denominator. Free strings + read whitelist (iron rule 14): an unknown value
209
- * must not make the whole agentState fail to parse.
210
- */
211
- declare const ContextUsageSchema: z$1.ZodObject<{
212
- source: z$1.ZodLiteral<"pi">;
213
- tokens: z$1.ZodNullable<z$1.ZodNumber>;
214
- contextWindow: z$1.ZodNumber;
215
- updatedAt: z$1.ZodNumber;
216
- windowSource: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
217
- model: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
218
- compactedAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;
219
- }, z$1.core.$strip>;
220
- type ContextUsage = z$1.infer<typeof ContextUsageSchema>;
221
202
  declare const AgentProfileSummarySchema: z$1.ZodObject<{
222
203
  id: z$1.ZodString;
223
204
  label: z$1.ZodString;
@@ -233,6 +214,9 @@ declare const AgentProfileSummarySchema: z$1.ZodObject<{
233
214
  keySource: z$1.ZodOptional<z$1.ZodString>;
234
215
  keyRef: z$1.ZodOptional<z$1.ZodString>;
235
216
  legacy: z$1.ZodOptional<z$1.ZodBoolean>;
217
+ provider: z$1.ZodOptional<z$1.ZodString>;
218
+ email: z$1.ZodOptional<z$1.ZodString>;
219
+ planType: z$1.ZodOptional<z$1.ZodString>;
236
220
  }, z$1.core.$strip>;
237
221
  type AgentProfileSummary = z$1.infer<typeof AgentProfileSummarySchema>;
238
222
  /** `daemonState.agentProfiles` — also the result of `agent-profile-list`. */
@@ -254,8 +238,19 @@ declare const AgentProfilesStateSchema: z$1.ZodObject<{
254
238
  keySource: z$1.ZodOptional<z$1.ZodString>;
255
239
  keyRef: z$1.ZodOptional<z$1.ZodString>;
256
240
  legacy: z$1.ZodOptional<z$1.ZodBoolean>;
241
+ provider: z$1.ZodOptional<z$1.ZodString>;
242
+ email: z$1.ZodOptional<z$1.ZodString>;
243
+ planType: z$1.ZodOptional<z$1.ZodString>;
257
244
  }, z$1.core.$strip>>;
258
245
  defaults: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;
246
+ kinds: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
247
+ codexProviders: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
248
+ id: z$1.ZodString;
249
+ name: z$1.ZodOptional<z$1.ZodString>;
250
+ baseUrl: z$1.ZodOptional<z$1.ZodString>;
251
+ envKey: z$1.ZodOptional<z$1.ZodString>;
252
+ }, z$1.core.$strip>>>;
253
+ features: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
259
254
  }, z$1.core.$strip>;
260
255
  type AgentProfilesState = z$1.infer<typeof AgentProfilesStateSchema>;
261
256
  /**
@@ -277,12 +272,16 @@ declare const SessionAgentProfileSchema: z$1.ZodObject<{
277
272
  }, z$1.core.$strip>;
278
273
  type SessionAgentProfile = z$1.infer<typeof SessionAgentProfileSchema>;
279
274
  /**
280
- * waiting-code → (submit) → exchanging → succeeded | failed.
281
- * canceled / expired (10 min without a code) are terminal too.
275
+ * paste-code (Claude): waiting-code → (submit) → exchanging → succeeded | failed.
276
+ * device-code (Codex): waiting-code (the user enters `userCode` at `url`; nothing
277
+ * to submit) → succeeded | failed.
278
+ * canceled / expired (Claude 10 min without a code, Codex 15 min) are terminal too.
282
279
  */
283
280
  declare const AgentProfileLoginStatusSchema: z$1.ZodObject<{
284
281
  loginId: z$1.ZodString;
285
282
  state: z$1.ZodString;
283
+ flow: z$1.ZodOptional<z$1.ZodString>;
284
+ userCode: z$1.ZodOptional<z$1.ZodString>;
286
285
  url: z$1.ZodOptional<z$1.ZodString>;
287
286
  expiresAt: z$1.ZodOptional<z$1.ZodNumber>;
288
287
  account: z$1.ZodOptional<z$1.ZodObject<{
@@ -300,6 +299,9 @@ declare const AgentProfileLoginStatusSchema: z$1.ZodObject<{
300
299
  keySource: z$1.ZodOptional<z$1.ZodString>;
301
300
  keyRef: z$1.ZodOptional<z$1.ZodString>;
302
301
  legacy: z$1.ZodOptional<z$1.ZodBoolean>;
302
+ provider: z$1.ZodOptional<z$1.ZodString>;
303
+ email: z$1.ZodOptional<z$1.ZodString>;
304
+ planType: z$1.ZodOptional<z$1.ZodString>;
303
305
  }, z$1.core.$strip>>;
304
306
  error: z$1.ZodOptional<z$1.ZodString>;
305
307
  }, z$1.core.$strip>;
@@ -326,6 +328,25 @@ type AgentProfileBindResult = {
326
328
  error?: string;
327
329
  };
328
330
 
331
+ /**
332
+ * Runtime context occupancy, never cumulative billing. null after compaction is unknown.
333
+ *
334
+ * B-727 (specs/2026-10-pi-context-usage.md): `contextWindow` stays required so
335
+ * older webs keep rendering; `windowSource` says whether it may be used as a
336
+ * denominator. Free strings + read whitelist (iron rule 14): an unknown value
337
+ * must not make the whole agentState fail to parse.
338
+ */
339
+ declare const ContextUsageSchema: z$1.ZodObject<{
340
+ source: z$1.ZodLiteral<"pi">;
341
+ tokens: z$1.ZodNullable<z$1.ZodNumber>;
342
+ contextWindow: z$1.ZodNumber;
343
+ updatedAt: z$1.ZodNumber;
344
+ windowSource: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
345
+ model: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
346
+ compactedAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;
347
+ }, z$1.core.$strip>;
348
+ type ContextUsage = z$1.infer<typeof ContextUsageSchema>;
349
+
329
350
  declare const CLAUDE_AUTH_PROBE_VERSION: 1;
330
351
  type ClaudeAuthStatus = 'ok' | 'not-logged-in' | 'unknown' | 'error' | 'claude-missing';
331
352
  type ClaudeAuthDiagnosis = 'keychain-empty-item' | 'store-divergence' | 'no-credentials' | 'credentials-rejected' | 'sdk-binary-missing' | 'probe-timeout' | 'probe-crash';
@@ -721,8 +742,19 @@ declare const DaemonStateSchema: z$1.ZodObject<{
721
742
  keySource: z$1.ZodOptional<z$1.ZodString>;
722
743
  keyRef: z$1.ZodOptional<z$1.ZodString>;
723
744
  legacy: z$1.ZodOptional<z$1.ZodBoolean>;
745
+ provider: z$1.ZodOptional<z$1.ZodString>;
746
+ email: z$1.ZodOptional<z$1.ZodString>;
747
+ planType: z$1.ZodOptional<z$1.ZodString>;
724
748
  }, z$1.core.$strip>>;
725
749
  defaults: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;
750
+ kinds: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
751
+ codexProviders: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
752
+ id: z$1.ZodString;
753
+ name: z$1.ZodOptional<z$1.ZodString>;
754
+ baseUrl: z$1.ZodOptional<z$1.ZodString>;
755
+ envKey: z$1.ZodOptional<z$1.ZodString>;
756
+ }, z$1.core.$strip>>>;
757
+ features: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
726
758
  }, z$1.core.$strip>>;
727
759
  rateLimits: z$1.ZodOptional<z$1.ZodObject<{
728
760
  v: z$1.ZodLiteral<1>;
@@ -2038,18 +2070,27 @@ type AccountCheck = {
2038
2070
  at: number;
2039
2071
  detail?: string;
2040
2072
  };
2073
+ type AccountAgent = 'claude' | 'codex';
2074
+ type AccountKind = 'claude-subscription' | 'claude-api' | 'codex-chatgpt' | 'codex-provider';
2041
2075
  type AccountRecord = {
2042
2076
  label: string;
2043
- agent: 'claude';
2044
- kind: 'claude-subscription' | 'claude-api';
2077
+ agent: AccountAgent;
2078
+ kind: AccountKind;
2045
2079
  createdAt: number;
2046
- /** claude-api */
2080
+ /** claude-api, codex-provider (overrides the config.toml provider's base_url) */
2047
2081
  baseUrl?: string;
2048
2082
  models?: string[];
2049
2083
  /** B-794b: model id → real context window. */
2050
2084
  contextWindows?: Record<string, number>;
2051
- /** claude-api: where the key lives. claude-subscription always uses the stored secret. */
2085
+ /** API kinds: where the key lives. claude-subscription always uses the stored secret. */
2052
2086
  key?: AccountKey;
2087
+ /** codex-provider: the `[model_providers.<id>]` of ~/.codex/config.toml it is based on. */
2088
+ provider?: string;
2089
+ /** codex-provider with an own baseUrl: Codex wire API (default responses). */
2090
+ wireApi?: 'responses' | 'chat';
2091
+ /** codex-chatgpt: from `account/read` after sign-in. */
2092
+ email?: string;
2093
+ planType?: string;
2053
2094
  /** claude-subscription: setup-token expiry (1 year after login). */
2054
2095
  expiresAt?: number;
2055
2096
  check?: AccountCheck;
@@ -2057,6 +2098,14 @@ type AccountRecord = {
2057
2098
  legacy?: true;
2058
2099
  };
2059
2100
 
2101
+ type CodexRpc = {
2102
+ request: (method: string, params: unknown, timeoutMs?: number) => Promise<any>;
2103
+ onNotification: (cb: (method: string, params: any) => void) => void;
2104
+ onExit: (cb: (code: number | null) => void) => void;
2105
+ close: () => void;
2106
+ };
2107
+ type SpawnCodexRpc = (codexHome: string, env: Record<string, string>) => CodexRpc;
2108
+
2060
2109
  /** `stillRunning`: the restart failed and the session's old wrapper is alive (on the old credential). */
2061
2110
  type RestartOutcome = {
2062
2111
  ok: true;
@@ -2072,9 +2121,13 @@ type AccountServiceDeps = {
2072
2121
  now?: () => number;
2073
2122
  daemonPid?: number;
2074
2123
  spawnPty?: SpawnPty;
2124
+ /** B-850b: `codex app-server` for ChatGPT sign-in / checks (test seam). */
2125
+ spawnCodexRpc?: SpawnCodexRpc;
2075
2126
  restartSession?: (sessionId: string) => Promise<RestartOutcome>;
2076
2127
  /** Called after every write so the daemon can republish its state. */
2077
2128
  onChanged?: () => void;
2129
+ /** B-850b: the agent a session runs (from its tracked flavor); unknown → no check. */
2130
+ sessionAgent?: (sessionId: string) => string | null | undefined;
2078
2131
  /** Test seam for the 1-token checks. */
2079
2132
  check?: (record: AccountRecord, secret: string) => Promise<AccountCheck>;
2080
2133
  };
@@ -2084,6 +2137,7 @@ declare class AccountService {
2084
2137
  private readonly env;
2085
2138
  private readonly now;
2086
2139
  private logins;
2140
+ private codexLogins;
2087
2141
  /** loginId → account to (re)write when its token arrives. */
2088
2142
  private readonly loginTargets;
2089
2143
  constructor(deps: AccountServiceDeps);
@@ -2110,6 +2164,7 @@ declare class AccountService {
2110
2164
  setDefault(agent: unknown, accountId: unknown): AgentProfilesState;
2111
2165
  private readSecretFor;
2112
2166
  test(accountId: unknown): Promise<AgentProfileSummary>;
2167
+ private checkCodexProvider;
2113
2168
  private loginManager;
2114
2169
  /** Also the terminal path (`very-happy account login`). */
2115
2170
  storeSubscriptionToken(token: string, target: {
@@ -2117,14 +2172,31 @@ declare class AccountService {
2117
2172
  label?: string;
2118
2173
  }): AgentProfileSummary;
2119
2174
  loginStart(params: unknown): Promise<AgentProfileLoginStatus>;
2175
+ private codexLoginManager;
2176
+ /** loginId → the account a Codex sign-in writes. */
2177
+ private readonly codexLoginTargets;
2178
+ private codexLoginStart;
2179
+ /** A finished ChatGPT sign-in → the account record (new) or its refreshed status (re-login). */
2180
+ storeChatgptAccount(target: {
2181
+ accountId: string;
2182
+ label?: string;
2183
+ isNew: boolean;
2184
+ }, info: {
2185
+ email?: string;
2186
+ planType?: string;
2187
+ }): AgentProfileSummary;
2120
2188
  private loginOp;
2121
2189
  loginSubmit(params: unknown): AgentProfileLoginStatus;
2122
2190
  loginStatus(loginId: unknown): AgentProfileLoginStatus;
2123
2191
  loginCancel(loginId: unknown): AgentProfileLoginStatus;
2124
2192
  dispose(): void;
2193
+ /** B-850d2: waits until finished Codex sign-ins are cleaned up (their app-server gone, a canceled new account's overlay removed). */
2194
+ settleLogins(): Promise<void>;
2125
2195
  /** Validates and writes a session binding (no restart). */
2126
2196
  writeBinding(sessionId: string, accountId: string | null, model?: string): void;
2127
2197
  bind(params: unknown): Promise<AgentProfileBindResult>;
2198
+ /** B-850d: the account a session is bound to (null = machine login, also when unbound). */
2199
+ sessionAccount(sessionId: string): string | null;
2128
2200
  /**
2129
2201
  * Spawn-time choice → the account a NEW session starts on.
2130
2202
  * undefined → the machine default for this agent (none = machine login)
package/dist/lib.mjs CHANGED
@@ -1,9 +1,9 @@
1
- export { A as ApiClient, a as ApiSessionClient } from './api-_LeBScjg.mjs';
2
- export { l as logger } from './logger-Fd_rNvgd.mjs';
3
- export { c as configuration } from './configuration-IhRiLDVe.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient } from './api-DUfunY3x.mjs';
2
+ export { l as logger } from './logger-JV7-4Q_6.mjs';
3
+ export { c as configuration } from './configuration-ThKBP_zY.mjs';
4
4
  export { R as RawJSONLinesSchema } from './types-CkqAACXx.mjs';
5
5
  import 'axios';
6
- import './lidState-CZOXXdzv.mjs';
6
+ import './lidState-B6yYKjNK.mjs';
7
7
  import './authRelay-DhQhkBvX.mjs';
8
8
  import 'node:crypto';
9
9
  import 'tweetnacl';
@@ -11,14 +11,14 @@ import 'os';
11
11
  import 'child_process';
12
12
  import 'node:events';
13
13
  import 'socket.io-client';
14
- import './pushNotifications-DkQ0yvFs.mjs';
14
+ import './pushNotifications-BbE-qV9I.mjs';
15
15
  import 'zod';
16
- import './index-DYD3GM1m.mjs';
16
+ import './index-D1YnIih6.mjs';
17
17
  import '@paralleldrive/cuid2';
18
18
  import './contentLogMetadata-BlWI0egu.mjs';
19
19
  import './limits-DIo7rEBR.mjs';
20
- import './time-bzmet4s5.mjs';
21
- import './registerCommonHandlers-yQ7Ru-l0.mjs';
20
+ import './time-Cw0liIqB.mjs';
21
+ import './registerCommonHandlers-Cj3Nl9y-.mjs';
22
22
  import 'util';
23
23
  import 'fs/promises';
24
24
  import 'crypto';
@@ -26,14 +26,14 @@ import 'path';
26
26
  import 'cross-spawn';
27
27
  import './projectPath-BTBIMB57.mjs';
28
28
  import 'url';
29
- import './sync-JoEZKRo8.mjs';
29
+ import './sync-BP6vnxVP.mjs';
30
30
  import './backgroundTaskActivity-8PdPxrvy.mjs';
31
- import './controlClient-8ILulwjc.mjs';
32
- import './persistence-DWcHe035.mjs';
31
+ import './controlClient-Ckl8N1MS.mjs';
32
+ import './persistence-Cg4sfjQV.mjs';
33
33
  import 'node:fs/promises';
34
34
  import 'node:fs';
35
35
  import 'chalk';
36
36
  import 'node:util';
37
37
  import 'node:path';
38
38
  import 'node:os';
39
- import './package-6KkRAops.mjs';
39
+ import './package-Bw3H6VLn.mjs';
@@ -1,4 +1,4 @@
1
- import { l as logger } from './logger-Fd_rNvgd.mjs';
1
+ import { l as logger } from './logger-JV7-4Q_6.mjs';
2
2
  import { e as encodeBase64, g as encrypt, h as decrypt, d as decodeBase64 } from './authRelay-DhQhkBvX.mjs';
3
3
  import os from 'os';
4
4
  import { execSync } from 'child_process';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-8su64lqR.cjs');
3
+ var logger = require('./logger-CX3x2eI4.cjs');
4
4
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
5
5
  var os = require('os');
6
6
  var child_process = require('child_process');
@@ -4,7 +4,7 @@ import { join } from 'node:path';
4
4
  import tweetnacl from 'tweetnacl';
5
5
  import { z } from 'zod';
6
6
  import { c as credentialRelayProblem, d as decodeBase64 } from './authRelay-DhQhkBvX.mjs';
7
- import { c as configuration } from './configuration-IhRiLDVe.mjs';
7
+ import { c as configuration } from './configuration-ThKBP_zY.mjs';
8
8
 
9
9
  const AgentCredentialsSchema = z.object({
10
10
  token: z.string().min(1),
@@ -6,7 +6,7 @@ var path = require('node:path');
6
6
  var tweetnacl = require('tweetnacl');
7
7
  var z = require('zod');
8
8
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
9
- var configuration = require('./configuration-CXEVKAyF.cjs');
9
+ var configuration = require('./configuration-BBK0rmmj.cjs');
10
10
 
11
11
  const AgentCredentialsSchema = z.z.object({
12
12
  token: z.z.string().min(1),
@@ -2,7 +2,7 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var node_util = require('node:util');
5
- var configuration = require('./configuration-CXEVKAyF.cjs');
5
+ var configuration = require('./configuration-BBK0rmmj.cjs');
6
6
  var node_fs = require('node:fs');
7
7
  var path = require('node:path');
8
8
 
@@ -238,7 +238,7 @@ async function listDaemonLogFiles(limit = 50) {
238
238
  return { file, path: fullPath, modified: stats.mtime };
239
239
  }).sort((a, b) => b.modified.getTime() - a.modified.getTime());
240
240
  try {
241
- const { readDaemonState } = await Promise.resolve().then(function () { return require('./persistence-B4ttN-fR.cjs'); }).then(function (n) { return n.persistence; });
241
+ const { readDaemonState } = await Promise.resolve().then(function () { return require('./persistence-CsmAgN-C.cjs'); }).then(function (n) { return n.persistence; });
242
242
  const state = await readDaemonState();
243
243
  if (!state) {
244
244
  return logs;
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import { inspect } from 'node:util';
3
- import { d as appendPrivateFileSync, c as configuration } from './configuration-IhRiLDVe.mjs';
3
+ import { d as appendPrivateFileSync, c as configuration } from './configuration-ThKBP_zY.mjs';
4
4
  import { existsSync, readdirSync, statSync } from 'node:fs';
5
5
  import { join, basename } from 'node:path';
6
6
 
@@ -236,7 +236,7 @@ async function listDaemonLogFiles(limit = 50) {
236
236
  return { file, path: fullPath, modified: stats.mtime };
237
237
  }).sort((a, b) => b.modified.getTime() - a.modified.getTime());
238
238
  try {
239
- const { readDaemonState } = await import('./persistence-DWcHe035.mjs').then(function (n) { return n.G; });
239
+ const { readDaemonState } = await import('./persistence-Cg4sfjQV.mjs').then(function (n) { return n.G; });
240
240
  const state = await readDaemonState();
241
241
  if (!state) {
242
242
  return logs;
@@ -1,9 +1,9 @@
1
1
  import os from 'node:os';
2
- import { p as packageJson } from './package-6KkRAops.mjs';
3
- import { c as configuration } from './configuration-IhRiLDVe.mjs';
2
+ import { p as packageJson } from './package-Bw3H6VLn.mjs';
3
+ import { c as configuration } from './configuration-ThKBP_zY.mjs';
4
4
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
5
5
  import { d as detectCLIAvailability } from './detectCLI-CSGMlV51.mjs';
6
- import { d as detectResumeSupport } from './localHappyAgentAuth-YHxDZ4x4.mjs';
6
+ import { d as detectResumeSupport } from './localHappyAgentAuth-KRlg_aI0.mjs';
7
7
  import { F as FS_MKDIR_CAPABILITY_VERSION } from './fsMkdir-DumgLTzR.mjs';
8
8
 
9
9
  const TEAM_RETRY_CAPABILITY_VERSION = 2;
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var os = require('node:os');
4
- var _package = require('./package-iuLlSiSF.cjs');
5
- var configuration = require('./configuration-CXEVKAyF.cjs');
4
+ var _package = require('./package-uzlvxa5S.cjs');
5
+ var configuration = require('./configuration-BBK0rmmj.cjs');
6
6
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
7
7
  var detectCLI = require('./detectCLI-BuYR_Qxe.cjs');
8
- var localHappyAgentAuth = require('./localHappyAgentAuth-BnGCpHRX.cjs');
8
+ var localHappyAgentAuth = require('./localHappyAgentAuth-jJH0n67S.cjs');
9
9
  var fsMkdir = require('./fsMkdir-0K3yENml.cjs');
10
10
 
11
11
  const TEAM_RETRY_CAPABILITY_VERSION = 2;