wherdr 2.2.0 → 2.4.0

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 (169) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{AgentView.CfD2RWZY.css → AgentView.B12D6ccj.css} +1 -1
  3. package/.output/public/_nuxt/AgentView.B12D6ccj.css.br +0 -0
  4. package/.output/public/_nuxt/AgentView.B12D6ccj.css.gz +0 -0
  5. package/.output/public/_nuxt/{DuVQjOfc.js → B2KlcBQ-.js} +1 -1
  6. package/.output/public/_nuxt/B2KlcBQ-.js.br +0 -0
  7. package/.output/public/_nuxt/{DuVQjOfc.js.gz → B2KlcBQ-.js.gz} +0 -0
  8. package/.output/public/_nuxt/BDTOz37p.js +1 -0
  9. package/.output/public/_nuxt/BDTOz37p.js.br +0 -0
  10. package/.output/public/_nuxt/BDTOz37p.js.gz +0 -0
  11. package/.output/public/_nuxt/BGD5AamG.js +25 -0
  12. package/.output/public/_nuxt/BGD5AamG.js.br +0 -0
  13. package/.output/public/_nuxt/BGD5AamG.js.gz +0 -0
  14. package/.output/public/_nuxt/BdJIc1Xf.js +1 -0
  15. package/.output/public/_nuxt/BdJIc1Xf.js.br +0 -0
  16. package/.output/public/_nuxt/BdJIc1Xf.js.gz +0 -0
  17. package/.output/public/_nuxt/BxlzUs1i.js +23 -0
  18. package/.output/public/_nuxt/BxlzUs1i.js.br +0 -0
  19. package/.output/public/_nuxt/BxlzUs1i.js.gz +0 -0
  20. package/.output/public/_nuxt/C-BDzEtI.js +3 -0
  21. package/.output/public/_nuxt/C-BDzEtI.js.br +0 -0
  22. package/.output/public/_nuxt/C-BDzEtI.js.gz +0 -0
  23. package/.output/public/_nuxt/{CML5cHwz.js → CLf2i_DM.js} +1 -1
  24. package/.output/public/_nuxt/CO4sDeSt.js +62 -0
  25. package/.output/public/_nuxt/CO4sDeSt.js.br +0 -0
  26. package/.output/public/_nuxt/CO4sDeSt.js.gz +0 -0
  27. package/.output/public/_nuxt/{CoRTPMqP.js → CPlkxpge.js} +42 -42
  28. package/.output/public/_nuxt/CPlkxpge.js.br +0 -0
  29. package/.output/public/_nuxt/CPlkxpge.js.gz +0 -0
  30. package/.output/public/_nuxt/CTPNZj4T.js +9 -0
  31. package/.output/public/_nuxt/CTPNZj4T.js.br +0 -0
  32. package/.output/public/_nuxt/CTPNZj4T.js.gz +0 -0
  33. package/.output/public/_nuxt/CV6ukk-M.js +1 -0
  34. package/.output/public/_nuxt/CgUSTIM1.js +1 -0
  35. package/.output/public/_nuxt/CgUSTIM1.js.br +0 -0
  36. package/.output/public/_nuxt/CgUSTIM1.js.gz +0 -0
  37. package/.output/public/_nuxt/CwurhZnh.js +123 -0
  38. package/.output/public/_nuxt/CwurhZnh.js.br +0 -0
  39. package/.output/public/_nuxt/CwurhZnh.js.gz +0 -0
  40. package/.output/public/_nuxt/D7fCPncR.js +1 -0
  41. package/.output/public/_nuxt/D7fCPncR.js.br +0 -0
  42. package/.output/public/_nuxt/D7fCPncR.js.gz +0 -0
  43. package/.output/public/_nuxt/DFe-cDm2.js +1 -0
  44. package/.output/public/_nuxt/DFe-cDm2.js.br +0 -0
  45. package/.output/public/_nuxt/DFe-cDm2.js.gz +0 -0
  46. package/.output/public/_nuxt/Dpe9TNcA.js +31 -0
  47. package/.output/public/_nuxt/Dpe9TNcA.js.br +0 -0
  48. package/.output/public/_nuxt/Dpe9TNcA.js.gz +0 -0
  49. package/.output/public/_nuxt/{board.CeTYM1XN.css → board.fZYj3O-m.css} +1 -1
  50. package/.output/public/_nuxt/board.fZYj3O-m.css.br +0 -0
  51. package/.output/public/_nuxt/board.fZYj3O-m.css.gz +0 -0
  52. package/.output/public/_nuxt/builds/latest.json +1 -1
  53. package/.output/public/_nuxt/builds/meta/75cc4ea7-3027-463a-aa3e-29e474ed7173.json +1 -0
  54. package/.output/public/_nuxt/entry.KNdllmoL.css +2 -0
  55. package/.output/public/_nuxt/entry.KNdllmoL.css.br +0 -0
  56. package/.output/public/_nuxt/entry.KNdllmoL.css.gz +0 -0
  57. package/.output/public/sw.js +1 -1
  58. package/.output/server/chunks/_/branding.mjs +1 -1
  59. package/.output/server/chunks/_/package.mjs +1 -1
  60. package/.output/server/chunks/_/selfupdate.mjs +1 -1
  61. package/.output/server/chunks/_/updates.mjs +18 -5
  62. package/.output/server/chunks/_/worktrees.mjs +1 -1
  63. package/.output/server/chunks/_/ws.mjs +1 -1
  64. package/.output/server/chunks/nitro/nitro.mjs +1109 -609
  65. package/.output/server/chunks/raw/install-claude-statusline.mjs +1 -1
  66. package/.output/server/chunks/routes/api/search.get.mjs +55 -2
  67. package/.output/server/chunks/routes/api/seen.post.mjs +1 -1
  68. package/.output/server/chunks/routes/api/send-now.post.mjs +53 -0
  69. package/.output/server/chunks/routes/api/sessions.get.mjs +1 -1
  70. package/.output/server/chunks/routes/api/sessions.post.mjs +1 -1
  71. package/.output/server/chunks/routes/api/settings-tab.post.mjs +1 -1
  72. package/.output/server/chunks/routes/api/settings.get.mjs +1 -1
  73. package/.output/server/chunks/routes/api/settings.post.mjs +1 -1
  74. package/.output/server/chunks/routes/api/space.post.mjs +1 -177
  75. package/.output/server/chunks/routes/api/split-command.post.mjs +157 -0
  76. package/.output/server/chunks/routes/api/tasks/action.post.mjs +1 -1
  77. package/.output/server/chunks/routes/api/tasks/add.post.mjs +1 -1
  78. package/.output/server/chunks/routes/api/tasks/after.post.mjs +1 -1
  79. package/.output/server/chunks/routes/api/tasks/approve.post.mjs +1 -1
  80. package/.output/server/chunks/routes/api/tasks/archive-done.post.mjs +1 -1
  81. package/.output/server/chunks/routes/api/tasks/archived.get.mjs +1 -1
  82. package/.output/server/chunks/routes/api/tasks/autopilot.get.mjs +1 -1
  83. package/.output/server/chunks/routes/api/tasks/autopilot.post.mjs +1 -1
  84. package/.output/server/chunks/routes/api/tasks/board-settings.get.mjs +1 -1
  85. package/.output/server/chunks/routes/api/tasks/board-settings.post.mjs +1 -1
  86. package/.output/server/chunks/routes/api/tasks/coordinator.get.mjs +1 -1
  87. package/.output/server/chunks/routes/api/tasks/coordinator.post.mjs +1 -1
  88. package/.output/server/chunks/routes/api/tasks/describe.post.mjs +1 -1
  89. package/.output/server/chunks/routes/api/tasks/details.get.mjs +1 -1
  90. package/.output/server/chunks/routes/api/tasks/limit.post.mjs +1 -1
  91. package/.output/server/chunks/routes/api/tasks/links.get.mjs +1 -1
  92. package/.output/server/chunks/routes/api/tasks/models.get.mjs +1 -1
  93. package/.output/server/chunks/routes/api/tasks/pick.post.mjs +1 -1
  94. package/.output/server/chunks/routes/api/tasks/project.get.mjs +1 -1
  95. package/.output/server/chunks/routes/api/tasks/project.post.mjs +1 -1
  96. package/.output/server/chunks/routes/api/tasks/question.post.mjs +1 -1
  97. package/.output/server/chunks/routes/api/tasks/scheduled.get.mjs +1 -1
  98. package/.output/server/chunks/routes/api/tasks/settings.get.mjs +1 -1
  99. package/.output/server/chunks/routes/api/tasks/start.get.mjs +1 -1
  100. package/.output/server/chunks/routes/api/tasks/tell.post.mjs +1 -1
  101. package/.output/server/chunks/routes/api/tasks.get.mjs +1 -1
  102. package/.output/server/chunks/routes/api/unqueue.post.mjs +1 -1
  103. package/.output/server/chunks/routes/icons/_name_.get.mjs +1 -1
  104. package/.output/server/chunks/routes/renderer.mjs +2 -2
  105. package/.output/server/chunks/routes/uploads/_...name_.get.mjs +1 -1
  106. package/.output/server/chunks/routes/ws/_..._.mjs +1 -1
  107. package/.output/server/chunks/routes/ws/events.mjs +5 -1
  108. package/.output/server/chunks/routes/ws/term.mjs +1 -1
  109. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  110. package/.output/server/index.mjs +1 -1
  111. package/.output/server/package.json +1 -1
  112. package/README.md +3 -1
  113. package/docs/README.md +5 -0
  114. package/docs/RELEASING.md +18 -10
  115. package/docs/board.md +8 -1
  116. package/docs/design.md +112 -0
  117. package/docs/devices.md +5 -0
  118. package/docs/herdr-projects-1x.md +28 -0
  119. package/docs/home.md +9 -0
  120. package/docs/installation.md +12 -0
  121. package/docs/quotas.md +6 -0
  122. package/docs/release-notes-2.3.0.md +23 -0
  123. package/docs/release-notes-2.4.0.md +37 -0
  124. package/package.json +1 -1
  125. package/.output/public/_nuxt/30nuHmZs.js +0 -1
  126. package/.output/public/_nuxt/30nuHmZs.js.br +0 -0
  127. package/.output/public/_nuxt/30nuHmZs.js.gz +0 -0
  128. package/.output/public/_nuxt/4gY2mLGX.js +0 -62
  129. package/.output/public/_nuxt/4gY2mLGX.js.br +0 -0
  130. package/.output/public/_nuxt/4gY2mLGX.js.gz +0 -0
  131. package/.output/public/_nuxt/AgentView.CfD2RWZY.css.br +0 -0
  132. package/.output/public/_nuxt/AgentView.CfD2RWZY.css.gz +0 -0
  133. package/.output/public/_nuxt/B8eSr-59.js +0 -1
  134. package/.output/public/_nuxt/B8eSr-59.js.br +0 -0
  135. package/.output/public/_nuxt/B8eSr-59.js.gz +0 -0
  136. package/.output/public/_nuxt/BsbsvkAK.js +0 -1
  137. package/.output/public/_nuxt/BsbsvkAK.js.br +0 -0
  138. package/.output/public/_nuxt/BsbsvkAK.js.gz +0 -0
  139. package/.output/public/_nuxt/CN39A7L5.js +0 -3
  140. package/.output/public/_nuxt/CN39A7L5.js.br +0 -0
  141. package/.output/public/_nuxt/CN39A7L5.js.gz +0 -0
  142. package/.output/public/_nuxt/CfQgQDOp.js +0 -9
  143. package/.output/public/_nuxt/CfQgQDOp.js.br +0 -0
  144. package/.output/public/_nuxt/CfQgQDOp.js.gz +0 -0
  145. package/.output/public/_nuxt/CoRTPMqP.js.br +0 -0
  146. package/.output/public/_nuxt/CoRTPMqP.js.gz +0 -0
  147. package/.output/public/_nuxt/CvGCN0_f.js +0 -23
  148. package/.output/public/_nuxt/CvGCN0_f.js.br +0 -0
  149. package/.output/public/_nuxt/CvGCN0_f.js.gz +0 -0
  150. package/.output/public/_nuxt/DmYihq1h.js +0 -1
  151. package/.output/public/_nuxt/DoX0nZZb.js +0 -105
  152. package/.output/public/_nuxt/DoX0nZZb.js.br +0 -0
  153. package/.output/public/_nuxt/DoX0nZZb.js.gz +0 -0
  154. package/.output/public/_nuxt/DuVQjOfc.js.br +0 -0
  155. package/.output/public/_nuxt/Y-4S7Nuf.js +0 -1
  156. package/.output/public/_nuxt/Y-4S7Nuf.js.br +0 -0
  157. package/.output/public/_nuxt/Y-4S7Nuf.js.gz +0 -0
  158. package/.output/public/_nuxt/board.CeTYM1XN.css.br +0 -0
  159. package/.output/public/_nuxt/board.CeTYM1XN.css.gz +0 -0
  160. package/.output/public/_nuxt/builds/meta/fd79ea32-8bac-487a-afa1-7a6e336fff3f.json +0 -1
  161. package/.output/public/_nuxt/entry.Cd2iNkBC.css +0 -2
  162. package/.output/public/_nuxt/entry.Cd2iNkBC.css.br +0 -0
  163. package/.output/public/_nuxt/entry.Cd2iNkBC.css.gz +0 -0
  164. package/.output/public/_nuxt/hSqNtAW9.js +0 -25
  165. package/.output/public/_nuxt/hSqNtAW9.js.br +0 -0
  166. package/.output/public/_nuxt/hSqNtAW9.js.gz +0 -0
  167. package/.output/public/_nuxt/o1wml4Rx.js +0 -31
  168. package/.output/public/_nuxt/o1wml4Rx.js.br +0 -0
  169. package/.output/public/_nuxt/o1wml4Rx.js.gz +0 -0
@@ -8648,91 +8648,91 @@ async function dispose(driver) {
8648
8648
  const _assets = {
8649
8649
  ["scripts:build-nerd-font.py"]: {
8650
8650
  import: () => import('../raw/build-nerd-font.mjs').then(r => r.default || r),
8651
- meta: {"type":"text/plain; charset=utf-8","etag":"\"13aa-ys9YUI0kyQcBWrUDXjdBVLF8Z3E\"","mtime":"2026-10-26T23:38:53.161Z"}
8651
+ meta: {"type":"text/plain; charset=utf-8","etag":"\"13aa-ys9YUI0kyQcBWrUDXjdBVLF8Z3E\"","mtime":"2026-10-30T16:50:04.493Z"}
8652
8652
  },
8653
8653
  ["scripts:build-terminal-font.py"]: {
8654
8654
  import: () => import('../raw/build-terminal-font.mjs').then(r => r.default || r),
8655
- meta: {"type":"text/plain; charset=utf-8","etag":"\"cf5-BDqHg2xDFu+6dg84HBWtyBtrEoU\"","mtime":"2026-10-26T23:38:53.161Z"}
8655
+ meta: {"type":"text/plain; charset=utf-8","etag":"\"cf5-BDqHg2xDFu+6dg84HBWtyBtrEoU\"","mtime":"2026-10-30T16:50:04.493Z"}
8656
8656
  },
8657
8657
  ["scripts:bump-homebrew.sh"]: {
8658
8658
  import: () => import('../raw/bump-homebrew.mjs').then(r => r.default || r),
8659
- meta: {"type":"application/x-sh","etag":"\"8b5-n/EiMEIUoHPuQl2XTJU0tSNn7FY\"","mtime":"2026-10-26T23:38:53.161Z"}
8659
+ meta: {"type":"application/x-sh","etag":"\"8b5-n/EiMEIUoHPuQl2XTJU0tSNn7FY\"","mtime":"2026-10-30T16:50:04.493Z"}
8660
8660
  },
8661
8661
  ["scripts:check-doc-links.mjs"]: {
8662
8662
  import: () => import('../raw/check-doc-links.mjs').then(r => r.default || r),
8663
- meta: {"type":"text/javascript; charset=utf-8","etag":"\"111e-oejL0jmpzfjFEWxPN+9qu5uF9Bw\"","mtime":"2026-10-26T23:38:53.161Z"}
8663
+ meta: {"type":"text/javascript; charset=utf-8","etag":"\"111e-oejL0jmpzfjFEWxPN+9qu5uF9Bw\"","mtime":"2026-10-30T16:50:04.493Z"}
8664
8664
  },
8665
8665
  ["scripts:check-leaks.mjs"]: {
8666
8666
  import: () => import('../raw/check-leaks.mjs').then(r => r.default || r),
8667
- meta: {"type":"text/javascript; charset=utf-8","etag":"\"30f6-6/YiH8VxbjC5TNeu9LlD3pzBmiY\"","mtime":"2026-10-26T23:38:53.161Z"}
8667
+ meta: {"type":"text/javascript; charset=utf-8","etag":"\"30f6-6/YiH8VxbjC5TNeu9LlD3pzBmiY\"","mtime":"2026-10-30T16:50:04.493Z"}
8668
8668
  },
8669
8669
  ["scripts:check-release-notes.mjs"]: {
8670
8670
  import: () => import('../raw/check-release-notes.mjs').then(r => r.default || r),
8671
- meta: {"type":"text/javascript; charset=utf-8","etag":"\"654-zI3BCnX2ydk480NonbjdCfu8XKg\"","mtime":"2026-10-26T23:38:53.161Z"}
8671
+ meta: {"type":"text/javascript; charset=utf-8","etag":"\"654-zI3BCnX2ydk480NonbjdCfu8XKg\"","mtime":"2026-10-30T16:50:04.493Z"}
8672
8672
  },
8673
8673
  ["scripts:herdr-plugin.sh"]: {
8674
8674
  import: () => import('../raw/herdr-plugin.mjs').then(r => r.default || r),
8675
- meta: {"type":"application/x-sh","etag":"\"6c52-rUwB0ZqIlTkczogm1xwfvSvGSNA\"","mtime":"2026-10-26T23:38:53.161Z"}
8675
+ meta: {"type":"application/x-sh","etag":"\"6c52-rUwB0ZqIlTkczogm1xwfvSvGSNA\"","mtime":"2026-10-30T16:50:04.493Z"}
8676
8676
  },
8677
8677
  ["scripts:install-claude-statusline.sh"]: {
8678
8678
  import: () => import('../raw/install-claude-statusline.mjs').then(r => r.default || r),
8679
- meta: {"type":"application/x-sh","etag":"\"1012-SRD59JCTvNDZmw9VCA/vxlYnsOs\"","mtime":"2026-10-26T23:38:53.161Z"}
8679
+ meta: {"type":"application/x-sh","etag":"\"1400-qUTjl1eEy7w4kelcFGDoByDdjDM\"","mtime":"2026-10-30T16:50:04.493Z"}
8680
8680
  },
8681
8681
  ["scripts:pack-output.mjs"]: {
8682
8682
  import: () => import('../raw/pack-output.mjs').then(r => r.default || r),
8683
- meta: {"type":"text/javascript; charset=utf-8","etag":"\"54b-eU4eNNIxIecG1kwaLdtiTYODSSI\"","mtime":"2026-10-26T23:38:53.161Z"}
8683
+ meta: {"type":"text/javascript; charset=utf-8","etag":"\"54b-eU4eNNIxIecG1kwaLdtiTYODSSI\"","mtime":"2026-10-30T16:50:04.493Z"}
8684
8684
  },
8685
8685
  ["scripts:prerelease-summary.mjs"]: {
8686
8686
  import: () => import('../raw/prerelease-summary.mjs').then(r => r.default || r),
8687
- meta: {"type":"text/javascript; charset=utf-8","etag":"\"4bf-hjbQniJqK64ox0o4o+lKO4T3co8\"","mtime":"2026-10-26T23:38:53.161Z"}
8687
+ meta: {"type":"text/javascript; charset=utf-8","etag":"\"4bf-hjbQniJqK64ox0o4o+lKO4T3co8\"","mtime":"2026-10-30T16:50:04.493Z"}
8688
8688
  },
8689
8689
  ["scripts:prerelease.sh"]: {
8690
8690
  import: () => import('../raw/prerelease.mjs').then(r => r.default || r),
8691
- meta: {"type":"application/x-sh","etag":"\"1b93-FGORYtgWgRCx/nvbV5w5LZFGvWM\"","mtime":"2026-10-26T23:38:53.161Z"}
8691
+ meta: {"type":"application/x-sh","etag":"\"1b93-FGORYtgWgRCx/nvbV5w5LZFGvWM\"","mtime":"2026-10-30T16:50:04.493Z"}
8692
8692
  },
8693
8693
  ["scripts:release-ready.mjs"]: {
8694
8694
  import: () => import('../raw/release-ready.mjs').then(r => r.default || r),
8695
- meta: {"type":"text/javascript; charset=utf-8","etag":"\"a44-ceu/5BQO5TUWzE/HNW2C/LvdCqw\"","mtime":"2026-10-26T23:38:53.161Z"}
8695
+ meta: {"type":"text/javascript; charset=utf-8","etag":"\"a44-ceu/5BQO5TUWzE/HNW2C/LvdCqw\"","mtime":"2026-10-30T16:50:04.493Z"}
8696
8696
  },
8697
8697
  ["scripts:reveal.sh"]: {
8698
8698
  import: () => import('../raw/reveal.mjs').then(r => r.default || r),
8699
- meta: {"type":"application/x-sh","etag":"\"6c3-PXdXngtqrHUBK3LE4horeuveBYI\"","mtime":"2026-10-26T23:38:53.161Z"}
8699
+ meta: {"type":"application/x-sh","etag":"\"6c3-PXdXngtqrHUBK3LE4horeuveBYI\"","mtime":"2026-10-30T16:50:04.493Z"}
8700
8700
  },
8701
8701
  ["scripts:test-affected.mjs"]: {
8702
8702
  import: () => import('../raw/test-affected.mjs').then(r => r.default || r),
8703
- meta: {"type":"text/javascript; charset=utf-8","etag":"\"2525-8/qtDJsv4VCisifVU6tEnYnLuC0\"","mtime":"2026-10-26T23:38:53.161Z"}
8703
+ meta: {"type":"text/javascript; charset=utf-8","etag":"\"2525-8/qtDJsv4VCisifVU6tEnYnLuC0\"","mtime":"2026-10-30T16:50:04.493Z"}
8704
8704
  },
8705
8705
  ["server:branding:favicon.ico"]: {
8706
8706
  import: () => import('../raw/favicon.mjs').then(r => r.default || r),
8707
- meta: {"type":"image/vnd.microsoft.icon","etag":"\"3aee-Oem7XTWv+9HEwv9u/3K5QcIjS3E\"","mtime":"2026-10-26T23:38:53.166Z"}
8707
+ meta: {"type":"image/vnd.microsoft.icon","etag":"\"3aee-Oem7XTWv+9HEwv9u/3K5QcIjS3E\"","mtime":"2026-10-30T16:50:04.497Z"}
8708
8708
  },
8709
8709
  ["server:branding:icons:apple-touch-icon.png"]: {
8710
8710
  import: () => import('../raw/apple-touch-icon.mjs').then(r => r.default || r),
8711
- meta: {"type":"image/png","etag":"\"1f8-AVRrBnAhalXrGkFPGdvl0fM7DH8\"","mtime":"2026-10-26T23:38:53.166Z"}
8711
+ meta: {"type":"image/png","etag":"\"1f8-AVRrBnAhalXrGkFPGdvl0fM7DH8\"","mtime":"2026-10-30T16:50:04.497Z"}
8712
8712
  },
8713
8713
  ["server:branding:icons:favicon-32.png"]: {
8714
8714
  import: () => import('../raw/favicon-32.mjs').then(r => r.default || r),
8715
- meta: {"type":"image/png","etag":"\"a3-hAEc+Ymq1aYS3kFLyZK/H18Pge8\"","mtime":"2026-10-26T23:38:53.167Z"}
8715
+ meta: {"type":"image/png","etag":"\"a3-hAEc+Ymq1aYS3kFLyZK/H18Pge8\"","mtime":"2026-10-30T16:50:04.497Z"}
8716
8716
  },
8717
8717
  ["server:branding:icons:icon-192.png"]: {
8718
8718
  import: () => import('../raw/icon-192.mjs').then(r => r.default || r),
8719
- meta: {"type":"image/png","etag":"\"222-kioUoPaSCUaRhKKWw0PRtFbAhxk\"","mtime":"2026-10-26T23:38:53.167Z"}
8719
+ meta: {"type":"image/png","etag":"\"222-kioUoPaSCUaRhKKWw0PRtFbAhxk\"","mtime":"2026-10-30T16:50:04.497Z"}
8720
8720
  },
8721
8721
  ["server:branding:icons:icon-512-maskable.png"]: {
8722
8722
  import: () => import('../raw/icon-512-maskable.mjs').then(r => r.default || r),
8723
- meta: {"type":"image/png","etag":"\"84b-mCXgbBkXk7sqOhmJ8hjp80SN3Qk\"","mtime":"2026-10-26T23:38:53.167Z"}
8723
+ meta: {"type":"image/png","etag":"\"84b-mCXgbBkXk7sqOhmJ8hjp80SN3Qk\"","mtime":"2026-10-30T16:50:04.497Z"}
8724
8724
  },
8725
8725
  ["server:branding:icons:icon-512.png"]: {
8726
8726
  import: () => import('../raw/icon-512.mjs').then(r => r.default || r),
8727
- meta: {"type":"image/png","etag":"\"8fc-ZwRMqAqQZeLLx4iNTZxs09C4Q1I\"","mtime":"2026-10-26T23:38:53.167Z"}
8727
+ meta: {"type":"image/png","etag":"\"8fc-ZwRMqAqQZeLLx4iNTZxs09C4Q1I\"","mtime":"2026-10-30T16:50:04.497Z"}
8728
8728
  },
8729
8729
  ["server:branding:icons:icon-maskable.svg"]: {
8730
8730
  import: () => import('../raw/icon-maskable.mjs').then(r => r.default || r),
8731
- meta: {"type":"image/svg+xml","etag":"\"4a1-7XtnuN5ZOwiwIjpgpj+/Rg9LssY\"","mtime":"2026-10-26T23:38:53.167Z"}
8731
+ meta: {"type":"image/svg+xml","etag":"\"4a1-7XtnuN5ZOwiwIjpgpj+/Rg9LssY\"","mtime":"2026-10-30T16:50:04.497Z"}
8732
8732
  },
8733
8733
  ["server:branding:icons:icon.svg"]: {
8734
8734
  import: () => import('../raw/icon.mjs').then(r => r.default || r),
8735
- meta: {"type":"image/svg+xml","etag":"\"49c-O1XxkWwKTf6VBoC0i4TEPdGPsCw\"","mtime":"2026-10-26T23:38:53.167Z"}
8735
+ meta: {"type":"image/svg+xml","etag":"\"49c-O1XxkWwKTf6VBoC0i4TEPdGPsCw\"","mtime":"2026-10-30T16:50:04.497Z"}
8736
8736
  }
8737
8737
  };
8738
8738
 
@@ -9635,7 +9635,7 @@ function _expandFromEnv(value) {
9635
9635
  const _inlineRuntimeConfig = {
9636
9636
  "app": {
9637
9637
  "baseURL": "/",
9638
- "buildId": "fd79ea32-8bac-487a-afa1-7a6e336fff3f",
9638
+ "buildId": "75cc4ea7-3027-463a-aa3e-29e474ed7173",
9639
9639
  "buildAssetsDir": "/_nuxt/",
9640
9640
  "cdnURL": ""
9641
9641
  },
@@ -10191,7 +10191,6 @@ function parseStatusSocket(out) {
10191
10191
  const m = /^\s*socket:\s*(\S.*?)\s*$/m.exec(String(out || ""));
10192
10192
  return m ? m[1] : null;
10193
10193
  }
10194
- const AGENT_NAME_HINT = "Name: use at least one letter or digit";
10195
10194
  const LIGATURES = { "\xDF": "ss", "\xE6": "ae", "\u0153": "oe", "\xF8": "o", "\u0111": "d", "\u0142": "l", "\xFE": "th" };
10196
10195
  function toAgentName(raw) {
10197
10196
  let s = String(raw != null ? raw : "").normalize("NFKD").replace(/\p{M}+/gu, "").toLowerCase();
@@ -10809,15 +10808,15 @@ async function refreshTailscale(read = defaultReader, now = Date.now()) {
10809
10808
  }
10810
10809
  notify();
10811
10810
  }
10812
- let inflight$1 = null;
10811
+ let inflight = null;
10813
10812
  async function ensureFresh(maxAgeMs, read = defaultReader, now = Date.now()) {
10814
10813
  if (ts && ts.at >= now - maxAgeMs) return;
10815
- if (inflight$1 && inflight$1.at >= now - maxAgeMs) return inflight$1.done;
10814
+ if (inflight && inflight.at >= now - maxAgeMs) return inflight.done;
10816
10815
  const at = Date.now();
10817
10816
  const done = refreshTailscale(read, at).finally(() => {
10818
- if ((inflight$1 == null ? void 0 : inflight$1.done) === done) inflight$1 = null;
10817
+ if ((inflight == null ? void 0 : inflight.done) === done) inflight = null;
10819
10818
  });
10820
- inflight$1 = { at, done };
10819
+ inflight = { at, done };
10821
10820
  return done;
10822
10821
  }
10823
10822
  function netContext(now = Date.now()) {
@@ -11089,20 +11088,20 @@ function parseSessionList(raw, baseKey, baseSession) {
11089
11088
  return out.sort((a, b) => a.name === baseSession ? -1 : b.name === baseSession ? 1 : a.name.localeCompare(b.name));
11090
11089
  }
11091
11090
 
11092
- var __defProp$c = Object.defineProperty;
11093
- var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11094
- var __publicField$c = (obj, key, value) => __defNormalProp$c(obj, typeof key !== "symbol" ? key + "" : key, value);
11091
+ var __defProp$d = Object.defineProperty;
11092
+ var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11093
+ var __publicField$d = (obj, key, value) => __defNormalProp$d(obj, typeof key !== "symbol" ? key + "" : key, value);
11095
11094
  const SCREEN_MACHINE_MAX = 2;
11096
11095
  const SCREEN_TOTAL_MAX = 4;
11097
11096
  class ScreenGate {
11098
11097
  constructor() {
11099
- __publicField$c(this, "active", 0);
11100
- __publicField$c(this, "background", 0);
11101
- __publicField$c(this, "backgroundMachines", /* @__PURE__ */ new Map());
11102
- __publicField$c(this, "machines", /* @__PURE__ */ new Map());
11103
- __publicField$c(this, "priority", () => false);
11104
- __publicField$c(this, "reserved", () => false);
11105
- __publicField$c(this, "queue", []);
11098
+ __publicField$d(this, "active", 0);
11099
+ __publicField$d(this, "background", 0);
11100
+ __publicField$d(this, "backgroundMachines", /* @__PURE__ */ new Map());
11101
+ __publicField$d(this, "machines", /* @__PURE__ */ new Map());
11102
+ __publicField$d(this, "priority", () => false);
11103
+ __publicField$d(this, "reserved", () => false);
11104
+ __publicField$d(this, "queue", []);
11106
11105
  }
11107
11106
  run(machine, work, pane) {
11108
11107
  return new Promise((resolve, reject) => {
@@ -11162,13 +11161,13 @@ function fmt(template, params) {
11162
11161
  return template.replace(/\{(\w+)\}/g, (all, k) => params[k] == null ? all : String(params[k]));
11163
11162
  }
11164
11163
 
11165
- var __defProp$b = Object.defineProperty;
11166
- var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11167
- var __publicField$b = (obj, key, value) => __defNormalProp$b(obj, key + "" , value);
11164
+ var __defProp$c = Object.defineProperty;
11165
+ var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11166
+ var __publicField$c = (obj, key, value) => __defNormalProp$c(obj, key + "" , value);
11168
11167
  class HerdrError extends Error {
11169
11168
  constructor(code, message) {
11170
11169
  super(message);
11171
- __publicField$b(this, "code");
11170
+ __publicField$c(this, "code");
11172
11171
  this.code = code;
11173
11172
  }
11174
11173
  }
@@ -11243,9 +11242,9 @@ async function agentPrompt(target, text) {
11243
11242
  }
11244
11243
  const sleep$1 = (ms) => new Promise((r) => setTimeout(r, ms));
11245
11244
 
11246
- var __defProp$a = Object.defineProperty;
11247
- var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11248
- var __publicField$a = (obj, key, value) => __defNormalProp$a(obj, key + "" , value);
11245
+ var __defProp$b = Object.defineProperty;
11246
+ var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11247
+ var __publicField$b = (obj, key, value) => __defNormalProp$b(obj, key + "" , value);
11249
11248
  const fsp$4 = fs.promises;
11250
11249
  const toStat = (st) => ({ size: st.size, mtimeMs: st.mtimeMs, isFile: st.isFile(), isDir: st.isDirectory(), ino: st.ino });
11251
11250
  const localFs = {
@@ -11294,7 +11293,7 @@ function boundedOutput(max = Infinity) {
11294
11293
  class FsError extends Error {
11295
11294
  constructor(code, message) {
11296
11295
  super(message);
11297
- __publicField$a(this, "code");
11296
+ __publicField$b(this, "code");
11298
11297
  this.code = code;
11299
11298
  }
11300
11299
  }
@@ -11413,9 +11412,9 @@ async function listDirsLocal(dir) {
11413
11412
  return out;
11414
11413
  }
11415
11414
 
11416
- var __defProp$9 = Object.defineProperty;
11417
- var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11418
- var __publicField$9 = (obj, key, value) => __defNormalProp$9(obj, typeof key !== "symbol" ? key + "" : key, value);
11415
+ var __defProp$a = Object.defineProperty;
11416
+ var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11417
+ var __publicField$a = (obj, key, value) => __defNormalProp$a(obj, typeof key !== "symbol" ? key + "" : key, value);
11419
11418
  const SSH_MAX_SESSIONS = 10;
11420
11419
  const STREAM_MARGIN = 2;
11421
11420
  const EXEC_MAX = 6;
@@ -11424,14 +11423,14 @@ const REFUSED_RE = /session open refused|session request failed|administratively
11424
11423
  const isRefused = (stderr) => REFUSED_RE.test(stderr);
11425
11424
  class SessionGate {
11426
11425
  constructor(opts = {}) {
11427
- __publicField$9(this, "opts", opts);
11428
- __publicField$9(this, "execs", 0);
11429
- __publicField$9(this, "streams", 0);
11430
- __publicField$9(this, "peak", 0);
11431
- __publicField$9(this, "refusals", 0);
11432
- __publicField$9(this, "streak", 0);
11433
- __publicField$9(this, "waiting", []);
11434
- __publicField$9(this, "inflight", /* @__PURE__ */ new Map());
11426
+ __publicField$a(this, "opts", opts);
11427
+ __publicField$a(this, "execs", 0);
11428
+ __publicField$a(this, "streams", 0);
11429
+ __publicField$a(this, "peak", 0);
11430
+ __publicField$a(this, "refusals", 0);
11431
+ __publicField$a(this, "streak", 0);
11432
+ __publicField$a(this, "waiting", []);
11433
+ __publicField$a(this, "inflight", /* @__PURE__ */ new Map());
11435
11434
  }
11436
11435
  // Short commands allowed at once with the streams currently open.
11437
11436
  capacity() {
@@ -11534,21 +11533,21 @@ class SessionGate {
11534
11533
  }
11535
11534
  }
11536
11535
 
11537
- var __defProp$8 = Object.defineProperty;
11538
- var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11539
- var __publicField$8 = (obj, key, value) => __defNormalProp$8(obj, typeof key !== "symbol" ? key + "" : key, value);
11536
+ var __defProp$9 = Object.defineProperty;
11537
+ var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11538
+ var __publicField$9 = (obj, key, value) => __defNormalProp$9(obj, typeof key !== "symbol" ? key + "" : key, value);
11540
11539
  const socketTransport = (remote) => remote.startsWith("/") && !/[\\:]/.test(remote) ? "forward" : "relay";
11541
11540
  function bridgeCommand(bin, session, client = false, check = false) {
11542
11541
  return `exec ${[bin, "--session", session, client ? "remote-client-bridge" : "remote-api-bridge", ...check ? ["--check"] : []].map(shq).join(" ")}`;
11543
11542
  }
11544
11543
  class SocketRelay {
11545
11544
  constructor(spawn, schedule = (run) => run()) {
11546
- __publicField$8(this, "spawn", spawn);
11547
- __publicField$8(this, "schedule", schedule);
11548
- __publicField$8(this, "sockets", /* @__PURE__ */ new Set());
11549
- __publicField$8(this, "children", /* @__PURE__ */ new Set());
11550
- __publicField$8(this, "stopped", false);
11551
- __publicField$8(this, "server");
11545
+ __publicField$9(this, "spawn", spawn);
11546
+ __publicField$9(this, "schedule", schedule);
11547
+ __publicField$9(this, "sockets", /* @__PURE__ */ new Set());
11548
+ __publicField$9(this, "children", /* @__PURE__ */ new Set());
11549
+ __publicField$9(this, "stopped", false);
11550
+ __publicField$9(this, "server");
11552
11551
  this.server = net.createServer((socket) => {
11553
11552
  this.sockets.add(socket);
11554
11553
  socket.on("error", () => socket.destroy());
@@ -12332,9 +12331,12 @@ const OMP_SELECT_TOP = /^\s*[╭+][─-] (.+?) [─-]+[╮+]\s*$/;
12332
12331
  const OMP_SELECT_LEGEND = new RegExp(`^\\s*[\u2502|] ${ompAlt(OMP_UP_DOWN)} navigate\\b.*\\bselect\\b`);
12333
12332
  const OMP_SELECT_OPTION = new RegExp(`^ (?:(${ompAlt(OMP_CURSOR)})|\\s)\\s(\\S.*)$`);
12334
12333
  function parseOmpSelect(text, full = false) {
12335
- var _a;
12336
12334
  if (!text) return null;
12337
12335
  const lines = text.replace(/\s+$/, "").split("\n");
12336
+ return readOmpSelect(lines, full) || readOmpApproval(lines, full);
12337
+ }
12338
+ function readOmpSelect(lines, full) {
12339
+ var _a;
12338
12340
  const legend = lastMatch(lines, OMP_SELECT_LEGEND);
12339
12341
  if (legend < 0) return null;
12340
12342
  const below = lines.slice(legend + 1).filter((l) => l.trim() && ompBoxText(l) !== "").map((l) => l.trim());
@@ -12370,6 +12372,79 @@ function parseOmpSelect(text, full = false) {
12370
12372
  const detail = tool || !title && body.length ? { tool: tool || "tool", ...body.length ? { command: body.join("\n") } : {} } : void 0;
12371
12373
  return { question: title, cursor, options, ...detail ? { detail } : {} };
12372
12374
  }
12375
+ const OMP_APPROVAL_FOOTER = /^\S+ choose · \S+ select\b|^\S+ deny and send\b/;
12376
+ const OMP_APPROVAL_DRAFT = /^\S+ deny and send\b/;
12377
+ const OMP_APPROVAL_TITLE = /^(Allow tool: (\S+))(?: \(\d+s\))?$/;
12378
+ const OMP_APPROVAL_OPTION = new RegExp(`^(?:(${ompAlt([...OMP_CURSOR, "\u203A"])}) | {2})(\\S.*)$`);
12379
+ const OMP_APPROVAL_RULE = /^\s*[├+][─-]+[┤+]\s*$/;
12380
+ const OMP_APPROVAL_BOTTOM = /^\s*[╰+][─-]+[╯+]\s*$/;
12381
+ const OMP_APPROVAL_SCROLLBAR = /\s[█│|▐▌]$/;
12382
+ function ompApprovalFooter(lines) {
12383
+ let rows = 0;
12384
+ for (let i = lines.length - 1; i >= 0 && rows < 8; i--) {
12385
+ if (!lines[i].trim()) continue;
12386
+ rows++;
12387
+ const boxed = ompBoxText(lines[i]);
12388
+ if (!OMP_APPROVAL_FOOTER.test(boxed != null ? boxed : lines[i].trim())) continue;
12389
+ const below = lines.slice(i + 1).filter((l) => l.trim());
12390
+ if (boxed !== null && !OMP_APPROVAL_BOTTOM.test(below.shift() || "")) return null;
12391
+ return below.length <= 6 ? { at: i, boxed: boxed !== null } : null;
12392
+ }
12393
+ return null;
12394
+ }
12395
+ function readOmpApproval(lines, full) {
12396
+ var _a, _b, _c;
12397
+ const footer = ompApprovalFooter(lines);
12398
+ if (!footer) return null;
12399
+ let i = footer.at - 1;
12400
+ if (footer.boxed) {
12401
+ if (!OMP_APPROVAL_RULE.test(lines[i] || "")) return null;
12402
+ i--;
12403
+ } else {
12404
+ while (i >= 0 && (!lines[i].trim() || /^\s*[─-]{3,}\s*$/.test(lines[i]))) i--;
12405
+ }
12406
+ const pad = /^\s*/.exec(lines[footer.at])[0];
12407
+ const row = (line) => footer.boxed ? ompBoxText(line) : line.startsWith(pad) ? line.slice(pad.length).trimEnd() : null;
12408
+ const options = [];
12409
+ let cursor = -1;
12410
+ let once = false;
12411
+ for (; i >= 0; i--) {
12412
+ const s = row(lines[i]);
12413
+ const m = s === null ? null : OMP_APPROVAL_OPTION.exec(s);
12414
+ if (!m) break;
12415
+ const label = m[2].trim();
12416
+ if (m[1]) cursor = options.length;
12417
+ options.unshift({ label: label.slice(0, full ? void 0 : 200), hint: null });
12418
+ once || (once = label === "Approve Once");
12419
+ if (once ? / Remember across sessions$/.test(label) : label === "Approve") {
12420
+ i--;
12421
+ break;
12422
+ }
12423
+ }
12424
+ if (cursor < 0 || !/^Deny\b/.test(options[options.length - 1].label) || !options.some((o) => /^Approve\b/.test(o.label))) return null;
12425
+ cursor = options.length - 1 - cursor;
12426
+ const body = [];
12427
+ let title = null;
12428
+ for (; i >= 0 && body.length < 40; i--) {
12429
+ const top = footer.boxed ? OMP_SELECT_TOP.exec(lines[i]) : null;
12430
+ const s = top ? top[1].trim() : row(lines[i]);
12431
+ if (s === null) break;
12432
+ title = OMP_APPROVAL_TITLE.exec(s);
12433
+ if (title || top) break;
12434
+ body.unshift(s);
12435
+ }
12436
+ if (!footer.boxed && !title) return null;
12437
+ while (body.length && !body[0].trim()) body.shift();
12438
+ while (body.length && !body[body.length - 1].trim()) body.pop();
12439
+ const details = body.length > 1 && body.every((l) => OMP_APPROVAL_SCROLLBAR.test(l)) ? body.map((l) => l.slice(0, -1).trimEnd()) : body;
12440
+ const tool = title == null ? void 0 : title[2];
12441
+ const detail = { tool: tool || "tool", ...details.length ? { command: details.join("\n") } : {} };
12442
+ const drafting = OMP_APPROVAL_DRAFT.test((_a = row(lines[footer.at])) != null ? _a : "");
12443
+ return drafting ? { question: (_b = title == null ? void 0 : title[1]) != null ? _b : null, cursor: 0, options: [options[cursor]], detail } : { question: (_c = title == null ? void 0 : title[1]) != null ? _c : null, cursor, options, detail };
12444
+ }
12445
+ function ompApprovalOpen(text) {
12446
+ return Boolean(text && readOmpApproval(text.replace(/\s+$/, "").split("\n"), false));
12447
+ }
12373
12448
  function parseOmpPrompt(text, full = false) {
12374
12449
  return parseOmpSelect(text, full) || parseOmpAsk(text, full);
12375
12450
  }
@@ -12577,6 +12652,7 @@ function panelOpen(text, agent) {
12577
12652
  }
12578
12653
  const bashInput$1 = (line, above) => /^!(\s|$)/.test(line) && /^\s*─{3,}/.test(above || "");
12579
12654
  function inputVisible(text) {
12655
+ if (ompApprovalOpen(text)) return false;
12580
12656
  const lines = String(text || "").replace(/\s+$/, "").split("\n").slice(-12);
12581
12657
  return lines.some((l, i) => /^\s*›(\s|$)/.test(l) || /^\s*❯(\s|$)/.test(l) && /^\s*─{3,}/.test(lines[i - 1] || "") || /^╰─(\s|$)/.test(l) || bashInput$1(l, lines[i - 1]));
12582
12658
  }
@@ -14705,7 +14781,7 @@ function createTranscripts({ home, herdr: herdr2, fs = localFs, now = Date.now }
14705
14781
  for (const d of await sortDesc(path$1.join(root, y, m))) {
14706
14782
  const dir = path$1.join(root, y, m, d);
14707
14783
  const hit = (await sortDesc(dir)).find((n) => n.endsWith(`-${id}.jsonl`));
14708
- if (hit) {
14784
+ if (hit && await exists(path$1.join(dir, hit))) {
14709
14785
  found = path$1.join(dir, hit);
14710
14786
  break outer;
14711
14787
  }
@@ -14839,6 +14915,9 @@ function createTranscripts({ home, herdr: herdr2, fs = localFs, now = Date.now }
14839
14915
  st = await fs.stat(loc.file);
14840
14916
  } catch (e) {
14841
14917
  if (!isMissing(e)) throw e;
14918
+ st = null;
14919
+ }
14920
+ if (!st || !st.isFile) {
14842
14921
  locCache.delete(pane.id);
14843
14922
  lastLoc.delete(pane.id);
14844
14923
  return { available: false, reason: "not_found" };
@@ -15133,9 +15212,9 @@ function closeTrailingMention(text) {
15133
15212
  return /(^|\n)@\S+$/.test(text) ? `${text} ` : text;
15134
15213
  }
15135
15214
 
15136
- var __defProp$7 = Object.defineProperty;
15137
- var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15138
- var __publicField$7 = (obj, key, value) => __defNormalProp$7(obj, typeof key !== "symbol" ? key + "" : key, value);
15215
+ var __defProp$8 = Object.defineProperty;
15216
+ var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15217
+ var __publicField$8 = (obj, key, value) => __defNormalProp$8(obj, typeof key !== "symbol" ? key + "" : key, value);
15139
15218
  const fsp$3 = fs.promises;
15140
15219
  const LOCAL_LABEL_FILE = path$1.join(DATA_DIR, "machine-label.txt");
15141
15220
  function renamedLabel() {
@@ -15252,50 +15331,50 @@ function runFile(bin, args, timeoutMs) {
15252
15331
  const lastLine = (s) => String(s || "").trim().split("\n").filter(Boolean).pop() || "";
15253
15332
  class RemoteMachine {
15254
15333
  constructor(p, onChange) {
15255
- __publicField$7(this, "key");
15256
- __publicField$7(this, "baseKey");
15257
- __publicField$7(this, "profileId");
15258
- __publicField$7(this, "label");
15259
- __publicField$7(this, "target");
15260
- __publicField$7(this, "profileSession");
15261
- __publicField$7(this, "local", false);
15262
- __publicField$7(this, "status", "connecting");
15263
- __publicField$7(this, "error", null);
15264
- __publicField$7(this, "home", "");
15265
- __publicField$7(this, "os", "");
15266
- __publicField$7(this, "bin", "");
15267
- __publicField$7(this, "remoteSock", "");
15334
+ __publicField$8(this, "key");
15335
+ __publicField$8(this, "baseKey");
15336
+ __publicField$8(this, "profileId");
15337
+ __publicField$8(this, "label");
15338
+ __publicField$8(this, "target");
15339
+ __publicField$8(this, "profileSession");
15340
+ __publicField$8(this, "local", false);
15341
+ __publicField$8(this, "status", "connecting");
15342
+ __publicField$8(this, "error", null);
15343
+ __publicField$8(this, "home", "");
15344
+ __publicField$8(this, "os", "");
15345
+ __publicField$8(this, "bin", "");
15346
+ __publicField$8(this, "remoteSock", "");
15268
15347
  // Control socket of the current master connection (see ctlName).
15269
- __publicField$7(this, "ctl");
15270
- __publicField$7(this, "ctlSeq", 0);
15271
- __publicField$7(this, "fwd");
15272
- __publicField$7(this, "fwdClient");
15273
- __publicField$7(this, "clientFwd", false);
15274
- __publicField$7(this, "relays", []);
15275
- __publicField$7(this, "fs");
15276
- __publicField$7(this, "transcripts");
15277
- __publicField$7(this, "exec");
15278
- __publicField$7(this, "master", null);
15279
- __publicField$7(this, "masterErr", []);
15280
- __publicField$7(this, "fails", 0);
15281
- __publicField$7(this, "timer", null);
15282
- __publicField$7(this, "purgeTimer", null);
15283
- __publicField$7(this, "stopped", false);
15284
- __publicField$7(this, "connecting", false);
15285
- __publicField$7(this, "pollFails", 0);
15348
+ __publicField$8(this, "ctl");
15349
+ __publicField$8(this, "ctlSeq", 0);
15350
+ __publicField$8(this, "fwd");
15351
+ __publicField$8(this, "fwdClient");
15352
+ __publicField$8(this, "clientFwd", false);
15353
+ __publicField$8(this, "relays", []);
15354
+ __publicField$8(this, "fs");
15355
+ __publicField$8(this, "transcripts");
15356
+ __publicField$8(this, "exec");
15357
+ __publicField$8(this, "master", null);
15358
+ __publicField$8(this, "masterErr", []);
15359
+ __publicField$8(this, "fails", 0);
15360
+ __publicField$8(this, "timer", null);
15361
+ __publicField$8(this, "purgeTimer", null);
15362
+ __publicField$8(this, "stopped", false);
15363
+ __publicField$8(this, "connecting", false);
15364
+ __publicField$8(this, "pollFails", 0);
15286
15365
  // Reopenings after refused sessions (growing delay), see sessionRefused.
15287
- __publicField$7(this, "recoveries", 0);
15288
- __publicField$7(this, "lastRecovery", 0);
15289
- __publicField$7(this, "checking", false);
15366
+ __publicField$8(this, "recoveries", 0);
15367
+ __publicField$8(this, "lastRecovery", 0);
15368
+ __publicField$8(this, "checking", false);
15290
15369
  // Identity seen at connection (host name + remote socket): duplicates.
15291
- __publicField$7(this, "ident", "");
15292
- __publicField$7(this, "onChange");
15293
- __publicField$7(this, "onSkip", () => {
15370
+ __publicField$8(this, "ident", "");
15371
+ __publicField$8(this, "onChange");
15372
+ __publicField$8(this, "onSkip", () => {
15294
15373
  });
15295
- __publicField$7(this, "onOnline", () => {
15374
+ __publicField$8(this, "onOnline", () => {
15296
15375
  });
15297
15376
  // Session budget of the shared connection (sshd MaxSessions).
15298
- __publicField$7(this, "gate", new SessionGate({
15377
+ __publicField$8(this, "gate", new SessionGate({
15299
15378
  onRefused: (s, attempt) => {
15300
15379
  if (s.streak === 1) log(`machine ${this.label}: SSH session refused (attempt ${attempt}; open: ${s.execs} commands + ${s.streams} streams, ${s.queued} queued, peak ${s.peak})`);
15301
15380
  void this.sessionRefused();
@@ -15894,9 +15973,9 @@ process.on("exit", () => {
15894
15973
  for (const m of [...remotes.values(), ...sessions.values()]) if (m instanceof RemoteMachine) m.stop();
15895
15974
  });
15896
15975
 
15897
- var __defProp$6 = Object.defineProperty;
15898
- var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15899
- var __publicField$6 = (obj, key, value) => __defNormalProp$6(obj, typeof key !== "symbol" ? key + "" : key, value);
15976
+ var __defProp$7 = Object.defineProperty;
15977
+ var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15978
+ var __publicField$7 = (obj, key, value) => __defNormalProp$7(obj, typeof key !== "symbol" ? key + "" : key, value);
15900
15979
  function writeDeliveryFile(file, value) {
15901
15980
  const temporary = `${file}.next`;
15902
15981
  const fd = fs.openSync(temporary, "w", 384);
@@ -15916,9 +15995,9 @@ function writeDeliveryFile(file, value) {
15916
15995
  }
15917
15996
  class DeliveryLedger {
15918
15997
  constructor(file) {
15919
- __publicField$6(this, "file", file);
15920
- __publicField$6(this, "receipts");
15921
- __publicField$6(this, "active", /* @__PURE__ */ new Map());
15998
+ __publicField$7(this, "file", file);
15999
+ __publicField$7(this, "receipts");
16000
+ __publicField$7(this, "active", /* @__PURE__ */ new Map());
15922
16001
  try {
15923
16002
  this.receipts = JSON.parse(fs.readFileSync(file, "utf8"));
15924
16003
  } catch (e) {
@@ -15945,9 +16024,9 @@ class DeliveryLedger {
15945
16024
  }
15946
16025
  }
15947
16026
 
15948
- var __defProp$5 = Object.defineProperty;
15949
- var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15950
- var __publicField$5 = (obj, key, value) => __defNormalProp$5(obj, key + "" , value);
16027
+ var __defProp$6 = Object.defineProperty;
16028
+ var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
16029
+ var __publicField$6 = (obj, key, value) => __defNormalProp$6(obj, key + "" , value);
15951
16030
  const NOTIFICATION_EVENTS = ["needs-you", "finished", "message", "scheduled"];
15952
16031
  const LEVEL_EVENTS = {
15953
16032
  "finished": ["needs-you", "finished"]};
@@ -16073,7 +16152,7 @@ function paneNotificationSource(pane, state, boards, baseMachine = machineOf(pan
16073
16152
  }
16074
16153
  class NotificationPresence {
16075
16154
  constructor() {
16076
- __publicField$5(this, "leases", /* @__PURE__ */ new Map());
16155
+ __publicField$6(this, "leases", /* @__PURE__ */ new Map());
16077
16156
  }
16078
16157
  heartbeat(client, pane, visible, now = Date.now()) {
16079
16158
  this.prune(now);
@@ -17122,6 +17201,11 @@ function cleanVersion(v) {
17122
17201
  }
17123
17202
  function projectsStatus(p) {
17124
17203
  if (!p) return "missing";
17204
+ const commands = [...p.actions || [], ...p.startup || [], ...p.panes || []];
17205
+ if (versionAtLeast(cleanVersion(p.version), "2.0.0") || commands.some((c) => {
17206
+ const argv = Array.isArray(c == null ? void 0 : c.command) ? c.command : [];
17207
+ return argv[0] === "sh" && argv[1] === "scripts/need-bun.sh" && argv[2] === "scripts/plugin.ts" || argv[0] === "bin/shepherdr" || argv[0] === "sh" && argv[1] === "bin/shepherdr";
17208
+ })) return "shepherdr";
17125
17209
  if (!versionAtLeast(cleanVersion(p.version), PROJECTS_MIN) || !projectsLauncher(p)) return "old";
17126
17210
  return p.enabled === false ? "disabled" : "ready";
17127
17211
  }
@@ -17137,6 +17221,198 @@ function findProjectsPlugin(plugins) {
17137
17221
  return plugins.find((p) => p && typeof p === "object" && p.plugin_id === "herdr-projects") || null;
17138
17222
  }
17139
17223
 
17224
+ const NEW_PANE_WAIT_MS = 2e3;
17225
+ const STEP_MS = 250;
17226
+ async function findNewPane(id, d, waitMs = NEW_PANE_WAIT_MS) {
17227
+ const now = d.now || Date.now;
17228
+ const end = now() + waitMs;
17229
+ for (; ; ) {
17230
+ const p = d.find(id);
17231
+ if (p) return p;
17232
+ await d.refresh();
17233
+ const q = d.find(id);
17234
+ if (q) return q;
17235
+ if (now() >= end) return void 0;
17236
+ await d.sleep(STEP_MS);
17237
+ }
17238
+ }
17239
+
17240
+ var __defProp$5 = Object.defineProperty;
17241
+ var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
17242
+ var __publicField$5 = (obj, key, value) => __defNormalProp$5(obj, key + "" , value);
17243
+ const WORKSPACE_RE = /^(?:[0-9a-f]{4,32}~)?w[0-9a-z]+$/i;
17244
+ const TAB_RE = /^(?:[0-9a-f]{4,32}~)?w[0-9a-z]+:t[0-9a-z]+$/i;
17245
+ const LABEL_MAX = 60;
17246
+ class SpaceActionError extends Error {
17247
+ constructor(code, message) {
17248
+ super(message);
17249
+ __publicField$5(this, "code");
17250
+ this.code = code;
17251
+ }
17252
+ }
17253
+ const fail$1 = (code, message) => {
17254
+ throw new SpaceActionError(code, message);
17255
+ };
17256
+ const cleanLabel$1 = (v) => String(v != null ? v : "").replace(/\s+/g, " ").trim().slice(0, LABEL_MAX);
17257
+ function idOf(v, re, what) {
17258
+ const s = String(v != null ? v : "");
17259
+ if (!re.test(s)) fail$1("bad_id", `invalid ${what}`);
17260
+ return splitId(s);
17261
+ }
17262
+ const cleanCwd = (x) => typeof x === "string" && x.startsWith("/") && x.length <= 4096 && !x.includes("\0") ? x : null;
17263
+ function spaceCall(body) {
17264
+ var _a;
17265
+ const b = body && typeof body === "object" ? body : {};
17266
+ const op = String(b.op || "");
17267
+ switch (op) {
17268
+ case "tab.create": {
17269
+ const w = idOf(b.workspace_id, WORKSPACE_RE, "workspace");
17270
+ const label = cleanLabel$1(b.label);
17271
+ const cwd = cleanCwd(b.cwd);
17272
+ return { machine: w.machine, method: "tab.create", params: { workspace_id: w.local, ...label ? { label } : {}, ...cwd ? { cwd } : {}, focus: false } };
17273
+ }
17274
+ case "workspace.rename":
17275
+ case "tab.rename": {
17276
+ const isTab = op === "tab.rename";
17277
+ const x = isTab ? idOf(b.tab_id, TAB_RE, "tab") : idOf(b.workspace_id, WORKSPACE_RE, "workspace");
17278
+ const label = cleanLabel$1(b.label);
17279
+ if (!label) fail$1("bad_label", "empty name");
17280
+ return { machine: x.machine, method: op, params: { [isTab ? "tab_id" : "workspace_id"]: x.local, label } };
17281
+ }
17282
+ case "workspace.close": {
17283
+ const w = idOf(b.workspace_id, WORKSPACE_RE, "workspace");
17284
+ return { machine: w.machine, method: op, params: { workspace_id: w.local, ...b.close_group === true ? { close_group: true } : {} } };
17285
+ }
17286
+ case "tab.close": {
17287
+ const x = idOf(b.tab_id, TAB_RE, "tab");
17288
+ if (b.close_group === true) return { machine: x.machine, method: "workspace.close", params: { workspace_id: x.local.split(":")[0], close_group: true } };
17289
+ return { machine: x.machine, method: op, params: { tab_id: x.local } };
17290
+ }
17291
+ case "pane.split": {
17292
+ const p = idOf(b.pane_id, PANE_RE$2, "pane");
17293
+ const direction = b.direction;
17294
+ if (direction !== "right" && direction !== "down") fail$1("bad_direction", "invalid direction");
17295
+ const cwd = cleanCwd(b.cwd);
17296
+ return { machine: p.machine, method: op, params: { target_pane_id: p.local, direction, ...cwd ? { cwd } : {}, focus: false } };
17297
+ }
17298
+ case "pane.move": {
17299
+ const p = idOf(b.pane_id, PANE_RE$2, "pane");
17300
+ const to = b.to;
17301
+ let destination;
17302
+ if (to === "new_tab") destination = { type: "new_tab", workspace_id: p.local.split(":")[0] };
17303
+ else if (to === "new_workspace") destination = { type: "new_workspace" };
17304
+ else if (to && typeof to === "object") {
17305
+ const x = idOf(to.tab_id, TAB_RE, "tab");
17306
+ if (x.machine !== p.machine) fail$1("bad_machine", "tab on another machine");
17307
+ destination = { type: "tab", tab_id: x.local, split: "right" };
17308
+ } else return fail$1("bad_destination", "invalid destination");
17309
+ return { machine: p.machine, method: op, params: { pane_id: p.local, destination, focus: false } };
17310
+ }
17311
+ case "pane.swap": {
17312
+ const p = idOf(b.pane_id, PANE_RE$2, "pane");
17313
+ const direction = b.direction;
17314
+ if (!PANE_DIRECTIONS.includes(direction)) fail$1("bad_direction", "invalid direction");
17315
+ return { machine: p.machine, method: op, params: { pane_id: p.local, direction } };
17316
+ }
17317
+ case "pane.drop": {
17318
+ const p = idOf(b.pane_id, PANE_RE$2, "pane");
17319
+ const x = idOf(b.target_pane_id, PANE_RE$2, "pane");
17320
+ if (x.machine !== p.machine) fail$1("bad_machine", "pane on another machine");
17321
+ const side = b.side;
17322
+ if (side !== "center" && !PANE_DIRECTIONS.includes(side)) fail$1("bad_direction", "invalid direction");
17323
+ return { machine: p.machine, method: op, params: { pane_id: p.local, target_pane_id: x.local, side } };
17324
+ }
17325
+ case "layout.ratio": {
17326
+ const x = idOf(b.tab_id, TAB_RE, "tab");
17327
+ const path = String((_a = b.path) != null ? _a : "");
17328
+ if (!/^[01]{0,32}$/.test(path)) fail$1("bad_path", "invalid split");
17329
+ const ratio = Number(b.ratio);
17330
+ if (!Number.isFinite(ratio) || ratio <= 0 || ratio >= 1) fail$1("bad_ratio", "invalid ratio");
17331
+ return {
17332
+ machine: x.machine,
17333
+ method: "layout.set_split_ratio",
17334
+ params: { tab_id: x.local, path: [...path].map((c) => c === "1"), ratio: Math.round(Math.min(0.95, Math.max(0.05, ratio)) * 1e3) / 1e3 }
17335
+ };
17336
+ }
17337
+ case "workspace.move": {
17338
+ const w = idOf(b.workspace_id, WORKSPACE_RE, "workspace");
17339
+ let before = null;
17340
+ if (b.before_workspace_id != null) {
17341
+ const x = idOf(b.before_workspace_id, WORKSPACE_RE, "workspace");
17342
+ if (x.machine !== w.machine) fail$1("bad_machine", "space on another machine");
17343
+ if (x.local === w.local) fail$1("bad_destination", "invalid destination");
17344
+ before = x.local;
17345
+ }
17346
+ return { machine: w.machine, method: "workspace.move_block", params: { workspace_ids: [w.local], before_workspace_id: before } };
17347
+ }
17348
+ default:
17349
+ return fail$1("bad_op", `unknown action: ${op}`);
17350
+ }
17351
+ }
17352
+ function spaceResult(call, r) {
17353
+ var _a, _b, _c, _d, _e;
17354
+ const id = (x) => x == null ? void 0 : call.machine ? `${call.machine}~${x}` : String(x);
17355
+ if (!r || typeof r !== "object") return {};
17356
+ if (call.method === "tab.create") return { tab_id: id((_a = r.tab) == null ? void 0 : _a.tab_id), pane_id: id((_b = r.root_pane) == null ? void 0 : _b.pane_id) };
17357
+ if (call.method === "pane.split") return { pane_id: id((_c = r.pane) == null ? void 0 : _c.pane_id), tab_id: id((_d = r.pane) == null ? void 0 : _d.tab_id) };
17358
+ if (call.method === "pane.move") {
17359
+ const p = (_e = r.move_result) == null ? void 0 : _e.pane;
17360
+ return { pane_id: id(p == null ? void 0 : p.pane_id), tab_id: id(p == null ? void 0 : p.tab_id) };
17361
+ }
17362
+ return {};
17363
+ }
17364
+ function swapSteps(snap, pane, target) {
17365
+ if (!target || target === pane) fail$1("no_neighbor", "no pane on that side");
17366
+ const layouts = Array.isArray(snap == null ? void 0 : snap.layouts) ? snap.layouts : [];
17367
+ const tab = layouts.find((l) => {
17368
+ var _a;
17369
+ return (_a = l.panes) == null ? void 0 : _a.some((p) => p.pane_id === pane);
17370
+ });
17371
+ if (!tab || !tab.panes.some((p) => p.pane_id === target)) fail$1("no_neighbor", "no pane on that side");
17372
+ if (tab.zoomed) fail$1("zoomed", "a pane is zoomed in this tab");
17373
+ const tabFocus = tab.focused_pane_id || null;
17374
+ const [source, other] = tabFocus === target ? [target, pane] : [pane, target];
17375
+ return [{ method: "pane.swap", params: { source_pane_id: source, target_pane_id: other } }, ...refocus(snap, tab, source)];
17376
+ }
17377
+ function refocus(snap, tab, cur) {
17378
+ const layouts = Array.isArray(snap == null ? void 0 : snap.layouts) ? snap.layouts : [];
17379
+ const ws = (Array.isArray(snap == null ? void 0 : snap.workspaces) ? snap.workspaces : []).find((w) => w.workspace_id === tab.workspace_id);
17380
+ const activeTab = layouts.find((l) => l.tab_id === (ws == null ? void 0 : ws.active_tab_id));
17381
+ const steps = [];
17382
+ for (const f of [tab.focused_pane_id || null, (activeTab == null ? void 0 : activeTab.focused_pane_id) || null, (snap == null ? void 0 : snap.focused_pane_id) || null]) {
17383
+ if (!f || f === cur) continue;
17384
+ steps.push({ method: "pane.focus", params: { pane_id: f } });
17385
+ cur = f;
17386
+ }
17387
+ return steps;
17388
+ }
17389
+ function dropSteps(snap, pane, target, side) {
17390
+ if (side === "center") return swapSteps(snap, pane, target);
17391
+ if (!target || target === pane) fail$1("no_neighbor", "same pane");
17392
+ const layouts = Array.isArray(snap == null ? void 0 : snap.layouts) ? snap.layouts : [];
17393
+ const tab = layouts.find((l) => {
17394
+ var _a;
17395
+ return (_a = l.panes) == null ? void 0 : _a.some((p) => p.pane_id === pane);
17396
+ });
17397
+ if (!tab || !tab.panes.some((p) => p.pane_id === target)) fail$1("no_neighbor", "pane in another tab");
17398
+ if (tab.zoomed) fail$1("zoomed", "a pane is zoomed in this tab");
17399
+ const before = side === "left" || side === "up";
17400
+ const steps = [
17401
+ { method: "pane.move", params: { pane_id: pane, destination: { type: "new_tab", workspace_id: tab.workspace_id }, focus: false } },
17402
+ { method: "pane.move", params: { pane_id: pane, destination: { type: "tab", tab_id: tab.tab_id, split: side === "left" || side === "right" ? "right" : "down", target_pane_id: target }, focus: false } }
17403
+ ];
17404
+ if (before) steps.push({ method: "pane.swap", params: { source_pane_id: pane, target_pane_id: target } });
17405
+ return [...steps, ...refocus(snap, tab, before ? pane : null)];
17406
+ }
17407
+ function verifySpaceRename(call, snapshot) {
17408
+ var _a;
17409
+ const tab = call.method === "tab.rename";
17410
+ if (!tab && call.method !== "workspace.rename") return;
17411
+ const key = tab ? "tab_id" : "workspace_id";
17412
+ const target = (_a = tab ? snapshot == null ? void 0 : snapshot.tabs : snapshot == null ? void 0 : snapshot.workspaces) == null ? void 0 : _a.find((x) => x[key] === call.params[key]);
17413
+ if (!target || target.label !== call.params.label) throw new SpaceActionError("rename_failed", "Rename failed. The name was not changed.");
17414
+ }
17415
+
17140
17416
  function safeUploadExtension(requested) {
17141
17417
  return /^[a-z0-9]{1,10}$/i.test(requested) ? requested.toLowerCase() : "bin";
17142
17418
  }
@@ -17235,10 +17511,14 @@ const shellQuote = (s) => `'${s.replace(/'/g, `'\\''`)}'`;
17235
17511
  async function createAgent(body) {
17236
17512
  const kind = String(body.kind || "");
17237
17513
  if (kind !== "shell" && !AGENT_KINDS.includes(kind)) throw new HerdrError("bad_kind", fmt("Unknown agent: {kind}", { kind }));
17238
- let target = body.pane_id ? findPane(String(body.pane_id)) : null;
17514
+ let target = body.pane_id ? findPane(String(body.pane_id)) || null : null;
17239
17515
  if (body.pane_id && !target && PANE_RE$2.test(String(body.pane_id))) {
17240
- await poll();
17241
- target = findPane(String(body.pane_id));
17516
+ const id = String(body.pane_id);
17517
+ const pm = machineOfPane(id);
17518
+ if (pm) {
17519
+ machineFor(pm.key);
17520
+ target = await findNewPane(id, { find: findPane, refresh: () => pollFresh(pm), sleep: sleep$1 }) || null;
17521
+ }
17242
17522
  }
17243
17523
  if (body.pane_id) {
17244
17524
  if (!PANE_RE$2.test(String(body.pane_id)) || !target) throw new HerdrError("bad_pane", "Pane not found");
@@ -17256,18 +17536,16 @@ async function createAgent(body) {
17256
17536
  } catch {
17257
17537
  throw new HerdrError("bad_cwd", fmt("Folder not found: {path}", { path: cwd }));
17258
17538
  }
17259
- const typed = String(body.name || "").trim();
17260
- let name = toAgentName(typed);
17261
- if (typed && !name) throw new HerdrError("bad_name", AGENT_NAME_HINT);
17262
- if (!name) name = `${kind}-${crypto.randomBytes(2).toString("hex")}`;
17263
- const label = String(body.label || "").trim().slice(0, 40) || px.basename(cwd) || "~";
17539
+ const shown = cleanLabel$1(body.name);
17540
+ const name = toAgentName(shown) || `${kind}-${crypto.randomBytes(2).toString("hex")}`;
17541
+ const label = cleanLabel$1(body.label) || shown || px.basename(cwd) || "~";
17264
17542
  let created;
17265
17543
  if (body.worktree) {
17266
17544
  if (!await isGitRepo(cwd, m)) throw new HerdrError("not_git", fmt("Not a Git repository: {path}", { path: cwd }));
17267
17545
  let branch = String(body.branch || "").trim();
17268
17546
  if (branch && !/^[\w][\w./-]{0,79}$/.test(branch)) throw new HerdrError("bad_branch", "Invalid branch name");
17269
17547
  if (!branch) branch = `${kind === "shell" ? "shell" : kind}-${crypto.randomBytes(2).toString("hex")}`;
17270
- const params = { cwd, branch, label: String(body.label || "").trim() || branch, focus: false, trust_repository: true };
17548
+ const params = { cwd, branch, label: cleanLabel$1(body.label) || shown || branch, focus: false, trust_repository: true };
17271
17549
  try {
17272
17550
  created = await hx("worktree.create", params, 3e4);
17273
17551
  } catch (e) {
@@ -17320,6 +17598,7 @@ async function createAgent(body) {
17320
17598
  });
17321
17599
  throw lastErr;
17322
17600
  }
17601
+ if (target && shown) await herdr("pane.rename", { pane_id: paneId, label: shown }).catch((e) => log(`pane.rename ${paneId}: ${e.message}`));
17323
17602
  if (body.prompt && String(body.prompt).trim()) {
17324
17603
  pendingPrompts.set(paneId, { text: String(body.prompt), at: Date.now() });
17325
17604
  addQueued(paneId, body.prompt);
@@ -17700,6 +17979,7 @@ function linkedPane(base, t) {
17700
17979
  const key = sessionMachine(base, link.socket);
17701
17980
  return key === null ? { pane: null, known: false } : { pane: joinId(key, link.pane), known: true };
17702
17981
  }
17982
+ const DESCRIPTION_MAX = 4e3;
17703
17983
  const lists = /* @__PURE__ */ new Map();
17704
17984
  const reading$1 = /* @__PURE__ */ new Map();
17705
17985
  const createdAt = /* @__PURE__ */ new Map();
@@ -17726,15 +18006,18 @@ function readList(m) {
17726
18006
  const now = reading$1.get(m.key);
17727
18007
  if (now) return now;
17728
18008
  const started = Date.now();
18009
+ const descriptions = /* @__PURE__ */ new Map();
17729
18010
  const read = command(m, ["list", "--json"], LIST_TIMEOUT_MS).then(async (text) => ({ tasks: await withCreated(m, await Promise.all(parseTaskList(text).map(async (row) => {
17730
18011
  var _a;
17731
18012
  const file = await readTaskFile(m, row.id).catch(() => null);
17732
18013
  if (file) row = { ...row, identity: taskAgentIdentity(file) };
18014
+ const description = typeof (file == null ? void 0 : file.description) === "string" ? file.description.slice(0, DESCRIPTION_MAX) : "";
18015
+ if (description) descriptions.set(row.id, description);
17733
18016
  return (file == null ? void 0 : file.stage) === "approval" && ((_a = rowFromTaskFile(file)) == null ? void 0 : _a.approvalBlocked) ? { ...row, approvalBlocked: true, group: "needs" } : row;
17734
- }))), at: Date.now(), readAt: Date.now() })).catch((e) => {
18017
+ }))), descriptions, at: Date.now(), readAt: Date.now() })).catch((e) => {
17735
18018
  var _a;
17736
18019
  const last = lists.get(m.key);
17737
- return { tasks: (last == null ? void 0 : last.tasks) || [], at: Date.now(), readAt: (_a = last == null ? void 0 : last.readAt) != null ? _a : 0, error: e.message };
18020
+ return { tasks: (last == null ? void 0 : last.tasks) || [], descriptions: last == null ? void 0 : last.descriptions, at: Date.now(), readAt: (_a = last == null ? void 0 : last.readAt) != null ? _a : 0, error: e.message };
17738
18021
  }).then((c) => {
17739
18022
  lists.set(m.key, c);
17740
18023
  if (c.error) return c;
@@ -17833,6 +18116,24 @@ async function readTasksBoard(since) {
17833
18116
  const version = createHash("sha1").update(JSON.stringify(machines, (k, v) => k === "at" || k === "readAt" ? void 0 : v)).digest("hex").slice(0, 16);
17834
18117
  return since === version ? { same: true, version } : { version, machines };
17835
18118
  }
18119
+ async function searchableBoards(deadlineMs) {
18120
+ const machines = baseMachines();
18121
+ const answered = /* @__PURE__ */ new Map();
18122
+ const read = Promise.all(machines.map((m) => machineTasks(m).then((r) => {
18123
+ answered.set(m.key, (r == null ? void 0 : r.tasks) || []);
18124
+ }, () => {
18125
+ })));
18126
+ await Promise.race([read, after(deadlineMs)]);
18127
+ return machines.map((m) => {
18128
+ var _a;
18129
+ const c = lists.get(m.key);
18130
+ const tasks = (_a = answered.get(m.key)) != null ? _a : c ? withKeys(m.key, c.tasks) : [];
18131
+ return { machine: m.key, tasks: tasks.map((row) => {
18132
+ var _a2;
18133
+ return { row, description: ((_a2 = c == null ? void 0 : c.descriptions) == null ? void 0 : _a2.get(row.id)) || "" };
18134
+ }) };
18135
+ });
18136
+ }
17836
18137
  const boardOf = (machine) => boardMachine(machineFor(machine));
17837
18138
  async function taskOf(m, id) {
17838
18139
  const known = lists.get(m.key);
@@ -18487,6 +18788,7 @@ const SYNCED_SETTINGS = [
18487
18788
  // 1.x `compactList` is no longer read)
18488
18789
  "compactListV2",
18489
18790
  "homeGrouping",
18791
+ "individualAgentList",
18490
18792
  "collapsedMachines",
18491
18793
  "collapsedRepos",
18492
18794
  "showShells",
@@ -19385,12 +19687,13 @@ function parseClaudeScreen(text, now = Date.now()) {
19385
19687
  i = e.next;
19386
19688
  } else i++;
19387
19689
  }
19690
+ const capability = queued.length && lines.slice(top, end).some((l) => SEND_NOW.test(l.trim())) ? { sendNow: true } : {};
19388
19691
  let last = -1;
19389
19692
  for (let i = top - 1; i >= 0; i--) if (/^(?:❯ \S|! +\S)/.test(lines[i])) {
19390
19693
  last = i;
19391
19694
  break;
19392
19695
  }
19393
- if (last < 0) return { shell: null, sent: null, queued };
19696
+ if (last < 0) return { shell: null, sent: null, queued, ...capability };
19394
19697
  const entry = entryAt(lines, last);
19395
19698
  const bash = lines[last].startsWith("! ");
19396
19699
  const sent = bash ? `!${entry.text}` : entry.text;
@@ -19430,7 +19733,7 @@ function parseClaudeScreen(text, now = Date.now()) {
19430
19733
  shell = { command: entry.text, lines: out.slice(-12), hidden, since: ms === null ? null : now - ms };
19431
19734
  }
19432
19735
  }
19433
- return { shell, sent, queued };
19736
+ return { shell, sent, queued, ...capability };
19434
19737
  }
19435
19738
  const NOTICES = [
19436
19739
  /✔?\s*Update installed\s*·\s*Restart to update\b/,
@@ -20670,6 +20973,85 @@ function createScrollThrottle(send2, { intervalMs = SCROLL_MS, now = Date.now, s
20670
20973
  };
20671
20974
  }
20672
20975
 
20976
+ function terminalScrollPosition(value, cols, rows) {
20977
+ const coordinate = (v, size) => typeof v === "number" && Number.isInteger(v) ? Math.max(0, Math.min(size - 1, v)) : Math.floor(size / 2);
20978
+ return {
20979
+ column: coordinate(value.column, cols),
20980
+ row: coordinate(value.row, rows),
20981
+ modifiers: typeof value.modifiers === "number" && Number.isInteger(value.modifiers) ? value.modifiers & 15 : 0
20982
+ };
20983
+ }
20984
+
20985
+ function createTouchScrollPacer(send2) {
20986
+ let metadata = [];
20987
+ let net = 0, inFlight = 0, last = -Infinity;
20988
+ let credit = 8, creditedAt = Date.now(), expiresAt = 0;
20989
+ let timer = null;
20990
+ let disposed = false;
20991
+ const schedule = () => {
20992
+ if (disposed || !net || timer) return;
20993
+ const now = Date.now();
20994
+ if (now >= expiresAt) {
20995
+ net = 0;
20996
+ metadata = [];
20997
+ return;
20998
+ }
20999
+ credit = Math.min(8, credit + Math.max(0, now - creditedAt) * 0.064);
21000
+ creditedAt = now;
21001
+ const wait = Math.max(0, last + (inFlight >= 6 ? 120 : 16) - now, (1 - credit) / 0.064);
21002
+ if (wait > 0) {
21003
+ timer = setTimeout(() => {
21004
+ timer = null;
21005
+ schedule();
21006
+ }, Math.ceil(Math.min(wait, expiresAt - now)));
21007
+ return;
21008
+ }
21009
+ const count = Math.min(Math.abs(net), Math.floor(credit), inFlight >= 6 ? 1 : 3);
21010
+ const direction = net > 0 ? "up" : "down";
21011
+ net -= Math.sign(net) * count;
21012
+ credit -= count;
21013
+ last = now;
21014
+ inFlight += count;
21015
+ for (let i = 0; i < count; i++) send2(direction, 1, metadata.shift());
21016
+ schedule();
21017
+ };
21018
+ const cancel = () => {
21019
+ net = 0;
21020
+ metadata = [];
21021
+ inFlight = 0;
21022
+ last = -Infinity;
21023
+ if (timer) clearTimeout(timer);
21024
+ timer = null;
21025
+ };
21026
+ return {
21027
+ push(direction, lines, value) {
21028
+ if (disposed) return;
21029
+ const amount = direction === "up" ? lines : -lines;
21030
+ if (net && Math.sign(net) !== Math.sign(amount)) {
21031
+ net = 0;
21032
+ metadata = [];
21033
+ }
21034
+ const accepted = Math.min(80 - Math.abs(net), Math.abs(amount));
21035
+ net += Math.sign(amount) * accepted;
21036
+ for (let i = 0; i < accepted; i++) metadata.push(value);
21037
+ expiresAt = Date.now() + 300;
21038
+ schedule();
21039
+ },
21040
+ frame() {
21041
+ if (disposed) return;
21042
+ inFlight = 0;
21043
+ if (timer) clearTimeout(timer);
21044
+ timer = null;
21045
+ schedule();
21046
+ },
21047
+ cancel,
21048
+ dispose() {
21049
+ cancel();
21050
+ disposed = true;
21051
+ }
21052
+ };
21053
+ }
21054
+
20673
21055
  const clampInt = (v, lo, hi, dflt) => {
20674
21056
  const n = parseInt(String(v), 10);
20675
21057
  return Number.isFinite(n) ? Math.min(hi, Math.max(lo, n)) : dflt;
@@ -20772,11 +21154,20 @@ function openTerm(ws, url) {
20772
21154
  child = c;
20773
21155
  log(`term ${pane} opened ${cols}x${rows}${args.includes("--takeover") ? " (takeover)" : ""}${machine.local ? "" : ` on ${machine.label}`}`);
20774
21156
  readline.createInterface({ input: c.stdout }).on("line", (line) => {
20775
- if (!attached && line.includes('"terminal.frame"')) {
21157
+ const isFrame = line.includes('"terminal.frame"');
21158
+ if (!attached && isFrame) {
20776
21159
  attached = true;
20777
21160
  hold == null ? void 0 : hold.resized(size.cols, size.rows);
20778
21161
  }
20779
- if (ws.isOpen()) ws.send(line);
21162
+ if (ws.isOpen()) {
21163
+ ws.send(line);
21164
+ if (isFrame) {
21165
+ for (const [epoch, lines] of scrollDelivered)
21166
+ ws.send(JSON.stringify({ type: "scroll.ack", epoch, lines }));
21167
+ scrollDelivered.clear();
21168
+ }
21169
+ } else scrollDelivered.clear();
21170
+ if (isFrame) touchScroll == null ? void 0 : touchScroll.frame();
20780
21171
  });
20781
21172
  readline.createInterface({ input: c.stderr }).on("line", (line) => {
20782
21173
  log(`term ${pane} stderr: ${line}`);
@@ -20787,6 +21178,8 @@ function openTerm(ws, url) {
20787
21178
  ws.close(4500, "herdr error");
20788
21179
  });
20789
21180
  c.on("exit", (code) => {
21181
+ scroll.dispose();
21182
+ touchScroll == null ? void 0 : touchScroll.dispose();
20790
21183
  termSessions.delete(sess);
20791
21184
  if (ws.isOpen()) ws.close(4e3, `herdr exit ${code}`);
20792
21185
  });
@@ -20794,7 +21187,15 @@ function openTerm(ws, url) {
20794
21187
  });
20795
21188
  for (const m of early.splice(0)) toChild(m);
20796
21189
  }
21190
+ const scrollDelivered = /* @__PURE__ */ new Map();
21191
+ let touchScroll;
20797
21192
  const scroll = createScrollThrottle((direction, lines) => toChild({ type: "terminal.scroll", direction, lines }));
21193
+ const pacedTouch = () => touchScroll || (touchScroll = createTouchScrollPacer((direction, lines, position) => {
21194
+ if (!position) return;
21195
+ const { epoch, preview, ...cell } = position;
21196
+ if (preview) scrollDelivered.set(epoch, (scrollDelivered.get(epoch) || 0) + (direction === "up" ? lines : -lines));
21197
+ toChild({ type: "terminal.scroll", direction, lines, ...cell });
21198
+ }));
20798
21199
  paneSizes().hold(pane).then(async (h) => {
20799
21200
  var _a, _b, _c;
20800
21201
  if (closed) return h.release(true);
@@ -20816,16 +21217,22 @@ function openTerm(ws, url) {
20816
21217
  return;
20817
21218
  }
20818
21219
  switch (m && m.type) {
21220
+ case "ping":
21221
+ if (ws.isOpen()) ws.send(JSON.stringify({ type: "pong" }));
21222
+ break;
20819
21223
  case "terminal.input":
21224
+ touchScroll == null ? void 0 : touchScroll.cancel();
20820
21225
  if (typeof m.text === "string" && m.text.length <= 65536) toChild({ type: "terminal.input", text: m.text });
20821
21226
  else if (typeof m.bytes === "string" && m.bytes.length <= 9e4) toChild({ type: "terminal.input", bytes: m.bytes });
20822
21227
  break;
20823
21228
  case "terminal.mouse": {
21229
+ touchScroll == null ? void 0 : touchScroll.cancel();
20824
21230
  const event = mouse && cleanTerminalMouse(m, size.cols, size.rows);
20825
21231
  if (event) toChild(event);
20826
21232
  break;
20827
21233
  }
20828
21234
  case "terminal.resize": {
21235
+ touchScroll == null ? void 0 : touchScroll.cancel();
20829
21236
  size = { cols: clampInt(m.cols, 10, 400, cols), rows: clampInt(m.rows, 5, 200, rows) };
20830
21237
  if (attached) hold == null ? void 0 : hold.resized(size.cols, size.rows);
20831
21238
  toChild({ type: "terminal.resize", ...size });
@@ -20833,10 +21240,27 @@ function openTerm(ws, url) {
20833
21240
  }
20834
21241
  case "terminal.scroll":
20835
21242
  if (m.direction === "up" || m.direction === "down") {
20836
- scroll.push(m.direction, clampInt(m.lines, 1, 500, 3));
21243
+ if (m.source === "touch") {
21244
+ pacedTouch().push(m.direction, clampInt(m.lines, 1, 500, 3), {
21245
+ ...terminalScrollPosition(m, size.cols, size.rows),
21246
+ epoch: clampInt(m.epoch, 0, Number.MAX_SAFE_INTEGER, 0),
21247
+ preview: m.preview !== false
21248
+ });
21249
+ } else {
21250
+ touchScroll == null ? void 0 : touchScroll.cancel();
21251
+ scroll.push(m.direction, clampInt(m.lines, 1, 500, 3));
21252
+ }
20837
21253
  }
20838
21254
  break;
21255
+ case "touch.cancel":
21256
+ if (m.disabled === true) {
21257
+ touchScroll == null ? void 0 : touchScroll.dispose();
21258
+ touchScroll = void 0;
21259
+ } else touchScroll == null ? void 0 : touchScroll.cancel();
21260
+ scrollDelivered.clear();
21261
+ break;
20839
21262
  case "keys":
21263
+ touchScroll == null ? void 0 : touchScroll.cancel();
20840
21264
  if (Array.isArray(m.keys) && m.keys.length <= 32 && m.keys.every((k) => typeof k === "string" && k.length <= 24)) {
20841
21265
  herdr("pane.send_input", { pane_id: pane, keys: m.keys }).catch((e) => ws.isOpen() && ws.send(JSON.stringify({ type: "web.error", code: e.code, message: e.message })));
20842
21266
  }
@@ -20845,18 +21269,21 @@ function openTerm(ws, url) {
20845
21269
  // turns an image path into an image (typed through wherdr's xterm, which
20846
21270
  // never learns the program's bracketed paste mode, it stays text).
20847
21271
  case "paste":
21272
+ touchScroll == null ? void 0 : touchScroll.cancel();
20848
21273
  if (typeof m.text === "string" && m.text && m.text.length <= 65536) {
20849
21274
  herdr("pane.send_input", { pane_id: pane, text: m.text }).catch((e) => ws.isOpen() && ws.send(JSON.stringify({ type: "web.error", code: e.code, message: e.message })));
20850
21275
  }
20851
21276
  break;
20852
21277
  case "visibility":
20853
21278
  sess.visible = Boolean(m.visible);
21279
+ if (!sess.visible) touchScroll == null ? void 0 : touchScroll.cancel();
20854
21280
  break;
20855
21281
  }
20856
21282
  },
20857
21283
  onClose(clean = false) {
20858
21284
  closed = true;
20859
21285
  scroll.dispose();
21286
+ touchScroll == null ? void 0 : touchScroll.dispose();
20860
21287
  termSessions.delete(sess);
20861
21288
  const c = child;
20862
21289
  if (c) {
@@ -21548,7 +21975,7 @@ const HEADER_RE = new RegExp(String.raw`OpenAI Codex\s*\(${VERSION}\)`, "i");
21548
21975
  const WEEK_LEFT_RE = /weekly limit:?\s*(?:\[[^\]]*\]\s*)?(\d{1,3})\s*%\s*left(?:\s*\(resets\s+([^)]+)\))?/i;
21549
21976
  const WEEK_LESS_RE = /less than\s*(\d{1,3})\s*%\s*of your weekly limit left/i;
21550
21977
  function parseCodexScreen(text) {
21551
- var _a;
21978
+ var _a, _b;
21552
21979
  const out = {};
21553
21980
  if (!text) return out;
21554
21981
  const lines = text.split("\n").map((l) => l.replace(/^[\s│┃]+|[\s│┃]+$/g, ""));
@@ -21566,10 +21993,11 @@ function parseCodexScreen(text) {
21566
21993
  if (m) out.command = norm(m[1]);
21567
21994
  }
21568
21995
  const w = WEEK_LEFT_RE.exec(l);
21569
- if (w) out.weekly = { left: clampPct(Number(w[1])), exact: true, ...w[2] ? { resets: norm(w[2]) } : {} };
21570
- else {
21996
+ if (w) {
21997
+ if (w[2] || !((_a = out.weekly) == null ? void 0 : _a.resets)) out.weekly = { left: clampPct(Number(w[1])), exact: true, ...w[2] ? { resets: norm(w[2]) } : {} };
21998
+ } else {
21571
21999
  const hu = WEEK_LESS_RE.exec(l);
21572
- if (hu && !((_a = out.weekly) == null ? void 0 : _a.exact)) out.weekly = { left: clampPct(Number(hu[1])), exact: false };
22000
+ if (hu && !((_b = out.weekly) == null ? void 0 : _b.exact)) out.weekly = { left: clampPct(Number(hu[1])), exact: false };
21573
22001
  }
21574
22002
  }
21575
22003
  return out;
@@ -22085,11 +22513,18 @@ async function ls(fs2, d) {
22085
22513
  return [];
22086
22514
  }
22087
22515
  }
22516
+ function claudeApiBilling(status) {
22517
+ var _a;
22518
+ return Boolean(status && typeof status === "object" && ((_a = status._wherdr) == null ? void 0 : _a.version) === 1 && !("rate_limits" in status));
22519
+ }
22520
+ const API_AWARE = "total_api_duration_ms";
22088
22521
  function claudeSetupState(f) {
22089
22522
  var _a, _b;
22523
+ if (claudeApiBilling(f.status)) return "api";
22090
22524
  if (f.status && (!f.status.rate_limits || f.account)) return "ok";
22091
- const installed = Boolean(((_a = f.statusline) == null ? void 0 : _a.includes("claude-account")) && ((_b = f.settings) == null ? void 0 : _b.includes("wherdr-statusline.sh")));
22092
- if (installed) return f.status ? "ok" : "pending";
22525
+ const wired = Boolean(((_a = f.statusline) == null ? void 0 : _a.includes("claude-account")) && ((_b = f.settings) == null ? void 0 : _b.includes("wherdr-statusline.sh")));
22526
+ if (wired && f.status) return "ok";
22527
+ if (wired) return f.statusline.includes(API_AWARE) ? "pending" : "outdated";
22093
22528
  return f.status ? "outdated" : "missing";
22094
22529
  }
22095
22530
  async function readClaude(fs2, home) {
@@ -22250,7 +22685,11 @@ function mergeQuotas(readings) {
22250
22685
  const accounts = groupAccounts(readings.flatMap((r) => r.claude ? [{ key: r.key, label: r.label, q: r.claude }] : []));
22251
22686
  let claude = null;
22252
22687
  for (const { machines: _, ...a } of accounts) claude = fresher(claude, a);
22253
- const out = accounts.length > 1 ? { claude, codex, claudeAccounts: accounts } : { claude, codex };
22688
+ const api = readings.some((r) => {
22689
+ var _a;
22690
+ return ((_a = r.setup) == null ? void 0 : _a.state) === "api";
22691
+ });
22692
+ const out = accounts.length > 1 || api && accounts.length ? { claude, codex, claudeAccounts: accounts } : { claude, codex };
22254
22693
  if (codexAccounts.length > 1) out.codexAccounts = codexAccounts;
22255
22694
  const setup = readings.flatMap((r) => r.setup ? [r.setup] : []);
22256
22695
  if (setup.length) out.claudeSetup = setup;
@@ -22357,6 +22796,12 @@ async function installClaudeStatusline(m) {
22357
22796
  return last(r.stdout.toString("utf8"));
22358
22797
  }
22359
22798
 
22799
+ async function readPassiveScreen(call, paneId) {
22800
+ var _a;
22801
+ const r = await call("pane.read", { pane_id: paneId, source: "visible" }, 4e3);
22802
+ return String(((_a = r == null ? void 0 : r.read) == null ? void 0 : _a.text) || "");
22803
+ }
22804
+
22360
22805
  const CLAUDE = {
22361
22806
  keep: {
22362
22807
  "--model": 1,
@@ -22606,12 +23051,24 @@ function claudeFooterMode(text) {
22606
23051
 
22607
23052
  function updateShellSignature(text) {
22608
23053
  const lines = text.replace(/\r/g, "").trimEnd().split("\n");
22609
- const end = lines.findLastIndex((l) => /^\s*(?:🎉\s*)?Update ran successfully! Please restart Codex\.\s*$/.test(l));
22610
- if (end < 0 || !lines.slice(Math.max(0, end - 4), end).some((l) => /^\s*Codex CLI \S+ installed successfully\.\s*$/.test(l))) return null;
23054
+ const installed = /^\s*Codex CLI \S+ installed successfully\.\s*$/;
23055
+ const updated = /^\s*(?:🎉\s*)?Update ran successfully! Please restart Codex\.\s*$/;
23056
+ for (let i = 0; i < lines.length - 1; i++) {
23057
+ if (installed.test(lines[i]) || updated.test(lines[i])) continue;
23058
+ for (const separator of ["", " "]) {
23059
+ const joined = lines[i].trimEnd() + separator + lines[i + 1].trimStart();
23060
+ if (installed.test(joined) || updated.test(joined)) {
23061
+ lines.splice(i, 2, joined);
23062
+ break;
23063
+ }
23064
+ }
23065
+ }
23066
+ const end = lines.findLastIndex((l) => updated.test(l));
23067
+ if (end < 0 || !lines.slice(Math.max(0, end - 4), end).some((l) => installed.test(l))) return null;
22611
23068
  const tail = lines.slice(end + 1).filter((l) => l.trim());
22612
23069
  if (!tail.length || tail.length > 2) return null;
22613
23070
  const last = tail.at(-1);
22614
- if (!/^\s*(?:[\w@./~:-]+(?: [\w@./~:-]+){0,2} )?[$%#❯]\s*$/.test(last)) return null;
23071
+ if (!/^\s*(?:[\w.-]+@[\w.-]+:[\w./~:-]+ ?[$%#]|[\w.-]+@[\w.-]+ [\w./~:-]+ [$%#]|[$%#❯])\s*$/.test(last)) return null;
22615
23072
  if (tail.length === 2 && (!/^\s*[\w./~:-]+ on [\w./:-]+\s*$/.test(tail[0]) || !/^\s*❯\s*$/.test(last))) return null;
22616
23073
  return tail.join("\n");
22617
23074
  }
@@ -22724,7 +23181,7 @@ function createSelfUpdates(d, saved = []) {
22724
23181
  writtenAt = d.now();
22725
23182
  (_a = d.save) == null ? void 0 : _a.call(d, [...records]);
22726
23183
  };
22727
- const read = async (id) => {
23184
+ const readShell = async (id) => {
22728
23185
  var _a, _b;
22729
23186
  return String(((_b = (_a = await d.call("pane.read", { pane_id: id, source: "recent_unwrapped", lines: 80 }, 4e3)) == null ? void 0 : _a.read) == null ? void 0 : _b.text) || "");
22730
23187
  };
@@ -22769,7 +23226,7 @@ function createSelfUpdates(d, saved = []) {
22769
23226
  last.at = d.now();
22770
23227
  last.argv = fg.argv || last.argv;
22771
23228
  last.pane = { id: p.id, workspace: p.workspace, agent: p.agent, agentSession: p.agentSession, bornAt: p.bornAt, cwd: p.cwd, name: p.name, title: p.title };
22772
- const screen = await read(p.id);
23229
+ const screen = await readPassiveScreen(d.call, p.id);
22773
23230
  const chat = await d.chat(p).catch(() => null);
22774
23231
  if (chat && (chat.guessed || chat.session && chat.session !== last.session)) {
22775
23232
  if (chat.session !== last.session) last.conversation = "unknown";
@@ -22809,7 +23266,7 @@ function createSelfUpdates(d, saved = []) {
22809
23266
  }
22810
23267
  last.checked = true;
22811
23268
  if (d.now() - last.gone < 15e3 && !last.oldOutput && (await paneForeground(d, p.id, "codex")).atShell) {
22812
- last.signature = updateShellSignature(await read(p.id)) || void 0;
23269
+ last.signature = updateShellSignature(await readShell(p.id)) || void 0;
22813
23270
  if (last.signature) {
22814
23271
  const chat = await d.chat(last.pane).catch(() => null);
22815
23272
  if (!chat || chat.guessed || !chat.available && last.session) {
@@ -22840,11 +23297,36 @@ function createSelfUpdates(d, saved = []) {
22840
23297
  async check(id) {
22841
23298
  const last = records.get(id);
22842
23299
  if (!(last == null ? void 0 : last.signature) || !(await paneForeground(d, id, "codex")).atShell) return null;
22843
- return updateShellSignature(await read(id)) === last.signature ? last : null;
23300
+ return updateShellSignature(await readShell(id)) === last.signature ? last : null;
22844
23301
  }
22845
23302
  };
22846
23303
  }
22847
23304
 
23305
+ function pollQueue(run) {
23306
+ const inflight = /* @__PURE__ */ new Map();
23307
+ const again = /* @__PURE__ */ new Set();
23308
+ function pollOne(m) {
23309
+ const cur = inflight.get(m.key);
23310
+ if (cur) {
23311
+ again.add(m.key);
23312
+ return cur;
23313
+ }
23314
+ const p = run(m).catch(() => {
23315
+ }).finally(() => {
23316
+ inflight.delete(m.key);
23317
+ if (again.delete(m.key)) pollOne(m);
23318
+ });
23319
+ inflight.set(m.key, p);
23320
+ return p;
23321
+ }
23322
+ async function pollFresh(m) {
23323
+ const cur = inflight.get(m.key);
23324
+ if (cur) await cur;
23325
+ return pollOne(m);
23326
+ }
23327
+ return { pollOne, pollFresh, busy: (key) => inflight.has(key) };
23328
+ }
23329
+
22848
23330
  var _a, _b;
22849
23331
  const fsp$1 = fs.promises;
22850
23332
  function trFor(p) {
@@ -23064,7 +23546,7 @@ const codexStatus = createCodexStatus({
23064
23546
  exec: exec ? (script, input, timeoutMs) => exec(script, [], { input, timeoutMs }) : null
23065
23547
  };
23066
23548
  },
23067
- readScreen: (id) => herdr("pane.read", { pane_id: id, source: "recent_unwrapped", lines: 300 }, 4e3).then((r) => String(r.read && r.read.text || "")),
23549
+ readScreen: (id) => readPassiveScreen(herdr, id),
23068
23550
  rolloutOf: async (p) => {
23069
23551
  var _a2;
23070
23552
  return ((_a2 = await transcripts.locate(p)) == null ? void 0 : _a2.file) || null;
@@ -23955,21 +24437,11 @@ async function pollMachine(m) {
23955
24437
  if (prev && prev.ok && next.ok) watchTransitions(prev, next);
23956
24438
  rebuild();
23957
24439
  }
23958
- const inflight = /* @__PURE__ */ new Map();
23959
- const again = /* @__PURE__ */ new Set();
23960
- function pollOne(m) {
23961
- const cur = inflight.get(m.key);
23962
- if (cur) {
23963
- again.add(m.key);
23964
- return cur;
23965
- }
23966
- const run = pollMachine(m).catch(() => {
23967
- }).finally(() => {
23968
- inflight.delete(m.key);
23969
- if (again.delete(m.key)) pollOne(m);
23970
- });
23971
- inflight.set(m.key, run);
23972
- return run;
24440
+ const polls = pollQueue(pollMachine);
24441
+ const pollOne = polls.pollOne;
24442
+ async function pollFresh(m) {
24443
+ await polls.pollFresh(m);
24444
+ rebuild();
23973
24445
  }
23974
24446
  async function poll() {
23975
24447
  var _a2;
@@ -23995,7 +24467,7 @@ function startPolling() {
23995
24467
  views();
23996
24468
  const loop = () => {
23997
24469
  const ms = allMachines();
23998
- for (const m of ms) if (m.key !== LOCAL && m.status === "online" && !inflight.has(m.key)) pollOne(m);
24470
+ for (const m of ms) if (m.key !== LOCAL && m.status === "online" && !polls.busy(m.key)) pollOne(m);
23999
24471
  pollOne(localMachineOf(ms)).finally(() => {
24000
24472
  if (!stopped) pollTimer = setTimeout(loop, POLL_MS);
24001
24473
  });
@@ -24823,147 +25295,147 @@ const assets = {
24823
25295
  "/manifest-en.webmanifest": {
24824
25296
  "type": "application/manifest+json",
24825
25297
  "etag": "\"260-q1JnCK0/ecdKwgeTve6N4I6/mWI\"",
24826
- "mtime": "2026-10-26T23:39:23.431Z",
25298
+ "mtime": "2026-10-30T16:50:28.555Z",
24827
25299
  "size": 608,
24828
25300
  "path": "../public/manifest-en.webmanifest"
24829
25301
  },
24830
25302
  "/manifest.webmanifest": {
24831
25303
  "type": "application/manifest+json",
24832
25304
  "etag": "\"26e-ykoYuj4V8la457yChW3oQTur8RU\"",
24833
- "mtime": "2026-10-26T23:39:23.431Z",
25305
+ "mtime": "2026-10-30T16:50:28.555Z",
24834
25306
  "size": 622,
24835
25307
  "path": "../public/manifest.webmanifest"
24836
25308
  },
24837
25309
  "/sw.js": {
24838
25310
  "type": "text/javascript; charset=utf-8",
24839
- "etag": "\"1bde-PYS2itHMWROqZUxbm/BBNc1m1JI\"",
24840
- "mtime": "2026-10-26T23:39:27.233Z",
24841
- "size": 7134,
25311
+ "etag": "\"1c0a-J7zN2ymM4vaBPt5sveruAjPwR+4\"",
25312
+ "mtime": "2026-10-30T16:50:31.702Z",
25313
+ "size": 7178,
24842
25314
  "path": "../public/sw.js"
24843
25315
  },
24844
- "/_nuxt/30nuHmZs.js": {
24845
- "type": "text/javascript; charset=utf-8",
25316
+ "/_nuxt/AgentView.B12D6ccj.css": {
25317
+ "type": "text/css; charset=utf-8",
24846
25318
  "encoding": null,
24847
- "etag": "\"d4f-EN8li9vxnDBqPf2TEsUqw/vB8uE\"",
24848
- "mtime": "2026-10-26T23:39:23.425Z",
24849
- "size": 3407,
24850
- "path": "../public/_nuxt/30nuHmZs.js"
25319
+ "etag": "\"1970-POPIQZVf9iStK0emo4cyYU3t8zs\"",
25320
+ "mtime": "2026-10-30T16:50:28.550Z",
25321
+ "size": 6512,
25322
+ "path": "../public/_nuxt/AgentView.B12D6ccj.css"
24851
25323
  },
24852
- "/_nuxt/30nuHmZs.js.gz": {
24853
- "type": "text/javascript; charset=utf-8",
25324
+ "/_nuxt/AgentView.B12D6ccj.css.br": {
25325
+ "type": "text/css; charset=utf-8",
25326
+ "encoding": "br",
25327
+ "etag": "\"5bf-cBXIhNl2x5kW7MtZ2/9bpec5oto\"",
25328
+ "mtime": "2026-10-30T16:50:28.577Z",
25329
+ "size": 1471,
25330
+ "path": "../public/_nuxt/AgentView.B12D6ccj.css.br"
25331
+ },
25332
+ "/_nuxt/AgentView.B12D6ccj.css.gz": {
25333
+ "type": "text/css; charset=utf-8",
24854
25334
  "encoding": "gzip",
24855
- "etag": "\"605-p4LBYlywiePuVtYpZIDBSy+FclU\"",
24856
- "mtime": "2026-10-26T23:39:23.450Z",
24857
- "size": 1541,
24858
- "path": "../public/_nuxt/30nuHmZs.js.gz"
25335
+ "etag": "\"6b8-V26kdgdQl9OMBttUKGeT2L7KXrM\"",
25336
+ "mtime": "2026-10-30T16:50:28.576Z",
25337
+ "size": 1720,
25338
+ "path": "../public/_nuxt/AgentView.B12D6ccj.css.gz"
24859
25339
  },
24860
- "/_nuxt/30nuHmZs.js.br": {
25340
+ "/_nuxt/B2KlcBQ-.js.br": {
24861
25341
  "type": "text/javascript; charset=utf-8",
24862
25342
  "encoding": "br",
24863
- "etag": "\"52b-b/98d4AC8ZGrLDqaPRkD+rcsxRg\"",
24864
- "mtime": "2026-10-26T23:39:23.450Z",
24865
- "size": 1323,
24866
- "path": "../public/_nuxt/30nuHmZs.js.br"
25343
+ "etag": "\"56d6-eQ1DFXaZ3E676KLB/D0Oe31c90Y\"",
25344
+ "mtime": "2026-10-30T16:50:28.730Z",
25345
+ "size": 22230,
25346
+ "path": "../public/_nuxt/B2KlcBQ-.js.br"
24867
25347
  },
24868
- "/_nuxt/4gY2mLGX.js": {
25348
+ "/_nuxt/BDNMzG2s.js": {
24869
25349
  "type": "text/javascript; charset=utf-8",
24870
- "encoding": null,
24871
- "etag": "\"14151-PX/qitcXpIHdOLiirEhH6eKmOmc\"",
24872
- "mtime": "2026-10-26T23:39:23.425Z",
24873
- "size": 82257,
24874
- "path": "../public/_nuxt/4gY2mLGX.js"
25350
+ "etag": "\"54-MasMfSk/A98C3Gn9uIOxtFxkWNw\"",
25351
+ "mtime": "2026-10-30T16:50:28.550Z",
25352
+ "size": 84,
25353
+ "path": "../public/_nuxt/BDNMzG2s.js"
24875
25354
  },
24876
- "/_nuxt/4gY2mLGX.js.br": {
25355
+ "/_nuxt/B2KlcBQ-.js.gz": {
24877
25356
  "type": "text/javascript; charset=utf-8",
24878
- "encoding": "br",
24879
- "etag": "\"66f8-jSgVV0EosjbbTccDxr/eJU09UFA\"",
24880
- "mtime": "2026-10-26T23:39:23.689Z",
24881
- "size": 26360,
24882
- "path": "../public/_nuxt/4gY2mLGX.js.br"
25357
+ "encoding": "gzip",
25358
+ "etag": "\"6435-cXxXKKZ2x77Rf0msZgttQaYCOj4\"",
25359
+ "mtime": "2026-10-30T16:50:28.589Z",
25360
+ "size": 25653,
25361
+ "path": "../public/_nuxt/B2KlcBQ-.js.gz"
24883
25362
  },
24884
- "/_nuxt/4gY2mLGX.js.gz": {
25363
+ "/_nuxt/B2KlcBQ-.js": {
24885
25364
  "type": "text/javascript; charset=utf-8",
24886
- "encoding": "gzip",
24887
- "etag": "\"7314-60tp+ahXfAKKZrof+W7cDgOzdWk\"",
24888
- "mtime": "2026-10-26T23:39:23.455Z",
24889
- "size": 29460,
24890
- "path": "../public/_nuxt/4gY2mLGX.js.gz"
25365
+ "encoding": null,
25366
+ "etag": "\"17ad2-oJQfTvENew7qDThYZRqX6xqcuXM\"",
25367
+ "mtime": "2026-10-30T16:50:28.550Z",
25368
+ "size": 96978,
25369
+ "path": "../public/_nuxt/B2KlcBQ-.js"
24891
25370
  },
24892
- "/_nuxt/AgentView.CfD2RWZY.css": {
24893
- "type": "text/css; charset=utf-8",
25371
+ "/_nuxt/BDTOz37p.js": {
25372
+ "type": "text/javascript; charset=utf-8",
24894
25373
  "encoding": null,
24895
- "etag": "\"16c2-wZvJj+dx6OvnTLQO8UFAESG9QqU\"",
24896
- "mtime": "2026-10-26T23:39:23.425Z",
24897
- "size": 5826,
24898
- "path": "../public/_nuxt/AgentView.CfD2RWZY.css"
25374
+ "etag": "\"1760-dGKWly2VqAWCwl1U6Gdjj2J3JsM\"",
25375
+ "mtime": "2026-10-30T16:50:28.550Z",
25376
+ "size": 5984,
25377
+ "path": "../public/_nuxt/BDTOz37p.js"
24899
25378
  },
24900
- "/_nuxt/AgentView.CfD2RWZY.css.br": {
24901
- "type": "text/css; charset=utf-8",
25379
+ "/_nuxt/BDTOz37p.js.br": {
25380
+ "type": "text/javascript; charset=utf-8",
24902
25381
  "encoding": "br",
24903
- "etag": "\"4ec-Gof/la2KVayXbTdgrzh5AMEpNnY\"",
24904
- "mtime": "2026-10-26T23:39:23.451Z",
24905
- "size": 1260,
24906
- "path": "../public/_nuxt/AgentView.CfD2RWZY.css.br"
25382
+ "etag": "\"86c-lELgRAjotTwfwvLoxoRXFe0KGzk\"",
25383
+ "mtime": "2026-10-30T16:50:28.577Z",
25384
+ "size": 2156,
25385
+ "path": "../public/_nuxt/BDTOz37p.js.br"
24907
25386
  },
24908
- "/_nuxt/AgentView.CfD2RWZY.css.gz": {
24909
- "type": "text/css; charset=utf-8",
25387
+ "/_nuxt/BDTOz37p.js.gz": {
25388
+ "type": "text/javascript; charset=utf-8",
24910
25389
  "encoding": "gzip",
24911
- "etag": "\"5d6-5QSipj30mK6iZZFKEZC5ngTE+NI\"",
24912
- "mtime": "2026-10-26T23:39:23.450Z",
24913
- "size": 1494,
24914
- "path": "../public/_nuxt/AgentView.CfD2RWZY.css.gz"
25390
+ "etag": "\"972-X1IjWEfIYxhnXIVQHbJIUrpPS+0\"",
25391
+ "mtime": "2026-10-30T16:50:28.577Z",
25392
+ "size": 2418,
25393
+ "path": "../public/_nuxt/BDTOz37p.js.gz"
24915
25394
  },
24916
- "/_nuxt/B8eSr-59.js": {
25395
+ "/_nuxt/BGD5AamG.js.br": {
24917
25396
  "type": "text/javascript; charset=utf-8",
24918
- "encoding": null,
24919
- "etag": "\"fb6-twR7ungV3oKD1EZNmAtcdg9y64A\"",
24920
- "mtime": "2026-10-26T23:39:23.425Z",
24921
- "size": 4022,
24922
- "path": "../public/_nuxt/B8eSr-59.js"
25397
+ "encoding": "br",
25398
+ "etag": "\"5510-AO1dqQuueXOu/+L1KjrEsNYwaqY\"",
25399
+ "mtime": "2026-10-30T16:50:28.730Z",
25400
+ "size": 21776,
25401
+ "path": "../public/_nuxt/BGD5AamG.js.br"
24923
25402
  },
24924
- "/_nuxt/B8eSr-59.js.gz": {
25403
+ "/_nuxt/BGD5AamG.js.gz": {
24925
25404
  "type": "text/javascript; charset=utf-8",
24926
25405
  "encoding": "gzip",
24927
- "etag": "\"6e9-xIefuibHWjYEj5lrZnH+5HJp9Ks\"",
24928
- "mtime": "2026-10-26T23:39:23.450Z",
24929
- "size": 1769,
24930
- "path": "../public/_nuxt/B8eSr-59.js.gz"
25406
+ "etag": "\"605e-gP8B2zjYlXWhoQsrREuPGMnl0ak\"",
25407
+ "mtime": "2026-10-30T16:50:28.589Z",
25408
+ "size": 24670,
25409
+ "path": "../public/_nuxt/BGD5AamG.js.gz"
24931
25410
  },
24932
- "/_nuxt/B8eSr-59.js.br": {
25411
+ "/_nuxt/BYZVrreW.js": {
24933
25412
  "type": "text/javascript; charset=utf-8",
24934
- "encoding": "br",
24935
- "etag": "\"640-OBG28ZBgnaK5IRpkc1irW2SajQE\"",
24936
- "mtime": "2026-10-26T23:39:23.451Z",
24937
- "size": 1600,
24938
- "path": "../public/_nuxt/B8eSr-59.js.br"
25413
+ "etag": "\"10a-N491fDe6XBCO0Ywz8HJPp1b+bmk\"",
25414
+ "mtime": "2026-10-30T16:50:28.550Z",
25415
+ "size": 266,
25416
+ "path": "../public/_nuxt/BYZVrreW.js"
24939
25417
  },
24940
- "/_nuxt/BDNMzG2s.js": {
25418
+ "/_nuxt/BGD5AamG.js": {
24941
25419
  "type": "text/javascript; charset=utf-8",
24942
- "etag": "\"54-MasMfSk/A98C3Gn9uIOxtFxkWNw\"",
24943
- "mtime": "2026-10-26T23:39:23.425Z",
24944
- "size": 84,
24945
- "path": "../public/_nuxt/BDNMzG2s.js"
25420
+ "encoding": null,
25421
+ "etag": "\"151e2-0RLShh23hPWE71YeXWFdLTOgpm8\"",
25422
+ "mtime": "2026-10-30T16:50:28.550Z",
25423
+ "size": 86498,
25424
+ "path": "../public/_nuxt/BGD5AamG.js"
24946
25425
  },
24947
25426
  "/_nuxt/Bd17z0YL.js": {
24948
25427
  "type": "text/javascript; charset=utf-8",
24949
25428
  "encoding": null,
24950
25429
  "etag": "\"1615-CPDn06/EO3pj6KudXz5uMZ0FkhI\"",
24951
- "mtime": "2026-10-26T23:39:23.425Z",
25430
+ "mtime": "2026-10-30T16:50:28.550Z",
24952
25431
  "size": 5653,
24953
25432
  "path": "../public/_nuxt/Bd17z0YL.js"
24954
25433
  },
24955
- "/_nuxt/BYZVrreW.js": {
24956
- "type": "text/javascript; charset=utf-8",
24957
- "etag": "\"10a-N491fDe6XBCO0Ywz8HJPp1b+bmk\"",
24958
- "mtime": "2026-10-26T23:39:23.425Z",
24959
- "size": 266,
24960
- "path": "../public/_nuxt/BYZVrreW.js"
24961
- },
24962
25434
  "/_nuxt/Bd17z0YL.js.br": {
24963
25435
  "type": "text/javascript; charset=utf-8",
24964
25436
  "encoding": "br",
24965
25437
  "etag": "\"79e-qSbhutNsc4/hJ9HEH8GMg3hBxLY\"",
24966
- "mtime": "2026-10-26T23:39:23.487Z",
25438
+ "mtime": "2026-10-30T16:50:28.725Z",
24967
25439
  "size": 1950,
24968
25440
  "path": "../public/_nuxt/Bd17z0YL.js.br"
24969
25441
  },
@@ -24971,63 +25443,103 @@ const assets = {
24971
25443
  "type": "text/javascript; charset=utf-8",
24972
25444
  "encoding": "gzip",
24973
25445
  "etag": "\"897-ZZlS54zocIqfLiWEynRKnIn7L2s\"",
24974
- "mtime": "2026-10-26T23:39:23.451Z",
25446
+ "mtime": "2026-10-30T16:50:28.577Z",
24975
25447
  "size": 2199,
24976
25448
  "path": "../public/_nuxt/Bd17z0YL.js.gz"
24977
25449
  },
25450
+ "/_nuxt/BdJIc1Xf.js": {
25451
+ "type": "text/javascript; charset=utf-8",
25452
+ "encoding": null,
25453
+ "etag": "\"eab-KrUMD8PqpakcNW9Q5CF4RQoHwjU\"",
25454
+ "mtime": "2026-10-30T16:50:28.550Z",
25455
+ "size": 3755,
25456
+ "path": "../public/_nuxt/BdJIc1Xf.js"
25457
+ },
25458
+ "/_nuxt/BdJIc1Xf.js.br": {
25459
+ "type": "text/javascript; charset=utf-8",
25460
+ "encoding": "br",
25461
+ "etag": "\"5c5-67t0AzE8M9h3UyKF4SXUizxMzAk\"",
25462
+ "mtime": "2026-10-30T16:50:28.577Z",
25463
+ "size": 1477,
25464
+ "path": "../public/_nuxt/BdJIc1Xf.js.br"
25465
+ },
25466
+ "/_nuxt/BdJIc1Xf.js.gz": {
25467
+ "type": "text/javascript; charset=utf-8",
25468
+ "encoding": "gzip",
25469
+ "etag": "\"6a2-xlucy3H+VIL1E0jc5Syyy22cYks\"",
25470
+ "mtime": "2026-10-30T16:50:28.577Z",
25471
+ "size": 1698,
25472
+ "path": "../public/_nuxt/BdJIc1Xf.js.gz"
25473
+ },
24978
25474
  "/_nuxt/Bpoxvzh6.js": {
24979
25475
  "type": "text/javascript; charset=utf-8",
24980
25476
  "encoding": null,
24981
25477
  "etag": "\"1c49-bXAEhdP8o69g6PbBI2Q4c1IQs2I\"",
24982
- "mtime": "2026-10-26T23:39:23.425Z",
25478
+ "mtime": "2026-10-30T16:50:28.550Z",
24983
25479
  "size": 7241,
24984
25480
  "path": "../public/_nuxt/Bpoxvzh6.js"
24985
25481
  },
25482
+ "/_nuxt/Bpoxvzh6.js.br": {
25483
+ "type": "text/javascript; charset=utf-8",
25484
+ "encoding": "br",
25485
+ "etag": "\"a31-oBhf4FiOofT/RLwig8y7hADIbSA\"",
25486
+ "mtime": "2026-10-30T16:50:28.729Z",
25487
+ "size": 2609,
25488
+ "path": "../public/_nuxt/Bpoxvzh6.js.br"
25489
+ },
24986
25490
  "/_nuxt/Bpoxvzh6.js.gz": {
24987
25491
  "type": "text/javascript; charset=utf-8",
24988
25492
  "encoding": "gzip",
24989
25493
  "etag": "\"b41-rn0l2lZATd/tAqdp1MPScL1c0mA\"",
24990
- "mtime": "2026-10-26T23:39:23.454Z",
25494
+ "mtime": "2026-10-30T16:50:28.729Z",
24991
25495
  "size": 2881,
24992
25496
  "path": "../public/_nuxt/Bpoxvzh6.js.gz"
24993
25497
  },
24994
- "/_nuxt/Bpoxvzh6.js.br": {
25498
+ "/_nuxt/BxlzUs1i.js.br": {
24995
25499
  "type": "text/javascript; charset=utf-8",
24996
25500
  "encoding": "br",
24997
- "etag": "\"a31-oBhf4FiOofT/RLwig8y7hADIbSA\"",
24998
- "mtime": "2026-10-26T23:39:23.487Z",
24999
- "size": 2609,
25000
- "path": "../public/_nuxt/Bpoxvzh6.js.br"
25501
+ "etag": "\"10096-02wn4T3jdPSrqUU/Mlql65QJcxI\"",
25502
+ "mtime": "2026-10-30T16:50:29.138Z",
25503
+ "size": 65686,
25504
+ "path": "../public/_nuxt/BxlzUs1i.js.br"
25001
25505
  },
25002
- "/_nuxt/BsbsvkAK.js": {
25506
+ "/_nuxt/BxlzUs1i.js.gz": {
25003
25507
  "type": "text/javascript; charset=utf-8",
25004
- "encoding": null,
25005
- "etag": "\"37e1-oh+s47R0beK6ZWJzfpEicD7lgMc\"",
25006
- "mtime": "2026-10-26T23:39:23.425Z",
25007
- "size": 14305,
25008
- "path": "../public/_nuxt/BsbsvkAK.js"
25508
+ "encoding": "gzip",
25509
+ "etag": "\"12742-fFGsT0fVEDqogj2qUPKVcj6JnrY\"",
25510
+ "mtime": "2026-10-30T16:50:28.880Z",
25511
+ "size": 75586,
25512
+ "path": "../public/_nuxt/BxlzUs1i.js.gz"
25009
25513
  },
25010
- "/_nuxt/BsbsvkAK.js.br": {
25514
+ "/_nuxt/C-BDzEtI.js.br": {
25011
25515
  "type": "text/javascript; charset=utf-8",
25012
25516
  "encoding": "br",
25013
- "etag": "\"12d7-F6GvIC8hEaZuqUOxqFa+vMfQYoE\"",
25014
- "mtime": "2026-10-26T23:39:23.487Z",
25015
- "size": 4823,
25016
- "path": "../public/_nuxt/BsbsvkAK.js.br"
25517
+ "etag": "\"ac75-FtZfzBd5xIVMpFTR4Sw3CDLn/f4\"",
25518
+ "mtime": "2026-10-30T16:50:28.959Z",
25519
+ "size": 44149,
25520
+ "path": "../public/_nuxt/C-BDzEtI.js.br"
25017
25521
  },
25018
- "/_nuxt/BsbsvkAK.js.gz": {
25522
+ "/_nuxt/C-BDzEtI.js.gz": {
25019
25523
  "type": "text/javascript; charset=utf-8",
25020
25524
  "encoding": "gzip",
25021
- "etag": "\"14c2-1FR0/Qfnko5V/6g4KCkgZfA48GI\"",
25022
- "mtime": "2026-10-26T23:39:23.487Z",
25023
- "size": 5314,
25024
- "path": "../public/_nuxt/BsbsvkAK.js.gz"
25525
+ "etag": "\"cb26-UOdN/sYoHqj9TTwOLkAKihuIbEk\"",
25526
+ "mtime": "2026-10-30T16:50:28.781Z",
25527
+ "size": 52006,
25528
+ "path": "../public/_nuxt/C-BDzEtI.js.gz"
25529
+ },
25530
+ "/_nuxt/BxlzUs1i.js": {
25531
+ "type": "text/javascript; charset=utf-8",
25532
+ "encoding": null,
25533
+ "etag": "\"39087-nQumoL0Zi8gSbeSqD/Ufsxt3R24\"",
25534
+ "mtime": "2026-10-30T16:50:28.550Z",
25535
+ "size": 233607,
25536
+ "path": "../public/_nuxt/BxlzUs1i.js"
25025
25537
  },
25026
25538
  "/_nuxt/C25ROUa9.js.br": {
25027
25539
  "type": "text/javascript; charset=utf-8",
25028
25540
  "encoding": "br",
25029
25541
  "etag": "\"80f0-NhDll6VrOupqHqwk4yBxvm5jq18\"",
25030
- "mtime": "2026-10-26T23:39:23.881Z",
25542
+ "mtime": "2026-10-30T16:50:28.934Z",
25031
25543
  "size": 33008,
25032
25544
  "path": "../public/_nuxt/C25ROUa9.js.br"
25033
25545
  },
@@ -25035,7 +25547,7 @@ const assets = {
25035
25547
  "type": "text/javascript; charset=utf-8",
25036
25548
  "encoding": "gzip",
25037
25549
  "etag": "\"8fac-0dHfNcSWZNWAsX3MngUQ3KiWnaU\"",
25038
- "mtime": "2026-10-26T23:39:23.490Z",
25550
+ "mtime": "2026-10-30T16:50:28.731Z",
25039
25551
  "size": 36780,
25040
25552
  "path": "../public/_nuxt/C25ROUa9.js.gz"
25041
25553
  },
@@ -25043,7 +25555,7 @@ const assets = {
25043
25555
  "type": "text/javascript; charset=utf-8",
25044
25556
  "encoding": null,
25045
25557
  "etag": "\"7e5c-4oH4bzjszPo3bZwQbTcPqcxL7Q8\"",
25046
- "mtime": "2026-10-26T23:39:23.425Z",
25558
+ "mtime": "2026-10-30T16:50:28.550Z",
25047
25559
  "size": 32348,
25048
25560
  "path": "../public/_nuxt/CDWjMk9C.js"
25049
25561
  },
@@ -25051,70 +25563,133 @@ const assets = {
25051
25563
  "type": "text/javascript; charset=utf-8",
25052
25564
  "encoding": null,
25053
25565
  "etag": "\"176b5-t7ykke36hXndVVgSfWGMLAcfqiU\"",
25054
- "mtime": "2026-10-26T23:39:23.425Z",
25566
+ "mtime": "2026-10-30T16:50:28.550Z",
25055
25567
  "size": 95925,
25056
25568
  "path": "../public/_nuxt/C25ROUa9.js"
25057
25569
  },
25570
+ "/_nuxt/C-BDzEtI.js": {
25571
+ "type": "text/javascript; charset=utf-8",
25572
+ "encoding": null,
25573
+ "etag": "\"2a3e4-CZScTzlemniRSrp1fWJ2UrnsHXM\"",
25574
+ "mtime": "2026-10-30T16:50:28.550Z",
25575
+ "size": 173028,
25576
+ "path": "../public/_nuxt/C-BDzEtI.js"
25577
+ },
25058
25578
  "/_nuxt/CDWjMk9C.js.br": {
25059
25579
  "type": "text/javascript; charset=utf-8",
25060
25580
  "encoding": "br",
25061
25581
  "etag": "\"2c7d-MSYhOFOyxFG7EGTLaDrRc1PTgP4\"",
25062
- "mtime": "2026-10-26T23:39:23.677Z",
25582
+ "mtime": "2026-10-30T16:50:28.881Z",
25063
25583
  "size": 11389,
25064
25584
  "path": "../public/_nuxt/CDWjMk9C.js.br"
25065
25585
  },
25586
+ "/_nuxt/CLf2i_DM.js": {
25587
+ "type": "text/javascript; charset=utf-8",
25588
+ "etag": "\"13f-l6MqfzuLiSClPRTWWEQkBKCiVdc\"",
25589
+ "mtime": "2026-10-30T16:50:28.550Z",
25590
+ "size": 319,
25591
+ "path": "../public/_nuxt/CLf2i_DM.js"
25592
+ },
25066
25593
  "/_nuxt/CDWjMk9C.js.gz": {
25067
25594
  "type": "text/javascript; charset=utf-8",
25068
25595
  "encoding": "gzip",
25069
25596
  "etag": "\"3112-7vQD7fBK1KDlVHHbgySojvVCDho\"",
25070
- "mtime": "2026-10-26T23:39:23.487Z",
25597
+ "mtime": "2026-10-30T16:50:28.881Z",
25071
25598
  "size": 12562,
25072
25599
  "path": "../public/_nuxt/CDWjMk9C.js.gz"
25073
25600
  },
25074
- "/_nuxt/CML5cHwz.js": {
25601
+ "/_nuxt/CO4sDeSt.js.br": {
25075
25602
  "type": "text/javascript; charset=utf-8",
25076
- "etag": "\"13f-wgHGgF19X3UVUyLc7KhIq1o50GQ\"",
25077
- "mtime": "2026-10-26T23:39:23.425Z",
25078
- "size": 319,
25079
- "path": "../public/_nuxt/CML5cHwz.js"
25603
+ "encoding": "br",
25604
+ "etag": "\"66fc-frmxzfRrsgnhuPf0vUqKUBHEcs4\"",
25605
+ "mtime": "2026-10-30T16:50:28.959Z",
25606
+ "size": 26364,
25607
+ "path": "../public/_nuxt/CO4sDeSt.js.br"
25080
25608
  },
25081
- "/_nuxt/CN39A7L5.js.br": {
25609
+ "/_nuxt/CO4sDeSt.js": {
25610
+ "type": "text/javascript; charset=utf-8",
25611
+ "encoding": null,
25612
+ "etag": "\"14154-xeT2ii4pU6xcyNxr0zeaomnBnPw\"",
25613
+ "mtime": "2026-10-30T16:50:28.550Z",
25614
+ "size": 82260,
25615
+ "path": "../public/_nuxt/CO4sDeSt.js"
25616
+ },
25617
+ "/_nuxt/CO4sDeSt.js.gz": {
25618
+ "type": "text/javascript; charset=utf-8",
25619
+ "encoding": "gzip",
25620
+ "etag": "\"730e-Baa9GdBsH37Sj/XZrK0fXPSgchU\"",
25621
+ "mtime": "2026-10-30T16:50:28.928Z",
25622
+ "size": 29454,
25623
+ "path": "../public/_nuxt/CO4sDeSt.js.gz"
25624
+ },
25625
+ "/_nuxt/CPlkxpge.js.br": {
25082
25626
  "type": "text/javascript; charset=utf-8",
25083
25627
  "encoding": "br",
25084
- "etag": "\"ab76-FGFHLeVUnayCDOGKv140N+6IWX4\"",
25085
- "mtime": "2026-10-26T23:39:24.113Z",
25086
- "size": 43894,
25087
- "path": "../public/_nuxt/CN39A7L5.js.br"
25628
+ "etag": "\"233a2-Dh1aH2CDr5u8X+xdTfd4tZxlbQo\"",
25629
+ "mtime": "2026-10-30T16:50:30.365Z",
25630
+ "size": 144290,
25631
+ "path": "../public/_nuxt/CPlkxpge.js.br"
25088
25632
  },
25089
- "/_nuxt/CN39A7L5.js": {
25633
+ "/_nuxt/CPlkxpge.js.gz": {
25090
25634
  "type": "text/javascript; charset=utf-8",
25091
- "encoding": null,
25092
- "etag": "\"29e56-ZQvRCFS2BMQGdY1T2Sh48LIcU7A\"",
25093
- "mtime": "2026-10-26T23:39:23.425Z",
25094
- "size": 171606,
25095
- "path": "../public/_nuxt/CN39A7L5.js"
25635
+ "encoding": "gzip",
25636
+ "etag": "\"2c26e-MaW3IFcx1qlcRvEI5OcC6+Omr8U\"",
25637
+ "mtime": "2026-10-30T16:50:29.142Z",
25638
+ "size": 180846,
25639
+ "path": "../public/_nuxt/CPlkxpge.js.gz"
25640
+ },
25641
+ "/_nuxt/CTPNZj4T.js.br": {
25642
+ "type": "text/javascript; charset=utf-8",
25643
+ "encoding": "br",
25644
+ "etag": "\"77bb-SbyzfGLlwIlYZ5aHNmdrRq/vivw\"",
25645
+ "mtime": "2026-10-30T16:50:29.142Z",
25646
+ "size": 30651,
25647
+ "path": "../public/_nuxt/CTPNZj4T.js.br"
25648
+ },
25649
+ "/_nuxt/CTPNZj4T.js.gz": {
25650
+ "type": "text/javascript; charset=utf-8",
25651
+ "encoding": "gzip",
25652
+ "etag": "\"8f2d-MUHgAZ63BxMYDOIyY2OoIvAb1go\"",
25653
+ "mtime": "2026-10-30T16:50:28.966Z",
25654
+ "size": 36653,
25655
+ "path": "../public/_nuxt/CTPNZj4T.js.gz"
25656
+ },
25657
+ "/_nuxt/CV6ukk-M.js": {
25658
+ "type": "text/javascript; charset=utf-8",
25659
+ "etag": "\"238-AvHmRF0djWJDBUz5vjLWTwDc9n8\"",
25660
+ "mtime": "2026-10-30T16:50:28.550Z",
25661
+ "size": 568,
25662
+ "path": "../public/_nuxt/CV6ukk-M.js"
25096
25663
  },
25097
25664
  "/_nuxt/CXJnLmWv.js": {
25098
25665
  "type": "text/javascript; charset=utf-8",
25099
25666
  "encoding": null,
25100
25667
  "etag": "\"2426-wVRk+id72MiZ5Jk+fsnfLyJbNcM\"",
25101
- "mtime": "2026-10-26T23:39:23.425Z",
25668
+ "mtime": "2026-10-30T16:50:28.551Z",
25102
25669
  "size": 9254,
25103
25670
  "path": "../public/_nuxt/CXJnLmWv.js"
25104
25671
  },
25105
- "/_nuxt/CN39A7L5.js.gz": {
25672
+ "/_nuxt/CTPNZj4T.js": {
25106
25673
  "type": "text/javascript; charset=utf-8",
25107
- "encoding": "gzip",
25108
- "etag": "\"c9a6-cdyydr5VK3SBWDMF23dXzxRyxNU\"",
25109
- "mtime": "2026-10-26T23:39:23.876Z",
25110
- "size": 51622,
25111
- "path": "../public/_nuxt/CN39A7L5.js.gz"
25674
+ "encoding": null,
25675
+ "etag": "\"255bb-6az5/Mg/5IzMmOnZIhzEQtBxdvI\"",
25676
+ "mtime": "2026-10-30T16:50:28.551Z",
25677
+ "size": 153019,
25678
+ "path": "../public/_nuxt/CTPNZj4T.js"
25679
+ },
25680
+ "/_nuxt/CPlkxpge.js": {
25681
+ "type": "text/javascript; charset=utf-8",
25682
+ "encoding": null,
25683
+ "etag": "\"a5362-akUWKp2erY/CvvUb4uA+1IC/QNE\"",
25684
+ "mtime": "2026-10-30T16:50:28.551Z",
25685
+ "size": 676706,
25686
+ "path": "../public/_nuxt/CPlkxpge.js"
25112
25687
  },
25113
25688
  "/_nuxt/CXJnLmWv.js.br": {
25114
25689
  "type": "text/javascript; charset=utf-8",
25115
25690
  "encoding": "br",
25116
25691
  "etag": "\"ddb-HQOV8vHjZ1W3hzhqgfZLIV3eGPA\"",
25117
- "mtime": "2026-10-26T23:39:23.679Z",
25692
+ "mtime": "2026-10-30T16:50:28.959Z",
25118
25693
  "size": 3547,
25119
25694
  "path": "../public/_nuxt/CXJnLmWv.js.br"
25120
25695
  },
@@ -25122,219 +25697,204 @@ const assets = {
25122
25697
  "type": "text/javascript; charset=utf-8",
25123
25698
  "encoding": "gzip",
25124
25699
  "etag": "\"f2a-JOq3Ui2nTl6A2z6tR8c7DVsY0tQ\"",
25125
- "mtime": "2026-10-26T23:39:23.679Z",
25700
+ "mtime": "2026-10-30T16:50:28.959Z",
25126
25701
  "size": 3882,
25127
25702
  "path": "../public/_nuxt/CXJnLmWv.js.gz"
25128
25703
  },
25129
- "/_nuxt/CfQgQDOp.js": {
25704
+ "/_nuxt/CgUSTIM1.js": {
25130
25705
  "type": "text/javascript; charset=utf-8",
25131
25706
  "encoding": null,
25132
- "etag": "\"245d0-5mPtwpDPf76u5vT8EHBKMFyhZ7s\"",
25133
- "mtime": "2026-10-26T23:39:23.425Z",
25134
- "size": 148944,
25135
- "path": "../public/_nuxt/CfQgQDOp.js"
25136
- },
25137
- "/_nuxt/CfQgQDOp.js.br": {
25138
- "type": "text/javascript; charset=utf-8",
25139
- "encoding": "br",
25140
- "etag": "\"727a-rj5rPsD5FXtRhfnIfH88BIinMfc\"",
25141
- "mtime": "2026-10-26T23:39:23.890Z",
25142
- "size": 29306,
25143
- "path": "../public/_nuxt/CfQgQDOp.js.br"
25144
- },
25145
- "/_nuxt/CfQgQDOp.js.gz": {
25146
- "type": "text/javascript; charset=utf-8",
25147
- "encoding": "gzip",
25148
- "etag": "\"88fc-ekloFmqENOfYBpqJovDBDmbeX9g\"",
25149
- "mtime": "2026-10-26T23:39:23.876Z",
25150
- "size": 35068,
25151
- "path": "../public/_nuxt/CfQgQDOp.js.gz"
25707
+ "etag": "\"d4e-ntLcFbEetTyBddEPoO203pn+mtY\"",
25708
+ "mtime": "2026-10-30T16:50:28.551Z",
25709
+ "size": 3406,
25710
+ "path": "../public/_nuxt/CgUSTIM1.js"
25152
25711
  },
25153
- "/_nuxt/CoRTPMqP.js.br": {
25712
+ "/_nuxt/CgUSTIM1.js.br": {
25154
25713
  "type": "text/javascript; charset=utf-8",
25155
25714
  "encoding": "br",
25156
- "etag": "\"228f9-5Ylw5DbYjmYiOWJswU1Hd/ZfAUE\"",
25157
- "mtime": "2026-10-26T23:39:25.431Z",
25158
- "size": 141561,
25159
- "path": "../public/_nuxt/CoRTPMqP.js.br"
25715
+ "etag": "\"52a-hxHSpCX4D54JTtN6DfQ2a7zlJXM\"",
25716
+ "mtime": "2026-10-30T16:50:28.959Z",
25717
+ "size": 1322,
25718
+ "path": "../public/_nuxt/CgUSTIM1.js.br"
25160
25719
  },
25161
- "/_nuxt/CoRTPMqP.js.gz": {
25720
+ "/_nuxt/CgUSTIM1.js.gz": {
25162
25721
  "type": "text/javascript; charset=utf-8",
25163
25722
  "encoding": "gzip",
25164
- "etag": "\"2b4dc-O9POpN7K72Y71soFo2Xkm6hpQBg\"",
25165
- "mtime": "2026-10-26T23:39:24.175Z",
25166
- "size": 177372,
25167
- "path": "../public/_nuxt/CoRTPMqP.js.gz"
25168
- },
25169
- "/_nuxt/CvGCN0_f.js.gz": {
25170
- "type": "text/javascript; charset=utf-8",
25171
- "encoding": "gzip",
25172
- "etag": "\"12cdd-LdUptPtdfZIs00Sd62SCHKTUhaE\"",
25173
- "mtime": "2026-10-26T23:39:24.125Z",
25174
- "size": 77021,
25175
- "path": "../public/_nuxt/CvGCN0_f.js.gz"
25723
+ "etag": "\"605-YhMsQHGpUiasHunvC0M+rqpqWmg\"",
25724
+ "mtime": "2026-10-30T16:50:28.959Z",
25725
+ "size": 1541,
25726
+ "path": "../public/_nuxt/CgUSTIM1.js.gz"
25176
25727
  },
25177
- "/_nuxt/DmYihq1h.js": {
25728
+ "/_nuxt/CwurhZnh.js": {
25178
25729
  "type": "text/javascript; charset=utf-8",
25179
- "etag": "\"238-8uyN3ULXdJ0mPoLjibQpK+4kU08\"",
25180
- "mtime": "2026-10-26T23:39:23.425Z",
25181
- "size": 568,
25182
- "path": "../public/_nuxt/DmYihq1h.js"
25730
+ "encoding": null,
25731
+ "etag": "\"20b50-r4WVv3JZk5oB5bO2QxdLw7mG+yE\"",
25732
+ "mtime": "2026-10-30T16:50:28.551Z",
25733
+ "size": 133968,
25734
+ "path": "../public/_nuxt/CwurhZnh.js"
25183
25735
  },
25184
- "/_nuxt/CvGCN0_f.js.br": {
25736
+ "/_nuxt/CwurhZnh.js.br": {
25185
25737
  "type": "text/javascript; charset=utf-8",
25186
25738
  "encoding": "br",
25187
- "etag": "\"10531-CMPo7AjTpbtwHEeCXKINVHjs4Lw\"",
25188
- "mtime": "2026-10-26T23:39:24.295Z",
25189
- "size": 66865,
25190
- "path": "../public/_nuxt/CvGCN0_f.js.br"
25191
- },
25192
- "/_nuxt/CvGCN0_f.js": {
25193
- "type": "text/javascript; charset=utf-8",
25194
- "encoding": null,
25195
- "etag": "\"39f55-JsGkDsS+fil5KwOB+Pr6Rx4BCk8\"",
25196
- "mtime": "2026-10-26T23:39:23.425Z",
25197
- "size": 237397,
25198
- "path": "../public/_nuxt/CvGCN0_f.js"
25739
+ "etag": "\"a5c3-dmUo6h+XWpD/Fv76KSGQQ6gQaLc\"",
25740
+ "mtime": "2026-10-30T16:50:29.240Z",
25741
+ "size": 42435,
25742
+ "path": "../public/_nuxt/CwurhZnh.js.br"
25199
25743
  },
25200
- "/_nuxt/DoX0nZZb.js": {
25744
+ "/_nuxt/CwurhZnh.js.gz": {
25201
25745
  "type": "text/javascript; charset=utf-8",
25202
- "encoding": null,
25203
- "etag": "\"1fca2-uqmFiPUr4XpxQBB6fRIe9O3ml4U\"",
25204
- "mtime": "2026-10-26T23:39:23.426Z",
25205
- "size": 130210,
25206
- "path": "../public/_nuxt/DoX0nZZb.js"
25746
+ "encoding": "gzip",
25747
+ "etag": "\"bd15-T9GipHsxhBJGHFNPTKoe2QoZaF4\"",
25748
+ "mtime": "2026-10-30T16:50:29.115Z",
25749
+ "size": 48405,
25750
+ "path": "../public/_nuxt/CwurhZnh.js.gz"
25207
25751
  },
25208
- "/_nuxt/CoRTPMqP.js": {
25752
+ "/_nuxt/D7fCPncR.js": {
25209
25753
  "type": "text/javascript; charset=utf-8",
25210
25754
  "encoding": null,
25211
- "etag": "\"a2d51-kQrw8yzbnTqc2cD+PtjMGNH1AEA\"",
25212
- "mtime": "2026-10-26T23:39:23.426Z",
25213
- "size": 666961,
25214
- "path": "../public/_nuxt/CoRTPMqP.js"
25755
+ "etag": "\"4a76-6kEF4igNYP8cJllGcqMISYipM2Y\"",
25756
+ "mtime": "2026-10-30T16:50:28.551Z",
25757
+ "size": 19062,
25758
+ "path": "../public/_nuxt/D7fCPncR.js"
25215
25759
  },
25216
- "/_nuxt/DoX0nZZb.js.br": {
25760
+ "/_nuxt/D7fCPncR.js.br": {
25217
25761
  "type": "text/javascript; charset=utf-8",
25218
25762
  "encoding": "br",
25219
- "etag": "\"a18e-kjO69wKtKyClv6b9e0pDvmppGSQ\"",
25220
- "mtime": "2026-10-26T23:39:24.294Z",
25221
- "size": 41358,
25222
- "path": "../public/_nuxt/DoX0nZZb.js.br"
25763
+ "etag": "\"1740-gUQ4GPrfLNVyTjUGmc8UQGg/8VA\"",
25764
+ "mtime": "2026-10-30T16:50:29.089Z",
25765
+ "size": 5952,
25766
+ "path": "../public/_nuxt/D7fCPncR.js.br"
25223
25767
  },
25224
- "/_nuxt/DoX0nZZb.js.gz": {
25768
+ "/_nuxt/D7fCPncR.js.gz": {
25225
25769
  "type": "text/javascript; charset=utf-8",
25226
25770
  "encoding": "gzip",
25227
- "etag": "\"b91c-e0QTxV090Qsoq9GrVFTllZ4HTIU\"",
25228
- "mtime": "2026-10-26T23:39:24.113Z",
25229
- "size": 47388,
25230
- "path": "../public/_nuxt/DoX0nZZb.js.gz"
25231
- },
25232
- "/_nuxt/DuVQjOfc.js.br": {
25233
- "type": "text/javascript; charset=utf-8",
25234
- "encoding": "br",
25235
- "etag": "\"56b0-0awUTkvKk514bHSKrcnam8+1ABU\"",
25236
- "mtime": "2026-10-26T23:39:24.127Z",
25237
- "size": 22192,
25238
- "path": "../public/_nuxt/DuVQjOfc.js.br"
25771
+ "etag": "\"19f0-C72KQY/Hw+Q4obRTmP+I0XsBPeE\"",
25772
+ "mtime": "2026-10-30T16:50:29.089Z",
25773
+ "size": 6640,
25774
+ "path": "../public/_nuxt/D7fCPncR.js.gz"
25239
25775
  },
25240
- "/_nuxt/DuVQjOfc.js": {
25776
+ "/_nuxt/DFe-cDm2.js": {
25241
25777
  "type": "text/javascript; charset=utf-8",
25242
25778
  "encoding": null,
25243
- "etag": "\"17992-+9epM6Y1r2ynOiN0dVs4azejso0\"",
25244
- "mtime": "2026-10-26T23:39:23.426Z",
25245
- "size": 96658,
25246
- "path": "../public/_nuxt/DuVQjOfc.js"
25779
+ "etag": "\"37de-vSPMEkfX44tEsulXAligysHEmPc\"",
25780
+ "mtime": "2026-10-30T16:50:28.551Z",
25781
+ "size": 14302,
25782
+ "path": "../public/_nuxt/DFe-cDm2.js"
25247
25783
  },
25248
- "/_nuxt/DuVQjOfc.js.gz": {
25784
+ "/_nuxt/DFe-cDm2.js.br": {
25249
25785
  "type": "text/javascript; charset=utf-8",
25250
- "encoding": "gzip",
25251
- "etag": "\"6422-9epq/KHCAdKLwPLeFkRGSatETng\"",
25252
- "mtime": "2026-10-26T23:39:24.127Z",
25253
- "size": 25634,
25254
- "path": "../public/_nuxt/DuVQjOfc.js.gz"
25786
+ "encoding": "br",
25787
+ "etag": "\"12d6-7O+K1rad/527HVKyvdR/Bh0kAE0\"",
25788
+ "mtime": "2026-10-30T16:50:29.138Z",
25789
+ "size": 4822,
25790
+ "path": "../public/_nuxt/DFe-cDm2.js.br"
25255
25791
  },
25256
- "/_nuxt/Y-4S7Nuf.js": {
25792
+ "/_nuxt/DFe-cDm2.js.gz": {
25257
25793
  "type": "text/javascript; charset=utf-8",
25258
- "encoding": null,
25259
- "etag": "\"eac-IzsBGjL5dhkay14/YDWL9qZ7qm0\"",
25260
- "mtime": "2026-10-26T23:39:23.426Z",
25261
- "size": 3756,
25262
- "path": "../public/_nuxt/Y-4S7Nuf.js"
25794
+ "encoding": "gzip",
25795
+ "etag": "\"14b9-AtVa8MJdZS84IiUygFFc1u8dcjA\"",
25796
+ "mtime": "2026-10-30T16:50:29.138Z",
25797
+ "size": 5305,
25798
+ "path": "../public/_nuxt/DFe-cDm2.js.gz"
25263
25799
  },
25264
- "/_nuxt/Y-4S7Nuf.js.br": {
25800
+ "/_nuxt/Dpe9TNcA.js.br": {
25265
25801
  "type": "text/javascript; charset=utf-8",
25266
25802
  "encoding": "br",
25267
- "etag": "\"5b7-jgzRq0dFZ75BnKPrMCyvf7VGIlw\"",
25268
- "mtime": "2026-10-26T23:39:24.126Z",
25269
- "size": 1463,
25270
- "path": "../public/_nuxt/Y-4S7Nuf.js.br"
25803
+ "etag": "\"189e4-2LhXYLNdABO2QAS/VGkI8y6XKnY\"",
25804
+ "mtime": "2026-10-30T16:50:30.147Z",
25805
+ "size": 100836,
25806
+ "path": "../public/_nuxt/Dpe9TNcA.js.br"
25271
25807
  },
25272
- "/_nuxt/Y-4S7Nuf.js.gz": {
25808
+ "/_nuxt/Dpe9TNcA.js.gz": {
25273
25809
  "type": "text/javascript; charset=utf-8",
25274
25810
  "encoding": "gzip",
25275
- "etag": "\"6a2-6Ftzl8Q5fil5YQYgIdfoXyySTzA\"",
25276
- "mtime": "2026-10-26T23:39:24.126Z",
25277
- "size": 1698,
25278
- "path": "../public/_nuxt/Y-4S7Nuf.js.gz"
25811
+ "etag": "\"1d128-I2uXxZWJTU1RB1N6YVI+SjwaykI\"",
25812
+ "mtime": "2026-10-30T16:50:29.241Z",
25813
+ "size": 119080,
25814
+ "path": "../public/_nuxt/Dpe9TNcA.js.gz"
25279
25815
  },
25280
25816
  "/_nuxt/archivo-latin-ext-wght-normal.C4zznr8T.woff2": {
25281
25817
  "type": "font/woff2",
25282
25818
  "etag": "\"7f60-cwHN4xD2RhU0GVBfKzpzYZ7Al6U\"",
25283
- "mtime": "2026-10-26T23:39:23.426Z",
25819
+ "mtime": "2026-10-30T16:50:28.551Z",
25284
25820
  "size": 32608,
25285
25821
  "path": "../public/_nuxt/archivo-latin-ext-wght-normal.C4zznr8T.woff2"
25286
25822
  },
25287
25823
  "/_nuxt/archivo-latin-wght-normal.E0tuGl4L.woff2": {
25288
25824
  "type": "font/woff2",
25289
25825
  "etag": "\"8870-ZUSfFgU3jYpWYbszVY1rxpynehc\"",
25290
- "mtime": "2026-10-26T23:39:23.426Z",
25826
+ "mtime": "2026-10-30T16:50:28.551Z",
25291
25827
  "size": 34928,
25292
25828
  "path": "../public/_nuxt/archivo-latin-wght-normal.E0tuGl4L.woff2"
25293
25829
  },
25830
+ "/_nuxt/board.fZYj3O-m.css": {
25831
+ "type": "text/css; charset=utf-8",
25832
+ "encoding": null,
25833
+ "etag": "\"260d-wv9kYgyFZHVpAQUm8I8oFP7w2eg\"",
25834
+ "mtime": "2026-10-30T16:50:28.551Z",
25835
+ "size": 9741,
25836
+ "path": "../public/_nuxt/board.fZYj3O-m.css"
25837
+ },
25294
25838
  "/_nuxt/archivo-vietnamese-wght-normal.XAtsl5Q_.woff2": {
25295
25839
  "type": "font/woff2",
25296
25840
  "etag": "\"33b8-4zjQHgOy7y9EDRZs7TDAFDM4Ams\"",
25297
- "mtime": "2026-10-26T23:39:23.426Z",
25841
+ "mtime": "2026-10-30T16:50:28.551Z",
25298
25842
  "size": 13240,
25299
25843
  "path": "../public/_nuxt/archivo-vietnamese-wght-normal.XAtsl5Q_.woff2"
25300
25844
  },
25301
- "/_nuxt/board.CeTYM1XN.css": {
25302
- "type": "text/css; charset=utf-8",
25303
- "encoding": null,
25304
- "etag": "\"260d-Ft/lyTEPHQRtoGZqt0ULmRxn8M8\"",
25305
- "mtime": "2026-10-26T23:39:23.426Z",
25306
- "size": 9741,
25307
- "path": "../public/_nuxt/board.CeTYM1XN.css"
25308
- },
25309
- "/_nuxt/board.CeTYM1XN.css.br": {
25845
+ "/_nuxt/board.fZYj3O-m.css.br": {
25310
25846
  "type": "text/css; charset=utf-8",
25311
25847
  "encoding": "br",
25312
- "etag": "\"7ad-2EOQ4t1OHVztv/4RidUIoGZdsHE\"",
25313
- "mtime": "2026-10-26T23:39:24.186Z",
25314
- "size": 1965,
25315
- "path": "../public/_nuxt/board.CeTYM1XN.css.br"
25848
+ "etag": "\"7b1-dhgWlvzCUKJeSiekf2xGqh8nPxA\"",
25849
+ "mtime": "2026-10-30T16:50:29.235Z",
25850
+ "size": 1969,
25851
+ "path": "../public/_nuxt/board.fZYj3O-m.css.br"
25316
25852
  },
25317
- "/_nuxt/board.CeTYM1XN.css.gz": {
25853
+ "/_nuxt/board.fZYj3O-m.css.gz": {
25318
25854
  "type": "text/css; charset=utf-8",
25319
25855
  "encoding": "gzip",
25320
- "etag": "\"8f3-fWVU4RhFC2+kRw1nJHCMWRuw1mw\"",
25321
- "mtime": "2026-10-26T23:39:24.186Z",
25856
+ "etag": "\"8f3-g2Yu6JhJaEA7N+odPNAkQ4uOJ2E\"",
25857
+ "mtime": "2026-10-30T16:50:29.235Z",
25322
25858
  "size": 2291,
25323
- "path": "../public/_nuxt/board.CeTYM1XN.css.gz"
25859
+ "path": "../public/_nuxt/board.fZYj3O-m.css.gz"
25324
25860
  },
25325
- "/_nuxt/entry.Cd2iNkBC.css.br": {
25861
+ "/_nuxt/Dpe9TNcA.js": {
25862
+ "type": "text/javascript; charset=utf-8",
25863
+ "encoding": null,
25864
+ "etag": "\"5cbfb-HWs4XMBRHKRfcRrXeT1jNrvNzxk\"",
25865
+ "mtime": "2026-10-30T16:50:28.551Z",
25866
+ "size": 379899,
25867
+ "path": "../public/_nuxt/Dpe9TNcA.js"
25868
+ },
25869
+ "/_nuxt/entry.KNdllmoL.css": {
25870
+ "type": "text/css; charset=utf-8",
25871
+ "encoding": null,
25872
+ "etag": "\"72229-t8I15LnPi6tj2vk+ttF9D35HNBc\"",
25873
+ "mtime": "2026-10-30T16:50:28.551Z",
25874
+ "size": 467497,
25875
+ "path": "../public/_nuxt/entry.KNdllmoL.css"
25876
+ },
25877
+ "/_nuxt/entry.KNdllmoL.css.br": {
25326
25878
  "type": "text/css; charset=utf-8",
25327
25879
  "encoding": "br",
25328
- "etag": "\"f2ae-QofN8JK2MKJXkanr63MAsbXlskU\"",
25329
- "mtime": "2026-10-26T23:39:25.420Z",
25330
- "size": 62126,
25331
- "path": "../public/_nuxt/entry.Cd2iNkBC.css.br"
25880
+ "etag": "\"f550-Gt7rND9Y3MqDUndPLMVli4V0/44\"",
25881
+ "mtime": "2026-10-30T16:50:30.139Z",
25882
+ "size": 62800,
25883
+ "path": "../public/_nuxt/entry.KNdllmoL.css.br"
25884
+ },
25885
+ "/_nuxt/entry.KNdllmoL.css.gz": {
25886
+ "type": "text/css; charset=utf-8",
25887
+ "encoding": "gzip",
25888
+ "etag": "\"12f75-47XUOGxOrQ/UVIEkc0CvcOnFehY\"",
25889
+ "mtime": "2026-10-30T16:50:29.242Z",
25890
+ "size": 77685,
25891
+ "path": "../public/_nuxt/entry.KNdllmoL.css.gz"
25332
25892
  },
25333
25893
  "/_nuxt/error-404.Bb87HomL.css": {
25334
25894
  "type": "text/css; charset=utf-8",
25335
25895
  "encoding": null,
25336
25896
  "etag": "\"97d-4h9VfBznldxjqagfMldh1hDncR0\"",
25337
- "mtime": "2026-10-26T23:39:23.426Z",
25897
+ "mtime": "2026-10-30T16:50:28.551Z",
25338
25898
  "size": 2429,
25339
25899
  "path": "../public/_nuxt/error-404.Bb87HomL.css"
25340
25900
  },
@@ -25342,23 +25902,15 @@ const assets = {
25342
25902
  "type": "text/css; charset=utf-8",
25343
25903
  "encoding": "br",
25344
25904
  "etag": "\"2d3-qBacufHfL2AKZiQpM2N/+/LUBcM\"",
25345
- "mtime": "2026-10-26T23:39:24.292Z",
25905
+ "mtime": "2026-10-30T16:50:29.240Z",
25346
25906
  "size": 723,
25347
25907
  "path": "../public/_nuxt/error-404.Bb87HomL.css.br"
25348
25908
  },
25349
- "/_nuxt/entry.Cd2iNkBC.css.gz": {
25350
- "type": "text/css; charset=utf-8",
25351
- "encoding": "gzip",
25352
- "etag": "\"12bd8-Oc81NL5W6X3nRcqMhwp0P23uFWU\"",
25353
- "mtime": "2026-10-26T23:39:24.295Z",
25354
- "size": 76760,
25355
- "path": "../public/_nuxt/entry.Cd2iNkBC.css.gz"
25356
- },
25357
25909
  "/_nuxt/error-404.Bb87HomL.css.gz": {
25358
25910
  "type": "text/css; charset=utf-8",
25359
25911
  "encoding": "gzip",
25360
25912
  "etag": "\"354-+f0UDMO283+UYdKIev1+tuXG5jI\"",
25361
- "mtime": "2026-10-26T23:39:24.292Z",
25913
+ "mtime": "2026-10-30T16:50:29.240Z",
25362
25914
  "size": 852,
25363
25915
  "path": "../public/_nuxt/error-404.Bb87HomL.css.gz"
25364
25916
  },
@@ -25366,23 +25918,15 @@ const assets = {
25366
25918
  "type": "text/css; charset=utf-8",
25367
25919
  "encoding": null,
25368
25920
  "etag": "\"772-nqXXACYtFiPK+D42BNu4uEECARA\"",
25369
- "mtime": "2026-10-26T23:39:23.426Z",
25921
+ "mtime": "2026-10-30T16:50:28.551Z",
25370
25922
  "size": 1906,
25371
25923
  "path": "../public/_nuxt/error-500.Bwd7zAaE.css"
25372
25924
  },
25373
- "/_nuxt/entry.Cd2iNkBC.css": {
25374
- "type": "text/css; charset=utf-8",
25375
- "encoding": null,
25376
- "etag": "\"70ebc-zollIXWOx+uYZ05WwmV21YZ664Q\"",
25377
- "mtime": "2026-10-26T23:39:23.426Z",
25378
- "size": 462524,
25379
- "path": "../public/_nuxt/entry.Cd2iNkBC.css"
25380
- },
25381
25925
  "/_nuxt/error-500.Bwd7zAaE.css.br": {
25382
25926
  "type": "text/css; charset=utf-8",
25383
25927
  "encoding": "br",
25384
25928
  "etag": "\"269-epXpUj5NvA3wxRTvv2uaBsqkzB8\"",
25385
- "mtime": "2026-10-26T23:39:24.294Z",
25929
+ "mtime": "2026-10-30T16:50:29.240Z",
25386
25930
  "size": 617,
25387
25931
  "path": "../public/_nuxt/error-500.Bwd7zAaE.css.br"
25388
25932
  },
@@ -25390,186 +25934,146 @@ const assets = {
25390
25934
  "type": "text/css; charset=utf-8",
25391
25935
  "encoding": "gzip",
25392
25936
  "etag": "\"2d6-gkfK7z4mFEnMBbpxDmlOJ5UcSAU\"",
25393
- "mtime": "2026-10-26T23:39:24.294Z",
25937
+ "mtime": "2026-10-30T16:50:29.240Z",
25394
25938
  "size": 726,
25395
25939
  "path": "../public/_nuxt/error-500.Bwd7zAaE.css.gz"
25396
25940
  },
25397
- "/_nuxt/hSqNtAW9.js": {
25398
- "type": "text/javascript; charset=utf-8",
25399
- "encoding": null,
25400
- "etag": "\"147b6-QyrI0Wu7jYg/IACdlc7eGmY2QZU\"",
25401
- "mtime": "2026-10-26T23:39:23.426Z",
25402
- "size": 83894,
25403
- "path": "../public/_nuxt/hSqNtAW9.js"
25404
- },
25405
- "/_nuxt/hSqNtAW9.js.br": {
25406
- "type": "text/javascript; charset=utf-8",
25407
- "encoding": "br",
25408
- "etag": "\"527e-AE8cNEcCVro4VOhJj1h+KJ7SW/M\"",
25409
- "mtime": "2026-10-26T23:39:24.826Z",
25410
- "size": 21118,
25411
- "path": "../public/_nuxt/hSqNtAW9.js.br"
25412
- },
25413
- "/_nuxt/hSqNtAW9.js.gz": {
25414
- "type": "text/javascript; charset=utf-8",
25415
- "encoding": "gzip",
25416
- "etag": "\"5d63-fV7zu6qC8ElLrjpv/PwFUQwDQa8\"",
25417
- "mtime": "2026-10-26T23:39:24.294Z",
25418
- "size": 23907,
25419
- "path": "../public/_nuxt/hSqNtAW9.js.gz"
25420
- },
25421
25941
  "/_nuxt/hePW80VL.js": {
25422
25942
  "type": "text/javascript; charset=utf-8",
25423
25943
  "etag": "\"2cc-fA8td6k29UVF6JoPfhOPkceTK1M\"",
25424
- "mtime": "2026-10-26T23:39:23.426Z",
25944
+ "mtime": "2026-10-30T16:50:28.551Z",
25425
25945
  "size": 716,
25426
25946
  "path": "../public/_nuxt/hePW80VL.js"
25427
25947
  },
25428
25948
  "/_nuxt/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2": {
25429
25949
  "type": "font/woff2",
25430
25950
  "etag": "\"6568-cF1iUGbboMFZ8TfnP5HiMgl9II0\"",
25431
- "mtime": "2026-10-26T23:39:23.426Z",
25951
+ "mtime": "2026-10-30T16:50:28.551Z",
25432
25952
  "size": 25960,
25433
25953
  "path": "../public/_nuxt/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2"
25434
25954
  },
25955
+ "/_nuxt/inter-cyrillic-wght-normal.DqGufNeO.woff2": {
25956
+ "type": "font/woff2",
25957
+ "etag": "\"493c-n3Oy9D6jvzfMjpClqox+Zo7ERQQ\"",
25958
+ "mtime": "2026-10-30T16:50:28.551Z",
25959
+ "size": 18748,
25960
+ "path": "../public/_nuxt/inter-cyrillic-wght-normal.DqGufNeO.woff2"
25961
+ },
25435
25962
  "/_nuxt/inter-greek-ext-wght-normal.DlzME5K_.woff2": {
25436
25963
  "type": "font/woff2",
25437
25964
  "etag": "\"2be0-BP5iTzJeB8nLqYAgKpWNi5o1Zm8\"",
25438
- "mtime": "2026-10-26T23:39:23.426Z",
25965
+ "mtime": "2026-10-30T16:50:28.551Z",
25439
25966
  "size": 11232,
25440
25967
  "path": "../public/_nuxt/inter-greek-ext-wght-normal.DlzME5K_.woff2"
25441
25968
  },
25442
25969
  "/_nuxt/inter-greek-wght-normal.CkhJZR-_.woff2": {
25443
25970
  "type": "font/woff2",
25444
25971
  "etag": "\"4a34-xor/hj4YNqI52zFecXnUbzQ4Xs4\"",
25445
- "mtime": "2026-10-26T23:39:23.426Z",
25972
+ "mtime": "2026-10-30T16:50:28.551Z",
25446
25973
  "size": 18996,
25447
25974
  "path": "../public/_nuxt/inter-greek-wght-normal.CkhJZR-_.woff2"
25448
25975
  },
25449
- "/_nuxt/inter-cyrillic-wght-normal.DqGufNeO.woff2": {
25450
- "type": "font/woff2",
25451
- "etag": "\"493c-n3Oy9D6jvzfMjpClqox+Zo7ERQQ\"",
25452
- "mtime": "2026-10-26T23:39:23.426Z",
25453
- "size": 18748,
25454
- "path": "../public/_nuxt/inter-cyrillic-wght-normal.DqGufNeO.woff2"
25455
- },
25456
- "/_nuxt/inter-latin-ext-wght-normal.DO1Apj_S.woff2": {
25457
- "type": "font/woff2",
25458
- "etag": "\"14c4c-zz61D7IQFMB9QxHvTAOk/Vh4ibQ\"",
25459
- "mtime": "2026-10-26T23:39:23.426Z",
25460
- "size": 85068,
25461
- "path": "../public/_nuxt/inter-latin-ext-wght-normal.DO1Apj_S.woff2"
25462
- },
25463
25976
  "/_nuxt/inter-latin-wght-normal.Dx4kXJAl.woff2": {
25464
25977
  "type": "font/woff2",
25465
25978
  "etag": "\"bc80-8R1ym7Ck2DUNLqPQ/AYs9u8tUpg\"",
25466
- "mtime": "2026-10-26T23:39:23.426Z",
25979
+ "mtime": "2026-10-30T16:50:28.551Z",
25467
25980
  "size": 48256,
25468
25981
  "path": "../public/_nuxt/inter-latin-wght-normal.Dx4kXJAl.woff2"
25469
25982
  },
25470
25983
  "/_nuxt/inter-vietnamese-wght-normal.CBcvBZtf.woff2": {
25471
25984
  "type": "font/woff2",
25472
25985
  "etag": "\"280c-nBythjoDQ0+5wVAendJ6wU7Xz2M\"",
25473
- "mtime": "2026-10-26T23:39:23.426Z",
25986
+ "mtime": "2026-10-30T16:50:28.551Z",
25474
25987
  "size": 10252,
25475
25988
  "path": "../public/_nuxt/inter-vietnamese-wght-normal.CBcvBZtf.woff2"
25476
25989
  },
25990
+ "/_nuxt/inter-latin-ext-wght-normal.DO1Apj_S.woff2": {
25991
+ "type": "font/woff2",
25992
+ "etag": "\"14c4c-zz61D7IQFMB9QxHvTAOk/Vh4ibQ\"",
25993
+ "mtime": "2026-10-30T16:50:28.551Z",
25994
+ "size": 85068,
25995
+ "path": "../public/_nuxt/inter-latin-ext-wght-normal.DO1Apj_S.woff2"
25996
+ },
25477
25997
  "/_nuxt/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2": {
25478
25998
  "type": "font/woff2",
25479
25999
  "etag": "\"2f4c-WiAGfn140d4QND3ayQWaCHF8rbE\"",
25480
- "mtime": "2026-10-26T23:39:23.427Z",
26000
+ "mtime": "2026-10-30T16:50:28.551Z",
25481
26001
  "size": 12108,
25482
26002
  "path": "../public/_nuxt/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2"
25483
26003
  },
25484
26004
  "/_nuxt/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2": {
25485
26005
  "type": "font/woff2",
25486
26006
  "etag": "\"232c-Dnz9DhH4c266e6TziU1pxRkV6FY\"",
25487
- "mtime": "2026-10-26T23:39:23.427Z",
26007
+ "mtime": "2026-10-30T16:50:28.551Z",
25488
26008
  "size": 9004,
25489
26009
  "path": "../public/_nuxt/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2"
25490
26010
  },
25491
26011
  "/_nuxt/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2": {
25492
26012
  "type": "font/woff2",
25493
26013
  "etag": "\"3b5c-HLF7Wvs2Z1IA1cPRs6jnor8OUQ4\"",
25494
- "mtime": "2026-10-26T23:39:23.427Z",
26014
+ "mtime": "2026-10-30T16:50:28.551Z",
25495
26015
  "size": 15196,
25496
26016
  "path": "../public/_nuxt/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2"
25497
26017
  },
25498
26018
  "/_nuxt/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2": {
25499
26019
  "type": "font/woff2",
25500
26020
  "etag": "\"9dd4-5yd+cUUhzrXxdMyYebUeD0qml1M\"",
25501
- "mtime": "2026-10-26T23:39:23.427Z",
26021
+ "mtime": "2026-10-30T16:50:28.551Z",
25502
26022
  "size": 40404,
25503
26023
  "path": "../public/_nuxt/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2"
25504
26024
  },
25505
26025
  "/_nuxt/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2": {
25506
26026
  "type": "font/woff2",
25507
26027
  "etag": "\"1d50-/Re0MyD6BV8h81wBPVijGZH5GBs\"",
25508
- "mtime": "2026-10-26T23:39:23.427Z",
26028
+ "mtime": "2026-10-30T16:50:28.551Z",
25509
26029
  "size": 7504,
25510
26030
  "path": "../public/_nuxt/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2"
25511
26031
  },
25512
- "/_nuxt/o1wml4Rx.js.br": {
25513
- "type": "text/javascript; charset=utf-8",
25514
- "encoding": "br",
25515
- "etag": "\"190ad-VQABaD2/8hAov/SXYSusjNvekZ8\"",
25516
- "mtime": "2026-10-26T23:39:25.481Z",
25517
- "size": 102573,
25518
- "path": "../public/_nuxt/o1wml4Rx.js.br"
25519
- },
25520
- "/_nuxt/pdf.min.t82Z80JU.mjs.br": {
25521
- "type": "text/javascript; charset=utf-8",
25522
- "encoding": "br",
25523
- "etag": "\"18637-hO1q5WJanme5y1ZMQNajh/aVx0Q\"",
25524
- "mtime": "2026-10-26T23:39:25.836Z",
25525
- "size": 99895,
25526
- "path": "../public/_nuxt/pdf.min.t82Z80JU.mjs.br"
25527
- },
25528
26032
  "/_nuxt/pdf.min.t82Z80JU.mjs.gz": {
25529
26033
  "type": "text/javascript; charset=utf-8",
25530
26034
  "encoding": "gzip",
25531
26035
  "etag": "\"1d511-iiY3QTEG2SmXknqVitdB+/+ocK4\"",
25532
- "mtime": "2026-10-26T23:39:25.423Z",
26036
+ "mtime": "2026-10-30T16:50:30.142Z",
25533
26037
  "size": 120081,
25534
26038
  "path": "../public/_nuxt/pdf.min.t82Z80JU.mjs.gz"
25535
26039
  },
25536
- "/_nuxt/o1wml4Rx.js.gz": {
26040
+ "/_nuxt/pdf.min.t82Z80JU.mjs.br": {
25537
26041
  "type": "text/javascript; charset=utf-8",
25538
- "encoding": "gzip",
25539
- "etag": "\"1d903-kXjDJMI7WGFl5PJ+mXBNyWRNZMQ\"",
25540
- "mtime": "2026-10-26T23:39:25.420Z",
25541
- "size": 121091,
25542
- "path": "../public/_nuxt/o1wml4Rx.js.gz"
26042
+ "encoding": "br",
26043
+ "etag": "\"18637-hO1q5WJanme5y1ZMQNajh/aVx0Q\"",
26044
+ "mtime": "2026-10-30T16:50:30.456Z",
26045
+ "size": 99895,
26046
+ "path": "../public/_nuxt/pdf.min.t82Z80JU.mjs.br"
25543
26047
  },
25544
- "/_nuxt/o1wml4Rx.js": {
26048
+ "/_nuxt/pdf.min.t82Z80JU.mjs": {
25545
26049
  "type": "text/javascript; charset=utf-8",
25546
26050
  "encoding": null,
25547
- "etag": "\"5ee59-DSNk+1/PtlaL033nQEDXteRdC0w\"",
25548
- "mtime": "2026-10-26T23:39:23.427Z",
25549
- "size": 388697,
25550
- "path": "../public/_nuxt/o1wml4Rx.js"
26051
+ "etag": "\"678c7-U+W9TWPlwH5JFSPFTsPGlAkMVJc\"",
26052
+ "mtime": "2026-10-30T16:50:28.551Z",
26053
+ "size": 424135,
26054
+ "path": "../public/_nuxt/pdf.min.t82Z80JU.mjs"
25551
26055
  },
25552
26056
  "/_nuxt/pdf.worker.min.wgc6bjNh.mjs.br": {
25553
26057
  "type": "text/javascript; charset=utf-8",
25554
26058
  "encoding": "br",
25555
26059
  "etag": "\"3a43c-BjGnpdU+bJmP+eZx9E9qFHG/Txg\"",
25556
- "mtime": "2026-10-26T23:39:26.842Z",
26060
+ "mtime": "2026-10-30T16:50:31.332Z",
25557
26061
  "size": 238652,
25558
26062
  "path": "../public/_nuxt/pdf.worker.min.wgc6bjNh.mjs.br"
25559
26063
  },
25560
- "/_nuxt/pdf.min.t82Z80JU.mjs": {
26064
+ "/_nuxt/pdf.worker.min.wgc6bjNh.mjs": {
25561
26065
  "type": "text/javascript; charset=utf-8",
25562
26066
  "encoding": null,
25563
- "etag": "\"678c7-U+W9TWPlwH5JFSPFTsPGlAkMVJc\"",
25564
- "mtime": "2026-10-26T23:39:23.427Z",
25565
- "size": 424135,
25566
- "path": "../public/_nuxt/pdf.min.t82Z80JU.mjs"
26067
+ "etag": "\"107554-apJIGjXrCPcbKwmHzZKIYl5kc4c\"",
26068
+ "mtime": "2026-10-30T16:50:28.552Z",
26069
+ "size": 1078612,
26070
+ "path": "../public/_nuxt/pdf.worker.min.wgc6bjNh.mjs"
25567
26071
  },
25568
26072
  "/_nuxt/settings.Cdb21nNw.css": {
25569
26073
  "type": "text/css; charset=utf-8",
25570
26074
  "encoding": null,
25571
26075
  "etag": "\"906-1k6Rx3W+YnYYbr685mdPPOdLVR8\"",
25572
- "mtime": "2026-10-26T23:39:23.427Z",
26076
+ "mtime": "2026-10-30T16:50:28.551Z",
25573
26077
  "size": 2310,
25574
26078
  "path": "../public/_nuxt/settings.Cdb21nNw.css"
25575
26079
  },
@@ -25577,124 +26081,116 @@ const assets = {
25577
26081
  "type": "text/javascript; charset=utf-8",
25578
26082
  "encoding": "gzip",
25579
26083
  "etag": "\"48c53-1Uf07NfaLxgXnF6xfwrBSYIPy9w\"",
25580
- "mtime": "2026-10-26T23:39:25.447Z",
26084
+ "mtime": "2026-10-30T16:50:30.166Z",
25581
26085
  "size": 298067,
25582
26086
  "path": "../public/_nuxt/pdf.worker.min.wgc6bjNh.mjs.gz"
25583
26087
  },
25584
- "/_nuxt/settings.Cdb21nNw.css.br": {
25585
- "type": "text/css; charset=utf-8",
25586
- "encoding": "br",
25587
- "etag": "\"229-5BUcDq9FlV7AjttLV/V/sLmKfb0\"",
25588
- "mtime": "2026-10-26T23:39:25.402Z",
25589
- "size": 553,
25590
- "path": "../public/_nuxt/settings.Cdb21nNw.css.br"
25591
- },
25592
- "/_nuxt/pdf.worker.min.wgc6bjNh.mjs": {
25593
- "type": "text/javascript; charset=utf-8",
25594
- "encoding": null,
25595
- "etag": "\"107554-apJIGjXrCPcbKwmHzZKIYl5kc4c\"",
25596
- "mtime": "2026-10-26T23:39:23.427Z",
25597
- "size": 1078612,
25598
- "path": "../public/_nuxt/pdf.worker.min.wgc6bjNh.mjs"
25599
- },
25600
26088
  "/_nuxt/settings.Cdb21nNw.css.gz": {
25601
26089
  "type": "text/css; charset=utf-8",
25602
26090
  "encoding": "gzip",
25603
26091
  "etag": "\"2ab-osvfpKy+KsHaGxbXkzf6NYTuHPs\"",
25604
- "mtime": "2026-10-26T23:39:25.402Z",
26092
+ "mtime": "2026-10-30T16:50:30.120Z",
25605
26093
  "size": 683,
25606
26094
  "path": "../public/_nuxt/settings.Cdb21nNw.css.gz"
25607
26095
  },
25608
- "/_nuxt/wherdr-nerd-awesome.DQ3_iAfa.woff2": {
25609
- "type": "font/woff2",
25610
- "etag": "\"30178-02mpQKEDb74Ec8LtlhKceB1vHO8\"",
25611
- "mtime": "2026-10-26T23:39:23.427Z",
25612
- "size": 196984,
25613
- "path": "../public/_nuxt/wherdr-nerd-awesome.DQ3_iAfa.woff2"
26096
+ "/_nuxt/settings.Cdb21nNw.css.br": {
26097
+ "type": "text/css; charset=utf-8",
26098
+ "encoding": "br",
26099
+ "etag": "\"229-5BUcDq9FlV7AjttLV/V/sLmKfb0\"",
26100
+ "mtime": "2026-10-30T16:50:30.120Z",
26101
+ "size": 553,
26102
+ "path": "../public/_nuxt/settings.Cdb21nNw.css.br"
25614
26103
  },
25615
26104
  "/_nuxt/wherdr-nerd-codicons.CtEsfSAf.woff2": {
25616
26105
  "type": "font/woff2",
25617
26106
  "etag": "\"d9b0-kmO/x6KCTFRlVipOvl+5XcArGUw\"",
25618
- "mtime": "2026-10-26T23:39:23.427Z",
26107
+ "mtime": "2026-10-30T16:50:28.552Z",
25619
26108
  "size": 55728,
25620
26109
  "path": "../public/_nuxt/wherdr-nerd-codicons.CtEsfSAf.woff2"
25621
26110
  },
25622
- "/_nuxt/wherdr-nerd-devicons.ZMSFX1sW.woff2": {
26111
+ "/_nuxt/wherdr-nerd-awesome.DQ3_iAfa.woff2": {
25623
26112
  "type": "font/woff2",
25624
- "etag": "\"30f78-2RuGTMLnbTBdhlI9ExApyiUeD8c\"",
25625
- "mtime": "2026-10-26T23:39:23.427Z",
25626
- "size": 200568,
25627
- "path": "../public/_nuxt/wherdr-nerd-devicons.ZMSFX1sW.woff2"
26113
+ "etag": "\"30178-02mpQKEDb74Ec8LtlhKceB1vHO8\"",
26114
+ "mtime": "2026-10-30T16:50:28.551Z",
26115
+ "size": 196984,
26116
+ "path": "../public/_nuxt/wherdr-nerd-awesome.DQ3_iAfa.woff2"
25628
26117
  },
25629
26118
  "/_nuxt/wherdr-nerd-extension.Dai_ky39.woff2": {
25630
26119
  "type": "font/woff2",
25631
26120
  "etag": "\"f76c-CjERGtjtOrkpSXy7JyZNl1CAu0U\"",
25632
- "mtime": "2026-10-26T23:39:23.427Z",
26121
+ "mtime": "2026-10-30T16:50:28.552Z",
25633
26122
  "size": 63340,
25634
26123
  "path": "../public/_nuxt/wherdr-nerd-extension.Dai_ky39.woff2"
25635
26124
  },
25636
26125
  "/_nuxt/wherdr-nerd-material-1.BdvqkCqW.woff2": {
25637
26126
  "type": "font/woff2",
25638
26127
  "etag": "\"1e130-1GKpbVoJoRf3AxaKTZS8FjxkOd4\"",
25639
- "mtime": "2026-10-26T23:39:23.427Z",
26128
+ "mtime": "2026-10-30T16:50:28.552Z",
25640
26129
  "size": 123184,
25641
26130
  "path": "../public/_nuxt/wherdr-nerd-material-1.BdvqkCqW.woff2"
25642
26131
  },
25643
26132
  "/_nuxt/wherdr-nerd-material-2.C_flbBWO.woff2": {
25644
26133
  "type": "font/woff2",
25645
26134
  "etag": "\"1f95c-q6dAP964z2dgEvWzAYjTAzBtzBc\"",
25646
- "mtime": "2026-10-26T23:39:23.427Z",
26135
+ "mtime": "2026-10-30T16:50:28.552Z",
25647
26136
  "size": 129372,
25648
26137
  "path": "../public/_nuxt/wherdr-nerd-material-2.C_flbBWO.woff2"
25649
26138
  },
25650
26139
  "/_nuxt/wherdr-nerd-material-3.8xz7iX-Y.woff2": {
25651
26140
  "type": "font/woff2",
25652
26141
  "etag": "\"2248c-3GBJ1KjkT+xYPhza9V/DKaILa7Y\"",
25653
- "mtime": "2026-10-26T23:39:23.427Z",
26142
+ "mtime": "2026-10-30T16:50:28.552Z",
25654
26143
  "size": 140428,
25655
26144
  "path": "../public/_nuxt/wherdr-nerd-material-3.8xz7iX-Y.woff2"
25656
26145
  },
25657
- "/_nuxt/wherdr-nerd-powerline.B_kAMxXr.woff2": {
26146
+ "/_nuxt/wherdr-nerd-devicons.ZMSFX1sW.woff2": {
25658
26147
  "type": "font/woff2",
25659
- "etag": "\"1bc0-iXm39wQwNbm2VjpVBOn72grfku0\"",
25660
- "mtime": "2026-10-26T23:39:23.428Z",
25661
- "size": 7104,
25662
- "path": "../public/_nuxt/wherdr-nerd-powerline.B_kAMxXr.woff2"
26148
+ "etag": "\"30f78-2RuGTMLnbTBdhlI9ExApyiUeD8c\"",
26149
+ "mtime": "2026-10-30T16:50:28.552Z",
26150
+ "size": 200568,
26151
+ "path": "../public/_nuxt/wherdr-nerd-devicons.ZMSFX1sW.woff2"
26152
+ },
26153
+ "/_nuxt/wherdr-nerd-material-4.CO_PudDR.woff2": {
26154
+ "type": "font/woff2",
26155
+ "etag": "\"1fa80-YcJvpFD/M3vTC4y6SMmp7s8a9gw\"",
26156
+ "mtime": "2026-10-30T16:50:28.552Z",
26157
+ "size": 129664,
26158
+ "path": "../public/_nuxt/wherdr-nerd-material-4.CO_PudDR.woff2"
25663
26159
  },
25664
26160
  "/_nuxt/wherdr-nerd-octicons.Hl4VEx8m.woff2": {
25665
26161
  "type": "font/woff2",
25666
26162
  "etag": "\"f890-FkAsW3iqENK+lU5UlSze0yqnE2s\"",
25667
- "mtime": "2026-10-26T23:39:23.428Z",
26163
+ "mtime": "2026-10-30T16:50:28.552Z",
25668
26164
  "size": 63632,
25669
26165
  "path": "../public/_nuxt/wherdr-nerd-octicons.Hl4VEx8m.woff2"
25670
26166
  },
26167
+ "/_nuxt/wherdr-nerd-powerline.B_kAMxXr.woff2": {
26168
+ "type": "font/woff2",
26169
+ "etag": "\"1bc0-iXm39wQwNbm2VjpVBOn72grfku0\"",
26170
+ "mtime": "2026-10-30T16:50:28.552Z",
26171
+ "size": 7104,
26172
+ "path": "../public/_nuxt/wherdr-nerd-powerline.B_kAMxXr.woff2"
26173
+ },
25671
26174
  "/_nuxt/wherdr-symbols.C1LsPKmg.woff2": {
25672
26175
  "type": "font/woff2",
25673
26176
  "etag": "\"1304-Lwyr1XiDl3FK38nmS/6Pk9wfiWc\"",
25674
- "mtime": "2026-10-26T23:39:23.428Z",
26177
+ "mtime": "2026-10-30T16:50:28.552Z",
25675
26178
  "size": 4868,
25676
26179
  "path": "../public/_nuxt/wherdr-symbols.C1LsPKmg.woff2"
25677
26180
  },
25678
- "/_nuxt/wherdr-nerd-material-4.CO_PudDR.woff2": {
25679
- "type": "font/woff2",
25680
- "etag": "\"1fa80-YcJvpFD/M3vTC4y6SMmp7s8a9gw\"",
25681
- "mtime": "2026-10-26T23:39:23.428Z",
25682
- "size": 129664,
25683
- "path": "../public/_nuxt/wherdr-nerd-material-4.CO_PudDR.woff2"
25684
- },
25685
26181
  "/_nuxt/builds/latest.json": {
25686
26182
  "type": "application/json",
25687
- "etag": "\"47-QnXU+PMI5tYhNhaHyruNFdU8+vI\"",
25688
- "mtime": "2026-10-26T23:39:23.399Z",
26183
+ "etag": "\"47-em+UqxR5OxVqWQXsjUL2AfbXGd8\"",
26184
+ "mtime": "2026-10-30T16:50:28.407Z",
25689
26185
  "size": 71,
25690
26186
  "path": "../public/_nuxt/builds/latest.json"
25691
26187
  },
25692
- "/_nuxt/builds/meta/fd79ea32-8bac-487a-afa1-7a6e336fff3f.json": {
26188
+ "/_nuxt/builds/meta/75cc4ea7-3027-463a-aa3e-29e474ed7173.json": {
25693
26189
  "type": "application/json",
25694
- "etag": "\"58-NRZ/k0nXzxynL+FTF9nLuaZ+4Hw\"",
25695
- "mtime": "2026-10-26T23:39:23.393Z",
26190
+ "etag": "\"58-8L9LWQGYtJFC96df4ZFKyaKQ+J4\"",
26191
+ "mtime": "2026-10-30T16:50:28.375Z",
25696
26192
  "size": 88,
25697
- "path": "../public/_nuxt/builds/meta/fd79ea32-8bac-487a-afa1-7a6e336fff3f.json"
26193
+ "path": "../public/_nuxt/builds/meta/75cc4ea7-3027-463a-aa3e-29e474ed7173.json"
25698
26194
  }
25699
26195
  };
25700
26196
 
@@ -26366,12 +26862,14 @@ const _lazy_0DhN9V = () => import('../routes/api/screen-key.post.mjs');
26366
26862
  const _lazy_5kceYB = () => import('../routes/api/screen.get.mjs');
26367
26863
  const _lazy_K8ukU6 = () => import('../routes/api/search.get.mjs');
26368
26864
  const _lazy_NXLBIE = () => import('../routes/api/seen.post.mjs');
26865
+ const _lazy_oqiCsk = () => import('../routes/api/send-now.post.mjs');
26369
26866
  const _lazy_GOSQuW = () => import('../routes/api/sessions.get.mjs');
26370
26867
  const _lazy_3y86mR = () => import('../routes/api/sessions.post.mjs');
26371
26868
  const _lazy_tLoqXq = () => import('../routes/api/settings-tab.post.mjs');
26372
26869
  const _lazy_qMA1rz = () => import('../routes/api/settings.get.mjs');
26373
26870
  const _lazy_0nQiNS = () => import('../routes/api/settings.post.mjs');
26374
26871
  const _lazy_TqhtLZ = () => import('../routes/api/space.post.mjs');
26872
+ const _lazy_JOzKUc = () => import('../routes/api/split-command.post.mjs');
26375
26873
  const _lazy_oeuOKk = () => import('../routes/api/state.get.mjs');
26376
26874
  const _lazy_8O03Pb = () => import('../routes/api/tasks.get.mjs');
26377
26875
  const _lazy_Tqip3b = () => import('../routes/api/tasks/action.post.mjs');
@@ -26491,12 +26989,14 @@ const handlers = [
26491
26989
  { route: '/api/screen', handler: _lazy_5kceYB, lazy: true, middleware: false, method: "get" },
26492
26990
  { route: '/api/search', handler: _lazy_K8ukU6, lazy: true, middleware: false, method: "get" },
26493
26991
  { route: '/api/seen', handler: _lazy_NXLBIE, lazy: true, middleware: false, method: "post" },
26992
+ { route: '/api/send-now', handler: _lazy_oqiCsk, lazy: true, middleware: false, method: "post" },
26494
26993
  { route: '/api/sessions', handler: _lazy_GOSQuW, lazy: true, middleware: false, method: "get" },
26495
26994
  { route: '/api/sessions', handler: _lazy_3y86mR, lazy: true, middleware: false, method: "post" },
26496
26995
  { route: '/api/settings-tab', handler: _lazy_tLoqXq, lazy: true, middleware: false, method: "post" },
26497
26996
  { route: '/api/settings', handler: _lazy_qMA1rz, lazy: true, middleware: false, method: "get" },
26498
26997
  { route: '/api/settings', handler: _lazy_0nQiNS, lazy: true, middleware: false, method: "post" },
26499
26998
  { route: '/api/space', handler: _lazy_TqhtLZ, lazy: true, middleware: false, method: "post" },
26999
+ { route: '/api/split-command', handler: _lazy_JOzKUc, lazy: true, middleware: false, method: "post" },
26500
27000
  { route: '/api/state', handler: _lazy_oeuOKk, lazy: true, middleware: false, method: "get" },
26501
27001
  { route: '/api/tasks', handler: _lazy_8O03Pb, lazy: true, middleware: false, method: "get" },
26502
27002
  { route: '/api/tasks/action', handler: _lazy_Tqip3b, lazy: true, middleware: false, method: "post" },
@@ -26998,5 +27498,5 @@ setupGracefulShutdown(listener, nitroApp);
26998
27498
  }
26999
27499
  const nodeServer = {};
27000
27500
 
27001
- export { getMachine as $, ATTACH_MAX as A, multiMachine as B, integrationCommand as C, chatPasted as D, withoutTakenBack as E, withSentText as F, currentModel as G, HerdrError as H, sendImage as I, keysFor as J, parseChoices as K, parseOmpField as L, withPaneLock as M, selfUpdates as N, restarting as O, PANE_RE$1 as P, updateChoices as Q, UPDATE_LABELS as R, updateRestartPlan as S, restarts as T, UPLOAD_DIR as U, usesTerminalException as V, sameQuestion as W, sleep$1 as X, writeDismissed as Y, forgetQuotas as Z, MACHINE_KEY_RE as _, defineApi as a, getState as a$, installClaudeStatusline as a0, clearQueuedInput as a1, codexStatus as a2, paneForeground as a3, codexMenuOpen as a4, stopAgent as a5, terminalUpdateLine as a6, waitFor as a7, terminalUpdateDone as a8, startAgent as a9, addQueued as aA, interruptAgent as aB, takeBackFromClaude as aC, takeBack as aD, underHome as aE, isGitRepo as aF, baseMachines as aG, DATA_DIR as aH, retryMachine as aI, renameMachine as aJ, machineDiagnostic as aK, closeLeftMenu as aL, readMenu as aM, findEntry as aN, menuIdentity as aO, searchKeys as aP, stepToward as aQ, clickMovesOnly as aR, setModel as aS, listModels as aT, refreshNativeScreen as aU, TOP as aV, HOST_LABEL as aW, phoneStatus as aX, phoneAction as aY, herdrOn as aZ, splitId as a_, log as aa, RESTARTABLE as ab, claudeFooterMode as ac, planRestart as ad, builtinCommands as ae, slashCommands as af, HOME as ag, localMachine as ah, openNetworkMode as ai, readSubs as aj, vapidPublicKey as ak, pushReady as al, machineConfigs as am, recentDirs as an, installedAgentKinds as ao, listDirs as ap, dismissStopped as aq, closePanel as ar, setEffort as as, refreshModel as at, listEfforts as au, saveUpload as av, setResponseHeader as aw, getRequestHeader as ax, setResponseStatus as ay, isSlashCommand as az, screenChoices as b, readBoardLinks as b$, projectsPluginState as b0, projectsProgramVersion as b1, updateProjectsPlugin as b2, installProjectsPlugin as b3, promptOnce as b4, closeTrailingMention as b5, keepPastes as b6, hasHeld as b7, INPUT_STATES as b8, inputVisible as b9, SEARCH_MAX_RESULTS as bA, spaceTitle as bB, markSeen as bC, listSessions as bD, openSession as bE, settingsFocus as bF, readSettings as bG, cleanSettingsPatch as bH, patchSettings as bI, PANE_DIRECTIONS as bJ, readTasksBoard as bK, taskCommand as bL, addTask as bM, clearTaskAfter as bN, approveTask as bO, archiveDoneTasks as bP, archivedTasks as bQ, autopilotStatuses as bR, coordinatorAutopilot as bS, boardSettings as bT, changeBoardSetting as bU, coordinatorPane as bV, restartCoordinator as bW, tellCoordinator as bX, describeTask as bY, taskDetails as bZ, raiseTaskLimit as b_, shouldHold as ba, inTurn as bb, sendPrompt as bc, agentPrompt as bd, isBusyError as be, HOLD_AGENTS as bf, pendingPrompts as bg, parseQuiet as bh, writeGlobalQuiet as bi, writeSubs as bj, quietActive as bk, readGlobalQuiet as bl, validPushSubscription as bm, replaceSubscription as bn, pushSend as bo, readQuotas as bp, retryQueued as bq, PANE_RE$2 as br, parseWaitScreen as bs, waitIdentity as bt, settingsTabs as bu, tabsOfRow as bv, classifyScreen as bw, parseMenu as bx, hasTranscript as by, SEARCH_DEADLINE_MS as bz, createAgent as c, taskStartModels as c0, pickTask as c1, projectFolder as c2, registerProject as c3, askTaskCoordinator as c4, coordinatorScheduled as c5, taskSettings as c6, taskStartOptions as c7, tellTask as c8, cancelQueued as c9, createError$1 as cA, destr as cB, getRouteRules as cC, relative as cD, joinURL as cE, getResponseStatusText as cF, getResponseStatus as cG, useNitroApp as cH, nodeServer as cI, installMode as ca, oneTapMode as cb, updateCommand as cc, compareVersions as cd, updateRunning as ce, allMachines as cf, joinId as cg, useStorage as ch, getRouterParam as ci, readUpload as cj, defineWebSocketHandler as ck, eventClients as cl, notificationPresence as cm, getStateJson as cn, networkReady as co, ensureFresh as cp, gateDecision as cq, sameOrigin as cr, hostAllowed as cs, checkRequestClient as ct, onNetworkReading as cu, openTerm as cv, useRuntimeConfig as cw, encodePath as cx, joinRelativeURL as cy, defineRenderHandler as cz, defineEventHandler as d, watchScreen as e, findPane as f, choicesCache as g, herdr as h, getQuery as i, saveAttachment as j, auth as k, localMachineLabel as l, machineFor as m, runHerdrCli as n, parseIntegrationStatus as o, poll as p, machineOfPane as q, reqOf as r, sendError as s, fmt as t, uploadNames as u, takenBackOf as v, withOmpTab as w, chatDelta as x, transcripts as y, missingIntegration as z };
27501
+ export { getMachine as $, ATTACH_MAX as A, multiMachine as B, integrationCommand as C, chatPasted as D, withoutTakenBack as E, withSentText as F, currentModel as G, HerdrError as H, sendImage as I, keysFor as J, parseChoices as K, parseOmpField as L, withPaneLock as M, selfUpdates as N, restarting as O, PANE_RE$1 as P, updateChoices as Q, UPDATE_LABELS as R, updateRestartPlan as S, restarts as T, UPLOAD_DIR as U, usesTerminalException as V, sameQuestion as W, sleep$1 as X, writeDismissed as Y, forgetQuotas as Z, MACHINE_KEY_RE as _, defineApi as a, getState as a$, installClaudeStatusline as a0, clearQueuedInput as a1, codexStatus as a2, paneForeground as a3, codexMenuOpen as a4, stopAgent as a5, terminalUpdateLine as a6, waitFor as a7, terminalUpdateDone as a8, startAgent as a9, addQueued as aA, interruptAgent as aB, takeBackFromClaude as aC, takeBack as aD, underHome as aE, isGitRepo as aF, baseMachines as aG, DATA_DIR as aH, retryMachine as aI, renameMachine as aJ, machineDiagnostic as aK, closeLeftMenu as aL, readMenu as aM, findEntry as aN, menuIdentity as aO, searchKeys as aP, stepToward as aQ, clickMovesOnly as aR, setModel as aS, listModels as aT, refreshNativeScreen as aU, TOP as aV, HOST_LABEL as aW, phoneStatus as aX, phoneAction as aY, herdrOn as aZ, splitId as a_, log as aa, RESTARTABLE as ab, claudeFooterMode as ac, planRestart as ad, builtinCommands as ae, slashCommands as af, HOME as ag, localMachine as ah, openNetworkMode as ai, readSubs as aj, vapidPublicKey as ak, pushReady as al, machineConfigs as am, recentDirs as an, installedAgentKinds as ao, listDirs as ap, dismissStopped as aq, closePanel as ar, setEffort as as, refreshModel as at, listEfforts as au, saveUpload as av, setResponseHeader as aw, getRequestHeader as ax, setResponseStatus as ay, isSlashCommand as az, screenChoices as b, addTask as b$, projectsPluginState as b0, projectsProgramVersion as b1, updateProjectsPlugin as b2, installProjectsPlugin as b3, promptOnce as b4, closeTrailingMention as b5, keepPastes as b6, hasHeld as b7, INPUT_STATES as b8, inputVisible as b9, foldSearch as bA, matchAt as bB, searchableBoards as bC, hasTranscript as bD, SEARCH_DEADLINE_MS as bE, SEARCH_MAX_RESULTS as bF, spaceTitle as bG, markSeen as bH, parseClaudeScreen as bI, listSessions as bJ, openSession as bK, settingsFocus as bL, readSettings as bM, cleanSettingsPatch as bN, patchSettings as bO, spaceCall as bP, SpaceActionError as bQ, dropSteps as bR, verifySpaceRename as bS, spaceResult as bT, swapSteps as bU, RemoteMachine as bV, HERDR_BIN as bW, reduceSnapshot as bX, joinId as bY, readTasksBoard as bZ, taskCommand as b_, shouldHold as ba, inTurn as bb, sendPrompt as bc, agentPrompt as bd, isBusyError as be, HOLD_AGENTS as bf, pendingPrompts as bg, parseQuiet as bh, writeGlobalQuiet as bi, writeSubs as bj, quietActive as bk, readGlobalQuiet as bl, validPushSubscription as bm, replaceSubscription as bn, pushSend as bo, readQuotas as bp, retryQueued as bq, PANE_RE$2 as br, parseWaitScreen as bs, waitIdentity as bt, settingsTabs as bu, tabsOfRow as bv, classifyScreen as bw, parseMenu as bx, excerpt as by, taskKey as bz, createAgent as c, clearTaskAfter as c0, approveTask as c1, archiveDoneTasks as c2, archivedTasks as c3, autopilotStatuses as c4, coordinatorAutopilot as c5, boardSettings as c6, changeBoardSetting as c7, coordinatorPane as c8, restartCoordinator as c9, notificationPresence as cA, getStateJson as cB, networkReady as cC, ensureFresh as cD, gateDecision as cE, sameOrigin as cF, hostAllowed as cG, checkRequestClient as cH, onNetworkReading as cI, openTerm as cJ, useRuntimeConfig as cK, encodePath as cL, joinRelativeURL as cM, defineRenderHandler as cN, createError$1 as cO, destr as cP, getRouteRules as cQ, relative as cR, joinURL as cS, getResponseStatusText as cT, getResponseStatus as cU, useNitroApp as cV, nodeServer as cW, tellCoordinator as ca, describeTask as cb, taskDetails as cc, raiseTaskLimit as cd, readBoardLinks as ce, taskStartModels as cf, pickTask as cg, projectFolder as ch, registerProject as ci, askTaskCoordinator as cj, coordinatorScheduled as ck, taskSettings as cl, taskStartOptions as cm, tellTask as cn, cancelQueued as co, installMode as cp, oneTapMode as cq, updateCommand as cr, compareVersions as cs, updateRunning as ct, allMachines as cu, useStorage as cv, getRouterParam as cw, readUpload as cx, defineWebSocketHandler as cy, eventClients as cz, defineEventHandler as d, watchScreen as e, findPane as f, choicesCache as g, herdr as h, getQuery as i, saveAttachment as j, auth as k, localMachineLabel as l, machineFor as m, runHerdrCli as n, parseIntegrationStatus as o, poll as p, machineOfPane as q, reqOf as r, sendError as s, fmt as t, uploadNames as u, takenBackOf as v, withOmpTab as w, chatDelta as x, transcripts as y, missingIntegration as z };
27002
27502
  //# sourceMappingURL=nitro.mjs.map