elanous 0.2.35 → 0.2.36

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 (686) hide show
  1. package/apps/pwa/out/404/index.html +1 -1
  2. package/apps/pwa/out/404.html +1 -1
  3. package/apps/pwa/out/_next/static/chunks/{d06f9160.a3d9062f95de8ad7.js → 053a429e.9a63436527cc751c.js} +1 -1
  4. package/apps/pwa/out/_next/static/chunks/109.f196abf3484bb97f.js +287 -0
  5. package/apps/pwa/out/_next/static/chunks/{4346.8601952e73bf5803.js → 1201.afbfc5b1c5e5cbe4.js} +1 -1
  6. package/apps/pwa/out/_next/static/chunks/1517.9275b89572098ff3.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1574.ad11f8db8396ab45.js +1 -0
  8. package/apps/pwa/out/_next/static/chunks/1614.7a8c5c40aee0261f.js +1 -0
  9. package/apps/pwa/out/_next/static/chunks/1871-f1eb29d8dbb4065b.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/190.285c832bd9626f8c.js +64 -0
  11. package/apps/pwa/out/_next/static/chunks/2193.0ea24c4a7aa1d004.js +36 -0
  12. package/apps/pwa/out/_next/static/chunks/223-ad865c1e80491d78.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/2265-f0d90b6dbec05f81.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/2267.eb4a62a209f09ec4.js +149 -0
  15. package/apps/pwa/out/_next/static/chunks/2341-86cd06c0cf01aa33.js +1 -0
  16. package/apps/pwa/out/_next/static/chunks/2352.9abc42422bade876.js +1 -0
  17. package/apps/pwa/out/_next/static/chunks/2397-c1653a816061842d.js +1 -0
  18. package/apps/pwa/out/_next/static/chunks/{3103.0df8da390948bb84.js → 2500.cbc1257b774aae52.js} +1 -1
  19. package/apps/pwa/out/_next/static/chunks/{7644.17e37ba6f1d4226e.js → 2683.c9773a0c589b031b.js} +3 -3
  20. package/apps/pwa/out/_next/static/chunks/2709.8e1889034255fc5f.js +24 -0
  21. package/apps/pwa/out/_next/static/chunks/{4718-17d2af636796a330.js → 275-02ea4c2a33980422.js} +3 -3
  22. package/apps/pwa/out/_next/static/chunks/2812ca6a.3b9f4a7a08885744.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/284.ac77c0db55bfd3a8.js +1 -0
  24. package/apps/pwa/out/_next/static/chunks/{8714.ff0b7ce3ec3e3ae2.js → 2941.3c3546f96bc6efa7.js} +1 -1
  25. package/apps/pwa/out/_next/static/chunks/2976.b000698a3c6512dc.js +24 -0
  26. package/apps/pwa/out/_next/static/chunks/{9214.63a510d39178e997.js → 2986.45d7652e4f13557e.js} +2 -2
  27. package/apps/pwa/out/_next/static/chunks/3031-85328a92fcce4da6.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/3136.30aaaa5fa03662a3.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/{3677-4215f826f6aa68e5.js → 3148-98efd4869d660a87.js} +1 -1
  30. package/apps/pwa/out/_next/static/chunks/3155.2587a55196ecb394.js +226 -0
  31. package/apps/pwa/out/_next/static/chunks/3277.785db1cf09f98601.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/3320-f9c77381f85a2c0a.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/3324.a09703033abcbd2f.js +34 -0
  34. package/apps/pwa/out/_next/static/chunks/3386-91049feabff9a94e.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/339.80afb7e8839372af.js +8 -0
  36. package/apps/pwa/out/_next/static/chunks/3410.7f9af5ab77cbe65f.js +115 -0
  37. package/apps/pwa/out/_next/static/chunks/3538.a445e50bb359d068.js +32 -0
  38. package/apps/pwa/out/_next/static/chunks/3540c645.2595a6af01a97672.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/3621.581b2054cc14bee4.js +286 -0
  40. package/apps/pwa/out/_next/static/chunks/3676.8c28d16fd84ca843.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/{9512.5a76207a730e0491.js → 3727.7949ccaacaa71242.js} +2 -2
  42. package/apps/pwa/out/_next/static/chunks/375-b84540853523fe52.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/{8557-e7898769499cd56f.js → 3757-180308bc61021b05.js} +1 -1
  44. package/apps/pwa/out/_next/static/chunks/379.ee262e37586fe1ae.js +74 -0
  45. package/apps/pwa/out/_next/static/chunks/{359-2250789a2d3499e7.js → 3840-5825d56d46976a92.js} +1 -1
  46. package/apps/pwa/out/_next/static/chunks/3969-81054381eaec4c4c.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/{da5176c6.6773b6c5994e1d99.js → 3a3d9966.cc4d4585a2708e7c.js} +1 -1
  48. package/apps/pwa/out/_next/static/chunks/4067-bf9aa60547972937.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/4116.a84a92a2492c080e.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/4176.e5729c93c29151eb.js +104 -0
  51. package/apps/pwa/out/_next/static/chunks/4227-e6c84686bc8946ca.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/{9952.5daf5f94063a2b3e.js → 4286.b70c4520306817e8.js} +1 -1
  53. package/apps/pwa/out/_next/static/chunks/4304.e9b2512834a9e23e.js +23 -0
  54. package/apps/pwa/out/_next/static/chunks/4327.b9e08a71c0009348.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/{938.66ad1ef0e5abae1c.js → 4615.8525eb0add35eba6.js} +1 -1
  56. package/apps/pwa/out/_next/static/chunks/4946.bd106eafd668f248.js +148 -0
  57. package/apps/pwa/out/_next/static/chunks/5085-bce4904931767ca6.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/5125.2eb9968b83767193.js +93 -0
  59. package/apps/pwa/out/_next/static/chunks/5128-75b733fd74a9a1eb.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/{6236.e18cced2d5ba6afb.js → 528.38ce20ef8aa251ff.js} +16 -16
  61. package/apps/pwa/out/_next/static/chunks/5489f3fe.4bb1458b09f6dead.js +122 -0
  62. package/apps/pwa/out/_next/static/chunks/{3408.21d1570602f4b6c0.js → 552.b7d061ad91eeac51.js} +2 -2
  63. package/apps/pwa/out/_next/static/chunks/5560-2a4648f6a30f16e7.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/5711.957b095705c12560.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/{1530.0e612369b6fd7ea0.js → 575.d929793a53f27c4b.js} +1 -1
  66. package/apps/pwa/out/_next/static/chunks/5772-e29e14f8ff127122.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/5887.5b2f5b44ce0f7e9a.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/5899-4c112a2d908cf97f.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/599.c39c571b6733f2a2.js +41 -0
  70. package/apps/pwa/out/_next/static/chunks/6041.1b65efb796ebc2a5.js +79 -0
  71. package/apps/pwa/out/_next/static/chunks/6057-765c0a26028c86b2.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/6142.f289e0d039f453a6.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/6199-6bcd61d2a3910e04.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/6236.cdf7293e710a9b2d.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/6387-237e079dac9a3ae6.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/6448-b6d272d074276e14.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/6466-92e65a48490b68a9.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/6566.926a1d1b7c911442.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/6580-cdc0e4a634ce4708.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/6659-b242dc31b20b3f29.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/6690.c5d9b321b1f79384.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/671-e9b6ad0c771c5514.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/6862.bcbf89dd0f4496b3.js +27 -0
  84. package/apps/pwa/out/_next/static/chunks/6912-7b375ee48732c767.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/6925.562d532110879886.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/{7385.50a308a477bdfc21.js → 6943.c6b24124853a47b2.js} +1 -1
  87. package/apps/pwa/out/_next/static/chunks/{630.fe5a46428d63b013.js → 727.7deb87749b0a343a.js} +1 -1
  88. package/apps/pwa/out/_next/static/chunks/{2018.a741297bce759490.js → 7481.39f7a4654907bf6e.js} +1 -1
  89. package/apps/pwa/out/_next/static/chunks/7545.b1aa42cd15503319.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/7551-416d298c2dc4a9ab.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/{8444.4c26b379ca2b9596.js → 771.c3cdb6c1f7f47c02.js} +17 -17
  92. package/apps/pwa/out/_next/static/chunks/7784.1f0ac4a16d190cf4.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/7870-309de463786ac1fc.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/7888-e29b151bb6a3bb8b.js +1 -0
  95. package/apps/pwa/out/_next/static/chunks/{3589.5444a06bcf6e775c.js → 7891.03f910124a737985.js} +1 -1
  96. package/apps/pwa/out/_next/static/chunks/7905-6ba78d9234608f79.js +1 -0
  97. package/apps/pwa/out/_next/static/chunks/8037.e254fd797aa224d1.js +1 -0
  98. package/apps/pwa/out/_next/static/chunks/8207.f527886b7c464529.js +1 -0
  99. package/apps/pwa/out/_next/static/chunks/856.50bda61439d465e6.js +62 -0
  100. package/apps/pwa/out/_next/static/chunks/{b2f6ba4d.fb56fdbbf798df33.js → 873d6c12.09bd499f57171543.js} +1 -1
  101. package/apps/pwa/out/_next/static/chunks/{5101.e32282718f99ed6f.js → 8904.7d51af2dc033965c.js} +2 -2
  102. package/apps/pwa/out/_next/static/chunks/9031-92e9b487edb681ee.js +1 -0
  103. package/apps/pwa/out/_next/static/chunks/9060.5410d9f6a95f6287.js +90 -0
  104. package/apps/pwa/out/_next/static/chunks/{5637.281e5dec4ea6ecf1.js → 914.8abefd48d579547b.js} +2 -2
  105. package/apps/pwa/out/_next/static/chunks/9187-c87a2207d4ac5d46.js +1 -0
  106. package/apps/pwa/out/_next/static/chunks/{4705-194e64e47ca0fbdb.js → 9250-072df22eaadaa6b5.js} +1 -1
  107. package/apps/pwa/out/_next/static/chunks/9289.3e92f278821e18e0.js +1 -0
  108. package/apps/pwa/out/_next/static/chunks/9319.7816d3cc741cd34f.js +1 -0
  109. package/apps/pwa/out/_next/static/chunks/9327-e016bb9f1674d24f.js +1 -0
  110. package/apps/pwa/out/_next/static/chunks/9365.3de48bf75193ff9a.js +77 -0
  111. package/apps/pwa/out/_next/static/chunks/9383.5b5e9aa56b5fea97.js +1 -0
  112. package/apps/pwa/out/_next/static/chunks/9387-cb929573ef436f39.js +1 -0
  113. package/apps/pwa/out/_next/static/chunks/9489.c27becacc3283dec.js +1 -0
  114. package/apps/pwa/out/_next/static/chunks/{8637.47f5b35afcae5e6b.js → 9514.131c52cc75fe6439.js} +1 -1
  115. package/apps/pwa/out/_next/static/chunks/9536.28962663c7734376.js +1 -0
  116. package/apps/pwa/out/_next/static/chunks/9686-12286f5bbf15a5a0.js +1 -0
  117. package/apps/pwa/out/_next/static/chunks/9776.289d40cc5a4c342a.js +1 -0
  118. package/apps/pwa/out/_next/static/chunks/{1674.2a65fd5668e1cc5f.js → 9789.60f723d18097ec30.js} +1 -1
  119. package/apps/pwa/out/_next/static/chunks/989.f0c17523c5e61f65.js +1 -0
  120. package/apps/pwa/out/_next/static/chunks/9972-1df393aa8d4f7d52.js +1 -0
  121. package/apps/pwa/out/_next/static/chunks/9f31e478.fefcbcd3c388ebc5.js +1 -0
  122. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-96750aba7430959f.js +1 -0
  123. package/apps/pwa/out/_next/static/chunks/app/approvals/page-4105e5bbbb043024.js +1 -0
  124. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-5d4fa75c2acb113e.js +1 -0
  125. package/apps/pwa/out/_next/static/chunks/app/board/page-a79a9bdb3b2142bf.js +1 -0
  126. package/apps/pwa/out/_next/static/chunks/app/botlab/page-f1c2047484992a35.js +1 -0
  127. package/apps/pwa/out/_next/static/chunks/app/bots/page-15ffc49b2d8c70e2.js +1 -0
  128. package/apps/pwa/out/_next/static/chunks/app/ceo/page-67d53a3fc8734135.js +1 -0
  129. package/apps/pwa/out/_next/static/chunks/app/chat/page-e30c8dc696491336.js +1 -0
  130. package/apps/pwa/out/_next/static/chunks/app/consult/page-2136e04fa77696e2.js +1 -0
  131. package/apps/pwa/out/_next/static/chunks/app/control/page-fecd2814790c2e12.js +1 -0
  132. package/apps/pwa/out/_next/static/chunks/app/decisions/page-280aa4a98fc5bb44.js +1 -0
  133. package/apps/pwa/out/_next/static/chunks/app/design-check/page-c14e96b65fb4b883.js +1 -0
  134. package/apps/pwa/out/_next/static/chunks/app/editor/page-187dac74825ed6bf.js +1 -0
  135. package/apps/pwa/out/_next/static/chunks/app/exec/page-6bc7246ea8c92448.js +1 -0
  136. package/apps/pwa/out/_next/static/chunks/app/field/page-083747f1d4518f61.js +1 -0
  137. package/apps/pwa/out/_next/static/chunks/app/healthz/route-96750aba7430959f.js +1 -0
  138. package/apps/pwa/out/_next/static/chunks/app/inside/page-15ca95a16ec96e1f.js +1 -0
  139. package/apps/pwa/out/_next/static/chunks/app/intake/page-a8ac031b3810eb64.js +1 -0
  140. package/apps/pwa/out/_next/static/chunks/app/layout-8835f93110494cda.js +1 -0
  141. package/apps/pwa/out/_next/static/chunks/app/live/page-e2de2e59111c9aad.js +1 -0
  142. package/apps/pwa/out/_next/static/chunks/app/live-run/page-f2b2e4bf6e981450.js +1 -0
  143. package/apps/pwa/out/_next/static/chunks/app/loops/page-5b92b7f75df20948.js +1 -0
  144. package/apps/pwa/out/_next/static/chunks/app/market/page-468eddf2b1a84ecb.js +1 -0
  145. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-2af16e62c12f22df.js +1 -0
  146. package/apps/pwa/out/_next/static/chunks/app/morning/page-18b40867a77a5793.js +1 -0
  147. package/apps/pwa/out/_next/static/chunks/app/not-found-fe934f2979f5a4a2.js +1 -0
  148. package/apps/pwa/out/_next/static/chunks/app/observatory/page-3eec435537357170.js +1 -0
  149. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-ff88cbfd2aa99fc8.js +1 -0
  150. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-a5b39fb780c70ab5.js +1 -0
  151. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-ae465dde1d1b3933.js +1 -0
  152. package/apps/pwa/out/_next/static/chunks/app/outputs/page-e7abc34a48a6f71e.js +1 -0
  153. package/apps/pwa/out/_next/static/chunks/app/page-cab9674fde9ead26.js +1 -0
  154. package/apps/pwa/out/_next/static/chunks/app/reflection/page-1da49bc8712284d0.js +1 -0
  155. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-5e8aa657551ac912.js +1 -0
  156. package/apps/pwa/out/_next/static/chunks/app/sessions/page-fcc36f36c6dc1fe2.js +1 -0
  157. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-d22db22f2a7296ca.js +1 -0
  158. package/apps/pwa/out/_next/static/chunks/app/settings/page-d12dc7b1773878f0.js +1 -0
  159. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-99debec9ea7fbec0.js +1 -0
  160. package/apps/pwa/out/_next/static/chunks/app/setup/layout-96750aba7430959f.js +1 -0
  161. package/apps/pwa/out/_next/static/chunks/app/setup/page-2a088a78bad7e924.js +1 -0
  162. package/apps/pwa/out/_next/static/chunks/app/share/page-2e8ed57db7e69993.js +1 -0
  163. package/apps/pwa/out/_next/static/chunks/app/showroom/page-4b3a16213c2ae8fe.js +1 -0
  164. package/apps/pwa/out/_next/static/chunks/app/tasks/page-f098747ddf38c98b.js +1 -0
  165. package/apps/pwa/out/_next/static/chunks/app/term/page-c15958835534404b.js +1 -0
  166. package/apps/pwa/out/_next/static/chunks/app/today/page-68279e3c843c1fd7.js +1 -0
  167. package/apps/pwa/out/_next/static/chunks/app/trace/page-a34a74453367a39d.js +1 -0
  168. package/apps/pwa/out/_next/static/chunks/app/vault/page-8767a7db2155a5bd.js +1 -0
  169. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-bd5976683460d7f2.js +1 -0
  170. package/apps/pwa/out/_next/static/chunks/app/workflows/page-b7364835e7f2ef54.js +1 -0
  171. package/apps/pwa/out/_next/static/chunks/app/workspace/page-311af16b3ee0ffca.js +1 -0
  172. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-fb670757274ae990.js +1 -0
  173. package/apps/pwa/out/_next/static/chunks/{0368f25d-ad84af92fefee68f.js → ccae1c4b-0cf414f5eff1b10d.js} +1 -1
  174. package/apps/pwa/out/_next/static/chunks/{cbe38a15.5a032598e39970c6.js → ceba0382.650712b56b85b582.js} +1 -1
  175. package/apps/pwa/out/_next/static/chunks/{b6705a4f-b9a9047de9eecfd0.js → da5ecc5c-b005ad8cac737d57.js} +1 -1
  176. package/apps/pwa/out/_next/static/chunks/{56d372f2.681ab4ec4c998fae.js → f9a61e4d.1fc2c1dbdd49fe46.js} +1 -1
  177. package/apps/pwa/out/_next/static/chunks/framework-6d497cbf1eef04c6.js +1 -0
  178. package/apps/pwa/out/_next/static/chunks/main-app-012f5edec932f337.js +1 -0
  179. package/apps/pwa/out/_next/static/chunks/main-da5aeb809edc94a2.js +1 -0
  180. package/apps/pwa/out/_next/static/chunks/pages/_app-5ee319af6f749dfe.js +1 -0
  181. package/apps/pwa/out/_next/static/chunks/pages/_error-4bc84653a718d6c6.js +1 -0
  182. package/apps/pwa/out/_next/static/chunks/webpack-8a96cf6775c73d6e.js +1 -0
  183. package/apps/pwa/out/_next/static/{T1mBQqmkwKDLGtyisDCOd → uC-N0emedeNOFuaBQFv-I}/_buildManifest.js +1 -1
  184. package/apps/pwa/out/approvals/index.html +1 -1
  185. package/apps/pwa/out/approvals/index.txt +22 -22
  186. package/apps/pwa/out/autopilot/index.html +1 -1
  187. package/apps/pwa/out/autopilot/index.txt +22 -22
  188. package/apps/pwa/out/board/index.html +1 -1
  189. package/apps/pwa/out/board/index.txt +22 -22
  190. package/apps/pwa/out/botlab/index.html +1 -1
  191. package/apps/pwa/out/botlab/index.txt +21 -21
  192. package/apps/pwa/out/bots/index.html +1 -1
  193. package/apps/pwa/out/bots/index.txt +21 -21
  194. package/apps/pwa/out/ceo/index.html +1 -1
  195. package/apps/pwa/out/ceo/index.txt +22 -22
  196. package/apps/pwa/out/chat/index.html +1 -1
  197. package/apps/pwa/out/chat/index.txt +21 -21
  198. package/apps/pwa/out/consult/index.html +1 -1
  199. package/apps/pwa/out/consult/index.txt +22 -22
  200. package/apps/pwa/out/control/index.html +1 -1
  201. package/apps/pwa/out/control/index.txt +22 -22
  202. package/apps/pwa/out/decisions/index.html +1 -1
  203. package/apps/pwa/out/decisions/index.txt +21 -21
  204. package/apps/pwa/out/design-check/index.html +1 -1
  205. package/apps/pwa/out/design-check/index.txt +22 -22
  206. package/apps/pwa/out/editor/index.html +1 -1
  207. package/apps/pwa/out/editor/index.txt +22 -22
  208. package/apps/pwa/out/exec/index.html +1 -1
  209. package/apps/pwa/out/exec/index.txt +22 -22
  210. package/apps/pwa/out/field/index.html +1 -1
  211. package/apps/pwa/out/field/index.txt +22 -22
  212. package/apps/pwa/out/healthz +1 -1
  213. package/apps/pwa/out/index.html +1 -1
  214. package/apps/pwa/out/index.txt +21 -21
  215. package/apps/pwa/out/inside/index.html +1 -1
  216. package/apps/pwa/out/inside/index.txt +21 -21
  217. package/apps/pwa/out/intake/index.html +1 -1
  218. package/apps/pwa/out/intake/index.txt +22 -22
  219. package/apps/pwa/out/live/index.html +1 -1
  220. package/apps/pwa/out/live/index.txt +22 -22
  221. package/apps/pwa/out/live-run/index.html +1 -1
  222. package/apps/pwa/out/live-run/index.txt +22 -22
  223. package/apps/pwa/out/loops/index.html +1 -1
  224. package/apps/pwa/out/loops/index.txt +21 -21
  225. package/apps/pwa/out/market/index.html +1 -1
  226. package/apps/pwa/out/market/index.txt +21 -21
  227. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  228. package/apps/pwa/out/missions/placeholder/index.txt +21 -21
  229. package/apps/pwa/out/morning/index.html +1 -1
  230. package/apps/pwa/out/morning/index.txt +22 -22
  231. package/apps/pwa/out/observatory/index.html +1 -1
  232. package/apps/pwa/out/observatory/index.txt +22 -22
  233. package/apps/pwa/out/ops/checklist/index.html +1 -1
  234. package/apps/pwa/out/ops/checklist/index.txt +21 -21
  235. package/apps/pwa/out/ops/release/index.html +1 -1
  236. package/apps/pwa/out/ops/release/index.txt +21 -21
  237. package/apps/pwa/out/ops/seats/index.html +1 -1
  238. package/apps/pwa/out/ops/seats/index.txt +21 -21
  239. package/apps/pwa/out/outputs/index.html +1 -1
  240. package/apps/pwa/out/outputs/index.txt +21 -21
  241. package/apps/pwa/out/reflection/index.html +1 -1
  242. package/apps/pwa/out/reflection/index.txt +22 -22
  243. package/apps/pwa/out/scheduler/index.html +1 -1
  244. package/apps/pwa/out/scheduler/index.txt +22 -22
  245. package/apps/pwa/out/sessions/index.html +1 -1
  246. package/apps/pwa/out/sessions/index.txt +21 -21
  247. package/apps/pwa/out/settings/devices/index.html +1 -1
  248. package/apps/pwa/out/settings/devices/index.txt +22 -22
  249. package/apps/pwa/out/settings/index.html +1 -1
  250. package/apps/pwa/out/settings/index.txt +22 -22
  251. package/apps/pwa/out/setup/done/index.html +1 -1
  252. package/apps/pwa/out/setup/done/index.txt +22 -22
  253. package/apps/pwa/out/setup/index.html +1 -1
  254. package/apps/pwa/out/setup/index.txt +22 -22
  255. package/apps/pwa/out/share/index.html +1 -1
  256. package/apps/pwa/out/share/index.txt +22 -22
  257. package/apps/pwa/out/showroom/index.html +1 -1
  258. package/apps/pwa/out/showroom/index.txt +21 -21
  259. package/apps/pwa/out/tasks/index.html +1 -1
  260. package/apps/pwa/out/tasks/index.txt +22 -22
  261. package/apps/pwa/out/term/index.html +1 -1
  262. package/apps/pwa/out/term/index.txt +22 -22
  263. package/apps/pwa/out/today/index.html +1 -1
  264. package/apps/pwa/out/today/index.txt +22 -22
  265. package/apps/pwa/out/trace/index.html +1 -1
  266. package/apps/pwa/out/trace/index.txt +22 -22
  267. package/apps/pwa/out/vault/index.html +1 -1
  268. package/apps/pwa/out/vault/index.txt +22 -22
  269. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  270. package/apps/pwa/out/workflows/chat-ui/index.txt +22 -22
  271. package/apps/pwa/out/workflows/index.html +1 -1
  272. package/apps/pwa/out/workflows/index.txt +22 -22
  273. package/apps/pwa/out/workspace/index.html +1 -1
  274. package/apps/pwa/out/workspace/index.txt +22 -22
  275. package/apps/pwa/out/worktrees/index.html +1 -1
  276. package/apps/pwa/out/worktrees/index.txt +22 -22
  277. package/docs/goal-context/05-authoring-lessons.jsonl +47 -0
  278. package/docs/goal-context/README.md +3 -0
  279. package/graphs/default-loop.yaml +6 -1
  280. package/graphs/implement-loop.yaml +24 -0
  281. package/graphs/release/recipes.yaml +6 -0
  282. package/graphs/release/release-loop.yaml +17 -4
  283. package/graphs/wizard/recipes.yaml +44 -0
  284. package/graphs/wizard/wizard-loop.yaml +44 -0
  285. package/graphs/work/research-report.yaml +2 -0
  286. package/package.json +1 -1
  287. package/scripts/ci-typecheck-changed.ts +139 -5
  288. package/scripts/coord-role-pack.ts +1 -1
  289. package/scripts/first10-gate.ts +416 -0
  290. package/scripts/fleet/wsl-node-setup.sh +432 -0
  291. package/scripts/release-loop/docs-node.ts +204 -8
  292. package/scripts/release-loop/gate-node.ts +249 -53
  293. package/scripts/release-loop/node-verdict.ts +2 -0
  294. package/scripts/release-loop/resume-cap.ts +14 -34
  295. package/scripts/release-loop/resume-release.ts +37 -11
  296. package/scripts/release-loop/traffic-node.ts +59 -0
  297. package/scripts/release-loop/traffic-transition.ts +159 -0
  298. package/scripts/rhythm/daily.ts +137 -3
  299. package/scripts/ux-sim.ts +53 -0
  300. package/skills/README.md +1 -0
  301. package/src/acp/core-turn-bridge.ts +48 -6
  302. package/src/agent/delegate-hint.ts +16 -0
  303. package/src/agent/runner.ts +82 -2
  304. package/src/agent/task-notification.ts +56 -10
  305. package/src/agent/types.ts +4 -0
  306. package/src/agent-substrate/pr-reviewer.ts +55 -3
  307. package/src/agent-substrate/review-intent.ts +29 -2
  308. package/src/agent-substrate/review-observation.ts +3 -0
  309. package/src/agent-substrate/self-review-cli.ts +168 -16
  310. package/src/autopilot/mission-codebase-gate.ts +141 -12
  311. package/src/autopilot/pr-manager.ts +25 -5
  312. package/src/boot/daemon-tools/self-implement.ts +1 -0
  313. package/src/budget/usage-outcomes.ts +8 -4
  314. package/src/capture/tui-self-report.ts +102 -0
  315. package/src/chat/goal-continue-verdict.ts +41 -0
  316. package/src/chat/index.ts +30 -4
  317. package/src/chat/internal-turn-origin.ts +1 -0
  318. package/src/chat/paste-fold.ts +86 -0
  319. package/src/chat/tool-render/block.ts +32 -0
  320. package/src/chat/tool-render/dispatch.ts +2 -20
  321. package/src/chat/tool-render/result-text.ts +98 -0
  322. package/src/chat/turn-typeahead.ts +70 -7
  323. package/src/cli/config-audit.ts +119 -0
  324. package/src/cli/doctor-cli.ts +22 -0
  325. package/src/cli/guardian-cli.ts +10 -0
  326. package/src/cli/herdr-cli.ts +34 -0
  327. package/src/cli/light-entry-route.ts +6 -3
  328. package/src/cli/log-event-names.ts +2 -0
  329. package/src/cli/make-cli.ts +247 -11
  330. package/src/cli/msg-cli.ts +117 -3
  331. package/src/cli/pr-cli.ts +29 -16
  332. package/src/cli/pr-land-base-read.ts +11 -2
  333. package/src/cli/pr-land-heavy-remote.ts +6 -3
  334. package/src/cli/pr-land-overlap-evidence.ts +23 -4
  335. package/src/cli/pr-land-recovery.ts +117 -1
  336. package/src/cli/pty-takeover-cli.ts +8 -7
  337. package/src/cli/release-cli.ts +21 -5
  338. package/src/cli/release-single-flight.ts +1 -1
  339. package/src/cli/tasks-card-show.ts +162 -0
  340. package/src/cli/tasks-cli.ts +574 -356
  341. package/src/cli/tasks-read-cli.ts +197 -0
  342. package/src/core-turn/run-core-turn.ts +4 -2
  343. package/src/core-turn/run-goal-loop.ts +73 -16
  344. package/src/core-turn/types.ts +6 -1
  345. package/src/dashboard/context/keys.ts +8 -31
  346. package/src/dashboard/index.ts +202 -49
  347. package/src/dashboard/input/agent-wake.ts +7 -1
  348. package/src/dashboard/input/chat-main-plain-turn-runtime.ts +146 -3
  349. package/src/dashboard/input/chat-main-slash-command.ts +4 -2
  350. package/src/dashboard/input/goal-continue.ts +210 -0
  351. package/src/dashboard/input/goal-interim.ts +2 -0
  352. package/src/dashboard/input/internal-turn.ts +2 -8
  353. package/src/dashboard/input/seat-autowake.ts +9 -7
  354. package/src/dashboard/input/turn-autoheal.ts +52 -0
  355. package/src/dashboard/seat-boot-preamble.ts +132 -5
  356. package/src/dashboard/slash-runtime/chat-persona.ts +65 -8
  357. package/src/dashboard/slash-runtime/dashboard-handlers.ts +3 -2
  358. package/src/dashboard/slash-runtime/model-choices.ts +15 -0
  359. package/src/dashboard/stale-install-check.ts +3 -99
  360. package/src/debug/batch-queue.ts +119 -0
  361. package/src/debug/tui-log-tag.ts +67 -0
  362. package/src/display/agent-surface.ts +7 -0
  363. package/src/domains/standalone-log-sink.ts +15 -2
  364. package/src/esc-abort-gate.ts +69 -0
  365. package/src/git-fs/worktree.ts +95 -1
  366. package/src/graph-runner/graph-cli.ts +18 -0
  367. package/src/graph-runner/runner.ts +20 -11
  368. package/src/graph-wizard/generate.ts +108 -4
  369. package/src/graph-wizard/steps.ts +15 -0
  370. package/src/grounding/proactive-ground.ts +86 -0
  371. package/src/harness/control-inbox.ts +49 -1
  372. package/src/harness/harness-cli-command.ts +51 -7
  373. package/src/harness/harness-incidents.ts +52 -1
  374. package/src/harness/pod-control-send.ts +33 -5
  375. package/src/harness/self-send-remote.ts +69 -0
  376. package/src/harness/self-send-routing-guard.ts +6 -0
  377. package/src/harness/self-send-target.ts +4 -3
  378. package/src/index.ts +327 -12
  379. package/src/input-core/context-key-runtime.ts +21 -0
  380. package/src/light-cli.ts +6 -1
  381. package/src/llm-wellformed.ts +70 -0
  382. package/src/llm.ts +35 -4
  383. package/src/loops/msg-wake.ts +35 -39
  384. package/src/loops/orchestrator/inbox.ts +59 -11
  385. package/src/loops/orchestrator/knowhow-pack.ts +364 -0
  386. package/src/loops/orchestrator/tick.ts +5 -1
  387. package/src/maturity/feature-maturity.ts +1 -1
  388. package/src/models/prompts.ts +17 -2
  389. package/src/msg/msg-post-office.ts +116 -0
  390. package/src/mss/logging/log-store.ts +79 -22
  391. package/src/nexus/api/decisions-route.ts +38 -18
  392. package/src/nexus/api/graph-wizard-api.ts +20 -2
  393. package/src/nexus/boot/register-mcp-clients.ts +263 -38
  394. package/src/nexus/onboarding/first-boot-wizard.ts +56 -8
  395. package/src/onboarding/first-run.ts +37 -6
  396. package/src/onboarding/web-first.ts +43 -11
  397. package/src/ops/overview-collect.ts +12 -6
  398. package/src/ops/overview.ts +3 -3
  399. package/src/persona/loader.ts +11 -0
  400. package/src/persona/types.ts +8 -0
  401. package/src/prompt-library/session-guidance.ts +14 -0
  402. package/src/provider-summary.ts +8 -0
  403. package/src/pty-shell/herdr-agent-report.ts +118 -9
  404. package/src/pty-shell/herdr-prompt.ts +266 -0
  405. package/src/pty-shell/pty-control-ipc.ts +151 -8
  406. package/src/pty-shell/pty-special-keys.ts +42 -2
  407. package/src/pty-shell/stale-install-check.ts +99 -0
  408. package/src/pty-shell/tui-run-state.ts +14 -2
  409. package/src/release-loop/auto-start.ts +20 -2
  410. package/src/release-loop/checklist.ts +76 -4
  411. package/src/release-loop/rehearsal.ts +36 -20
  412. package/src/repl/index.ts +19 -1
  413. package/src/seat-loop/knowhow-lint.ts +1 -1
  414. package/src/self-dev/decompose-proposal.ts +172 -20
  415. package/src/self-dev/decompose.ts +61 -0
  416. package/src/self-dev/dev-cli.ts +37 -3
  417. package/src/self-dev/dev-pipeline.ts +8 -2
  418. package/src/self-dev/draft-triage-rules.ts +31 -0
  419. package/src/self-dev/glm-credential-guard.ts +77 -0
  420. package/src/self-dev/graph-journey-nodes.ts +1 -0
  421. package/src/self-dev/graph-journey-route.ts +12 -2
  422. package/src/self-dev/orchestrate-cli.ts +68 -3
  423. package/src/self-dev/orchestrate.ts +116 -17
  424. package/src/self-dev/run-supervisor.ts +55 -2
  425. package/src/self-dev/run-types.ts +1 -1
  426. package/src/self-health/autoheal.ts +153 -0
  427. package/src/self-health/signatures.ts +6 -0
  428. package/src/self-implement/device-first.ts +116 -0
  429. package/src/self-implement/doctor-visit.ts +239 -1
  430. package/src/self-implement/evidence-command-budget.ts +80 -0
  431. package/src/self-implement/goal-author-cli.ts +1 -0
  432. package/src/self-implement/goal-author-decompose.ts +265 -4
  433. package/src/self-implement/goal-author.ts +33 -8
  434. package/src/self-implement/goal-elaborate.ts +176 -22
  435. package/src/self-implement/goal-refine.ts +3 -0
  436. package/src/self-implement/graph-variant.ts +40 -6
  437. package/src/self-implement/headless-elanous-driver.ts +19 -3
  438. package/src/self-implement/off-diff-evidence.ts +58 -6
  439. package/src/self-implement/orchestrator.ts +222 -21
  440. package/src/self-implement/pod-warm-pool-profile.ts +1 -0
  441. package/src/self-implement/pwa-import-graph.ts +1 -1
  442. package/src/self-implement/rework-policy.ts +30 -0
  443. package/src/self-implement/run-ledger.ts +108 -0
  444. package/src/self-implement/run-ttl.ts +38 -24
  445. package/src/self-implement/scope-adjacency.ts +3 -1
  446. package/src/self-implement/seams.ts +60 -4
  447. package/src/self-implement/wiring-check.ts +358 -0
  448. package/src/shell-env-bootstrap.ts +11 -4
  449. package/src/skills/runner.ts +4 -2
  450. package/src/skills/tools/agent.ts +290 -48
  451. package/src/skills/tools/schedule-wakeup.ts +23 -4
  452. package/src/skills/tools/shell.ts +61 -6
  453. package/src/skills/tools/terminal-modal-inject.ts +1 -2
  454. package/src/skills/tools/terminal-modal.ts +10 -8
  455. package/src/skills/url-router.ts +41 -1
  456. package/src/smart-wizard/run.ts +66 -0
  457. package/src/status/bar.ts +34 -6
  458. package/src/status/status-provider-info.ts +37 -6
  459. package/src/steward/rejudge-tick.ts +10 -2
  460. package/src/steward/ta-repair-event-collect.ts +17 -6
  461. package/src/task-agent/actions.ts +3 -1
  462. package/src/task-agent/land-queue.ts +21 -8
  463. package/src/task-agent/live-moves.ts +22 -6
  464. package/src/task-agent/mission.ts +30 -0
  465. package/src/task-agent/rejudge-on-head.ts +15 -0
  466. package/src/task-agent/repair-cycle.ts +138 -32
  467. package/src/task-agent/repair-next-move.ts +31 -3
  468. package/src/task-agent/repair-outcomes.ts +29 -0
  469. package/src/task-agent/repair-worker.ts +14 -4
  470. package/src/task-agent/shadow.ts +41 -3
  471. package/src/task-agent/task-card-prefix.ts +2 -0
  472. package/src/task-agent/task-hand.ts +477 -22
  473. package/src/task-agent/task-parent-role-llm.ts +36 -0
  474. package/src/task-agent/tier-split.ts +78 -9
  475. package/src/task-orchestrator/surfaces/pod-account-broker.ts +9 -0
  476. package/src/task-orchestrator/surfaces/pod-child-reuse.ts +146 -0
  477. package/src/task-orchestrator/surfaces/pod-command-job.ts +86 -5
  478. package/src/task-orchestrator/surfaces/pod-failure-reason.ts +215 -3
  479. package/src/task-orchestrator/surfaces/pod-launch-history.ts +133 -0
  480. package/src/task-orchestrator/surfaces/pod-manifest-test-normalize.ts +11 -0
  481. package/src/task-orchestrator/surfaces/pod-pool.ts +76 -4
  482. package/src/task-orchestrator/surfaces/pod-provenance.ts +8 -2
  483. package/src/task-orchestrator/surfaces/pod-repair-commit.ts +18 -3
  484. package/src/task-orchestrator/surfaces/pod-si-warm-entry.ts +16 -0
  485. package/src/task-orchestrator/surfaces/pod-si-warm-host.ts +224 -0
  486. package/src/task-orchestrator/surfaces/pod-si-warm-protocol.ts +201 -0
  487. package/src/task-orchestrator/surfaces/pod-si-warm-provider.ts +444 -0
  488. package/src/task-orchestrator/surfaces/pod-si-warm-runner.ts +387 -0
  489. package/src/task-orchestrator/surfaces/pod-si-warm-transport.ts +157 -0
  490. package/src/task-orchestrator/surfaces/pod-warm-worker-protocol.ts +4 -0
  491. package/src/task-orchestrator/surfaces/pod-warm-worker-provider.ts +485 -36
  492. package/src/task-orchestrator/surfaces/pod-warm-worker-runtime.ts +3 -0
  493. package/src/task-orchestrator/surfaces/self-implement-pod.ts +396 -19
  494. package/src/task-orchestrator/surfaces/self-implement.ts +42 -2
  495. package/src/tool-runtime/index.ts +15 -2
  496. package/src/tool-runtime/mcp-proxy-bootstrap.ts +29 -0
  497. package/src/tty-foreground.ts +155 -0
  498. package/src/tui/chat/goal-interim.ts +173 -0
  499. package/src/tui/chat/log-view.ts +205 -18
  500. package/src/tui/chat/self-health-status.ts +232 -0
  501. package/src/tui/entry.ts +370 -81
  502. package/src/tui/input/composer.ts +8 -1
  503. package/src/tui/slash/compact-command.ts +7 -0
  504. package/src/tui/slash/compact.ts +1 -7
  505. package/src/tui/slash/resume.ts +75 -0
  506. package/src/tui-client/local-chat-turn.ts +45 -2
  507. package/src/tui-client/next-dashboard-runtime.ts +8 -0
  508. package/src/tui-client/next-loop-command.ts +70 -0
  509. package/src/tui-client/next-wakeup.ts +191 -0
  510. package/src/tui.ts +37 -0
  511. package/src/ui/modal-adapter.ts +2 -2
  512. package/src/ux-sim/classic-tui-seat-scenarios.ts +516 -0
  513. package/src/ux-sim/cli-config-audit-device.ts +121 -0
  514. package/src/ux-sim/dashboard-event-loop-stall-monitor-device.ts +238 -0
  515. package/src/ux-sim/event-monkey.ts +3 -2
  516. package/src/ux-sim/fake-bin.ts +45 -0
  517. package/src/ux-sim/fake-herdr.ts +238 -0
  518. package/src/ux-sim/fake-llm.ts +111 -6
  519. package/src/ux-sim/fault-glm-no-credential.ts +116 -0
  520. package/src/ux-sim/fault-nextmove-dispatch.ts +102 -1
  521. package/src/ux-sim/fault-scope-escape-lift.ts +33 -6
  522. package/src/ux-sim/fault-tui-400-autoheal.ts +297 -0
  523. package/src/ux-sim/goal-device.ts +619 -0
  524. package/src/ux-sim/in-process-cli.ts +22 -5
  525. package/src/ux-sim/mock-authoring-first-run-child.ts +35 -0
  526. package/src/ux-sim/mock-authoring-first-run.ts +97 -0
  527. package/src/ux-sim/mock-seat-pty-frame-child.ts +29 -0
  528. package/src/ux-sim/mock-seat-pty-frame.ts +297 -0
  529. package/src/ux-sim/mock-seat-pty-sequence-child.ts +21 -0
  530. package/src/ux-sim/mock-seat-pty-sequence.ts +206 -0
  531. package/src/ux-sim/next-tui-seat-scenarios.ts +631 -0
  532. package/src/ux-sim/onboarding-first-run-device.ts +269 -0
  533. package/src/ux-sim/pty-key-modifiers-device.ts +85 -0
  534. package/src/ux-sim/subagent-tools-device.ts +81 -0
  535. package/src/ux-sim/task-orchestrator-surfaces-self-implement-pod-device.ts +250 -0
  536. package/src/ux-sim/tty-foreground-steal-child.ts +21 -0
  537. package/src/version/packed-revision.json +1 -1
  538. package/apps/pwa/out/_next/static/chunks/1165.bad13fc9151a7288.js +0 -1
  539. package/apps/pwa/out/_next/static/chunks/13.02a07436dec15f89.js +0 -32
  540. package/apps/pwa/out/_next/static/chunks/1540.af38731fa7c4a3e0.js +0 -41
  541. package/apps/pwa/out/_next/static/chunks/1850.f2b470ba5a471da0.js +0 -24
  542. package/apps/pwa/out/_next/static/chunks/193.62da94cd0b88323b.js +0 -74
  543. package/apps/pwa/out/_next/static/chunks/1975.260f6d249fac5f7c.js +0 -1
  544. package/apps/pwa/out/_next/static/chunks/1982-67cd8dfe8682325f.js +0 -1
  545. package/apps/pwa/out/_next/static/chunks/1993-c0007b7ad0c0ef41.js +0 -1
  546. package/apps/pwa/out/_next/static/chunks/1999-bb415351c8a2846c.js +0 -1
  547. package/apps/pwa/out/_next/static/chunks/1c735de4.f993a30bbd3c57c4.js +0 -1
  548. package/apps/pwa/out/_next/static/chunks/1dc5a567.9b092bfae3d7099b.js +0 -1
  549. package/apps/pwa/out/_next/static/chunks/2085.8f950b4bda1cbbc7.js +0 -1
  550. package/apps/pwa/out/_next/static/chunks/2159-6179a961376956b9.js +0 -1
  551. package/apps/pwa/out/_next/static/chunks/216.b5c2a421aa1d28a5.js +0 -1
  552. package/apps/pwa/out/_next/static/chunks/2251.49fbe369f74c372c.js +0 -148
  553. package/apps/pwa/out/_next/static/chunks/2286-2939577360d3dcc0.js +0 -1
  554. package/apps/pwa/out/_next/static/chunks/2625.5d870aa999f33db1.js +0 -34
  555. package/apps/pwa/out/_next/static/chunks/2668.34d21539e62bf111.js +0 -77
  556. package/apps/pwa/out/_next/static/chunks/2833-0fe47af99ed13c29.js +0 -1
  557. package/apps/pwa/out/_next/static/chunks/2930.d0edb4f108787ef7.js +0 -1
  558. package/apps/pwa/out/_next/static/chunks/2973.77318e7d85f59477.js +0 -62
  559. package/apps/pwa/out/_next/static/chunks/3123.2bee9ba15d320bd2.js +0 -90
  560. package/apps/pwa/out/_next/static/chunks/3162-6cf652bf7124d8cf.js +0 -1
  561. package/apps/pwa/out/_next/static/chunks/3577-7340009f7007a795.js +0 -1
  562. package/apps/pwa/out/_next/static/chunks/3618.f514792d6c59d7fd.js +0 -36
  563. package/apps/pwa/out/_next/static/chunks/3669.343f9119aa276001.js +0 -1
  564. package/apps/pwa/out/_next/static/chunks/3736.c2efad489604cc3b.js +0 -79
  565. package/apps/pwa/out/_next/static/chunks/3817.f9aeab2bb6675d73.js +0 -1
  566. package/apps/pwa/out/_next/static/chunks/3f7c4ee5.3dde54f01a816613.js +0 -122
  567. package/apps/pwa/out/_next/static/chunks/4182-0b9b1251c29cc0cf.js +0 -1
  568. package/apps/pwa/out/_next/static/chunks/4441-875b97f5821ed58a.js +0 -1
  569. package/apps/pwa/out/_next/static/chunks/4582.bd68683c076649e3.js +0 -286
  570. package/apps/pwa/out/_next/static/chunks/4605-6e623f55aec77422.js +0 -1
  571. package/apps/pwa/out/_next/static/chunks/4607.5cc27468628eb4bf.js +0 -1
  572. package/apps/pwa/out/_next/static/chunks/4627.f07508b3936fd6c0.js +0 -24
  573. package/apps/pwa/out/_next/static/chunks/4747-c22262c093e46807.js +0 -1
  574. package/apps/pwa/out/_next/static/chunks/4775-178215aed0daba61.js +0 -1
  575. package/apps/pwa/out/_next/static/chunks/4815-6ffb8c3c991cc45d.js +0 -1
  576. package/apps/pwa/out/_next/static/chunks/4834-beca8b47ad29a898.js +0 -1
  577. package/apps/pwa/out/_next/static/chunks/5023-fb4802b6d2492b02.js +0 -1
  578. package/apps/pwa/out/_next/static/chunks/5154.a118f3957ed14e36.js +0 -1
  579. package/apps/pwa/out/_next/static/chunks/5210-a2e0015e3d4d5d9c.js +0 -1
  580. package/apps/pwa/out/_next/static/chunks/5356.84ac712cc15928bf.js +0 -1
  581. package/apps/pwa/out/_next/static/chunks/5401.22352141b6fd336e.js +0 -23
  582. package/apps/pwa/out/_next/static/chunks/5483-dd5d7697f6bdb106.js +0 -1
  583. package/apps/pwa/out/_next/static/chunks/5662.02eaa029af05ad46.js +0 -1
  584. package/apps/pwa/out/_next/static/chunks/5760.22456f433c6f42c0.js +0 -1
  585. package/apps/pwa/out/_next/static/chunks/5852.db1f7449f4f74612.js +0 -287
  586. package/apps/pwa/out/_next/static/chunks/5891-0f11a7d7362a9072.js +0 -1
  587. package/apps/pwa/out/_next/static/chunks/5943.264d14a44ca32513.js +0 -1
  588. package/apps/pwa/out/_next/static/chunks/604-1b3c39df083c02aa.js +0 -1
  589. package/apps/pwa/out/_next/static/chunks/6121-5f97072330738caf.js +0 -1
  590. package/apps/pwa/out/_next/static/chunks/6193.07d8ca5af4b09086.js +0 -1
  591. package/apps/pwa/out/_next/static/chunks/6203-b3fea3a60d69ff14.js +0 -1
  592. package/apps/pwa/out/_next/static/chunks/6286.d638fb5953e2e757.js +0 -8
  593. package/apps/pwa/out/_next/static/chunks/6301.ae0245f507e4395e.js +0 -1
  594. package/apps/pwa/out/_next/static/chunks/6673.fbbe5699f6ea5991.js +0 -27
  595. package/apps/pwa/out/_next/static/chunks/6777-f6d301efb5de828d.js +0 -1
  596. package/apps/pwa/out/_next/static/chunks/6786.423f24c88de034c7.js +0 -93
  597. package/apps/pwa/out/_next/static/chunks/6854-cef64a948c5e122d.js +0 -1
  598. package/apps/pwa/out/_next/static/chunks/6866-79aa5b4e47cac6aa.js +0 -1
  599. package/apps/pwa/out/_next/static/chunks/6b89c8bd.24df687a820500b3.js +0 -1
  600. package/apps/pwa/out/_next/static/chunks/7037-fe27f001db30d323.js +0 -1
  601. package/apps/pwa/out/_next/static/chunks/7080.2d826860534fd88e.js +0 -1
  602. package/apps/pwa/out/_next/static/chunks/7118.8731be28c3ebb14b.js +0 -1
  603. package/apps/pwa/out/_next/static/chunks/7196.44241bc1df3e26fe.js +0 -149
  604. package/apps/pwa/out/_next/static/chunks/7235.c7c4e6cb5c693c2d.js +0 -104
  605. package/apps/pwa/out/_next/static/chunks/7706-58bfb1546637f217.js +0 -1
  606. package/apps/pwa/out/_next/static/chunks/7839.5b91455338c9fd3f.js +0 -1
  607. package/apps/pwa/out/_next/static/chunks/7857-31f13ee96f4011aa.js +0 -1
  608. package/apps/pwa/out/_next/static/chunks/81.f74cb60312fe4001.js +0 -1
  609. package/apps/pwa/out/_next/static/chunks/8219.baa715d1deee80e2.js +0 -1
  610. package/apps/pwa/out/_next/static/chunks/8256.e3ac8421a71f82f4.js +0 -1
  611. package/apps/pwa/out/_next/static/chunks/8310-444a6a895c402f12.js +0 -1
  612. package/apps/pwa/out/_next/static/chunks/8423.f7dda8aca4fcaae5.js +0 -1
  613. package/apps/pwa/out/_next/static/chunks/8437-8d5492094b166cfa.js +0 -1
  614. package/apps/pwa/out/_next/static/chunks/8496.75649af8652c74f4.js +0 -226
  615. package/apps/pwa/out/_next/static/chunks/8576.65bb654b524f3614.js +0 -1
  616. package/apps/pwa/out/_next/static/chunks/8609.558ce2f8f9aea2be.js +0 -64
  617. package/apps/pwa/out/_next/static/chunks/8614.caec96cfb91f4ae7.js +0 -1
  618. package/apps/pwa/out/_next/static/chunks/8732.367f44a916202353.js +0 -1
  619. package/apps/pwa/out/_next/static/chunks/9141-7fd1f73a5400bdc2.js +0 -1
  620. package/apps/pwa/out/_next/static/chunks/921.c4267d0d69a65404.js +0 -1
  621. package/apps/pwa/out/_next/static/chunks/9261.3962c3321b047691.js +0 -115
  622. package/apps/pwa/out/_next/static/chunks/936-26efd1a0efdd44d3.js +0 -1
  623. package/apps/pwa/out/_next/static/chunks/9627-4b9efe616b27e2e2.js +0 -1
  624. package/apps/pwa/out/_next/static/chunks/967-2aa39b2d04b4c690.js +0 -1
  625. package/apps/pwa/out/_next/static/chunks/9734.40eb1e558c29ccea.js +0 -1
  626. package/apps/pwa/out/_next/static/chunks/9908.3aa54f7a586a73dc.js +0 -1
  627. package/apps/pwa/out/_next/static/chunks/9954-ca8d29752bdbb45a.js +0 -1
  628. package/apps/pwa/out/_next/static/chunks/9974-507fa67cb94066dd.js +0 -1
  629. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-ce9e00f7fb45506a.js +0 -1
  630. package/apps/pwa/out/_next/static/chunks/app/approvals/page-fa59d6d17daa3389.js +0 -1
  631. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-53f68bbe7bd4b774.js +0 -1
  632. package/apps/pwa/out/_next/static/chunks/app/board/page-1c500fbb9f4a7a04.js +0 -1
  633. package/apps/pwa/out/_next/static/chunks/app/botlab/page-99d72673aa5c307c.js +0 -1
  634. package/apps/pwa/out/_next/static/chunks/app/bots/page-d2d5adc1e9484c88.js +0 -1
  635. package/apps/pwa/out/_next/static/chunks/app/ceo/page-c607c5aae637f1cc.js +0 -1
  636. package/apps/pwa/out/_next/static/chunks/app/chat/page-fa8c23596d555c0f.js +0 -1
  637. package/apps/pwa/out/_next/static/chunks/app/consult/page-bdab8c5e855c8416.js +0 -1
  638. package/apps/pwa/out/_next/static/chunks/app/control/page-406b47745b53f269.js +0 -1
  639. package/apps/pwa/out/_next/static/chunks/app/decisions/page-a4276386b7051f50.js +0 -1
  640. package/apps/pwa/out/_next/static/chunks/app/design-check/page-8a26bab9ad375f25.js +0 -1
  641. package/apps/pwa/out/_next/static/chunks/app/editor/page-775f48aa1dc7a2d5.js +0 -1
  642. package/apps/pwa/out/_next/static/chunks/app/exec/page-1c4dd5f959d0c558.js +0 -1
  643. package/apps/pwa/out/_next/static/chunks/app/field/page-c48938a8377c9f70.js +0 -1
  644. package/apps/pwa/out/_next/static/chunks/app/healthz/route-ce9e00f7fb45506a.js +0 -1
  645. package/apps/pwa/out/_next/static/chunks/app/inside/page-c6e7905859425aa9.js +0 -1
  646. package/apps/pwa/out/_next/static/chunks/app/intake/page-c280f4252452e830.js +0 -1
  647. package/apps/pwa/out/_next/static/chunks/app/layout-cf8c57498f20970a.js +0 -1
  648. package/apps/pwa/out/_next/static/chunks/app/live/page-ca3a17caf409fc83.js +0 -1
  649. package/apps/pwa/out/_next/static/chunks/app/live-run/page-26e6c18a1a750cf6.js +0 -1
  650. package/apps/pwa/out/_next/static/chunks/app/loops/page-3abc872cc6aeee39.js +0 -1
  651. package/apps/pwa/out/_next/static/chunks/app/market/page-f7481b7b2174fe3d.js +0 -1
  652. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-1ae7ef8077680337.js +0 -1
  653. package/apps/pwa/out/_next/static/chunks/app/morning/page-47c5d4db587266bd.js +0 -1
  654. package/apps/pwa/out/_next/static/chunks/app/not-found-415f1e243c7ccb13.js +0 -1
  655. package/apps/pwa/out/_next/static/chunks/app/observatory/page-73f380f17b76f95c.js +0 -1
  656. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-2991073ad66ee2d9.js +0 -1
  657. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-1f5a60f70cb4dd0c.js +0 -1
  658. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-fbad60d1e358fb2c.js +0 -1
  659. package/apps/pwa/out/_next/static/chunks/app/outputs/page-bac7dee94e5eae4a.js +0 -1
  660. package/apps/pwa/out/_next/static/chunks/app/page-398047d6949e8ca5.js +0 -1
  661. package/apps/pwa/out/_next/static/chunks/app/reflection/page-2d33a2231540ca89.js +0 -1
  662. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-5bf1e6bf70bcb96c.js +0 -1
  663. package/apps/pwa/out/_next/static/chunks/app/sessions/page-ba59c19376a0917d.js +0 -1
  664. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-111f187139add30f.js +0 -1
  665. package/apps/pwa/out/_next/static/chunks/app/settings/page-acaae197d5be5779.js +0 -1
  666. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-0df20b0f546a0d7d.js +0 -1
  667. package/apps/pwa/out/_next/static/chunks/app/setup/layout-ce9e00f7fb45506a.js +0 -1
  668. package/apps/pwa/out/_next/static/chunks/app/setup/page-27e1202d24b8fe35.js +0 -1
  669. package/apps/pwa/out/_next/static/chunks/app/share/page-bda78c50a78363e5.js +0 -1
  670. package/apps/pwa/out/_next/static/chunks/app/showroom/page-da592691293d9c9f.js +0 -1
  671. package/apps/pwa/out/_next/static/chunks/app/tasks/page-f832994317a2e9f0.js +0 -1
  672. package/apps/pwa/out/_next/static/chunks/app/term/page-dc0a532f5b9196ec.js +0 -1
  673. package/apps/pwa/out/_next/static/chunks/app/today/page-cfccbbeae0473404.js +0 -1
  674. package/apps/pwa/out/_next/static/chunks/app/trace/page-527e2073af84c81b.js +0 -1
  675. package/apps/pwa/out/_next/static/chunks/app/vault/page-bac86e9112671357.js +0 -1
  676. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-6d59dff410e9d76a.js +0 -1
  677. package/apps/pwa/out/_next/static/chunks/app/workflows/page-53a61f8be09f02d2.js +0 -1
  678. package/apps/pwa/out/_next/static/chunks/app/workspace/page-db8f559e763c17f9.js +0 -1
  679. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-c02aa4cc66455093.js +0 -1
  680. package/apps/pwa/out/_next/static/chunks/framework-50e6acebc630849b.js +0 -1
  681. package/apps/pwa/out/_next/static/chunks/main-7a1ae342d5ed75e6.js +0 -1
  682. package/apps/pwa/out/_next/static/chunks/main-app-7ad7d505ba1f92b4.js +0 -1
  683. package/apps/pwa/out/_next/static/chunks/pages/_app-02edba75232cb235.js +0 -1
  684. package/apps/pwa/out/_next/static/chunks/pages/_error-97d6ebae3e8eee4a.js +0 -1
  685. package/apps/pwa/out/_next/static/chunks/webpack-e986adaa429163e8.js +0 -1
  686. /package/apps/pwa/out/_next/static/{T1mBQqmkwKDLGtyisDCOd → uC-N0emedeNOFuaBQFv-I}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6448],{14167:(e,t,r)=>{r.d(t,{L:()=>n});function n(e){let t=e.split("\n"),r=t[0];if(!r)return null;let n=/^\[elanous\/term\/([a-zA-Z]+)\] (.+)$/.exec(r);if(!n)return null;let a=n[1];if("terminalOutput"!==a&&"terminalExit"!==a&&"terminalInputActivity"!==a&&"terminalFrame"!==a)return null;let l=[];for(let e=1;e<t.length;e++){let r=t[e];if(/^<<elanous-term-end /.test(r))break;l.push(r)}try{let e=JSON.parse(l.join("\n"));if("string"!=typeof e.terminalId)return null;if("terminalOutput"===a){if("string"!=typeof e.data)return null;return{method:a,payload:{terminalId:e.terminalId,data:e.data}}}if("terminalExit"===a){if("number"!=typeof e.code)return null;return{method:a,payload:{terminalId:e.terminalId,code:e.code}}}if("terminalFrame"===a){if("string"!=typeof e.frame||"string"!=typeof e.instance||"number"!=typeof e.at||!Number.isFinite(e.at))return null;return{method:a,payload:{terminalId:e.terminalId,frame:e.frame,instance:e.instance,at:e.at}}}if("string"!=typeof e.peerId||"number"!=typeof e.timestamp||"number"!=typeof e.bytes)return null;return{method:a,payload:{terminalId:e.terminalId,peerId:e.peerId,timestamp:e.timestamp,bytes:e.bytes}}}catch(e){return null}}},43640:(e,t,r)=>{r.d(t,{Er:()=>a,cj:()=>c,dc:()=>s,yR:()=>o});let n=/^(oauth\.|harness\.decision|llm\.router)/;function a(e){let t=[],r=e=>{"string"==typeof e&&e.trim()&&!t.includes(e.trim())&&t.push(e.trim())};for(let t of e){var a;let e=null!=(a=t.data)?a:{};if(t.category.startsWith("oauth.")){for(let t of["from","to","name","account"])r(e[t]);if(Array.isArray(e.usage))for(let t of e.usage)r(null==t?void 0:t.name);continue}if(n.test(t.category))for(let t of(r(e.account),["what","why","reason"])){let n=e[t];if("string"==typeof n)for(let e of n.matchAll(/계정\s+([A-Za-z0-9][\w.-]*)/g))r(e[1])}}return t}function l(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function s(e){let t=new Map(e.map((e,t)=>[e,"account-".concat(t+1)])),r=e.length?RegExp("(^|[^\\w-])(".concat(e.map(l).sort((e,t)=>t.length-e.length).join("|"),")(?![\\w-])"),"g"):null,n=new Map;return(e,a)=>{let l=e.replace(/\b[a-z0-9-]+\.tail[0-9a-f]+\.ts\.net\b/gi,"tailnet-host").replace(/\bmsb\d+\b/gi,e=>(e=>{let t=e.toLowerCase();n.has(t)||n.set(t,"remote-".concat(n.size+1));let r=n.get(t);return e===e.toUpperCase()?r.toUpperCase():r})(e)).replace(/\bmbp\b/gi,e=>e===e.toUpperCase()?"LOCAL":"local").replace(/\/Users\/[^/\s"']+/g,"~").replace(/(크레딧|credits?|💳)(\s*[:=]?\s*)[\d][\d,.]*/gi,"$1$2•••").replace(/[\d][\d,.]*(\s*)(크레딧|credits?)/gi,"•••$1$2").replace(/\$\s?[\d][\d,.]*/g,"$•••").replace(/(잔량?|remaining|left)(\s*[:=]?\s*)(?:[A-Za-z0-9][\w.-]*\s+)?\d+(?:\.\d+)?\s?%/gi,"$1$2•••");return a&&r&&(l=l.replace(r,(e,r,n)=>{var a;return"".concat(r).concat(null!=(a=t.get(n))?a:"account")})),l}}function i(e,t){if("string"==typeof e)return t(e);if(Array.isArray(e))return e.map(e=>i(e,t));if(e&&"object"==typeof e){let r={};for(let[n,a]of Object.entries(e))"apiEquivalentUsd"===n||"usd"===n||/credit(s|Balance)?$/i.test(n)||(r[n]=i(a,t));return r}return e}function o(e){let t=s(a(e));return e.map(e=>{let r=n.test(e.category);return{...e,event:t(e.event,!1),data:e.data?i(e.data,e=>t(e,r)):e.data}})}function c(e,t){let r=s(t);return i(e,e=>r(e,!0))}},48740:(e,t,r)=>{r.d(t,{KZ:()=>o,Q6:()=>i,bu:()=>s});let n={ctrl:!1,alt:!1};function a(e){if(!e.ctrl&&!e.alt)return null;let t=0;return e.alt&&(t+=2),e.ctrl&&(t+=4),1+t}let l={up:"A",down:"B",right:"C",left:"D"};function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n;switch(e){case"esc":return t.alt?"\x1b\x1b":"\x1b";case"tab":return t.alt?"\x1b ":" ";case"shift-enter":return"\x1b\r";case"pageup":case"pagedown":{let r="pageup"===e?5:6,n=a(t);return null===n?"\x1b[".concat(r,"~"):"\x1b[".concat(r,";").concat(n,"~")}case"up":case"down":case"left":case"right":{let r=l[e],n=a(t);return null===n?"\x1b[".concat(r):"\x1b[1;".concat(n).concat(r)}}}function i(e){return 1===e.length}function o(e,t){if(!i(e))return e;let r=e.toUpperCase().charCodeAt(0),n=t.ctrl&&r>=64&&r<=95?String.fromCharCode(r-64):e;return t.alt?"\x1b".concat(n):n}},60549:(e,t,r)=>{r.d(t,{BX:()=>l,Yf:()=>o,dI:()=>a,fb:()=>i,kI:()=>s});var n=r(48740);function a(e){return"alternate"===e.bufferType?{kind:"send",data:"\x02["+(0,n.bu)("pageup")}:{kind:"scroll-pages",pages:-1}}function l(e){return 0===e.lines?{kind:"none"}:"alternate"===e.bufferType?{kind:"wheel",steps:e.lines}:{kind:"scrollback",lines:e.lines}}function s(e){if(!(e.cellHeight>0))return 0;let t=-Math.trunc((e.currentY-e.startY)/e.cellHeight)-e.sentSteps;return 0===t?0:t}function i(e,t,r,n){for(let a=0;a<Math.abs(t);a++)e.dispatchEvent(new WheelEvent("wheel",{deltaY:100*Math.sign(t),deltaMode:0,clientX:r,clientY:n,bubbles:!0,cancelable:!0}))}function o(e){if(!(e.cellHeight>0))return 0;let t=-Math.trunc((e.currentY-e.startY)/e.cellHeight)-(e.currentViewportY-e.startViewportY);return 0===t?0:t}},76448:(e,t,r)=>{r.d(t,{zV:()=>ez});var n=r(59473),a=r(24725),l=r(19250),s=r(84227);let i=(0,s.default)(()=>Promise.all([r.e(9858),r.e(2217),r.e(3727),r.e(2986)]).then(r.bind(r,22986)).then(e=>e.XtermView),{loadableGenerated:{webpack:()=>[22986]},ssr:!1,loading:e=>{let{error:t,retry:r}=e;return(0,n.jsx)("div",{className:"flex h-full min-h-0 w-full items-center justify-center bg-[#0d0c08] text-sm text-[#e9e3d4]",role:t?"alert":"status",children:t?(0,n.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,n.jsx)("span",{children:"터미널을 불러오지 못했습니다."}),(0,n.jsx)("button",{type:"button",className:"rounded border border-[#e9e3d4]/50 px-3 py-1 hover:bg-white/10",onClick:r,children:"다시 시도"})]}):"터미널 연결 중…"})}});function o(e){return(0,n.jsx)(i,{...e})}let c=(0,s.default)(()=>Promise.all([r.e(9858),r.e(2217),r.e(3727),r.e(727)]).then(r.bind(r,50727)).then(e=>e.PtyLiveView),{loadableGenerated:{webpack:()=>[50727]},ssr:!1,loading:e=>{let{error:t,retry:r}=e;return(0,n.jsx)("div",{className:"flex h-full min-h-0 w-full items-center justify-center bg-[#0d0c08] text-sm text-[#e9e3d4]",role:t?"alert":"status",children:t?(0,n.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,n.jsx)("span",{children:"터미널을 불러오지 못했습니다."}),(0,n.jsx)("button",{type:"button",className:"rounded border border-[#e9e3d4]/50 px-3 py-1 hover:bg-white/10",onClick:r,children:"다시 시도"})]}):"터미널 연결 중…"})}});function d(e){return(0,n.jsx)(c,{...e})}var u=r(43640);let m=e=>"string"==typeof e&&e.trim()?e:null,p={codex:"codex",claude:"claude",gemini:"gemini",grok:"grok",self:"elanous",mission:"elanous 미션",shell:"셸",pty:"PTY"},h={PLAN:"text-sky-400",ROUTE:"text-violet-400",VERIFY:"text-amber-400",HEAL:"text-emerald-400",ESCALATE:"text-rose-400",SHIP:"text-green-400"};function b(e){let{rows:t,client:r,initial:l,onClose:s,stage:i=!1}=e,[o,c]=(0,a.useState)(l);(0,a.useEffect)(()=>{0===o.length&&t.length&&c(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,r=e.filter(e=>e.alive),n=r.filter(e=>e.kind&&["codex","claude","self","mission","gemini","grok"].includes(e.kind)),a=r.filter(e=>!n.includes(e));return[...n,...a].slice(0,t).map(e=>e.id)}(t))},[t,o.length]),(0,a.useEffect)(()=>{let e=new URLSearchParams(window.location.search);o.length?e.set("wall",o.join(",")):e.delete("wall"),window.history.replaceState(null,"","".concat(window.location.pathname,"?").concat(e.toString()))},[o]);let[b,f]=(0,a.useState)([]);(0,a.useEffect)(()=>{let e=!0,t=async()=>{try{var t;let n=await r.fetchJson("/v1/logs?category=harness.decision&store=@active&since=6h&limit=300");e&&f(null!=(t=n.logs)?t:[])}catch(e){}};t();let n=window.setInterval(()=>{document.hidden||t()},5e3);return()=>{e=!1,window.clearInterval(n)}},[r]);let[x,g]=(0,a.useState)(!1);(0,a.useEffect)(()=>{"public"===new URLSearchParams(window.location.search).get("capture")&&g(!0)},[]);let v=(0,a.useMemo)(()=>x?(0,u.yR)(b.map(e=>{var t;return{ts:e.ts,category:"harness.decision",event:"decision",data:null!=(t=e.data)?t:null}})):b,[b,x]),w=(0,a.useMemo)(()=>o.map(e=>t.find(t=>t.id===e)).filter(e=>!!e),[o,t]),y=e=>c(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e].slice(-3));return(0,n.jsxs)("section",{className:"flex h-full min-h-0 flex-col bg-[#0b0a07]","aria-label":"터미널 나란히","data-pty-wall":!0,children:[(0,n.jsxs)("header",{className:"flex flex-wrap items-center gap-2 border-b border-zinc-700 px-3 py-2 text-xs text-zinc-200",children:[(0,n.jsxs)("span",{className:"font-medium",children:["나란히 \xb7 ",w.length,"/3"]}),t.filter(e=>e.alive).slice(0,14).map(e=>{var t,r,a;return(0,n.jsxs)("button",{type:"button",onClick:()=>y(e.id),"aria-pressed":o.includes(e.id),className:"rounded-full border px-2 py-0.5 font-mono ".concat(o.includes(e.id)?"border-emerald-500 bg-emerald-900/40 text-emerald-200":"border-zinc-700 text-zinc-400 hover:bg-zinc-800"),"data-pty-wall-chip":e.id,children:[null!=(r=e.kind)?r:"pty"," \xb7 ",e.nickname||e.id]},"".concat(null!=(a=null==(t=e.sourceRoot)?void 0:t.dbPath)?a:"",":").concat(e.id))}),(0,n.jsx)("button",{type:"button",onClick:s,className:"ml-auto rounded px-2 py-1 text-zinc-400 hover:bg-zinc-800","aria-label":"나란히 닫기",children:"닫기"})]}),0===w.length?(0,n.jsx)("p",{className:"p-6 text-sm text-zinc-400",children:"위에서 PTY 를 1~3개 고르세요 — 살아 있는 에이전트 PTY 가 없으면 비어 있습니다."}):(0,n.jsx)("div",{className:"grid min-h-0 flex-1 gap-1 p-1 ".concat(1===w.length?"grid-cols-1":2===w.length?"grid-cols-2":"grid-cols-3"),children:w.map(e=>{var t,a;let l=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3;return t.filter(t=>{var r;let n=null!=(r=t.data)?r:{};return!!e.runId&&n.runId===e.runId||n.target===e.id||n.shard===e.id}).sort((e,t)=>e.ts<t.ts?1:-1).slice(0,r).map(e=>{var t,r,n,a,l;let s=null!=(t=e.data)?t:{};return{ts:e.ts,kind:(null!=(r=m(s.kind))?r:"PLAN").toUpperCase(),what:null!=(n=m(s.what))?n:"(판단)",why:null!=(l=null!=(a=m(s.reason))?a:m(s.why))?l:m(s.purpose),target:m(s.target)}})}(e,v,2);return(0,n.jsxs)("div",{className:"flex min-h-0 flex-col overflow-hidden rounded border border-zinc-800","data-pty-wall-pane":e.id,children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 bg-zinc-900 px-2 py-1 text-[11px]",children:[(0,n.jsx)("span",{className:"rounded bg-violet-900/50 px-1.5 py-0.5 text-violet-200","data-pty-agent":!0,children:function(e){let t=e.externalToolName&&p[e.externalToolName]||e.kind&&p[e.kind]||e.externalToolName||e.kind||"PTY";return"에이전트: ".concat(t).concat(e.runId?" \xb7 런 ".concat(e.runId.replace(/^run-/,"").slice(0,8)):"")}(e)}),(0,n.jsx)("span",{className:"truncate font-mono text-zinc-500",children:e.id})]}),(0,n.jsx)("div",{className:"min-h-[38px] border-b border-zinc-800 bg-zinc-950/80 px-2 py-1 ".concat(i?"text-sm":"text-[11px]"),"aria-label":"의도 띠","data-pty-intent":!0,children:0===l.length?(0,n.jsx)("span",{className:"text-zinc-500",children:"이 PTY 를 모는 판단 신호 없음(사람이 모는 PTY 거나 MAX 계측 꺼짐)"}):l.map(e=>{var t;return(0,n.jsxs)("div",{className:"truncate",children:[(0,n.jsx)("span",{className:"font-mono ".concat(null!=(t=h[e.kind])?t:"text-zinc-300"),children:e.kind})," ",(0,n.jsx)("span",{className:"text-zinc-100",children:e.what}),e.why&&(0,n.jsxs)("span",{className:"text-zinc-400",children:[" \xb7 왜: ",e.why]}),e.target&&(0,n.jsxs)("span",{className:"text-zinc-500",children:[" → ",e.target]})]},"".concat(e.ts,"-").concat(e.what))})}),(0,n.jsx)("div",{className:"min-h-0 flex-1",children:(0,n.jsx)(d,{terminal:e,client:r,onClose:()=>y(e.id)})})]},"".concat(null!=(a=null==(t=e.sourceRoot)?void 0:t.dbPath)?a:"",":").concat(e.id))})})]})}var f=r(4245);let x={connected:{label:"연결됨",color:"bg-emerald-500"},connecting:{label:"연결 중",color:"bg-amber-500"},disconnected:{label:"끊김",color:"bg-rose-500"}};function g(e){let{activeId:t,tabs:r,status:l,onSwitch:s,onAdd:i,actions:o,children:c}=e,[d,u]=(0,a.useState)(!1),[m,p]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{if(!m&&!d)return;let e=e=>{"Escape"===e.key&&(u(!1),p(!1))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[d,m]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"relative flex h-10 max-h-10 shrink-0 items-center justify-between border-b border-zinc-800 bg-background px-2","aria-label":"간결한 터미널 상단바",children:[(0,n.jsxs)("div",{className:"relative min-w-0 max-w-[calc(50%_-_12px)] flex-1",children:[(0,n.jsxs)("button",{type:"button",className:"max-w-full truncate rounded px-2 py-1 text-left text-xs","aria-label":"터미널 고르기","aria-expanded":d,onClick:()=>{p(!1),u(e=>!e)},children:[null!=t?t:"터미널 준비 중"," ▾"]}),d&&(0,n.jsxs)("div",{className:"absolute left-0 top-full z-40 max-h-[60vh] min-w-48 overflow-auto rounded border border-zinc-700 bg-background p-1 shadow-xl",role:"menu","aria-label":"열린 터미널",children:[r.map(e=>(0,n.jsx)("button",{type:"button",role:"menuitem",className:"block w-full truncate rounded px-2 py-2 text-left text-sm hover:bg-accent","aria-current":e===t?"true":void 0,onClick:()=>{s(e),u(!1)},children:e},e)),(0,n.jsx)("button",{type:"button",role:"menuitem",className:"block w-full rounded px-2 py-2 text-left text-sm hover:bg-accent",onClick:()=>{i(),u(!1)},children:"+ 새 터미널"})]})]}),(0,n.jsx)("span",{className:"absolute left-1/2 h-2 w-2 -translate-x-1/2 rounded-full ".concat(x[l].color),title:x[l].label,"aria-label":x[l].label,role:"status"}),(0,n.jsx)("button",{type:"button",className:"shrink-0 rounded px-2 py-1 text-lg leading-none","aria-label":"터미널 더보기","aria-expanded":m,onClick:()=>{u(!1),p(e=>!e)},children:"⋯"})]}),m&&(0,n.jsx)("button",{type:"button",className:"fixed inset-0 z-40 bg-black/50","aria-label":"터미널 메뉴 닫기",onClick:()=>p(!1)}),(0,n.jsxs)("section",{className:m?"fixed inset-x-0 bottom-0 z-50 max-h-[75dvh] overflow-y-auto rounded-t-xl border-t border-zinc-700 bg-background p-4 shadow-2xl":"hidden","aria-label":"터미널 더보기 시트","aria-hidden":!m,children:[(0,n.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,n.jsx)("span",{className:"text-sm font-medium",children:"터미널 동작"}),(0,n.jsx)("button",{type:"button",onClick:()=>p(!1),"aria-label":"터미널 메뉴 닫기",children:"닫기"})]}),(0,n.jsx)("div",{className:"flex flex-wrap gap-2 border-b border-zinc-800 pb-3",children:c}),(0,n.jsx)("div",{className:"pt-3",children:o})]})]})}var v=r(32059),w=r(12711),y=r(54111),k=r(14167);let j=/\x1b(?:\][^\x07\x1b]*(?:\x07|\x1b\\)|\[[0-?]*[ -/]*[@-~]|[@-Z\\-_])/g,N=new Map;function S(e){let{sessionId:t}=e,{client:r,setSessionId:l}=(0,w.Q)(),[s,i]=(0,a.useState)(N),[o,c]=(0,a.useState)(null);(0,a.useEffect)(()=>{let e=r.connectAcp({...t?{sessionId:t}:{},onSession:e=>{e&&e!==t&&l(e)}});(0,y.cY)("tui-mirror.attach",{sessionId:t});let n=e.on("sessionUpdate",e=>{var t,r;let n=(null!=(r=e.params)?r:{}).update;if(!n||"agent_thought_chunk"!==n.sessionUpdate)return;let a=(null==(t=n.content)?void 0:t.type)==="text"?n.content.text:null;a&&i(e=>{let t=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),n=(0,k.L)(t);if(!n||"terminalFrame"!==n.method)return e;let{terminalId:a,frame:l,instance:s,at:i}=n.payload,o="".concat(s).concat("\0").concat(a),c=e.get(o);if(c&&i<c.at)return e;let d=new Map(e);return d.set(o,{key:o,surfaceId:a,frame:l,instance:s,at:i,receivedAt:r}),d}(e,a);return t!==e&&(0,y.cY)("tui-mirror.frame",{bytes:a.length}),t})}),a=setInterval(()=>{i(e=>(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:15e3,n=!1;for(let a of e.values())if(t-a.receivedAt>r){n=!0;break}if(!n)return e;let a=new Map;for(let[n,l]of e)t-l.receivedAt<=r&&a.set(n,l);return a})(e))},5e3);return()=>{clearInterval(a);try{n()}catch(e){}try{e.close()}catch(e){}}},[r,t,l]);let d=(0,a.useMemo)(()=>[...s.values()].sort((e,t)=>t.receivedAt-e.receivedAt||e.key.localeCompare(t.key)),[s]);(0,a.useEffect)(()=>{var e,t;o&&s.has(o)||c(null!=(t=null==(e=d[0])?void 0:e.key)?t:null)},[d,o,s]);let u=o?s.get(o):void 0;return(0,n.jsxs)("div",{className:"flex h-full min-h-0 flex-col bg-zinc-950 text-zinc-100",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-b border-zinc-800 px-3 py-2 text-xs text-zinc-400",children:[(0,n.jsx)("span",{className:"font-semibold text-zinc-200",children:"\uD83D\uDDA5 TUI 관측"}),(0,n.jsx)("span",{"aria-live":"polite",children:0===d.length?"자기신고 화면 대기 중…":"".concat(d.length,"개 화면 \xb7 라이브 미러")}),d.length>0&&(0,n.jsx)("select",{"aria-label":"관측할 TUI 화면 선택",className:"ml-auto rounded border border-zinc-700 bg-zinc-900 px-2 py-1 text-zinc-100",value:null!=o?o:"",onChange:e=>c(e.target.value),children:d.map(e=>(0,n.jsxs)("option",{value:e.key,children:[e.surfaceId," \xb7 ",e.instance]},e.key))})]}),(0,n.jsx)("pre",{className:"m-0 min-h-0 flex-1 overflow-auto whitespace-pre p-3 font-mono text-xs leading-snug text-zinc-100","aria-live":"polite","aria-label":"선택한 TUI 화면의 라이브 렌더 프레임",children:u?u.frame.replace(j,""):"자기신고하는 elanous 화면이 아직 없습니다. 대시보드(elanous)를 실행하면 여기 라이브로 미러링됩니다."})]})}var C=r(95231),I=r(36963),T=r(63741),E=r(56282),A=r(87161),Y=r(62993);function R(e){let{onFrameUploaded:t}=e,{config:r,client:l,sessionId:s}=(0,w.Q)(),i=(0,a.useRef)(null);(0,a.useEffect)(()=>()=>{try{var e;null==(e=i.current)||e.close()}catch(e){}i.current=null},[]);let o=(0,a.useCallback)(async e=>{if(t){try{t(e)}catch(e){}return}if(s){i.current||(i.current=l.connectAcp({sessionId:s}));try{var r;await i.current.send("terminal/camera/frame/notify",{sessionId:s,attachmentId:e.id,ts:null!=(r=e.createdAt)?r:Date.now()})}catch(e){(0,y.cY)("webterm.live-cam.notify-failed",{reason:e instanceof Error?e.message:String(e)})}}},[l,s,t]),c=function(e){var t,r,n;let l=null!=(t=e.intervalMs)?t:1e3,s=null!=(r=e.jpegQuality)?r:.85,i=null!=(n=e.maxDimension)?n:1280,[o,c]=(0,a.useState)({status:"idle",framesUploaded:0,lastAttachmentId:null,error:null}),d=(0,a.useRef)(null),u=(0,a.useRef)(null),m=(0,a.useRef)(null),p=(0,a.useRef)(null),h=(0,a.useRef)(!1),b=(0,a.useRef)(e.onFrameUploaded);b.current=e.onFrameUploaded;let f=(0,a.useRef)({baseUrl:e.baseUrl,token:e.token});f.current={baseUrl:e.baseUrl,token:e.token};let x=(0,a.useCallback)(()=>{null!==p.current&&(clearInterval(p.current),p.current=null);let e=d.current;if(e){for(let t of e.getTracks())try{t.stop()}catch(e){}d.current=null}if(u.current){try{u.current.pause()}catch(e){}u.current.srcObject=null,u.current=null}m.current=null,h.current=!1},[]),g=(0,a.useCallback)(async()=>{if(h.current)return void(0,y.cY)("webterm.live-cam.frame-dropped",{reason:"in-flight"});let e=u.current;if(!e||0===e.videoWidth||0===e.videoHeight)return void(0,y.cY)("webterm.live-cam.frame-skipped",{reason:"video-not-ready"});h.current=!0;try{let r=function(e,t,r){if(e<=r&&t<=r)return{width:e,height:t};let n=e/t;return e>=t?{width:r,height:Math.round(r/n)}:{width:Math.round(r*n),height:r}}(e.videoWidth,e.videoHeight,i),n=m.current;n&&n.width===r.width&&n.height===r.height||(m.current=n=function(e,t){let r=document.createElement("canvas");return r.width=e,r.height=t,r}(r.width,r.height));let a=n.getContext("2d");if(!a)return void(0,y.cY)("webterm.live-cam.no-ctx");a.drawImage(e,0,0,r.width,r.height);let l=await new Promise(e=>{n.toBlob(t=>e(t),"image/jpeg",s)});if(!l)return void(0,y.cY)("webterm.live-cam.toBlob-null");let o="live-frame-".concat(Date.now(),".jpg"),d=await (0,Y.v)({baseUrl:f.current.baseUrl,token:f.current.token,file:l,filename:o});if(!d.ok){c(e=>({...e,error:d.reason})),(0,y.cY)("webterm.live-cam.upload-failed",{reason:d.reason});return}c(e=>({...e,framesUploaded:e.framesUploaded+1,lastAttachmentId:d.meta.id,error:null}));try{var t;null==(t=b.current)||t.call(b,d.meta)}catch(e){(0,y.cY)("webterm.live-cam.onFrameUploaded-throw",{reason:e instanceof Error?e.message:String(e)})}}catch(t){let e=t instanceof Error?t.message:String(t);c(t=>({...t,error:e})),(0,y.cY)("webterm.live-cam.capture-error",{reason:e})}finally{h.current=!1}},[s,i]),v=(0,a.useCallback)(async()=>{var e;let t;if("undefined"==typeof navigator||!(null==(e=navigator.mediaDevices)?void 0:e.getUserMedia))return void c(e=>({...e,status:"unsupported",error:"getUserMedia not available"}));if(!f.current.baseUrl)return void c(e=>({...e,status:"error",error:"daemon baseUrl not configured"}));if(d.current)return;c(e=>({...e,status:"requesting",error:null}));try{t=await navigator.mediaDevices.getUserMedia({video:{facingMode:{ideal:"environment"}}})}catch(r){let e=r instanceof Error?r.message:String(r),t=e.includes("Permission")||e.includes("NotAllowed");c(r=>({...r,status:t?"denied":"error",error:e})),(0,y.cY)("webterm.live-cam.getUserMedia-failed",{reason:e,denied:t});return}d.current=t;let r=document.createElement("video");r.srcObject=t,r.muted=!0,r.playsInline=!0,u.current=r;try{await r.play()}catch(e){(0,y.cY)("webterm.live-cam.video-play-failed",{reason:e instanceof Error?e.message:String(e)})}c(e=>({...e,status:"streaming",framesUploaded:0,error:null})),null!==p.current&&clearInterval(p.current),p.current=setInterval(()=>{g()},l),(0,y.cY)("webterm.live-cam.started",{intervalMs:l})},[g,l]),w=(0,a.useCallback)(()=>{x(),c({status:"idle",framesUploaded:0,lastAttachmentId:null,error:null}),(0,y.cY)("webterm.live-cam.stopped")},[x]);return(0,a.useEffect)(()=>()=>{x()},[x]),{...o,start:v,stop:w,isRunning:"streaming"===o.status}}({baseUrl:r.baseUrl,...r.token?{token:r.token}:{},onFrameUploaded:o});return"unsupported"!==c.status&&r.baseUrl?"denied"===c.status?(0,n.jsx)("button",{type:"button",disabled:!0,className:"rounded border border-rose-300 bg-rose-50 px-2 py-0.5 text-[11px] text-rose-700 dark:border-rose-800 dark:bg-rose-950 dark:text-rose-200",title:"Camera permission denied. Enable in iOS Settings → Safari → Camera, then reload.","data-testid":"live-camera-denied",children:"Camera denied"}):c.isRunning?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",onClick:()=>c.stop(),className:"rounded border border-rose-300 bg-rose-50 px-2 py-0.5 text-rose-700 dark:border-rose-800 dark:bg-rose-950 dark:text-rose-200 hover:bg-rose-100 dark:hover:bg-rose-900",title:"Stop live camera","data-testid":"live-camera-stop",children:"■ Stop"}),(0,n.jsxs)("span",{className:"rounded border border-border bg-card px-1.5 py-0.5 font-mono text-[10px] text-muted-foreground","data-testid":"live-camera-stats","aria-live":"polite",children:[c.framesUploaded,"f",c.error?(0,n.jsx)("span",{className:"ml-1 text-rose-500",children:"err"}):null]})]}):(0,n.jsx)("button",{type:"button",disabled:"requesting"===c.status,onClick:()=>{c.start()},className:"rounded border px-2 py-0.5 hover:bg-accent disabled:opacity-50",title:"Start live camera — uploads a 1Hz frame stream so the agent can see what you point at","data-testid":"live-camera-start",children:"requesting"===c.status?"Requesting…":"\uD83D\uDCF9 Live"}):null}function z(e){let{terminalId:t,onClear:r,onRecordingChange:l,onAttached:s,voice:i,variant:o="default"}=e,{client:c,sessionId:d,config:u}=(0,w.Q)(),[m,p]=(0,a.useState)(null),[h,b]=(0,a.useState)(null),[f,x]=(0,a.useState)(!1),[g,v]=(0,a.useState)(null);(0,a.useEffect)(()=>{null==l||l(null!==m)},[m,l]);let k=(0,a.useRef)(null);(0,a.useEffect)(()=>()=>{try{var e;null==(e=k.current)||e.close()}catch(e){}k.current=null},[]),(0,a.useEffect)(()=>{if(!d)return;k.current||(k.current=c.connectAcp({sessionId:d}));let e=k.current,r=!1;return(async()=>{try{var n;let a=await e.send("terminal/record/list",{sessionId:d});if(r)return;let l=null==a||null==(n=a.recordings)?void 0:n.find(e=>e.terminalId===t);l?p({recorderId:l.recorderId,startedAt:l.startedAt}):p(null),b(null),v(null)}catch(e){(0,y.cY)("webterm.controls.list-error",{reason:String(e)})}})(),()=>{r=!0}},[c,d,t]);let j=(0,a.useCallback)(async()=>{if(!d)return void v("session 미설정 — daemon 연결을 먼저 확인하세요");k.current||(k.current=c.connectAcp({sessionId:d}));let e=k.current;x(!0),v(null),b(null);try{var r,n;let a=await e.send("terminal/record/start",{sessionId:d,terminalId:t});(null==a?void 0:a.started)&&a.recorderId?((0,y.cY)("webterm.controls.record.started",{recorderId:a.recorderId,terminalId:t}),p({recorderId:a.recorderId,startedAt:null!=(r=a.startedAt)?r:Date.now()})):v(null!=(n=null==a?void 0:a.reason)?n:"start failed")}catch(e){v(String(e instanceof Error?e.message:e))}finally{x(!1)}},[c,d,t]),N=(0,a.useCallback)(async()=>{var e,r,n,a;if(!d||!m)return;let l=null!=(e=k.current)?e:c.connectAcp({sessionId:d});k.current=l,x(!0),v(null);try{let e=await l.send("terminal/record/stop",{sessionId:d,terminalId:t});(null==e?void 0:e.stopped)&&e.recorderId&&e.downloadUrl?((0,y.cY)("webterm.controls.record.stopped",{recorderId:e.recorderId,frameCount:e.frameCount,elapsedSec:e.elapsedSec}),b({recorderId:e.recorderId,downloadUrl:e.downloadUrl,frameCount:null!=(r=e.frameCount)?r:0,elapsedSec:null!=(n=e.elapsedSec)?n:0}),p(null)):v(null!=(a=null==e?void 0:e.reason)?a:"stop failed")}catch(e){v(String(e instanceof Error?e.message:e))}finally{x(!1)}},[m,c,d,t]);return(0,n.jsxs)("div",{className:"sheet"===o?"flex flex-wrap items-center gap-2 text-xs":"flex flex-wrap items-center gap-2 border-b px-2 py-1 text-xs",children:[(0,n.jsx)("button",{type:"button",className:"rounded border px-2 py-0.5 hover:bg-accent",onClick:()=>{(0,y.cY)("webterm.controls.clear"),r()},children:"clear"}),(0,n.jsx)(E.T,{onAttached:s?e=>s([e]):void 0}),(0,n.jsx)(A.u,{onAttached:s}),(0,n.jsx)(R,{}),i&&(0,n.jsxs)("button",{type:"button",onClick:i.onToggle,disabled:i.disabled,title:i.disabled?"마이크 사용 불가 (insecure context 등)":"".concat(i.phaseLabel," \xb7 xterm 으로 typing"),"data-elanous-action":"webterm-voice-toggle-controls","aria-pressed":i.active,className:(0,T.cn)("inline-flex items-center gap-1 rounded border px-2 py-0.5",i.active?"border-rose-300 bg-rose-100 text-rose-800 dark:border-rose-700 dark:bg-rose-950/40 dark:text-rose-100":"hover:bg-accent",i.disabled&&"cursor-not-allowed opacity-50"),children:[(0,n.jsx)("span",{className:(0,T.cn)("h-1.5 w-1.5 rounded-full",i.dotColor,("listening"===i.phase||"speaking"===i.phase)&&"animate-pulse"),"aria-hidden":"true"}),i.active?(0,n.jsx)(C.A,{className:"h-3.5 w-3.5"}):(0,n.jsx)(I.A,{className:"h-3.5 w-3.5"}),(0,n.jsx)("span",{children:"voice→stdin"})]}),!m&&!h&&(0,n.jsx)("button",{type:"button",disabled:f,className:"rounded border px-2 py-0.5 ".concat(f?"opacity-50":"hover:bg-accent"," text-rose-600 dark:text-rose-400"),onClick:()=>void j(),title:"start asciicast recording",children:"● record"}),m&&(0,n.jsx)("button",{type:"button",disabled:f,className:"rounded border px-2 py-0.5 ".concat(f?"opacity-50":"hover:bg-accent"," bg-rose-600 text-white animate-pulse"),onClick:()=>void N(),title:"stop + save .cast",children:"■ stop"}),h&&(0,n.jsx)("a",{href:(e=>{var t;if(!e)return"";let r=null!=(t=u.baseUrl)?t:"",n=e.includes("?")?"&":"?",a=u.token?"".concat(n,"auth=").concat(encodeURIComponent(u.token)):"";return"".concat(r).concat(e).concat(a)})(h.downloadUrl),download:"".concat(h.recorderId,".cast"),className:"rounded border border-emerald-500 px-2 py-0.5 text-emerald-600 hover:bg-emerald-50 dark:hover:bg-emerald-950",onClick:()=>(0,y.cY)("webterm.controls.download.click",{recorderId:h.recorderId}),title:"".concat(h.frameCount," frames \xb7 ").concat(h.elapsedSec.toFixed(1),"s"),children:"⬇ download .cast"}),h&&(0,n.jsx)("button",{type:"button",className:"rounded border px-2 py-0.5 text-muted-foreground hover:bg-accent",onClick:()=>b(null),title:"dismiss","aria-label":"dismiss download",children:"\xd7"}),(m||h)&&(0,n.jsxs)("span",{className:"ml-auto text-[11px] text-muted-foreground",children:[m&&"● recording",h&&!m&&"✓ ".concat(h.recorderId)]}),g&&(0,n.jsx)("span",{className:"ml-2 max-w-[40%] truncate text-[11px] text-rose-500",title:g,children:g})]})}var P=r(91877),U=r(60549),M=r(48740);let D="elanous.pwa.hwKeyboard",L=/^(Escape|Tab|ArrowUp|ArrowDown|ArrowLeft|ArrowRight|F([1-9]|1[0-2]))$/;function $(e,t){try{null==e||e.setItem(D,t?"1":"0")}catch(e){}}let F=[{key:"esc",label:"Esc",width:"wide",title:"Escape (vim normal mode)"},{key:"tab",label:"Tab",width:"wide",title:"Tab (autocomplete)"},{key:"shift-enter",label:"⇧⏎",width:"wide",title:"Shift+Enter (newline)"},{key:"left",label:"←",width:"narrow",title:"Left arrow"},{key:"down",label:"↓",width:"narrow",title:"Down arrow"},{key:"up",label:"↑",width:"narrow",title:"Up arrow"},{key:"right",label:"→",width:"narrow",title:"Right arrow"}];function Q(e){let{terminalId:t}=e,{sessionId:r}=(0,w.Q)(),[l,s]=(0,a.useState)(()=>(0,P.ox)(t));(0,a.useEffect)(()=>{let e=()=>s((0,P.ox)(t));return e(),(0,P.Ok)(e)},[t]);let i=(0,a.useCallback)(()=>{let e=(0,P.ox)(t);if(!e)return;let n=(0,U.dI)({bufferType:e.buffer.active.type,mouseTracking:e.modes.mouseTrackingMode});"scroll-pages"===n.kind?e.scrollPages(n.pages):r&&(0,P.WP)(t,n.data)},[t,r]),[o,c]=(0,a.useState)(!1),[d,u]=(0,a.useState)(!1),[m,p]=(0,a.useState)(!1);(0,a.useEffect)(()=>{p(function(e){try{return(null==e?void 0:e.getItem(D))==="1"}catch(e){return!1}}(window.localStorage));let e=e=>{var t;t=navigator.userAgent,!e.isComposing&&229!==e.keyCode&&"Unidentified"!==e.key&&"Process"!==e.key&&(L.test(e.key)||(e.ctrlKey||e.metaKey||e.altKey)&&1===e.key.length||/Android/i.test(t)&&1===e.key.length||0)&&p(t=>t||($(window.localStorage,!0),(0,y.cY)("webterm.modifier-bar.hw-keyboard",{key:1===e.key.length?"char":e.key}),!0))};return document.addEventListener("keydown",e,!0),()=>document.removeEventListener("keydown",e,!0)},[]);let h=(0,a.useCallback)(()=>{$(window.localStorage,!1),p(!1)},[]),b=(0,a.useRef)(!1),f=(0,a.useRef)(!1);b.current=o,f.current=d;let x=(0,a.useRef)(null),g=(0,a.useCallback)(()=>{b.current=!1,f.current=!1,c(!1),u(!1),(0,P.Ct)(t,{ctrl:!1,alt:!1}),null!==x.current&&(clearTimeout(x.current),x.current=null)},[t]);(0,a.useEffect)(()=>(0,P.oy)(t,g),[t,g]);let v=(0,a.useCallback)((e,t)=>{null!==x.current&&(clearTimeout(x.current),x.current=null),(e||t)&&(x.current=setTimeout(()=>{g(),(0,y.cY)("webterm.modbar.auto-release",{})},5e3))},[g]);(0,a.useEffect)(()=>()=>{g()},[g]);let k=(0,a.useCallback)(e=>{if(!r)return void(0,y.cY)("webterm.modbar.no-session",{key:e});let n={ctrl:b.current,alt:f.current},a=(0,M.bu)(e,n);(0,y.cY)("webterm.modbar.send",{key:e,ctrl:n.ctrl,alt:n.alt,bytes:a.length});try{(0,P.WP)(t,a)}catch(e){(0,y.cY)("webterm.modbar.send-error",{reason:String(e)})}(n.ctrl||n.alt)&&((0,P.ho)(t),g())},[r,t,g]),j=(0,a.useCallback)(()=>{let e=!b.current;b.current=e,c(e),(0,P.Ct)(t,{ctrl:e,alt:f.current}),v(e,f.current)},[v,t]),N=(0,a.useCallback)(()=>{let e=!f.current;f.current=e,u(e),(0,P.Ct)(t,{ctrl:b.current,alt:e}),v(b.current,e)},[v,t]),S=e=>["flex h-7 shrink-0 items-center justify-center rounded border border-border bg-card font-mono text-[11px] text-muted-foreground hover:bg-muted hover:border-primary hover:text-foreground active:translate-y-px disabled:opacity-50","wide"===e?"px-2 min-w-[36px]":"w-8"].join(" "),C=e=>["flex h-7 shrink-0 items-center justify-center rounded border font-mono text-[11px] px-2 min-w-[36px] active:translate-y-px disabled:opacity-50 transition-colors",e?"border-amber-400 bg-amber-100 text-amber-900 dark:border-amber-500 dark:bg-amber-900 dark:text-amber-100":"border-border bg-card text-muted-foreground hover:bg-muted hover:border-primary hover:text-foreground"].join(" ");return m?(0,n.jsx)("div",{className:"flex items-center border-b border-border bg-background/60 px-2 py-0.5","data-testid":"modifier-bar-collapsed",children:(0,n.jsx)("button",{type:"button",onClick:h,className:"rounded px-1.5 py-0.5 text-[11px] text-muted-foreground hover:text-foreground",title:"물리 키보드가 잡혀 접었다 — 누르면 Esc\xb7Tab\xb7화살표 키 줄을 다시 편다",children:"⌨ 보조 키"})}):(0,n.jsxs)("div",{className:"flex min-w-0 max-w-full flex-nowrap items-center gap-1 overflow-x-auto border-b border-border bg-background/60 px-2 py-1","data-testid":"modifier-bar",role:"toolbar","aria-label":"Mobile keyboard modifiers",children:[F.map(e=>(0,n.jsx)("button",{type:"button",className:S(e.width),onClick:()=>{k(e.key)},disabled:!r,"aria-label":e.title,title:e.title,"data-testid":"modbar-".concat(e.key),children:e.label},e.key)),(0,n.jsx)("button",{type:"button",className:S("wide"),onClick:i,disabled:!l||!r,"aria-label":"과거 내용 보기",title:"과거 내용 보기 — 한 쪽 위로","data-testid":"modbar-history",children:"⇡ 기록"}),(0,n.jsx)("span",{className:"mx-1 shrink-0 text-[10px] text-muted-foreground/60","aria-hidden":!0,children:"\xb7"}),(0,n.jsx)("button",{type:"button",className:C(o),onClick:j,disabled:!r,"aria-label":"Ctrl modifier ".concat(o?"active":"idle"),"aria-pressed":o,title:"Ctrl modifier — toggles. Combines with arrow keys (e.g. Ctrl+→ = next word). Auto-releases after 5s or one keystroke.","data-testid":"modbar-ctrl",children:"Ctrl"}),(0,n.jsx)("button",{type:"button",className:C(d),onClick:N,disabled:!r,"aria-label":"Alt modifier ".concat(d?"active":"idle"),"aria-pressed":d,title:"Alt modifier — toggles. Combines with Esc/Tab/arrows. Auto-releases after 5s or one keystroke.","data-testid":"modbar-alt",children:"Alt"})]})}var O=r(56922);function H(e){let{foreignActivityTick:t,onPeerCountChange:r}=e,{client:l,sessionId:s}=(0,w.Q)(),[i,o]=(0,a.useState)(0),[c,d]=(0,a.useState)(!1);(0,a.useEffect)(()=>{null==r||r(i)},[i,r]);let u=(0,a.useRef)(null),m=(0,a.useRef)(null),p=(0,a.useCallback)(async()=>{if(!s)return;u.current||(u.current=l.connectAcp({sessionId:s}));let e=u.current;try{let t=await e.send("terminal/peers/count",{sessionId:s});"number"==typeof(null==t?void 0:t.count)&&(o(t.count),(0,y.cY)("webterm.peers.count",{count:t.count}))}catch(e){(0,y.cY)("webterm.peers.count.error",{reason:String(e)})}},[l,s]);return((0,a.useEffect)(()=>{p();let e=()=>{"visible"===document.visibilityState&&p()};return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[p]),(0,a.useEffect)(()=>()=>{try{var e;null==(e=u.current)||e.close()}catch(e){}u.current=null,m.current&&clearTimeout(m.current)},[]),(0,a.useEffect)(()=>{t&&(d(!0),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>{d(!1),m.current=null,p()},1800))},[t,p]),i<=1&&!c)?null:(0,n.jsxs)("div",{className:"flex items-center gap-2 border-b border-border bg-amber-500/10 px-2 py-0.5 text-[11px]",children:[(0,n.jsx)(O.A,{className:"h-3 w-3 text-amber-600","aria-hidden":!0}),i>1&&(0,n.jsxs)("span",{className:"font-mono text-amber-700 dark:text-amber-400",children:[i," devices"]}),c&&(0,n.jsx)("span",{className:"ml-auto rounded bg-amber-500 px-1.5 py-0.5 font-medium text-white animate-pulse",children:"\uD83D\uDC64 typing"})]})}var _=r(17815);function B(e){let{onAttached:t,pageWide:r=!0}=e,{config:s}=(0,w.Q)(),[i,o]=(0,a.useState)(!1),[c,d]=(0,a.useState)(!1),u=(0,a.useRef)(0),m=(0,a.useCallback)(async e=>{if(0!==e.length){if(!s.baseUrl)return void l.oR.error("Daemon URL 미설정 — Settings 에서 입력");d(!0),(0,y.cY)("webterm.dropzone.drop",{count:e.length,totalBytes:e.reduce((e,t)=>e+t.size,0)});try{let r=await (0,Y.K)(e.map(e=>({file:e,filename:e.name})),{baseUrl:s.baseUrl,...s.token?{token:s.token}:{}}),n=r.filter(e=>e.ok),a=r.filter(e=>!e.ok);n.length>0&&(l.oR.success(1===n.length?"\uD83D\uDCCE ".concat(n[0].meta.filename):"\uD83D\uDCCE ".concat(n.length," files dropped")),null==t||t(n.map(e=>e.meta))),a.length>0&&l.oR.error(1===a.length?"드롭 실패: ".concat(a[0].reason.slice(0,80)):"".concat(a.length," 파일 드롭 실패"))}finally{d(!1)}}},[s.baseUrl,s.token,t]);return((0,a.useEffect)(()=>{if(!r)return;let e=e=>{e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(e.preventDefault(),u.current+=1,o(!0))},t=e=>{e.dataTransfer&&e.dataTransfer.types.includes("Files")&&e.preventDefault()},n=e=>{e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(e.preventDefault(),u.current=Math.max(0,u.current-1),0===u.current&&o(!1))},a=e=>{if(!e.dataTransfer)return;let t=e.dataTransfer.files;t&&0!==t.length&&(e.preventDefault(),u.current=0,o(!1),m(Array.from(t)))};return document.addEventListener("dragenter",e),document.addEventListener("dragover",t),document.addEventListener("dragleave",n),document.addEventListener("drop",a),()=>{document.removeEventListener("dragenter",e),document.removeEventListener("dragover",t),document.removeEventListener("dragleave",n),document.removeEventListener("drop",a)}},[m,r]),i||c)?(0,n.jsx)("div",{className:"pointer-events-none fixed inset-0 z-50 flex items-center justify-center bg-primary/20 backdrop-blur-sm",children:(0,n.jsxs)("div",{className:"rounded-xl border-2 border-dashed border-primary bg-card px-6 py-4 text-center shadow-lg",children:[(0,n.jsx)(_.A,{className:"mx-auto h-10 w-10 text-primary","aria-hidden":!0}),(0,n.jsx)("div",{className:"mt-2 text-sm font-medium text-foreground",children:c?"업로드 중…":"Drop files to attach"}),(0,n.jsx)("div",{className:"mt-1 text-xs text-muted-foreground",children:c?"":"iCloud \xb7 Files.app \xb7 폴더 모두 지원"})]})}):null}var W=r(90916),q=r(55958),K=r(15165),V=r(3799),Z=r(80881),G=r(56341),J=r(78504),X=r(69077),ee=r(49119),et=r(72903),er=r(73779),en=r(60378),ea=r(1102),el=r(17513),es=r(48371);async function ei(e,t){if(!t||0===t.length)return null;try{let r=await e.fetchJson("/v1/sessions/store/".concat(encodeURIComponent(t),"?ifExists=1"));if(!r||!Array.isArray(r.messages))return null;let n=function(e){let t=[];return e.forEach((e,r)=>{let n=function(e,t){let r=e.role;if("tool"===r)return{...(0,es.$Q)("\uD83D\uDEE0️ ".concat(e.toolName||"tool")),id:"hydrate-t-".concat(t)};let n=function(e){if("string"==typeof e)return e;if(!Array.isArray(e))return"";let t=[];for(let n of e)if(n&&"object"==typeof n){let e=n.type;if("text"===e&&"string"==typeof n.text)t.push(n.text);else if("image"===e)t.push("\uD83D\uDCCE image");else if("audio"===e)t.push("\uD83D\uDCCE audio");else if("tool_use"===e){var r;let e=null!=(r=n.name)?r:"tool";t.push("\uD83D\uDEE0️ ".concat(e))}else"tool_result"===e&&t.push("\uD83D\uDEE0️ result")}return t.join("\n").trim()}(e.content);return 0===n.length?null:"user"===r?{...(0,es.tw)(n),id:"hydrate-u-".concat(t)}:"assistant"===r?{id:"hydrate-a-".concat(t),role:"assistant",text:n,timestamp:Date.now(),meta:{provider:"history"}}:"system"===r?null:{...(0,es.$Q)(n),id:"hydrate-m-".concat(t)}}(e,r);n&&t.push(n)}),t.slice(-200)}(r.messages);return(0,y.cY)("webterm.terminal-chat.hydrate.ok",{sessionId:t,serverCount:r.messages.length,mappedCount:n.length}),n}catch(e){return(0,y.cY)("webterm.terminal-chat.hydrate.skip",{sessionId:t,reason:e instanceof Error?e.message:String(e)}),null}}let eo=[":cwd",":capture",":peers",":tab next",":tab prev"];function ec(e){let t=(null!=e?e:"").replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g,"").replace(/\r/g,"").trim();return t.length>0?t:"(no output)"}let ed=(0,a.forwardRef)(function(e,t){let{terminalId:r,open:s,onTabIntent:i,height:o,voice:c}=e,d="number"==typeof o&&Number.isFinite(o)&&o>0?o:void 0,{client:u,config:m,sessionId:p,setSessionId:h}=(0,w.Q)(),b=(0,a.useRef)(p),f=(0,a.useRef)(null),[x,g]=(0,a.useState)([]),[v,k]=(0,a.useState)(!1),[j,N]=(0,a.useState)(null),[S,E]=(0,a.useState)([]),[A,Y]=(0,a.useState)(!1),R=(0,a.useRef)(async()=>{}),z=(0,a.useRef)(!1);z.current=v;let P=(0,a.useRef)(null),[U,M]=(0,a.useState)(!1),D=(0,el.$)({enabled:!!(null==c?void 0:c.active)&&!U,language:"ko-KR"}),L=(0,a.useRef)(D);L.current=D,(0,a.useEffect)(()=>{b.current=p},[p]),(0,a.useEffect)(()=>{try{var e;null==(e=f.current)||e.close()}catch(e){}if(f.current=null,s&&p)return f.current=u.connectAcp({sessionId:p}),()=>{try{var e;null==(e=f.current)||e.close()}catch(e){}f.current=null}},[u,s,p]),(0,a.useEffect)(()=>{let e=f.current;if(e&&s&&p)return e.on("sessionUpdate",e=>{var t;let r=P.current;if(!r)return;let n=e.params;if(!n||n.sessionId!==p)return;let a=n.update;if(a&&"agent_message_chunk"===a.sessionUpdate&&(null==(t=a.content)?void 0:t.type)==="text"&&"string"==typeof a.content.text){let e=a.content.text;if(0===e.length)return;g(t=>t.map(t=>{var n;return t.id===r?{...t,text:(null!=(n=t.text)?n:"")+e}:t})),L.current.pushText(e)}})},[s,p]);let $=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(!s||!p||$.current===p)return;$.current=p;let e=!1;return(async()=>{let t=await ei(u,p);e||null===t||g(t)})(),()=>{e=!0}},[u,s,p]);let F=(0,a.useCallback)(e=>{g(t=>[...t,e].slice(-200))},[]);(0,a.useImperativeHandle)(t,()=>({submitVoiceTranscript:e=>{let t=e.trim();if(t){if(z.current)return void(0,y.cY)("webterm.terminal-chat.voice.skip-pending",{len:t.length});(0,y.cY)("webterm.terminal-chat.voice.auto-send",{len:t.length}),R.current(t)}}}),[]);let Q=(0,a.useCallback)(()=>{let e=b.current;return e?(f.current||(f.current=u.connectAcp({sessionId:e})),f.current):null},[u]),O=(0,a.useMemo)(()=>({client:u,sessionId:p,provider:m.provider,setSessionId:h,daemon:{baseUrl:m.baseUrl,...m.token?{token:m.token}:{}},messages:x}),[u,m.baseUrl,m.provider,m.token,x,p,h]),H=(0,a.useCallback)(e=>{E(t=>[...t,...e]),(0,y.cY)("webterm.terminal-chat.attach.queue",{terminalId:r,added:e.length,filenames:e.map(e=>e.filename)})},[r]),_=(0,a.useCallback)(e=>{E(t=>t.filter(t=>t.id!==e))},[]),B=(0,a.useCallback)(async e=>{let t=e.startsWith(":")?null:await (0,es.yN)(e,O);if(t){"__CLEAR__"===t.text?g([]):F((0,es.$Q)(t.text,r)),t.newSessionId&&h(t.newSessionId);return}if(!p)return void F((0,es.$Q)("session 미설정",r));let n=Q();if(!n)return void F((0,es.$Q)("session 미설정",r));let a=await n.send("terminal/repl/exec",{sessionId:p,terminalId:r,line:e});F((0,es.$Q)(ec(null==a?void 0:a.output),r)),(null==a?void 0:a.sessionIdChange)&&h(a.sessionIdChange),(null==a?void 0:a.tabIntent)!==void 0&&(null==i||i(a.tabIntent),F((0,es.$Q)("tab intent → ".concat(String(a.tabIntent)),r))),(null==a?void 0:a.injectPath)&&F((0,es.$Q)("captured → ".concat(a.injectPath),r)),(null==a?void 0:a.agentChatModeEnter)&&F((0,es.$Q)("agent chat mode hint — terminal dock already runs plain text as agent turns",r))},[F,O,Q,i,p,h,r]),ed=(0,a.useCallback)(async()=>{let e=b.current;if(e&&j)try{var t;let n=Q();if(!n)return;let a=await n.send("terminal/repl/agent/abort",{sessionId:e,terminalId:r});(0,y.cY)("webterm.terminal-chat.abort",{terminalId:r,aborted:null!=(t=null==a?void 0:a.aborted)&&t}),F((0,es.$Q)((null==a?void 0:a.aborted)?"agent turn aborted":"no active agent turn to abort",r))}catch(t){let e=t instanceof Error?t.message:String(t);F((0,es.$Q)("abort failed: ".concat(e),r))}finally{k(!1),N(null)}},[F,Q,j,r]),eu=(0,a.useCallback)(async e=>{E([]);let t=S.filter(e=>!("string"==typeof e.path&&e.path.length>0)).length;if(t>0){let e=1===t?"첨부 1건이 path 누락으로 누락됐습니다":"첨부 ".concat(t,"건이 path 누락으로 누락됐습니다");l.oR.warning(e),F((0,es.$Q)("⚠ ".concat(e),r)),(0,y.cY)("webterm.terminal-chat.attach.dropped",{terminalId:r,droppedCount:t,totalCount:S.length})}e.length>0&&F((0,es.tw)(e,r)),S.length>0&&F((0,es.$Q)("\uD83D\uDCCE attached: ".concat(S.map(e=>e.filename).join(", ")),r));let n=e.trim();if(n||0!==S.length){k(!0);try{if((0,es.FM)(n))return void await B(n);if(!p)return void F((0,es.$Q)("session 미설정",r));let e=Q();if(!e)return void F((0,es.$Q)("session 미설정",r));N(n);let t="assistant-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,6));P.current=t,F({id:t,role:"assistant",text:"",timestamp:Date.now(),terminalId:r}),(0,y.cY)("webterm.terminal-chat.turn.start",{terminalId:r,sessionId:p,len:n.length,attachCount:S.length,placeholderId:t});let a=S.filter(e=>e.path).map(e=>"[attached] ".concat(e.path)),l=a.length>0?"".concat(a.join("\n"),"\n\n").concat(n).trimEnd():n,s=await e.send("terminal/repl/exec",{sessionId:p,terminalId:r,line:":agent ".concat(l)});(null==s?void 0:s.agent)?(g(e=>e.map(e=>e.id===t?{...e,text:e.text&&e.text.length>=s.agent.markdown.length?e.text:s.agent.markdown,meta:{provider:s.agent.modelLabel,stopReason:s.agent.stopReason}}:e)),L.current.flush()):(g(e=>e.filter(e=>e.id!==t)),F((0,es.$Q)(ec(null==s?void 0:s.output),r))),(0,y.cY)("webterm.terminal-chat.turn.end",{terminalId:r,hasAgent:!!(null==s?void 0:s.agent)})}catch(n){let e=n instanceof Error?n.message:String(n),t=P.current;t&&g(e=>e.filter(e=>e.id!==t)),L.current.cancel(),F((0,es.$Q)("error: ".concat(e),r)),l.oR.error("terminal chat failed: ".concat(e))}finally{P.current=null,k(!1),N(null)}}},[F,Q,B,S,p,r]);return((0,a.useEffect)(()=>{R.current=eu},[eu]),s)?(0,n.jsxs)("div",{className:"shrink-0 border-t border-border bg-background/95","data-terminal-chat-dock":!0,children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 border-b border-border/80 px-3 py-2",children:[(0,n.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[(0,n.jsx)("span",{className:"inline-flex h-7 w-7 items-center justify-center rounded-md border border-primary/30 bg-primary/10 text-primary",children:(0,n.jsx)(q.A,{className:"h-4 w-4"})}),(0,n.jsxs)("div",{className:"min-w-0",children:[(0,n.jsx)("div",{className:"truncate text-sm font-medium",children:"Terminal Chat Dock"}),(0,n.jsxs)("div",{className:"truncate text-[11px] text-muted-foreground",children:[r," \xb7 plain text = contextual agent turn \xb7 ",(0,n.jsx)("code",{className:"rounded bg-muted px-1",children:":commands"})," stay local"]})]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[c&&(0,n.jsxs)("button",{type:"button",onClick:c.onToggle,disabled:c.disabled,title:c.disabled?"마이크 사용 불가 (insecure context 등)":c.phaseLabel,"data-elanous-action":"webterm-voice-toggle-dock","aria-pressed":c.active,className:(0,T.cn)("inline-flex h-7 items-center gap-1.5 rounded-md border px-2 text-[11px]",c.active?"border-rose-300 bg-rose-100 text-rose-800 dark:border-rose-700 dark:bg-rose-950/40 dark:text-rose-100":"border-border hover:bg-accent",c.disabled&&"cursor-not-allowed opacity-50"),children:[(0,n.jsx)("span",{className:(0,T.cn)("h-1.5 w-1.5 rounded-full",c.dotColor,("listening"===c.phase||"speaking"===c.phase)&&"animate-pulse"),"aria-hidden":"true"}),c.active?(0,n.jsx)(C.A,{className:"h-3.5 w-3.5"}):(0,n.jsx)(I.A,{className:"h-3.5 w-3.5"}),(0,n.jsx)("span",{className:"hidden sm:inline",children:c.phaseLabel})]}),c&&c.active&&D.supported&&(0,n.jsx)("button",{type:"button",onClick:()=>{U||L.current.cancel(),M(e=>!e)},title:U?"음성 응답 켜기":"음성 응답 끄기","data-elanous-action":"webterm-tts-mute-toggle","aria-pressed":U,className:(0,T.cn)("inline-flex h-7 items-center justify-center rounded-md border px-2 text-[11px]",U?"border-border bg-muted text-muted-foreground":"border-fuchsia-300 bg-fuchsia-50 text-fuchsia-800 dark:border-fuchsia-700 dark:bg-fuchsia-950/40 dark:text-fuchsia-100"),children:U?(0,n.jsx)(K.A,{className:"h-3.5 w-3.5"}):(0,n.jsx)(V.A,{className:"h-3.5 w-3.5"})}),(0,n.jsx)(er.Qh,{}),(0,n.jsx)(W.vG,{children:(0,n.jsx)(et.rm,{})}),(0,n.jsx)(W.vG,{children:(0,n.jsx)(en.D,{})}),j&&(0,n.jsxs)(ea.$,{variant:"destructive",size:"sm",onClick:()=>void ed(),title:"abort active terminal-context agent turn",children:[(0,n.jsx)(Z.A,{className:"h-3.5 w-3.5"}),"Stop"]}),(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)(ea.$,{variant:"outline",size:"icon-sm",onClick:()=>Y(e=>!e),"aria-label":"terminal quick commands",title:"terminal quick commands",children:(0,n.jsx)(G.A,{className:"h-3.5 w-3.5"})}),A&&(0,n.jsx)("div",{className:"absolute right-0 top-full z-40 mt-1 w-44 rounded-md border border-border bg-popover p-1 shadow-md",children:eo.map(e=>(0,n.jsx)("button",{type:"button",className:"block w-full rounded px-2 py-1 text-left font-mono text-[11px] hover:bg-accent",onClick:()=>{Y(!1),eu(e)},children:e},e))})]})]})]}),j&&(0,n.jsxs)("div",{className:"flex items-center gap-2 border-b border-border/70 px-3 py-2 text-[11px] text-muted-foreground",children:[(0,n.jsx)(J.A,{className:"h-3.5 w-3.5 animate-spin"}),(0,n.jsxs)("span",{className:"truncate",children:["terminal-context agent turn in progress",j.length>0?" \xb7 ".concat(j.slice(0,120)).concat(j.length>120?"…":""):""]})]}),(0,n.jsxs)("div",{className:(0,T.cn)("grid grid-rows-[1fr_auto]",void 0===d?"h-[clamp(160px,30vh,360px)] min-h-[200px]":void 0),...void 0===d?{}:{style:{height:d}},children:[(0,n.jsx)(X.D,{messages:x,pending:v,tabId:"dock-".concat(r)}),(0,n.jsx)(ee.V,{onSubmit:eu,disabled:v,attachments:S,onAttached:H,onRemoveAttachment:_,tabId:"dock-".concat(r),...c?{voice:c}:{}})]})]}):null});var eu=r(6977),em=r(3830);let ep=/^100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\./;function eh(){if(!window.location)return{isSecure:!1,reason:"unknown",hostname:"",protocol:""};let e=function(e,t){let r="https:"===e,n="http:"===e;return"localhost"===t||"127.0.0.1"===t||"[::1]"===t||"::1"===t?{isSecure:!0,reason:"localhost",hostname:t,protocol:e}:r&&/\.ts\.net$/i.test(t)?{isSecure:!0,reason:"https-tsnet",hostname:t,protocol:e}:r?{isSecure:!0,reason:"https-other",hostname:t,protocol:e}:n&&ep.test(t)?{isSecure:!1,reason:"http-tailscale",hostname:t,protocol:e,guidance:"Tailscale 100.x 주소는 HTTP라 마이크 권한이 차단됩니다. `tailscale serve` 또는 funnel 로 ts.net HTTPS 호스트를 노출하면 마이크가 동작합니다."}:n?{isSecure:!1,reason:"http-other",hostname:t,protocol:e,guidance:"브라우저는 HTTP origin 에서 마이크 접근을 차단합니다. HTTPS 로 접속하거나 localhost 로 옮기세요."}:{isSecure:!1,reason:"unknown",hostname:t,protocol:e}}(window.location.protocol,window.location.hostname);return e.isSecure&&!1===window.isSecureContext?{...e,isSecure:!1,reason:"unknown",guidance:"현재 origin 이 secure context 가 아닙니다 (브라우저 판정). HTTPS 로 접속하세요."}:e}let eb="elanous.webterm.voiceBanner.dismissed",ef={isSecure:!1,reason:"unknown",hostname:"",protocol:""};function ex(){var e;let{statusOverride:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},[r,l]=(0,a.useState)(!1),[s,i]=(0,a.useState)(null!=t?t:ef);if((0,a.useEffect)(()=>{l(function(){try{return"1"===window.sessionStorage.getItem(eb)}catch(e){return!1}}()),i(null!=t?t:eh())},[t]),s.isSecure||r)return null;let o="http-tailscale"===s.reason?"\uD83C\uDF99 Tailscale HTTP 에서 마이크가 차단됩니다":"\uD83C\uDF99 마이크 사용을 위해 HTTPS 가 필요합니다";return(0,n.jsxs)("div",{role:"alert","aria-live":"polite","data-testid":"webterm-voice-banner","data-reason":s.reason,className:"flex items-start gap-2 border-b border-amber-300 bg-amber-50 px-3 py-2 text-[12px] text-amber-900 dark:border-amber-700 dark:bg-amber-950/40 dark:text-amber-100",children:[(0,n.jsx)(eu.A,{className:"mt-[1px] h-3.5 w-3.5 shrink-0","aria-hidden":"true"}),(0,n.jsxs)("div",{className:"flex-1",children:[(0,n.jsx)("div",{className:"font-medium",children:o}),(0,n.jsx)("div",{className:"mt-0.5 text-amber-800/90 dark:text-amber-200/80",children:null!=(e=s.guidance)?e:"브라우저는 secure context (HTTPS \xb7 localhost) 에서만 마이크를 허용합니다."}),"http-tailscale"===s.reason&&(0,n.jsxs)("div",{className:"mt-1 font-mono text-[11px] text-amber-700 dark:text-amber-200/90",children:[(0,n.jsx)("code",{children:"tailscale serve --bg --https=443 31415"})," ","or"," ",(0,n.jsx)("a",{href:"https://tailscale.com/kb/1242/tailscale-serve",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-amber-900 dark:hover:text-amber-50",children:"ts.net HTTPS 가이드"})]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>{try{window.sessionStorage.setItem(eb,"1")}catch(e){}l(!0)},"aria-label":"dismiss banner",title:"이 창을 닫을 때까지 숨기기",className:"rounded p-0.5 text-amber-700 hover:bg-amber-100 dark:text-amber-200 dark:hover:bg-amber-900/40",children:(0,n.jsx)(em.A,{className:"h-3.5 w-3.5"})})]})}async function eg(e){var t;let{terminalId:r,paths:n}=e,a=null==(t=e.alsoCopyToClipboard)||t,l=n.filter(e=>"string"==typeof e&&e.length>0).map(e=>"'".concat(e.replace(/'/g,"'\\''"),"'")).join(" ");if(!l)return{injected:!1,copied:!1};let s="".concat(l," "),i=!1;try{(i=(0,P.WP)(r,s))?(0,y.cY)("webterm.attach.inject.ok",{terminalId:r,pathCount:n.length,bytes:s.length}):(0,y.cY)("webterm.attach.inject.error",{terminalId:r,reason:"no-sender"})}catch(e){(0,y.cY)("webterm.attach.inject.error",{terminalId:r,reason:String(e)})}let o=!1;if(a&&"undefined"!=typeof navigator&&navigator.clipboard)try{await navigator.clipboard.writeText(l),o=!0,(0,y.cY)("webterm.attach.clipboard.ok",{pathCount:n.length})}catch(e){(0,y.cY)("webterm.attach.clipboard.skip",{reason:String(e)})}return{injected:i,copied:o}}var ev=r(49673),ew=r(64086),ey=r(66659),ek=r(10356);function ej(e){return e.length<=32?e:"…".concat(e.slice(-32))}function eN(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now();if("number"!=typeof e||!Number.isFinite(e)||!Number.isFinite(t)||e>t)return null;let r=new Date(e);return Number.isFinite(r.getTime())?(0,ek.KW)(r.toISOString(),t):null}function eS(e){let t=new Map,r=new Set,n=new Set,a=[];for(let r of e){var l,s;if(n.has(r.id))continue;n.add(r.id),a.push(r);let e=null==(l=r.runId)?void 0:l.trim();if(!e)continue;let i=null!=(s=t.get(e))?s:[];i.push(r),t.set(e,i)}let i=[];for(let[e,n]of t){let t=function(e){let t=e.filter(e=>e.alive&&Number.isFinite(e.startedAt));if(0===t.length)return;let r=Math.max(...t.map(e=>{let{startedAt:t}=e;return t})),n=t.filter(e=>{let{startedAt:t}=e;return t===r});return 1===n.length?n[0]:void 0}(n);if(!t){for(let e of n)r.add(e.id);continue}i.push({runId:e,split:t.id,tabs:n.filter(e=>e.id!==t.id).map(e=>{let{id:t}=e;return t})})}let o=new Set(i.flatMap(e=>{let{split:t,tabs:r}=e;return[t,...r]}));return{layouts:i,unknown:a.filter(e=>{let{id:t}=e;return r.has(t)&&!o.has(t)}).map(e=>{let{id:t}=e;return{id:t,reason:"relationship-unavailable"}})}}function eC(e){return{layouts:e.layouts.map(e=>{let{runId:t,split:r,tabs:n}=e;return{runId:t,slots:[{terminalId:r,position:"split"},...n.map(e=>({terminalId:e,position:"tab"}))]}}),unknown:e.unknown.map(e=>({...e}))}}let eI=["terminal","observe","pty-list"],eT="elanous.webterm.activeId",eE="elanous.webterm.panelsMinimized",eA="elanous.webterm.chatDockOpen";function eY(e){return e.sourceRoot?{sourceRoot:e.sourceRoot.dbPath}:{}}function eR(e){let{layout:t,sessionId:r,onForeignInputActivity:a,terminalIds:l,activeId:s=null,visible:i=!0,clearRequests:c}=e,d=t.layouts.flatMap(e=>e.slots),u=new Map(d.map(e=>[e.terminalId,e])),m=new Set(t.layouts.map(e=>{var t;return null==(t=e.slots[0])?void 0:t.terminalId}).filter(e=>!!e)),p=void 0===l?d.map(e=>e.terminalId):[...new Set([...l,...s?[s]:[],...d.map(e=>e.terminalId)])],h=new Set(d.length>0?d.map(e=>e.terminalId):s?[s]:[]);return(0,n.jsxs)("div",{className:i?"grid h-full min-h-0 grid-cols-2 gap-2 p-2":"hidden","aria-label":"런별 터미널 배치",children:[t.layouts.map(e=>{let{runId:t}=e;return(0,n.jsx)("section",{className:"sr-only","aria-label":"런 ".concat(t," 터미널")},t)}),p.map(e=>{var t,l;let d=u.get(e),p=i&&h.has(e),b=null!=(t=null==d?void 0:d.position)?t:e===s?"single":"inactive-tab";return(0,n.jsxs)("div",{className:p?"".concat(m.has(e)?"col-start-1 ":"").concat((null==d?void 0:d.position)==="split"?"min-h-0 border border-emerald-600":(null==d?void 0:d.position)==="tab"?"min-h-0 border border-zinc-700":"col-span-2 h-full min-h-0"):"hidden","data-pane-position":b,"data-terminal-id":e,children:[d&&(0,n.jsxs)("p",{className:"sr-only",children:["split"===d.position?"분할 터미널":"탭 터미널",": ",e]}),(0,n.jsx)(o,{sessionId:r,terminalId:e,clearRequest:null!=(l=null==c?void 0:c[e])?l:0,onForeignInputActivity:a},e)]},e)}),t.unknown.map(e=>{let{id:t,reason:r}=e;return(0,n.jsxs)("p",{className:"text-xs text-muted-foreground","data-terminal-id":t,"data-pane-relationship":r,children:["터미널 ",t,": 관계를 알 수 없어 배치하지 않았습니다."]},t)})]})}function ez(){var e,t,r;let{initialPtyId:s=null,onPtySelection:i}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{client:o,config:c,sessionId:u}=(0,w.Q)(),{isCoarsePointer:m}=function(){let[e,t]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{if(!window.matchMedia)return;let e=window.matchMedia("(pointer: coarse)");t(e.matches);let r=e=>{t(e.matches)};return"function"==typeof e.addEventListener?(e.addEventListener("change",r),()=>e.removeEventListener("change",r)):"function"==typeof e.addListener?(e.addListener(r),()=>e.removeListener(r)):void 0},[]),{isCoarsePointer:e}}(),{compact:p}=(0,v.K)(),[h,x]=(0,a.useState)(null),[k,j]=(0,a.useState)({}),[N,C]=(0,a.useState)([]),[I,T]=(0,a.useState)(!1),[E,A]=(0,a.useState)(null),[Y,R]=(0,a.useState)(null),[U,M]=(0,a.useState)(!1);(0,a.useEffect)(()=>{var e,t;let r=null!=(t=null==(e=window.location)?void 0:e.search)?t:"",n=function(e){let t=new URLSearchParams(e).get("wall");return t?t.split(",").map(e=>e.trim()).filter(Boolean).slice(0,3):[]}(r);n.length&&R(n),"1"===new URLSearchParams(r).get("stage")&&M(!0)},[]);let[D,L]=(0,a.useState)({status:"pending"}),$=function(e,t){let r="ready"===e.status&&"local"===e.issuedBy&&"restored-tab"!==e.fallbackReason,n="ready"===e.status&&e.fallbackReason?e.fallbackReason:"사유 미상";return{placeholder:t?null:"pending"===e.status?e.slow?"데몬이 느립니다 — 터미널을 만드는 중… (기다리는 중)":"터미널 이름을 준비하는 중…":"터미널 이름을 로컬에서 정했습니다 (".concat(n,")."),fallbackBanner:r?"터미널 이름을 로컬에서 정했습니다 (".concat(n,"). 데몬 발급을 확인하지 못했습니다."):null}}(D,null!==h),F=(0,a.useCallback)(e=>{L(e),"pending"===e.status&&x(null)},[]),O=(0,a.useRef)(!1),_=(0,a.useRef)(!1),[W,q]=(0,a.useState)("terminal"),K={view:W,buttons:eI.map(e=>({view:e,selected:e===W}))},V=(0,a.useCallback)(e=>{q(t=>"observe"===e&&"observe"===t?"terminal":e)},[]),[Z,G]=(0,a.useState)(!!s),[J,X]=(0,a.useState)([]),[ee,et]=(0,a.useState)(),[er,en]=(0,a.useState)(new Map),[ea,el]=(0,a.useState)("loading"),[es,ei]=(0,a.useState)(null),[eo,ec]=(0,a.useState)(null),eu=(0,a.useRef)(!1),em=null!=(r=null==es?void 0:es.id)?r:null,ep=es?(0,ey.x3)(es):null,[eb,ef]=(0,a.useState)("raw"),[ek,ez]=(0,a.useState)(new Map),[eP,eU]=(0,a.useState)(new Map),[eM,eD]=(0,a.useState)({status:"unrequested"}),eL=(0,a.useRef)(0),e$=(0,a.useRef)(0);(0,a.useEffect)(()=>{if("terminal"!==W&&"pty-list"!==W)return;let e=!1;el("loading");let t=setTimeout(()=>{(async()=>{try{let[t,r]=await Promise.all([o.listTerminals((0,ey.tC)(Z)),o.listProgressFrames().catch(e=>((0,y.cY)("webterm.pty-list.progress.error",{reason:String(e)}),null))]);if(e)return;X((0,ey.xu)(t.terminals)),et(t.scope),en(r?(0,ey.gA)(r.logs):new Map),el("idle")}catch(t){if(e)return;X([]),et(void 0),en(new Map),el("error"),(0,y.cY)("webterm.pty-list.error",{reason:String(t)})}})()},"terminal"!==W||s?0:1200);return()=>{e=!0,clearTimeout(t)}},[o,Z,W,s]),(0,a.useEffect)(()=>{null===ep||J.some(e=>(0,ey.x3)(e)===ep)||(eL.current+=1,e$.current+=1,ei(null),eD({status:"unrequested"}))},[J,ep]);let eF=(0,a.useCallback)((e,t)=>{let{id:r}=e,n=(0,ey.x3)(e),a=++eL.current;if("raw"===t){ez(e=>new Map(e).set(n,{status:"loading"})),o.fetchTerminalScrollback(e.id,100,eY(e)).then(e=>{eL.current===a&&e.id===r&&ez(t=>new Map(t).set(n,{status:"ready",scrollback:e.scrollback}))}).catch(e=>{eL.current===a&&(ez(e=>new Map(e).set(n,{status:"error"})),(0,y.cY)("webterm.pty-list.scrollback.error",{id:r,reason:String(e)}))});return}eU(e=>new Map(e).set(n,{status:"loading"})),o.fetchTerminalFrame(e.id,eY(e)).then(e=>{eL.current===a&&e.id===r&&eU(t=>new Map(t).set(n,{status:"ready",frame:e.frame,frameAt:e.frameAt,frameSource:e.frameSource}))}).catch(e=>{eL.current===a&&(eU(e=>new Map(e).set(n,{status:"error"})),(0,y.cY)("webterm.pty-list.frame.error",{id:r,reason:String(e)}))})},[o]),eQ=(0,a.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],{id:r}=e;if(t&&(T(!1),A(e),null==i||i(e)),ep===(0,ey.x3)(e))return;let n=++e$.current;ei(e),eD({status:"loading"}),eF(e,eb),o.fetchTerminalLineage(r).then(e=>{e$.current===n&&e.key===r&&eD({status:"ready",lineage:e})}).catch(e=>{e$.current===n&&(eD({status:"error"}),(0,y.cY)("webterm.pty-list.lineage.error",{id:r,reason:String(e)}))})},[o,i,eb,eF,ep]);(0,a.useEffect)(()=>{if(eu.current||"loading"===ea||(eu.current=!0,!s))return;if("error"===ea){ec({kind:"list-unavailable"}),q("pty-list"),(0,y.cY)("webterm.initial-pty-selection",{ptyId:s,kind:"list-unavailable",reason:"pty-list-error"});return}let e=(0,ey.hH)(s,J);ec(e),"selected"!==e.kind&&q("pty-list"),(0,y.cY)("webterm.initial-pty-selection",{ptyId:s,kind:e.kind,reason:e.reason}),"selected"===e.kind&&(eQ(e.terminal),A(e.terminal))},[eQ,s,ea,J]);let eO=(0,a.useCallback)(e=>{e!==eb&&(ef(e),es&&eF(es,e))},[eb,eF,es]),eH=(0,a.useCallback)(async e=>{var t;let r=window.prompt("새 PTY 이름을 입력하세요.",null!=(t=e.nickname)?t:"");if(null!==r)try{let t=await o.renameTerminal(e.id,r),n=function(e){switch(e.status){case"success":return"PTY 이름을 '".concat(e.name,"'(으)로 바꿨습니다.");case"invalid-name":return"이 이름은 사용할 수 없습니다. 다른 이름을 입력해 주세요.";case"unknown-pty":return"이 PTY를 찾을 수 없습니다. 목록을 새로고침한 뒤 다시 시도해 주세요.";case"denied":return"이 PTY의 이름을 바꿀 권한이 없습니다.";case"failed":return"PTY 이름 변경에 실패했습니다. 잠시 후 다시 시도해 주세요.";case"owner-unreachable":return"PTY 소유 프로세스에 연결할 수 없어 이름을 바꾸지 못했습니다.";default:return e}}(t);"success"===t.status?l.oR.success(n):l.oR.error(n)}catch(e){l.oR.error("PTY 이름 변경 요청에 실패했습니다: ".concat(String(e)))}},[o]),e_=(0,a.useMemo)(()=>(0,ey.lH)(Z,J,ee,ep,ek,eb,eP),[eP,Z,J,ee,eb,ek,ep]),eB=(0,a.useMemo)(()=>(0,ey.Kh)(em,eM),[eM,em]),eW=(0,a.useMemo)(()=>(function(e,t){let r=t.trim();return r?{layouts:e.layouts.filter(e=>{let{slots:t}=e;return t.some(e=>e.terminalId===r)}).map(e=>({runId:e.runId,slots:e.slots.map(e=>({...e}))})),unknown:e.unknown.map(e=>({...e}))}:{layouts:[],unknown:e.unknown.map(e=>({...e}))}})(null===E&&(null===s||I)?eC(eS(J)):eC(eS(J.filter(e=>{var t;return e.id!==(null!=(t=null==E?void 0:E.id)?t:s)&&N.includes(e.id)}))),null!=h?h:""),[J,N,E,I,s,h]);(0,a.useEffect)(()=>{if(O.current||s||"loading"===ea)return;if(0===J.length){_.current||(_.current=!0,(0,y.cY)("webterm.initial-selection",{skipped:!0,reason:"no-terminals",listState:ea}));return}O.current=!0;let e=(0,ey.Dw)({storedId:null,fallbackId:h,terminals:J});(0,y.cY)("webterm.initial-selection",{terminalId:e.terminalId,reason:e.reason,rowCount:J.length}),e.terminalId!==h&&x(e.terminalId)},[J,ea]);let[eq,eK]=(0,a.useState)(0),[eV,eZ]=(0,a.useState)(!1),[eG,eJ]=(0,a.useState)(!0),[eX,e0]=(0,a.useState)(!1),[e1,e2]=(0,a.useState)(0),[e5,e3]=(0,a.useState)(null),e7=(0,a.useCallback)(e=>{e3({intent:e,nonce:Date.now()})},[]),e4=(0,a.useRef)(null),[e8,e9]=(0,a.useState)("none"),e6=(0,a.useRef)(e8);e6.current=e8;let te=(0,a.useRef)(h);te.current=h;let tt=(0,a.useCallback)(e=>{let t=e.trim();if(!t)return;let r=e6.current;if("controls"===r){let e=te.current;if(!e)return;if(!(0,P.WP)(e,t+" ")){(0,y.cY)("webterm.voice.stdin-inject-failed",{len:t.length,terminalId:e,reason:"no-sender"}),l.oR.error("터미널 입력 전송 실패 — 터미널 연결을 확인하고 다시 말해 주세요.");return}(0,y.cY)("webterm.voice.stdin-inject",{len:t.length,terminalId:e})}else if("dock"===r){var n;null==(n=e4.current)||n.submitVoiceTranscript(t)}else(0,y.cY)("webterm.voice.transcript-no-source",{len:t.length})},[]),tr=o.voiceWsUrl(),tn=(0,ev.sS)({wsUrl:tr,...c.token?{token:c.token}:{},onTranscript:tt}),ta=(0,a.useMemo)(()=>eh(),[]),tl=!c.baseUrl||!ta.isSecure,ts=(0,a.useCallback)(()=>{tn.active&&"dock"===e8?(e9("none"),tn.toggle()):(e9("dock"),tn.active||tn.toggle())},[tn,e8]),ti=(0,a.useCallback)(()=>{tn.active&&"controls"===e8?(e9("none"),tn.toggle()):(e9("controls"),tn.active||tn.toggle())},[tn,e8]),to=(0,a.useMemo)(()=>({active:tn.active&&"dock"===e8,phase:tn.phase,dotColor:ew.x[tn.phase],phaseLabel:ew.g[tn.phase],disabled:tl,onToggle:ts}),[tn.active,tn.phase,e8,tl,ts]),tc=(0,a.useMemo)(()=>({active:tn.active&&"controls"===e8,phase:tn.phase,dotColor:ew.x[tn.phase],phaseLabel:ew.g[tn.phase],disabled:tl,onToggle:ti}),[tn.active,tn.phase,e8,tl,ti]),td=(0,a.useRef)(ts);td.current=ts,(0,a.useEffect)(()=>{let e=e=>{"m"===e.key.toLowerCase()&&e.shiftKey&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),(0,y.cY)("webterm.voice.shortcut.toggle"),eJ(!0),td.current())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),(0,a.useEffect)(()=>{let e=window.localStorage.getItem(eT);e&&e.length>0&&(!s||e!==s)&&(x(e),O.current=!0),"1"===window.localStorage.getItem(eE)&&eZ(!0),"0"===window.localStorage.getItem(eA)&&eJ(!1)},[]);let tu=(0,a.useCallback)(async e=>{if(!u||!h||0===e.length)return;let t=e.map(e=>e.path).filter(e=>"string"==typeof e&&e.length>0);if(0===t.length)return void(0,y.cY)("webterm.attach.no-path",{count:e.length});let r=await eg({terminalId:h,paths:t});if(r.injected){let e=1===t.length?"터미널에 path 첨부됨":"".concat(t.length," paths 터미널에 첨부됨"),n=r.copied?" \xb7 clipboard 도 복사":"";l.oR.success(e+n)}else l.oR.error("터미널 inject 실패 — 직접 paste 해주세요")},[o,u,h]),tm=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button","aria-pressed":K.buttons[0].selected,onClick:()=>{A(null),T(!0),V("terminal")},className:"rounded px-2 py-1 text-xs ".concat(K.buttons[0].selected?"bg-emerald-700 text-white":"bg-zinc-800 text-zinc-300 hover:bg-zinc-700"),children:"터미널"}),(0,n.jsxs)("button",{type:"button","aria-pressed":K.buttons[1].selected,onClick:()=>{A(null),T(!0),V("observe")},className:"rounded px-2 py-1 text-xs ".concat(K.buttons[1].selected?"bg-emerald-700 text-white":"bg-zinc-800 text-zinc-300 hover:bg-zinc-700"),title:"자기신고하는 elanous 대시보드 TUI 를 라이브로 관측(읽기 전용)",children:["\uD83D\uDDA5 TUI 관측 ",K.buttons[1].selected?"ON":"OFF"]}),(0,n.jsx)("button",{type:"button","aria-pressed":K.buttons[2].selected,onClick:()=>{A(null),T(!0),V("pty-list")},className:"rounded px-2 py-1 text-xs ".concat(K.buttons[2].selected?"bg-emerald-700 text-white":"bg-zinc-800 text-zinc-300 hover:bg-zinc-700"),children:"PTY 목록"}),(0,n.jsx)("button",{type:"button","aria-pressed":null!==Y,onClick:()=>R(e=>null===e?[]:null),className:"rounded px-2 py-1 text-xs ".concat(null!==Y?"bg-emerald-700 text-white":"bg-zinc-800 text-zinc-300 hover:bg-zinc-700"),"data-elanous-action":"pty-wall",children:"▦ 나란히"})]}),tp=h&&(0,n.jsx)(z,{terminalId:h,onClear:()=>j(e=>{var t;return{...e,[h]:(null!=(t=e[h])?t:0)+1}}),onRecordingChange:e0,onAttached:tu,voice:tc,variant:p?"sheet":"default"});return(0,n.jsxs)("div",{className:"flex h-full flex-col",children:[(0,n.jsx)(f.ZO,{variant:p?"sheet":"default",renderSheet:e=>{let{tabs:t,status:r,onSwitch:a,onAdd:l,actions:s}=e;return(0,n.jsxs)(g,{activeId:h,tabs:t,status:r,onSwitch:a,onAdd:l,actions:s,children:[tm,tp]})},activeId:h,onActiveChange:e=>{x(e),window.localStorage.setItem(eT,e),A(null),T(!0),q("terminal")},onInitialTerminalState:F,minimized:eV,onToggleMinimize:()=>{eZ(e=>{let t=!e;return window.localStorage.setItem(eE,t?"1":"0"),t})},recording:eX,peerCount:e1,chatDockOpen:eG,onToggleChatDock:()=>{if(eV){eZ(!1),window.localStorage.setItem(eE,"0"),eJ(!0),window.localStorage.setItem(eA,"1");return}eJ(e=>{let t=!e;return window.localStorage.setItem(eA,t?"1":"0"),requestAnimationFrame(()=>{window.dispatchEvent(new Event("resize"))}),t})},tabIntent:e5,onTabsChange:C,suspendInitialSpawn:!!s&&!I}),$.fallbackBanner&&(0,n.jsx)("p",{className:"border-b border-amber-700/50 bg-amber-950/30 px-3 py-1 text-xs text-amber-200",role:"status",children:$.fallbackBanner}),(0,n.jsx)(ex,{}),!p&&(0,n.jsx)("div",{className:eV?"hidden":"flex items-center gap-2 border-b border-zinc-800 px-3 py-1",children:tm}),h?(0,n.jsxs)("div",{className:eV||"terminal"!==W||null!==E||s&&!I?"hidden":"contents",children:[p?(0,n.jsx)("div",{className:"hidden",children:(0,n.jsx)(H,{foreignActivityTick:eq,onPeerCountChange:e2})}):(0,n.jsx)(H,{foreignActivityTick:eq,onPeerCountChange:e2}),!p&&tp,m&&(0,n.jsx)(Q,{terminalId:h}),(0,n.jsx)(B,{onAttached:tu})]}):null,(0,n.jsxs)("div",{className:"relative flex-1 min-h-0",children:[null!==Y&&(0,n.jsx)("div",{className:U?"fixed inset-0 z-50":"absolute inset-0 z-20","data-pty-wall-stage":U?"1":void 0,children:(0,n.jsx)(b,{rows:J,client:o,initial:Y,stage:U,onClose:()=>{R(null);let e=new URLSearchParams(window.location.search);e.delete("wall"),window.history.replaceState(null,"","".concat(window.location.pathname).concat(e.toString()?"?".concat(e):""))}})}),(0,n.jsx)(eR,{layout:eW,sessionId:u,terminalIds:N.filter(e=>e!==(null==E?void 0:E.id)&&(I||e!==s)),activeId:h&&(h===(null==E?void 0:E.id)||!I&&h===s)?null:h,clearRequests:k,visible:null!==h&&"terminal"===W&&null===E&&(!s||I),onForeignInputActivity:()=>eK(e=>e+1)}),E&&(0,n.jsx)(d,{terminal:E,client:o,onClose:()=>{T(!0),A(null),V("terminal")}},(0,ey.x3)(E)),E||"terminal"!==W||h&&(!s||I)?E?null:"pty-list"===W?(0,n.jsxs)("div",{className:"h-full overflow-auto p-3","aria-label":"데몬 PTY 목록",children:[(0,n.jsxs)("label",{className:"mb-3 flex items-center gap-2 text-sm",children:[(0,n.jsx)("input",{type:"checkbox",checked:e_.includeAll,onChange:e=>G(e.target.checked)}),"다른 인스턴스도 보기"]}),e_.scopeSummary&&(0,n.jsx)("p",{className:"mb-3 text-xs text-muted-foreground","aria-label":"PTY 목록 범위 요약",children:e_.scopeSummary}),(null==eo?void 0:eo.kind)==="ambiguous"&&(0,n.jsxs)("p",{className:"mb-3 text-xs text-amber-500",role:"status","aria-label":"URL PTY 선택 상태",children:["주소의 PTY ",s,"가 ",eo.candidates.length,"개 행과 맞아 선택하지 않았습니다."]}),(null==eo?void 0:eo.kind)==="list-unavailable"&&(0,n.jsxs)("p",{className:"mb-3 text-xs text-rose-500",role:"status","aria-label":"URL PTY 선택 상태",children:["PTY 목록을 읽지 못해 주소의 PTY ",s,"를 확인할 수 없습니다. 목록이 비었다는 뜻이 \xab아닙니다\xbb."]}),(null==eo?void 0:eo.kind)==="not-found"&&(0,n.jsxs)("p",{className:"mb-3 text-xs text-rose-500",role:"status","aria-label":"URL PTY 선택 상태",children:["주소의 PTY ",s,"를 찾지 못했습니다 (",eo.reason,")."]}),(null==(t=e_.rows.find(e=>e.view))||null==(e=t.view)?void 0:e.visible)&&(0,n.jsx)("div",{className:"mb-3 flex gap-2","aria-label":"PTY 화면 보기",children:e_.rows.find(e=>e.view).view.modes.map(e=>(0,n.jsx)("button",{type:"button","aria-pressed":e.selected,onClick:()=>eO(e.mode),className:"rounded px-2 py-1 text-xs ".concat(e.selected?"bg-emerald-700 text-white":"bg-zinc-800 text-zinc-300 hover:bg-zinc-700"),children:e.label},e.mode))}),"loading"===ea?(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"PTY 목록을 불러오는 중…"}):"error"===ea?(0,n.jsx)("p",{className:"text-sm text-rose-500",children:"PTY 목록을 불러오지 못했습니다."}):0===J.length?(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"데몬이 아는 PTY가 없습니다."}):(0,n.jsx)("ul",{className:"space-y-2",children:e_.rows.map(e=>{let{terminal:t}=e,r=function(e){var t,r,n;let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),l=e.name||e.id,s=function(e,t,r){let n=[e,t].filter(Boolean).join("/")||r;if(!n||!e||n.length<=32)return n&&ej(n);if(!t)return e.length<=32?e:"…".concat(e.slice(-31));let a=32-e.length-2;return a<=0?e.length<=32?e:"…".concat(e.slice(-31)):"".concat(e,"/…").concat(t.slice(-a))}(e.treeName,e.worktreeName,e.workdir),i=function(e){var t;if(!(null==e?void 0:e.name)&&!(null==e?void 0:e.dbPath))return null;let r=[e.name&&ej(e.name),e.dbPath&&((t=e.dbPath).length<=32?t:"".concat(t.slice(0,31),"…"))].filter(e=>!!e);return"세션: ".concat(r.join(" \xb7 "))}(e.sourceRoot),o=eN(e.startedAt,a),c=void 0===e.lastControlAt?null:eN(e.lastControlAt,a);return{title:l,details:[...l===e.id?[]:[e.id],...e.status?["상태: ".concat(e.status)]:[],...e.kind?["종류: ".concat(e.kind)]:[],...e.nickname?["별명: ".concat(ej(e.nickname))]:[],...s?["위치: ".concat(s)]:[],e.alive?"생존: 실행 중":0===e.exitCode?"종료: 정상 종료 (exit 0)":"number"==typeof e.exitCode?"종료: 비정상 종료 (exit ".concat(e.exitCode,")"):"종료: 종료 코드 미상",function(e){if("direct-human"===e.terminalOriginCategory)return"출처: 사람";if("elanous"===e.terminalOriginCategory)return"출처: elanous";if("external-tool"===e.terminalOriginCategory)return e.externalToolName?"출처: 외부 도구 \xb7 ".concat(ej(e.externalToolName)):"출처: 외부 도구";let t=e.terminalOriginReason?" \xb7 ".concat(ej(e.terminalOriginReason)):"";return"출처: 이 행에서는 알 수 없음".concat(t)}(e),...e.controller?["통제: ".concat(ej(e.controller))]:[],"write"===(t=e.accessMode)?"접근: 쓰기":"read"===t?"접근: 읽기":"auto"===t?"접근: 자동":"접근: 이 행에서는 알 수 없음","running"===(r=e.ownerRunUsage)?"소유 런: 실행 중":"terminated-live-owner"===r?"소유 런: 종료됐지만 터미널 유지":"no-run-id"===r?"소유 런: 소유 런 정보 없음":"소유 런: 이 행에서는 알 수 없음",...e.instance?["우주: ".concat(ej(e.instance))]:[],...e.runId?["런: ".concat((n=e.runId).length<=8?n:"".concat(n.slice(0,8),"…"))]:[],...i?[i]:[],...o?["시작: ".concat(o)]:[],"마지막 제어: ".concat(null!=c?c:"이 행에서는 알 수 없음")]}}(t),a=er.get(t.id);return(0,n.jsxs)("li",{className:"rounded border p-2 text-sm ".concat(e.selected?"border-emerald-500":"border-border"),children:[(0,n.jsxs)("button",{type:"button",className:"w-full text-left","aria-pressed":e.selected,onClick:()=>eQ(t,!0),children:[(0,n.jsx)("p",{className:"font-medium",children:r.title}),r.details.map((e,r)=>(0,n.jsx)("p",{className:0===r?"font-mono text-xs text-muted-foreground":"text-xs text-muted-foreground",children:e},"".concat(t.id,"-").concat(e))),a&&(0,n.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground","aria-label":"현재 활동: ".concat("complete"===a.status?"완료":"진행 중"),children:["complete"===a.status?"완료":"진행 중",": ",a.line,a.hasMissingFrames?" \xb7 일부 진행 프레임 누락":""]})]}),(0,n.jsx)("button",{type:"button",className:"mt-2 rounded bg-zinc-800 px-2 py-1 text-xs text-zinc-100 hover:bg-zinc-700",onClick:()=>{eH(t)},children:"이름 바꾸기"}),e.selected&&eB&&(0,n.jsxs)("section",{className:"mt-2 rounded bg-zinc-900 p-2 text-xs","aria-label":"선택 PTY 계보",children:[(0,n.jsx)("p",{className:"font-medium",children:"계보"}),"loading"===eB.kind&&(0,n.jsx)("p",{className:"text-muted-foreground",children:"계보를 불러오는 중…"}),"error"===eB.kind&&(0,n.jsx)("p",{className:"text-rose-400",children:"계보를 불러오지 못했습니다."}),"empty"===eB.kind&&(0,n.jsx)("p",{className:"text-muted-foreground",children:"연결된 다른 화면이 없습니다."}),eB.unreadablePayloadsSummary&&(0,n.jsx)("p",{className:"text-muted-foreground",children:eB.unreadablePayloadsSummary}),eB.groups.map(e=>(0,n.jsxs)("div",{className:"mt-2",children:[(0,n.jsxs)("p",{className:"font-mono",children:["묶음: ",e.joinedBy," \xb7 ",e.key]}),(0,n.jsx)("ul",{className:"mt-1 space-y-1",children:e.rows.map(e=>(0,n.jsxs)("li",{className:e.selected?"rounded bg-emerald-900 px-1 text-emerald-100":"",children:[e.selected?"현재 선택 \xb7 ":"",e.ptyId," \xb7 ",e.kind," \xb7 ",e.instance," \xb7 ",(0,ey.cl)(e.alive,e.closed)," \xb7 시작 ",(0,ey.OZ)(e.startedAt)]},e.ptyId))})]},"".concat(e.joinedBy,"-").concat(e.key)))]}),e.view&&(0,n.jsxs)("div",{className:"mt-2",children:[e.view.display.frameInfo&&(0,n.jsx)("p",{className:"mb-1 font-mono text-xs text-muted-foreground","aria-label":"렌더 화면 정보",children:e.view.display.frameInfo}),e.view.display.frameMetadata&&(0,n.jsxs)("p",{className:"mb-1 text-xs text-muted-foreground","aria-label":"렌더 프레임 메타데이터",children:["관측: ",e.view.display.frameMetadata.frameAt," \xb7 출처: ",e.view.display.frameMetadata.frameSource]}),(0,n.jsx)("pre",{className:"whitespace-pre-wrap rounded bg-zinc-950 p-2 text-xs ".concat("error"===e.view.display.kind?"text-rose-400":"text-zinc-100"),children:e.view.display.text})]})]},(0,ey.x3)(t))})})]}):"observe"===W?(0,n.jsx)(S,{sessionId:u},u):null:(0,n.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2 text-sm text-muted-foreground",role:"status","aria-live":"polite",children:[(null==eo?void 0:eo.kind)==="list-unavailable"&&(0,n.jsxs)("p",{className:"text-xs text-rose-500","aria-label":"URL PTY 선택 상태",children:["PTY 목록을 읽지 못해 주소의 PTY ",s,"를 확인할 수 없습니다. 목록이 비었다는 뜻이 \xab아닙니다\xbb."]}),(0,n.jsx)("span",{children:$.placeholder})]})]}),h&&!eV&&"terminal"===W&&!E&&(!s||I)&&(0,n.jsx)(ed,{ref:e4,terminalId:h,open:eG,onTabIntent:e7,voice:to})]})}},91877:(e,t,r)=>{r.d(t,{Ct:()=>m,JW:()=>s,Ok:()=>o,WP:()=>f,WU:()=>b,ho:()=>p,ox:()=>i,oy:()=>h});var n=r(54111);let a=new Map,l=new Set;function s(e,t){let r={view:t};return a.set(e,r),l.forEach(e=>e()),()=>{a.get(e)===r&&(a.delete(e),l.forEach(e=>e()))}}function i(e){var t,r;return null!=(r=null==(t=a.get(e))?void 0:t.view)?r:null}function o(e){return l.add(e),()=>{l.delete(e)}}let c=new Map,d=new Map,u=new Map;function m(e,t){t.ctrl||t.alt?d.set(e,{ctrl:t.ctrl,alt:t.alt}):d.delete(e)}function p(e){var t,r;let n=null!=(t=d.get(e))?t:null;return n&&(d.delete(e),null==(r=u.get(e))||r.forEach(e=>e())),n}function h(e,t){let r=u.get(e);return r||(r=new Set,u.set(e,r)),r.add(t),()=>{r.delete(t),0===r.size&&u.get(e)===r&&u.delete(e)}}function b(e,t){let r={sender:t};return c.set(e,r),()=>{c.get(e)===r&&c.delete(e)}}function f(e,t){let r=c.get(e);return r?(r.sender(t),!0):((0,n.cY)("webterm.input.no-sender",{terminalId:e,bytes:new TextEncoder().encode(t).length}),!1)}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6466],{16102:(e,t,l)=>{l.d(t,{p:()=>s});var a=l(59473);l(24725);var r=l(79686),i=l(63741);function s(e){let{className:t,type:l,...s}=e;return(0,a.jsx)(r.p,{type:l,"data-slot":"input",className:(0,i.cn)("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",t),...s})}},25407:(e,t,l)=>{l.d(t,{lN:()=>h});var a=l(59473),r=l(24725),i=l(1102),s=l(16102),n=l(10410),d=l(3031);let c=[{value:"decompose",label:"쪼개기"},{value:"wait-reset",label:"리셋까지 기다리기"},{value:"next-provider",label:"다음 프로바이더"},{value:"proceed",label:"그대로 진행"}];function o(e){return{mode:e.resolved.mode,chain:e.resolved.chain.map(e=>({...e})),minHeadroomPercent:String(e.resolved.budgetGate.minHeadroomPercent),onShortfall:e.resolved.budgetGate.onShortfall}}function u(e,t,l){let a=t+l;if(a<0||a>=e.length)return e;let r=e.slice(),[i]=r.splice(t,1);return r.splice(a,0,i),r}function m(e){if(e instanceof d.Iu&&e.body&&"object"==typeof e.body){var t,l;let a=e.body;return null!=(l=null!=(t=a.reason)?t:a.error)?l:e.message}return e instanceof Error?e.message:String(e)}function h(){var e,t;let l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},d=(0,n.Qj)(),h=null!=(e=l.client)?e:d,[x,f]=(0,r.useState)(!!l.initialDraft),[p,b]=(0,r.useState)([]),[v,g]=(0,r.useState)(null!=(t=l.initialDraft)?t:null),[j,y]=(0,r.useState)(!l.initialDraft),[N,k]=(0,r.useState)(!1),[S,w]=(0,r.useState)(""),[C,P]=(0,r.useState)("");(0,r.useEffect)(()=>{f(!0)},[]);let E=(0,r.useCallback)(async()=>{if(h){y(!0);try{let e=await h.getChildLlmPreference();b(e.providers),g(o(e)),P("")}catch(e){P(m(e))}finally{y(!1)}}},[h]);(0,r.useEffect)(()=>{x&&h&&E()},[x,h,E]);let z=async()=>{if(!h||!v)return;k(!0),w(""),P("");let e=Number(v.minHeadroomPercent);try{let t=await h.setChildLlmPreference({mode:v.mode,chain:v.chain.map(e=>{var t;return{provider:e.provider.trim(),...(null==(t=e.model)?void 0:t.trim())?{model:e.model.trim()}:{}}}).filter(e=>e.provider),budgetGate:{...Number.isFinite(e)?{minHeadroomPercent:e}:{},onShortfall:v.onShortfall}});g(o({resolved:t.resolved,providers:p})),w("저장했습니다.")}catch(e){P(m(e))}finally{k(!1)}};if(!x||!h||!v)return(0,a.jsxs)("section",{className:"space-y-2 rounded border border-border bg-card p-4","data-testid":"child-llm-preference-card",children:[C&&(0,a.jsx)("p",{role:"alert",className:"text-xs text-destructive","data-testid":"child-llm-error",children:C}),j&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"불러오는 중…"})]});let H=v.chain.length>1,$=p.length>0?p:["grok"];return(0,a.jsxs)("section",{className:"space-y-4 rounded border border-border bg-card p-4","data-testid":"child-llm-preference-card",children:[(0,a.jsxs)("header",{children:[(0,a.jsx)("h2",{className:"text-sm font-semibold",children:"자식 LLM 선호"}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"구현에 쓸 모델 순서와, 예산이 모자랄 때의 행동."})]}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("label",{htmlFor:"child-llm-mode",className:"text-sm font-medium",children:"모드"}),(0,a.jsxs)("select",{id:"child-llm-mode","data-testid":"child-llm-mode",value:v.mode,onChange:e=>g({...v,mode:e.target.value}),className:"flex h-9 w-full rounded-md border border-input bg-background px-3 text-sm",children:[(0,a.jsx)("option",{value:"pinned",children:"고정"}),(0,a.jsx)("option",{value:"auto",children:"자동"})]})]}),"auto"===v.mode&&(0,a.jsxs)("div",{className:"space-y-2","data-testid":"child-llm-chain",children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:"순서"}),v.chain.map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center gap-2","data-testid":"child-llm-chain-row",children:[(0,a.jsx)("select",{"aria-label":"프로바이더 ".concat(t+1),value:e.provider,onChange:l=>{let a=v.chain.slice();a[t]={...e,provider:l.target.value},g({...v,chain:a})},className:"flex h-9 flex-1 rounded-md border border-input bg-background px-3 text-sm",children:$.map(e=>(0,a.jsx)("option",{value:e,children:e},e))}),H&&(0,a.jsxs)("span",{className:"flex gap-1","data-testid":"child-llm-order",children:[(0,a.jsx)(i.$,{type:"button",size:"sm",variant:"outline","aria-label":"".concat(t+1," 위로"),disabled:0===t,onClick:()=>g({...v,chain:u(v.chain,t,-1)}),children:"위"}),(0,a.jsx)(i.$,{type:"button",size:"sm",variant:"outline","aria-label":"".concat(t+1," 아래로"),disabled:t===v.chain.length-1,onClick:()=>g({...v,chain:u(v.chain,t,1)}),children:"아래"})]}),(0,a.jsx)(i.$,{type:"button",size:"sm",variant:"outline","aria-label":"".concat(t+1," 빼기"),onClick:()=>g({...v,chain:v.chain.filter((e,l)=>l!==t)}),children:"빼기"})]},"".concat(e.provider,"-").concat(t))),(0,a.jsx)(i.$,{type:"button",size:"sm",variant:"outline","data-testid":"child-llm-add",onClick:()=>{var e;return g({...v,chain:[...v.chain,{provider:null!=(e=$[0])?e:"grok"}]})},children:"추가"})]}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("label",{htmlFor:"child-llm-headroom",className:"text-sm font-medium",children:"예산 여유 %"}),(0,a.jsx)(s.p,{id:"child-llm-headroom","data-testid":"child-llm-headroom",inputMode:"numeric",value:v.minHeadroomPercent,onChange:e=>g({...v,minHeadroomPercent:e.target.value})})]}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("label",{htmlFor:"child-llm-shortfall",className:"text-sm font-medium",children:"모자랄 때"}),(0,a.jsx)("select",{id:"child-llm-shortfall","data-testid":"child-llm-shortfall",value:v.onShortfall,onChange:e=>g({...v,onShortfall:e.target.value}),className:"flex h-9 w-full rounded-md border border-input bg-background px-3 text-sm",children:c.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))})]}),(0,a.jsx)(i.$,{type:"button",size:"sm","data-testid":"child-llm-save",onClick:()=>void z(),disabled:N,children:"저장"}),S&&(0,a.jsx)("p",{role:"status",className:"text-xs","data-testid":"child-llm-saved",children:S}),C&&(0,a.jsx)("p",{role:"alert",className:"text-xs text-destructive","data-testid":"child-llm-error",children:C})]})}},37120:(e,t,l)=>{l.d(t,{Q:()=>c});var a=l(59473),r=l(24725),i=l(1102),s=l(10410),n=l(3031);function d(e){if(e instanceof n.Iu&&e.body&&"object"==typeof e.body){var t,l;let a=e.body;return null!=(l=null!=(t=a.reason)?t:a.error)?l:e.message}return e instanceof Error?e.message:String(e)}function c(){var e,t;let{client:l}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=(0,s.Qj)(),c=null!=l?l:n,[o,u]=(0,r.useState)(null),[m,h]=(0,r.useState)(null),[x,f]=(0,r.useState)(!1),[p,b]=(0,r.useState)(""),[v,g]=(0,r.useState)(!1),j=(0,r.useCallback)(async()=>{if(c)try{let e=await c.getAnswerPriority();u(e),h(e.effective),b("")}catch(e){b(d(e))}},[c]);(0,r.useEffect)(()=>{j()},[j]);let y=async()=>{if(c&&m){f(!0),g(!1),b("");try{let e=await c.setAnswerPriority(m);u(t=>t&&{...t,value:e.value,effective:e.value}),g(!0)}catch(e){b(d(e))}finally{f(!1)}}};return(0,a.jsxs)("section",{className:"space-y-4 rounded border border-border bg-card p-4","data-testid":"answer-depth-card",children:[(0,a.jsxs)("header",{children:[(0,a.jsx)("h2",{className:"text-sm font-semibold",children:"답변 깊이"}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"한 번 답할 때 도구를 얼마나 깊게 사용할지 선택하세요."})]}),o&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("fieldset",{className:"space-y-2",children:[(0,a.jsxs)("legend",{className:"text-sm font-medium",children:["현재 값: ",null!=(t=null==(e=o.choices.find(e=>e.value===o.effective))?void 0:e.label)?t:o.effective]}),o.choices.map(e=>(0,a.jsxs)("label",{className:"flex cursor-pointer items-start gap-2 text-sm",children:[(0,a.jsx)("input",{type:"radio",name:"answer-depth",value:e.value,checked:m===e.value,onChange:()=>{h(e.value),g(!1)}}),(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"font-medium",children:e.label}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e.description})]})]},e.value))]}),(0,a.jsx)(i.$,{type:"button",size:"sm",onClick:()=>void y(),disabled:x||!m,children:"저장"}),v&&(0,a.jsx)("p",{role:"status",className:"text-xs",children:"저장했습니다."})]}),p&&(0,a.jsx)("p",{role:"alert",className:"text-xs text-destructive",children:p})]})}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6566],{96566:(e,t,r)=>{r.r(t),r.d(t,{applyDagreLayoutResult:()=>rQ,getEdgesToRender:()=>rz,measureDagreLayout:()=>r2,prepareLayoutForDagre:()=>r1,render:()=>r5,runDagreLayoutCore:()=>r3});var n,o=r(79789),a=r(17634),i=r(68355),u=r(24861),d=r(92763);r(70208),r(21521),r(66357),r(29346),r(33492);var c=r(1372),s=r(32298),f=r(62108),l=r(6149),g=r(42539),h=0;let p=function(e){var t=++h;return(0,g.A)(e)+t};var v=r(77889),y=r(42905);let b=function(e){return(null==e?0:e.length)?(0,y.A)(e,1):[]};var A=r(65379),w=r(55557),m=r(14022),x=r(92705);let E=function(e,t){var r=-1,n=(0,x.A)(e)?Array(e.length):[];return(0,m.A)(e,function(e,o,a){n[++r]=t(e,o,a)}),n};var j=r(3014);let L=function(e,t){return((0,j.A)(e)?A.A:E)(e,(0,w.A)(t,3))};var k=Math.ceil,O=Math.max;let R=function(e,t,r,n){for(var o=-1,a=O(k((t-e)/(r||1)),0),i=Array(a);a--;)i[n?a:++o]=e,e+=r;return i};var N=r(25583),P=r(3642),_=r(12102);let C=function(e,t,r){if(!(0,_.A)(r))return!1;var n=typeof t;return("number"==n?!!((0,x.A)(r)&&(0,P.A)(t,r.length)):"string"==n&&t in r)&&(0,N.A)(r[t],e)};var S=/\s/;let M=function(e){for(var t=e.length;t--&&S.test(e.charAt(t)););return t};var X=/^\s+/,D=r(40585),T=0/0,I=/^[-+]0x[0-9a-f]+$/i,B=/^0b[01]+$/i,K=/^0o[0-7]+$/i,G=parseInt;let F=function(e){if("number"==typeof e)return e;if((0,D.A)(e))return T;if((0,_.A)(e)){var t,r="function"==typeof e.valueOf?e.valueOf():e;e=(0,_.A)(r)?r+"":r}if("string"!=typeof e)return 0===e?e:+e;e=(t=e)?t.slice(0,M(t)+1).replace(X,""):t;var n=B.test(e);return n||K.test(e)?G(e.slice(2),n?2:8):I.test(e)?T:+e};var U=1/0;let q=function(e){return e?(e=F(e))===U||e===-U?(e<0?-1:1)*17976931348623157e292:e==e?e:0:0===e?e:0},J=function(e,t,r){return r&&"number"!=typeof r&&C(e,t,r)&&(t=r=void 0),e=q(e),void 0===t?(t=e,e=0):t=q(t),r=void 0===r?e<t?1:-1:q(r),R(e,t,r,void 0)};var z=r(61574);class V{constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,t=e._prev;if(t!==e)return Y(t),t}enqueue(e){var t=this._sentinel;e._prev&&e._next&&Y(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t}toString(){for(var e=[],t=this._sentinel,r=t._prev;r!==t;)e.push(JSON.stringify(r,$)),r=r._prev;return"["+e.join(", ")+"]"}}function Y(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function $(e,t){if("_next"!==e&&"_prev"!==e)return t}var H=v.A(1);function W(e,t,r,n,o){var a=o?[]:void 0;return l.A(e.inEdges(n.v),function(n){var i=e.edge(n),u=e.node(n.v);o&&a.push({v:n.v,w:n.w}),u.out-=i,Q(t,r,u)}),l.A(e.outEdges(n.v),function(n){var o=e.edge(n),a=n.w,i=e.node(a);i.in-=o,Q(t,r,i)}),e.removeNode(n.v),a}function Q(e,t,r){r.out?r.in?e[r.out-r.in+t].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}var Z=r(40898),ee=r(14852);let et=function(e,t,r){"__proto__"==t&&ee.A?(0,ee.A)(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r},er=function(e,t,r){(void 0===r||(0,N.A)(e[t],r))&&(void 0!==r||t in e)||et(e,t,r)};var en=r(2599),eo=r(89382),ea="object"==typeof exports&&exports&&!exports.nodeType&&exports,ei=ea&&"object"==typeof module&&module&&!module.nodeType&&module,eu=ei&&ei.exports===ea?eo.A.Buffer:void 0,ed=eu?eu.allocUnsafe:void 0;let ec=function(e,t){if(t)return e.slice();var r=e.length,n=ed?ed(r):new e.constructor(r);return e.copy(n),n};var es=r(50663);let ef=function(e){var t=new e.constructor(e.byteLength);return new es.A(t).set(new es.A(e)),t},el=function(e,t){var r=t?ef(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)},eg=function(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t};var eh=Object.create,ep=function(){function e(){}return function(t){if(!(0,_.A)(t))return{};if(eh)return eh(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}(),ev=(0,r(26748).A)(Object.getPrototypeOf,Object),ey=r(89288);let eb=function(e){return"function"!=typeof e.constructor||(0,ey.A)(e)?{}:ep(ev(e))};var eA=r(82005),ew=r(24110),em=r(68462),ex=r(84761),eE=r(36644),ej=r(37761),eL=Object.prototype,ek=Function.prototype.toString,eO=eL.hasOwnProperty,eR=ek.call(Object);let eN=function(e){if(!(0,ej.A)(e)||"[object Object]"!=(0,eE.A)(e))return!1;var t=ev(e);if(null===t)return!0;var r=eO.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&ek.call(r)==eR};var eP=r(58680);let e_=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]};var eC=Object.prototype.hasOwnProperty;let eS=function(e,t,r){var n=e[t];eC.call(e,t)&&(0,N.A)(n,r)&&(void 0!==r||t in e)||et(e,t,r)},eM=function(e,t,r,n){var o=!r;r||(r={});for(var a=-1,i=t.length;++a<i;){var u=t[a],d=n?n(r[u],e[u],u,r,e):void 0;void 0===d&&(d=e[u]),o?et(r,u,d):eS(r,u,d)}return r};var eX=r(67686);let eD=function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t};var eT=Object.prototype.hasOwnProperty;let eI=function(e){if(!(0,_.A)(e))return eD(e);var t=(0,ey.A)(e),r=[];for(var n in e)"constructor"==n&&(t||!eT.call(e,n))||r.push(n);return r},eB=function(e){return(0,x.A)(e)?(0,eX.A)(e,!0):eI(e)},eK=function(e,t,r,n,o,a,i){var u=e_(e,r),d=e_(t,r),c=i.get(d);if(c)return void er(e,r,c);var s=a?a(u,d,r+"",e,t,i):void 0,f=void 0===s;if(f){var l=(0,j.A)(d),g=!l&&(0,em.A)(d),h=!l&&!g&&(0,eP.A)(d);(s=d,l||g||h)?(0,j.A)(u)?s=u:(0,ew.A)(u)?s=eg(u):g?(f=!1,s=ec(d,!0)):h?(f=!1,s=el(d,!0)):s=[]:eN(d)||(0,eA.A)(d)?(s=u,(0,eA.A)(u))?s=eM(u,eB(u)):(!(0,_.A)(u)||(0,ex.A)(u))&&(s=eb(d)):f=!1}f&&(i.set(d,s),o(s,d,n,a,i),i.delete(d)),er(e,r,s)},eG=function e(t,r,n,o,a){t!==r&&(0,en.A)(r,function(i,u){if(a||(a=new Z.A),(0,_.A)(i))eK(t,r,u,n,e,o,a);else{var d=o?o(e_(t,u),i,u+"",t,r,a):void 0;void 0===d&&(d=i),er(t,u,d)}},eB)};var eF=r(53333),eU=function(e){return(0,eF.A)(function(t,r){var n=-1,o=r.length,a=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(a=e.length>3&&"function"==typeof a?(o--,a):void 0,i&&C(r[0],r[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++n<o;){var u=r[n];u&&e(t,u,n,a)}return t})}(function(e,t,r){eG(e,t,r)}),eq=r(23157),eJ=r(17632),ez=r(83534);let eV=function(e,t,r,n){if(!(0,_.A)(e))return e;t=(0,eJ.A)(t,e);for(var o=-1,a=t.length,i=a-1,u=e;null!=u&&++o<a;){var d=(0,ez.A)(t[o]),c=r;if("__proto__"===d||"constructor"===d||"prototype"===d)break;if(o!=i){var s=u[d];void 0===(c=n?n(s,d,u):void 0)&&(c=(0,_.A)(s)?s:(0,P.A)(t[o+1])?[]:{})}eS(u,d,c),u=u[d]}return e},eY=function(e,t,r){for(var n=-1,o=t.length,a={};++n<o;){var i=t[n],u=(0,eq.A)(e,i);r(u,i)&&eV(a,(0,eJ.A)(i,e),u)}return a};var e$=r(2414),eH=r(70569),eW=r(35032),eQ=function(e){return(0,eW.A)((0,eH.A)(e,void 0,b),e+"")}(function(e,t){return null==e?{}:eY(e,t,function(t,r){return(0,e$.A)(e,r)})}),eZ=Object.prototype,e0=eZ.hasOwnProperty,e1=(0,eF.A)(function(e,t){e=Object(e);var r=-1,n=t.length,o=n>2?t[2]:void 0;for(o&&C(t[0],t[1],o)&&(n=1);++r<n;)for(var a=t[r],i=eB(a),u=-1,d=i.length;++u<d;){var c=i[u],s=e[c];(void 0===s||(0,N.A)(s,eZ[c])&&!e0.call(e,c))&&(e[c]=a[c])}return e});let e2=function(e,t,r){for(var n=-1,o=e.length;++n<o;){var a=e[n],i=t(a);if(null!=i&&(void 0===u?i==i&&!(0,D.A)(i):r(i,u)))var u=i,d=a}return d},e3=function(e,t){return e>t};var e6=r(22443);let e8=function(e){return e&&e.length?e2(e,e6.A,e3):void 0},e5=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};var e4=r(39822);let e9=function(e,t){var r={};return t=(0,w.A)(t,3),(0,e4.A)(e,function(e,n,o){et(r,n,t(e,n,o))}),r};var e7=r(92067);let te=function(e,t){return e<t},tt=function(e){return e&&e.length?e2(e,e6.A,te):void 0};var tr=Object.prototype.hasOwnProperty;let tn=function(e,t){return null!=e&&tr.call(e,t)};var to=r(70509);let ta=function(e,t){return null!=e&&(0,to.A)(e,t,tn)};function ti(e,t,r,n){var o;do o=p(n);while(e.hasNode(o));return r.dummy=t,e.setNode(o,r),o}function tu(e){var t=new z.T({multigraph:e.isMultigraph()}).setGraph(e.graph());return l.A(e.nodes(),function(r){e.children(r).length||t.setNode(r,e.node(r))}),l.A(e.edges(),function(r){t.setEdge(r,e.edge(r))}),t}function td(e,t){var r,n,o=e.x,a=e.y,i=t.x-o,u=t.y-a,d=e.width/2,c=e.height/2;if(!i&&!u)throw Error("Not possible to find intersection inside of the rectangle");return Math.abs(u)*d>Math.abs(i)*c?(u<0&&(c=-c),r=c*i/u,n=c):(i<0&&(d=-d),r=d,n=d*u/i),{x:o+r,y:a+n}}function tc(e){var t=L(J(tf(e)+1),function(){return[]});return l.A(e.nodes(),function(r){var n=e.node(r),o=n.rank;e7.A(o)||(t[o][n.order]=r)}),t}function ts(e,t,r,n){var o={width:0,height:0};return arguments.length>=4&&(o.rank=r,o.order=n),ti(e,"border",o,t)}function tf(e){return e8(L(e.nodes(),function(t){var r=e.node(t).rank;if(!e7.A(r))return r}))}function tl(e,t){return t()}function tg(e,t,r,n,o,a){var i=o[t][a-1],u=ti(e,"border",{width:0,height:0,rank:a,borderType:t},r);o[t][a]=u,e.setParent(u,n),i&&e.setEdge(i,u,{weight:1})}function th(e){l.A(e.nodes(),function(t){tp(e.node(t))}),l.A(e.edges(),function(t){tp(e.edge(t))})}function tp(e){var t=e.width;e.width=e.height,e.height=t}function tv(e){e.y=-e.y}function ty(e){var t=e.x;e.x=e.y,e.y=t}let tb=function(e,t){return e&&e.length?e2(e,(0,w.A)(t,2),te):void 0};function tA(e){var t={};l.A(e.sources(),function r(n){var o=e.node(n);if(Object.prototype.hasOwnProperty.call(t,n))return o.rank;t[n]=!0;var a=tt(L(e.outEdges(n),function(t){return r(t.w)-e.edge(t).minlen}));return(a===1/0||null==a)&&(a=0),o.rank=a})}function tw(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}function tm(e){var t,r,n,o,a=new z.T({directed:!1}),i=e.nodes()[0],u=e.nodeCount();for(a.setNode(i,{});t=a,r=e,l.A(t.nodes(),function e(n){l.A(r.nodeEdges(n),function(o){var a=o.v,i=n===a?o.w:a;t.hasNode(i)||tw(r,o)||(t.setNode(i,{}),t.setEdge(n,i,{}),e(i))})}),t.nodeCount()<u;)n=function(e,t){return tb(t.edges(),function(r){if(e.hasNode(r.v)!==e.hasNode(r.w))return tw(t,r)})}(a,e),o=a.hasNode(n.v)?tw(e,n):-tw(e,n),function(e,t,r){l.A(e.nodes(),function(e){t.node(e).rank+=r})}(a,e,o);return a}var tx=r(63085),tE=r(58200);let tj=function(e){var t=q(e),r=t%1;return t==t?r?t-r:t:0};var tL=Math.max,tk=(n=function(e,t,r){var n=null==e?0:e.length;if(!n)return -1;var o=null==r?0:tj(r);return o<0&&(o=tL(n+o,0)),(0,tE.A)(e,(0,w.A)(t,3),o)},function(e,t,r){var o=Object(e);if(!(0,x.A)(e)){var a=(0,w.A)(t,3);e=(0,tx.A)(e),t=function(e){return a(o[e],e,o)}}var i=n(e,t,r);return i>-1?o[a?e[i]:i]:void 0}),tO=r(30524);v.A(1),v.A(1);var tR=r(62926),tN=r(69837),tP=(0,r(17270).A)("length"),t_=RegExp("[\\u200d\ud800-\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),tC="\ud800-\udfff",tS="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",tM="\ud83c[\udffb-\udfff]",tX="[^"+tC+"]",tD="(?:\ud83c[\udde6-\uddff]){2}",tT="[\ud800-\udbff][\udc00-\udfff]",tI="(?:"+tS+"|"+tM+")?",tB="[\\ufe0e\\ufe0f]?",tK="(?:\\u200d(?:"+[tX,tD,tT].join("|")+")"+tB+tI+")*",tG=RegExp(tM+"(?="+tM+")|"+("(?:"+[tX+tS+"?",tS,tD,tT,"["+tC+"]"].join("|"))+")"+(tB+tI+tK),"g");function tF(){}function tU(e,t,r){j.A(t)||(t=[t]);var n=(e.isDirected()?e.successors:e.neighbors).bind(e),o=[],a={};return l.A(t,function(t){if(!e.hasNode(t))throw Error("Graph does not have node: "+t);!function e(t,r,n,o,a,i){!Object.prototype.hasOwnProperty.call(o,r)&&(o[r]=!0,n||i.push(r),l.A(a(r),function(r){e(t,r,n,o,a,i)}),n&&i.push(r))}(e,t,"post"===r,a,n,o)}),o}function tq(e){t=e,r=new z.T().setGraph(t.graph()),l.A(t.nodes(),function(e){r.setNode(e,t.node(e))}),l.A(t.edges(),function(e){var n=r.edge(e.v,e.w)||{weight:0,minlen:1},o=t.edge(e);r.setEdge(e.v,e.w,{weight:n.weight+o.weight,minlen:Math.max(n.minlen,o.minlen)})}),tA(e=r);var t,r,n,o,a=tm(e);for(tV(a),tJ(a,e);n=tY(a);)o=t$(a,e,n),tH(a,e,n,o)}function tJ(e,t){var r=tU(e,e.nodes(),"post");r=r.slice(0,r.length-1),l.A(r,function(r){var n,o,a,i;n=e,o=t,a=r,i=n.node(a).parent,n.edge(a,i).cutvalue=tz(n,o,a)})}function tz(e,t,r){var n=e.node(r).parent,o=!0,a=t.edge(r,n),i=0;return a||(o=!1,a=t.edge(n,r)),i=a.weight,l.A(t.nodeEdges(r),function(a){var u=a.v===r,d=u?a.w:a.v;if(d!==n){var c,s,f,l=u===o,g=t.edge(a).weight;if(i+=l?g:-g,c=e,s=r,f=d,c.hasEdge(s,f)){var h=e.edge(r,d).cutvalue;i+=l?-h:h}}}),i}function tV(e,t){arguments.length<2&&(t=e.nodes()[0]),function e(t,r,n,o,a){var i=n,u=t.node(o);return r[o]=!0,l.A(t.neighbors(o),function(a){Object.prototype.hasOwnProperty.call(r,a)||(n=e(t,r,n,a,o))}),u.low=i,u.lim=n++,a?u.parent=a:delete u.parent,n}(e,{},1,t)}function tY(e){return tk(e.edges(),function(t){return e.edge(t).cutvalue<0})}function t$(e,t,r){var n=r.v,o=r.w;t.hasEdge(n,o)||(n=r.w,o=r.v);var a=e.node(n),i=e.node(o),u=a,d=!1;return a.lim>i.lim&&(u=i,d=!0),tb(tO.A(t.edges(),function(t){return d===tW(e,e.node(t.v),u)&&d!==tW(e,e.node(t.w),u)}),function(e){return tw(t,e)})}function tH(e,t,r,n){var o,a,i,u,d=r.v,c=r.w;e.removeEdge(d,c),e.setEdge(n.v,n.w,{}),tV(e),tJ(e,t),o=e,a=t,i=tk(o.nodes(),function(e){return!a.node(e).parent}),u=(u=tU(o,i,"pre")).slice(1),l.A(u,function(e){var t=o.node(e).parent,r=a.edge(e,t),n=!1;r||(r=a.edge(t,e),n=!0),a.node(e).rank=a.node(t).rank+(n?r.minlen:-r.minlen)})}function tW(e,t,r){return r.low<=t.lim&&t.lim<=r.lim}tF.prototype=Error(),r(27007),tq.initLowLimValues=tV,tq.initCutValues=tJ,tq.calcCutValue=tz,tq.leaveEdge=tY,tq.enterEdge=t$,tq.exchangeEdges=tH;var tQ=r(326),tZ=r(92050),t0=r(36158),t1=r(19339),t2=r(63239),t3=r(29146),t6=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)(0,t2.A)(t,(0,t1.A)(e)),e=ev(e);return t}:t3.A,t8=r(10549),t5=r(33352);let t4=function(e){return(0,t5.A)(e,eB,t6)};var t9=Object.prototype.hasOwnProperty;let t7=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&t9.call(e,"index")&&(r.index=e.index,r.input=e.input),r},re=function(e,t){var r=t?ef(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)};var rt=/\w*$/;let rr=function(e){var t=new e.constructor(e.source,rt.exec(e));return t.lastIndex=e.lastIndex,t};var rn=r(90666),ro=rn.A?rn.A.prototype:void 0,ra=ro?ro.valueOf:void 0;let ri=function(e,t,r){var n=e.constructor;switch(t){case"[object ArrayBuffer]":return ef(e);case"[object Boolean]":case"[object Date]":return new n(+e);case"[object DataView]":return re(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return el(e,r);case"[object Map]":case"[object Set]":return new n;case"[object Number]":case"[object String]":return new n(e);case"[object RegExp]":return rr(e);case"[object Symbol]":return ra?Object(ra.call(e)):{}}};var ru=r(43230),rd=r(36958),rc=rd.A&&rd.A.isMap,rs=rc?(0,ru.A)(rc):function(e){return(0,ej.A)(e)&&"[object Map]"==(0,tN.A)(e)},rf=rd.A&&rd.A.isSet,rl=rf?(0,ru.A)(rf):function(e){return(0,ej.A)(e)&&"[object Set]"==(0,tN.A)(e)},rg="[object Arguments]",rh="[object Function]",rp="[object Object]",rv={};rv[rg]=rv["[object Array]"]=rv["[object ArrayBuffer]"]=rv["[object DataView]"]=rv["[object Boolean]"]=rv["[object Date]"]=rv["[object Float32Array]"]=rv["[object Float64Array]"]=rv["[object Int8Array]"]=rv["[object Int16Array]"]=rv["[object Int32Array]"]=rv["[object Map]"]=rv["[object Number]"]=rv[rp]=rv["[object RegExp]"]=rv["[object Set]"]=rv["[object String]"]=rv["[object Symbol]"]=rv["[object Uint8Array]"]=rv["[object Uint8ClampedArray]"]=rv["[object Uint16Array]"]=rv["[object Uint32Array]"]=!0,rv["[object Error]"]=rv[rh]=rv["[object WeakMap]"]=!1;let ry=function e(t,r,n,o,a,i){var u,d=1&r,c=2&r,s=4&r;if(n&&(u=a?n(t,o,a,i):n(t)),void 0!==u)return u;if(!(0,_.A)(t))return t;var f=(0,j.A)(t);if(f){if(u=t7(t),!d)return eg(t,u)}else{var l,g,h,p,v=(0,tN.A)(t),y=v==rh||"[object GeneratorFunction]"==v;if((0,em.A)(t))return ec(t,d);if(v==rp||v==rg||y&&!a){if(u=c||y?{}:eb(t),!d)return c?(g=(l=u)&&eM(t,eB(t),l),eM(t,t6(t),g)):(p=(h=u)&&eM(t,(0,tx.A)(t),h),eM(t,(0,t1.A)(t),p))}else{if(!rv[v])return a?t:{};u=ri(t,v,d)}}i||(i=new Z.A);var b=i.get(t);if(b)return b;i.set(t,u),rl(t)?t.forEach(function(o){u.add(e(o,r,n,o,t,i))}):rs(t)&&t.forEach(function(o,a){u.set(a,e(o,r,n,a,t,i))});var A=s?c?t4:t8.A:c?eB:tx.A,w=f?void 0:A(t);return(0,t0.A)(w||t,function(o,a){w&&(o=t[a=o]),eS(u,a,e(o,r,n,a,t,i))}),u},rb=function(e,t,r){for(var n=-1,o=e.length,a=t.length,i={};++n<o;){var u=n<a?t[n]:void 0;r(i,e[n],u)}return i},rA=function(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e},rw=function(e,t){if(e!==t){var r=void 0!==e,n=null===e,o=e==e,a=(0,D.A)(e),i=void 0!==t,u=null===t,d=t==t,c=(0,D.A)(t);if(!u&&!c&&!a&&e>t||a&&i&&d&&!u&&!c||n&&i&&d||!r&&d||!o)return 1;if(!n&&!a&&!c&&e<t||c&&r&&o&&!n&&!a||u&&r&&o||!i&&o||!d)return -1}return 0},rm=function(e,t,r){for(var n=-1,o=e.criteria,a=t.criteria,i=o.length,u=r.length;++n<i;){var d=rw(o[n],a[n]);if(d){if(n>=u)return d;return d*("desc"==r[n]?-1:1)}}return e.index-t.index},rx=function(e,t,r){t=t.length?(0,A.A)(t,function(e){return(0,j.A)(e)?function(t){return(0,eq.A)(t,1===e.length?e[0]:e)}:e}):[e6.A];var n=-1;return t=(0,A.A)(t,(0,ru.A)(w.A)),rA(E(e,function(e,r,o){return{criteria:(0,A.A)(t,function(t){return t(e)}),index:++n,value:e}}),function(e,t){return rm(e,t,r)})};var rE=(0,eF.A)(function(e,t){if(null==e)return[];var r=t.length;return r>1&&C(e,t[0],t[1])?t=[]:r>2&&C(t[0],t[1],t[2])&&(t=[t[0]]),rx(e,(0,y.A)(t,1),[])});function rj(e,t,r){for(var n;t.length&&(n=e5(t)).i<=r;)t.pop(),e.push(n.vs),r++;return r}function rL(e,t,r){return L(t,function(t){var n,o;return n=function(e){for(var t;e.hasNode(t=p("_root")););return t}(e),o=new z.T({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(t){return e.node(t)}),l.A(e.nodes(),function(a){var i=e.node(a),u=e.parent(a);(i.rank===t||i.minRank<=t&&t<=i.maxRank)&&(o.setNode(a),o.setParent(a,u||n),l.A(e[r](a),function(t){var r=t.v===a?t.w:t.v,n=o.edge(r,a),i=e7.A(n)?0:n.weight;o.setEdge(r,a,{weight:e.edge(t).weight+i})}),Object.prototype.hasOwnProperty.call(i,"minRank")&&o.setNode(a,{borderLeft:i.borderLeft[t],borderRight:i.borderRight[t]}))}),o})}function rk(e,t){l.A(t,function(t){l.A(t,function(t,r){e.node(t).order=r})})}var rO=r(45741);function rR(e,t,r){if(t>r){var n=t;t=r,r=n}Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,configurable:!0,value:{},writable:!0}),Object.defineProperty(e[t],r,{enumerable:!0,configurable:!0,value:!0,writable:!0})}var rN=["nodesep","edgesep","ranksep","marginx","marginy"],rP={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},r_=["acyclicer","ranker","rankdir","align"],rC=["width","height"],rS={width:0,height:0},rM=["minlen","weight","width","height","labeloffset"],rX={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},rD=["labelpos"];function rT(e,t){return e9(eQ(e,t),Number)}function rI(e){var t={};return l.A(e,function(e,r){t[r.toLowerCase()]=e}),t}var rB=(0,f.K)((e,t,r)=>Math.max(t,Math.min(r,e)),"clamp"),rK=(0,f.K)((e="TB")=>{switch(e){case"BT":return"bottom";case"LR":return"right";case"RL":return"left";default:return"top"}},"getDefaultSelfLoopSide"),rG=(0,f.K)(e=>"flowchart"===e||"flowchart-v2"===e||"stateDiagram"===e||"er"===e||"classDiagram"===e,"shouldMergeSelfLoopSegments"),rF=["x","y","width","height","labelBBox","intersect","calcIntersect","diff","clusterNode"],rU=(0,f.K)((e,t,r,n,o)=>{let a=[],i=new Set;if(r.forEach(({start:e,end:t})=>{e!==n&&i.add(e),t!==n&&i.add(t)}),i.forEach(t=>{let r=e.node(t);"number"==typeof r?.x&&"number"==typeof r?.y&&a.push(r)}),0===a.length&&r.forEach(({edge:e})=>{(e.points??[]).forEach(e=>{"number"==typeof e?.x&&"number"==typeof e?.y&&a.push(e)})}),0===a.length)return rK(o);let u=a.reduce((e,t)=>({x:e.x+t.x/a.length,y:e.y+t.y/a.length}),{x:0,y:0}),d=u.x-t.x,c=u.y-t.y;return Math.abs(d)>Math.abs(c)?d>0?"right":"left":Math.abs(c)>0?c>0?"bottom":"top":rK(o)},"getSelfLoopSide"),rq=(0,f.K)((e,t="top",r=0,n=0)=>{let o=e.x,a=e.y-r,i=e.width/2,u=e.height/2,d=Math.max(36,Math.min(100,.8*e.width)),c=rB(Math.max(n,.35*e.width),36,d),s=rB(.45*Math.min(e.width,e.height),24,48);switch(t){case"bottom":{let e=a+u;return[{x:o-c/2,y:e},{x:o-c/2,y:e+s},{x:o+c/2,y:e+s},{x:o+c/2,y:e}]}case"right":{let e=o+i;return[{x:e,y:a-c/2},{x:e+s,y:a-c/2},{x:e+s,y:a+c/2},{x:e,y:a+c/2}]}case"left":{let e=o-i;return[{x:e,y:a-c/2},{x:e-s,y:a-c/2},{x:e-s,y:a+c/2},{x:e,y:a+c/2}]}default:{let e=a-u;return[{x:o-c/2,y:e},{x:o-c/2,y:e-s},{x:o+c/2,y:e-s},{x:o+c/2,y:e}]}}},"getSelfLoopPoints"),rJ=(0,f.K)((e,t,r="top",n=0,o={})=>{let a=e.x,i=e.y-n,u=o.width??0,d=o.height??0;switch(r){case"bottom":return{x:a,y:Math.max(...t.map(e=>e.y))+d/2+4};case"right":return{x:Math.max(...t.map(e=>e.x))+u/2+4,y:i};case"left":return{x:Math.min(...t.map(e=>e.x))-u/2-4,y:i};default:return{x:a,y:Math.min(...t.map(e=>e.y))-d/2-4}}},"getSelfLoopLabelPosition"),rz=(0,f.K)((e,t=0,{mergeSelfLoops:r=!0}={})=>{let n=new Map,o=[],a=e.graph()?.rankdir;return e.edges().forEach(t=>{let a=e.edge(t);if(r&&a.selfLoop){let e=a.selfLoop.id;n.has(e)||n.set(e,[]),n.get(e).push({edge:a,start:t.v,end:t.w})}else o.push({edge:a,start:t.v,end:t.w})}),n.forEach(r=>{if(3!==r.length)return void r.forEach(e=>o.push(e));r.sort((e,t)=>e.edge.selfLoop.order-t.edge.selfLoop.order);let[n,i,u]=r,d=n.edge.originalEdge??i.edge.originalEdge??u.edge.originalEdge??i.edge,c=e.node(d.start);if(!c)return void r.forEach(e=>o.push(e));let s={width:i.edge.width,height:i.edge.height},f=rU(e,c,r,d.start,a),l=rq(c,f,t,s.width??0),g=rJ(c,l,f,t,s),h={...i.edge,...d,id:d.id,points:l,start:d.start,end:d.end,x:g.x,y:g.y,width:s.width,height:s.height,labelStyle:i.edge.labelStyle,fromCluster:n.edge.fromCluster??i.edge.fromCluster??u.edge.fromCluster,toCluster:n.edge.toCluster??i.edge.toCluster??u.edge.toCluster};delete h.selfLoop,delete h.originalEdge,o.push({edge:h,start:h.start,end:h.end})}),o},"getEdgesToRender"),rV=(0,f.K)(async({element:e,graph:t,diagramType:r,id:n,parentCluster:a,siteConfig:c})=>{let l=t.graph().rankdir;s.R.trace("Dir in recursive render - dir:",l);let{clusters:g,edgePaths:h,edgeLabels:p,nodes:v,rootGroups:y}=(0,o.B)(e,{edgePathsClass:"edgePaths"});t.nodes()?s.R.info("Recursive render XXX",t.nodes()):s.R.info("No nodes found for",t),t.edges().length>0&&s.R.info("Recursive edges",t.edge(t.edges()[0]));let b=rG(r);await Promise.all(t.nodes().map(async function(e){let i=t.node(e);if(void 0!==a){let r=JSON.parse(JSON.stringify(a.clusterData));s.R.trace("Setting data for parent cluster XXX\n Node.id = ",e,"\n data=",r.height,"\nParent cluster",a.height),t.setNode(a.id,r),t.parent(e)||(s.R.trace("Setting parent",e,a.id),t.setParent(e,a.id,r))}if(s.R.info("(Insert) Node XXX"+e+": "+JSON.stringify(t.node(e))),i?.clusterNode){s.R.info("Cluster identified XBX",e,i.width,t.node(e));let{ranksep:o,nodesep:a}=t.graph();i.graph.setGraph({...i.graph.graph(),ranksep:o+25,nodesep:a});let f=await r0({element:v,graph:i.graph,diagramType:r,id:n,parentCluster:t.node(e),siteConfig:c}),l=f.elem;(0,d.lC)(i,l),i.diff=f.diff||0,s.R.info("New compound node after recursive render XAX",e,"width",i.width,"height",i.height),(0,u.U7)(l,i)}else t.children(e).length>0?(s.R.trace("Cluster - the non recursive path XBX",e,i.id,i,i.width,"Graph:",t),s.R.trace((0,o.dc)(i.id,t)),o.ju.set(i.id,{id:(0,o.dc)(i.id,t),node:i})):(s.R.trace("Node - the non recursive path XAX",e,v,t.node(e),l),await (0,o.sv)(v,t.node(e),{config:c,dir:l}))}));let A=(0,f.K)(async()=>{let e=t.edges().map(async function(e){let r=t.edge(e.v,e.w,e.name);if(s.R.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),s.R.info("Edge "+e.v+" -> "+e.w+": ",e," ",JSON.stringify(t.edge(e))),s.R.info("Fix",o.ju,"ids:",e.v,e.w,"Translating: ",o.ju.get(e.v),o.ju.get(e.w)),b&&r.selfLoop){if(1!==r.selfLoop.order)return;let e={...r.originalEdge,...r,id:r.selfLoop.id,startLabelLeft:r.originalEdge?.startLabelLeft??r.startLabelLeft,startLabelRight:r.originalEdge?.startLabelRight??r.startLabelRight,endLabelLeft:r.originalEdge?.endLabelLeft??r.endLabelLeft,endLabelRight:r.originalEdge?.endLabelRight??r.endLabelRight};await (0,i.jP)(p,e),r.width=e.width,r.height=e.height,r.labelStyle=e.labelStyle;return}await (0,i.jP)(p,r)});await Promise.all(e)},"processEdges");await A();let{subGraphTitleTotalMargin:w}=(0,u.Oi)(c);return{elem:y,graph:t,groups:{clusters:g,edgePaths:h,edgeLabels:p,nodes:v,rootGroups:y},diagramType:r,id:n,mergeSelfLoops:b,subGraphTitleTotalMargin:w}},"measureDagreGraph"),rY=(0,f.K)(e=>{s.R.info("############################################# XXX"),s.R.info("### Layout ### XXX"),s.R.info("############################################# XXX"),!function(e,t){tl("layout",()=>{var t=tl(" buildLayoutGraph",()=>{var t,r,n;return t=e,r=new z.T({multigraph:!0,compound:!0}),n=rI(t.graph()),r.setGraph(eU({},rP,rT(n,rN),eQ(n,r_))),l.A(t.nodes(),function(e){var n=rI(t.node(e));r.setNode(e,e1(rT(n,rC),rS)),r.setParent(e,t.parent(e))}),l.A(t.edges(),function(e){var n=rI(t.edge(e));r.setEdge(e,eU({},rX,rT(n,rM),eQ(n,rD)))}),r});tl(" runLayout",()=>{var e,r;return e=t,void((r=tl)(" makeSpaceForEdgeLabels",()=>{var t,r;return r=(t=e).graph(),void(r.ranksep/=2,l.A(t.edges(),function(e){var n=t.edge(e);n.minlen*=2,"c"!==n.labelpos.toLowerCase()&&("TB"===r.rankdir||"BT"===r.rankdir?n.width+=n.labeloffset:n.height+=n.labeloffset)}))}),r(" removeSelfEdges",()=>{var t;return t=e,void l.A(t.edges(),function(e){if(e.v===e.w){var r=t.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:e,label:t.edge(e)}),t.removeEdge(e)}})}),r(" acyclic",()=>{var t,r,n,o,a,i;return t="greedy"===e.graph().acyclicer?function(e,t){if(1>=e.nodeCount())return[];var r,n,o,a,i,u,d,c=(r=e,n=t||H,o=new z.T,a=0,i=0,l.A(r.nodes(),function(e){o.setNode(e,{v:e,in:0,out:0})}),l.A(r.edges(),function(e){var t=o.edge(e.v,e.w)||0,r=n(e);o.setEdge(e.v,e.w,t+r),i=Math.max(i,o.node(e.v).out+=r),a=Math.max(a,o.node(e.w).in+=r)}),u=J(i+a+3).map(function(){return new V}),d=a+1,l.A(o.nodes(),function(e){Q(u,d,o.node(e))}),{graph:o,buckets:u,zeroIdx:d});return b(L(function(e,t,r){for(var n,o=[],a=t[t.length-1],i=t[0];e.nodeCount();){for(;n=i.dequeue();)W(e,t,r,n);for(;n=a.dequeue();)W(e,t,r,n);if(e.nodeCount()){for(var u=t.length-2;u>0;--u)if(n=t[u].dequeue()){o=o.concat(W(e,t,r,n,!0));break}}}return o}(c.graph,c.buckets,c.zeroIdx),function(t){return e.outEdges(t.v,t.w)}))}(e,(r=e,function(e){return r.edge(e).weight})):(n=e,o=[],a={},i={},l.A(n.nodes(),function e(t){Object.prototype.hasOwnProperty.call(i,t)||(i[t]=!0,a[t]=!0,l.A(n.outEdges(t),function(t){Object.prototype.hasOwnProperty.call(a,t.w)?o.push(t):e(t.w)}),delete a[t])}),o),void l.A(t,function(t){var r=e.edge(t);e.removeEdge(t),r.forwardName=t.name,r.reversed=!0,e.setEdge(t.w,t.v,r,p("rev"))})}),r(" nestingGraph.run",()=>{var t,r,n,o,a,i,u,d;return t=ti(e,"root",{},"_root"),i=e,u={},l.A(i.children(),function(e){!function e(t,r){var n=i.children(t);n&&n.length&&l.A(n,function(t){e(t,r+1)}),u[t]=r}(e,1)}),r=u,o=2*(n=e8(tQ.A(r))-1)+1,e.graph().nestingRoot=t,l.A(e.edges(),function(t){e.edge(t).minlen*=o}),a=(d=e,tZ.A(d.edges(),function(e,t){return e+d.edge(t).weight},0)+1),void(l.A(e.children(),function(i){!function e(t,r,n,o,a,i,u){var d=t.children(u);if(!d.length){u!==r&&t.setEdge(r,u,{weight:0,minlen:n});return}var c=ts(t,"_bt"),s=ts(t,"_bb"),f=t.node(u);t.setParent(c,u),f.borderTop=c,t.setParent(s,u),f.borderBottom=s,l.A(d,function(d){e(t,r,n,o,a,i,d);var f=t.node(d),l=f.borderTop?f.borderTop:d,g=f.borderBottom?f.borderBottom:d,h=f.borderTop?o:2*o,p=l!==g?1:a-i[u]+1;t.setEdge(c,l,{weight:h,minlen:p,nestingEdge:!0}),t.setEdge(g,s,{weight:h,minlen:p,nestingEdge:!0})}),t.parent(u)||t.setEdge(r,c,{weight:0,minlen:a+i[u]})}(e,t,o,a,n,r,i)}),e.graph().nodeRankFactor=o)}),r(" rank",()=>(function(e){switch(e.graph().ranker){case"network-simplex":default:tq(e);break;case"tight-tree":var t;tA(t=e),tm(t);break;case"longest-path":tA(e)}})(tu(e))),r(" injectEdgeLabelProxies",()=>{var t;return t=e,void l.A(t.edges(),function(e){var r=t.edge(e);if(r.width&&r.height){var n=t.node(e.v),o={rank:(t.node(e.w).rank-n.rank)/2+n.rank,e:e};ti(t,"edge-proxy",o,"_ep")}})}),r(" removeEmptyRanks",()=>{var t,r,n,o;return t=tt(L(e.nodes(),function(t){return e.node(t).rank})),r=[],l.A(e.nodes(),function(n){var o=e.node(n).rank-t;r[o]||(r[o]=[]),r[o].push(n)}),n=0,o=e.graph().nodeRankFactor,void l.A(r,function(t,r){e7.A(t)&&r%o!=0?--n:n&&l.A(t,function(t){e.node(t).rank+=n})})}),r(" nestingGraph.cleanup",()=>{var t;return t=e.graph(),void(e.removeNode(t.nestingRoot),delete t.nestingRoot,l.A(e.edges(),function(t){e.edge(t).nestingEdge&&e.removeEdge(t)}))}),r(" normalizeRanks",()=>{var t;return t=tt(L(e.nodes(),function(t){return e.node(t).rank})),void l.A(e.nodes(),function(r){var n=e.node(r);ta(n,"rank")&&(n.rank-=t)})}),r(" assignRankMinMax",()=>{var t,r;return t=e,r=0,void(l.A(t.nodes(),function(e){var n=t.node(e);n.borderTop&&(n.minRank=t.node(n.borderTop).rank,n.maxRank=t.node(n.borderBottom).rank,r=e8(r,n.maxRank))}),t.graph().maxRank=r)}),r(" removeEdgeLabelProxies",()=>{var t;return t=e,void l.A(t.nodes(),function(e){var r=t.node(e);"edge-proxy"===r.dummy&&(t.edge(r.e).labelRank=r.rank,t.removeNode(e))})}),r(" normalize.run",()=>{e.graph().dummyChains=[],l.A(e.edges(),function(t){!function(e,t){var r,n,o=t.v,a=e.node(o).rank,i=t.w,u=e.node(i).rank,d=t.name,c=e.edge(t),s=c.labelRank;if(u!==a+1){e.removeEdge(t);var f=void 0;for(n=0,++a;a<u;++n,++a)c.points=[],r=ti(e,"edge",f={width:0,height:0,edgeLabel:c,edgeObj:t,rank:a},"_d"),a===s&&(f.width=c.width,f.height=c.height,f.dummy="edge-label",f.labelpos=c.labelpos),e.setEdge(o,r,{weight:c.weight},d),0===n&&e.graph().dummyChains.push(r),o=r;e.setEdge(o,i,{weight:c.weight},d)}}(e,t)})}),r(" parentDummyChains",()=>{var t,r,n,o;return r=e,n={},o=0,l.A(r.children(),function e(t){var a=o;l.A(r.children(t),e),n[t]={low:a,lim:o++}}),t=n,void l.A(e.graph().dummyChains,function(r){for(var n=e.node(r),o=n.edgeObj,a=function(e,t,r,n){var o,a,i=[],u=[],d=Math.min(t[r].low,t[n].low),c=Math.max(t[r].lim,t[n].lim);o=r;do i.push(o=e.parent(o));while(o&&(t[o].low>d||c>t[o].lim));for(a=o,o=n;(o=e.parent(o))!==a;)u.push(o);return{path:i.concat(u.reverse()),lca:a}}(e,t,o.v,o.w),i=a.path,u=a.lca,d=0,c=i[0],s=!0;r!==o.w;){if(n=e.node(r),s){for(;(c=i[d])!==u&&e.node(c).maxRank<n.rank;)d++;c===u&&(s=!1)}if(!s){for(;d<i.length-1&&e.node(c=i[d+1]).minRank<=n.rank;)d++;c=i[d]}e.setParent(r,c),r=e.successors(r)[0]}})}),r(" addBorderSegments",()=>{l.A(e.children(),function t(r){var n=e.children(r),o=e.node(r);if(n.length&&l.A(n,t),Object.prototype.hasOwnProperty.call(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(var a=o.minRank,i=o.maxRank+1;a<i;++a)tg(e,"borderLeft","_bl",r,o,a),tg(e,"borderRight","_br",r,o,a)}})}),r(" order",()=>(function(e){var t=tf(e),r=rL(e,J(1,t+1),"inEdges"),n=rL(e,J(t-1,-1,-1),"outEdges"),o=(a={},u=e8(L(i=tO.A(e.nodes(),function(t){return!e.children(t).length}),function(t){return e.node(t).rank})),d=L(J(u+1),function(){return[]}),c=rE(i,function(t){return e.node(t).rank}),l.A(c,function t(r){ta(a,r)||(a[r]=!0,d[e.node(r).rank].push(r),l.A(e.successors(r),t))}),d);rk(e,o);for(var a,i,u,d,c,s,f=1/0,g=0,h=0;h<4;++g,++h){(function(e,t){var r=new z.T;l.A(e,function(e){var n,o,a,i=e.graph().root,u=function e(t,r,n,o){var a,i,u,d,c,s,f,g,h,p,v,y=t.children(r),A=t.node(r),w=A?A.borderLeft:void 0,m=A?A.borderRight:void 0,x={};w&&(y=tO.A(y,function(e){return e!==w&&e!==m}));var E=L(y,function(e){var r=t.inEdges(e);if(!r.length)return{v:e};var n=tZ.A(r,function(e,r){var n=t.edge(r),o=t.node(r.v);return{sum:e.sum+n.weight*o.order,weight:e.weight+n.weight}},{sum:0,weight:0});return{v:e,barycenter:n.sum/n.weight,weight:n.weight}});l.A(E,function(r){if(t.children(r.v).length){var a,i,u=e(t,r.v,n,o);x[r.v]=u,Object.prototype.hasOwnProperty.call(u,"barycenter")&&(a=r,i=u,e7.A(a.barycenter)?(a.barycenter=i.barycenter,a.weight=i.weight):(a.barycenter=(a.barycenter*a.weight+i.barycenter*i.weight)/(a.weight+i.weight),a.weight+=i.weight))}});var j=(a={},l.A(E,function(e,t){var r=a[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};e7.A(e.barycenter)||(r.barycenter=e.barycenter,r.weight=e.weight)}),l.A(n.edges(),function(e){var t=a[e.v],r=a[e.w];e7.A(t)||e7.A(r)||(r.indegree++,t.out.push(a[e.w]))}),function(e){for(var t=[];e.length;){var r=e.pop();t.push(r),l.A(r.in.reverse(),function(e){return function(t){!t.merged&&(e7.A(t.barycenter)||e7.A(e.barycenter)||t.barycenter>=e.barycenter)&&function(e,t){var r=0,n=0;e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=r/n,e.weight=n,e.i=Math.min(t.i,e.i),t.merged=!0}(e,t)}}(r)),l.A(r.out,function(t){return function(r){r.in.push(t),0==--r.indegree&&e.push(r)}}(r))}return L(tO.A(t,function(e){return!e.merged}),function(e){return eQ(e,["vs","i","barycenter","weight"])})}(tO.A(a,function(e){return!e.indegree})));!function(e,t){l.A(e,function(e){e.vs=b(e.vs.map(function(e){return t[e]?t[e].vs:e}))})}(j,x);var k=(c=(i=function(e){return Object.prototype.hasOwnProperty.call(e,"barycenter")},u={lhs:[],rhs:[]},l.A(j,function(e){i(e)?u.lhs.push(e):u.rhs.push(e)}),d=u).lhs,s=rE(d.rhs,function(e){return-e.i}),f=[],g=0,h=0,p=0,c.sort(function(e){return function(t,r){return t.barycenter<r.barycenter?-1:t.barycenter>r.barycenter?1:e?r.i-t.i:t.i-r.i}}(!!o)),p=rj(f,s,p),l.A(c,function(e){p+=e.vs.length,f.push(e.vs),g+=e.barycenter*e.weight,h+=e.weight,p=rj(f,s,p)}),v={vs:b(f)},h&&(v.barycenter=g/h,v.weight=h),v);if(w&&(k.vs=b([w,k.vs,m]),t.predecessors(w).length)){var O=t.node(t.predecessors(w)[0]),R=t.node(t.predecessors(m)[0]);Object.prototype.hasOwnProperty.call(k,"barycenter")||(k.barycenter=0,k.weight=0),k.barycenter=(k.barycenter*k.weight+O.order+R.order)/(k.weight+2),k.weight+=2}return k}(e,i,r,t);l.A(u.vs,function(t,r){e.node(t).order=r}),n=u.vs,a={},l.A(n,function(t){for(var n,i,u=e.parent(t);u;){if((n=e.parent(u))?(i=a[n],a[n]=u):(i=o,o=u),i&&i!==u)return void r.setEdge(i,u);u=n}})})})(g%2?r:n,g%4>=2),o=tc(e);var p=function(e,t){for(var r=0,n=1;n<t.length;++n)r+=function(e,t,r){for(var n=rb(r||[],L(r,function(e,t){return t})||[],eS),o=b(L(t,function(t){return rE(L(e.outEdges(t),function(t){return{pos:n[t.w],weight:e.edge(t).weight}}),"pos")})),a=1;a<r.length;)a<<=1;var i=2*a-1;a-=1;var u=L(Array(i),function(){return 0}),d=0;return l.A(o.forEach(function(e){var t=e.pos+a;u[t]+=e.weight;for(var r=0;t>0;)t%2&&(r+=u[t+1]),t=t-1>>1,u[t]+=e.weight;d+=e.weight*r})),d}(e,t[n-1],t[n]);return r}(e,o);p<f&&(h=0,s=ry(o,5),f=p)}rk(e,s)})(e)),r(" insertSelfEdges",()=>{var t,r;return r=tc(t=e),void l.A(r,function(e){var r=0;l.A(e,function(e,n){var o=t.node(e);o.order=n+r,l.A(o.selfEdges,function(e){ti(t,"selfedge",{width:e.label.width,height:e.label.height,rank:o.rank,order:n+ ++r,e:e.e,label:e.label},"_se")}),delete o.selfEdges})})}),r(" adjustCoordinateSystem",()=>{var t;("lr"===(t=e.graph().rankdir.toLowerCase())||"rl"===t)&&th(e)}),r(" position",()=>{var t,r,n,o,a,i,u,d,c,s,f,g,h,p,v,y,b;v=tc(p=t=tu(t=e)),y=p.graph().ranksep,b=0,l.A(v,function(e){var t=e8(L(e,function(e){return p.node(e).height}));l.A(e,function(e){p.node(e).y=b+t/2}),b+=t+y}),o=tc(r=t),i=eU((a={},tZ.A(o,function(e,t){var n=0,o=0,i=e.length,u=e5(t);return l.A(t,function(e,d){var c=function(e,t){if(e.node(t).dummy)return tk(e.predecessors(t),function(t){return e.node(t).dummy})}(r,e),s=c?r.node(c).order:i;(c||e===u)&&(l.A(t.slice(o,d+1),function(e){l.A(r.predecessors(e),function(t){var o=r.node(t),i=o.order;(i<n||s<i)&&!(o.dummy&&r.node(e).dummy)&&rR(a,t,e)})}),o=d+1,n=s)}),t}),a),function(e,t){var r={};function n(t,n,o,a,i){var u;l.A(J(n,o),function(n){u=t[n],e.node(u).dummy&&l.A(e.predecessors(u),function(t){var n=e.node(t);n.dummy&&(n.order<a||n.order>i)&&rR(r,t,u)})})}return tZ.A(t,function(t,r){var o,a=-1,i=0;return l.A(r,function(u,d){if("border"===e.node(u).dummy){var c=e.predecessors(u);c.length&&(o=e.node(c[0]).order,n(r,i,d,a,o),i=d,a=o)}n(r,i,r.length,o,t.length)}),r}),r}(r,o)),u={},l.A(["u","d"],function(e){n="u"===e?o:tQ.A(o).reverse(),l.A(["l","r"],function(t){"r"===t&&(n=L(n,function(e){return tQ.A(e).reverse()}));var o,a,d,c,s=("u"===e?r.predecessors:r.successors).bind(r),f=(o=n,a={},d={},c={},l.A(o,function(e){l.A(e,function(e,t){a[e]=e,d[e]=e,c[e]=t})}),l.A(o,function(e){var t=-1;l.A(e,function(e){var r=s(e);if(r.length)for(var n=((r=rE(r,function(e){return c[e]})).length-1)/2,o=Math.floor(n),u=Math.ceil(n);o<=u;++o){var f=r[o];d[e]===e&&t<c[f]&&!function(e,t,r){if(t>r){var n=t;t=r,r=n}return!!e[t]&&Object.prototype.hasOwnProperty.call(e[t],r)}(i,e,f)&&(d[f]=e,d[e]=a[e]=a[f],t=c[f])}})}),{root:a,align:d}),g=function(e,t,r,n,o){var a,i,u,d,c,s,f,g,h,p,v={},y=(a=e,i=t,u=r,d=o,g=new z.T,p=(c=(h=a.graph()).nodesep,s=h.edgesep,f=d,function(e,t,r){var n,o,a=e.node(t),i=e.node(r);if(n=0+a.width/2,Object.prototype.hasOwnProperty.call(a,"labelpos"))switch(a.labelpos.toLowerCase()){case"l":o=-a.width/2;break;case"r":o=a.width/2}if(o&&(n+=f?o:-o),o=0,n+=(a.dummy?s:c)/2,n+=(i.dummy?s:c)/2,n+=i.width/2,Object.prototype.hasOwnProperty.call(i,"labelpos"))switch(i.labelpos.toLowerCase()){case"l":o=i.width/2;break;case"r":o=-i.width/2}return o&&(n+=f?o:-o),o=0,n}),l.A(i,function(e){var t;l.A(e,function(e){var r=u[e];if(g.setNode(r),t){var n=u[t],o=g.edge(n,r);g.setEdge(n,r,Math.max(p(a,e,t),o||0))}t=e})}),g),b=o?"borderLeft":"borderRight";function A(e,t){for(var r=y.nodes(),n=r.pop(),o={};n;)o[n]?e(n):(o[n]=!0,r.push(n),r=r.concat(t(n))),n=r.pop()}return A(function(e){v[e]=y.inEdges(e).reduce(function(e,t){return Math.max(e,v[t.v]+y.edge(t))},0)},y.predecessors.bind(y)),A(function(t){var r=y.outEdges(t).reduce(function(e,t){return Math.min(e,v[t.w]-y.edge(t))},1/0),n=e.node(t);r!==1/0&&n.borderType!==b&&(v[t]=Math.max(v[t],r))},y.successors.bind(y)),l.A(n,function(e){v[e]=v[r[e]]}),v}(r,n,f.root,f.align,"r"===t);"r"===t&&(g=e9(g,function(e){return-e})),u[e+t]=g})}),d=tb(tQ.A(u),function(e){var t,n=-1/0,o=1/0;return t=function(e,t){var a,i,u=(a=r,i=t,a.node(i).width/2);n=Math.max(e+u,n),o=Math.min(e-u,o)},null==e||(0,en.A)(e,(0,rO.A)(t),eB),n-o}),s=tt(c=tQ.A(d)),f=e8(c),l.A(["u","d"],function(e){l.A(["l","r"],function(t){var r,n=e+t,o=u[n];if(o!==d){var a=tQ.A(o);(r="l"===t?s-tt(a):f-e8(a))&&(u[n]=e9(o,function(e){return e+r}))}})}),g=r.graph().align,h=e9(u.ul,function(e,t){if(g)return u[g.toLowerCase()][t];var r=rE(L(u,t));return(r[1]+r[2])/2}),h&&(0,e4.A)(h,(0,rO.A)(function(e,r){t.node(r).x=e}))}),r(" positionSelfEdges",()=>{var t;return t=e,void l.A(t.nodes(),function(e){var r=t.node(e);if("selfedge"===r.dummy){var n=t.node(r.e.v),o=n.x+n.width/2,a=n.y,i=r.x-o,u=n.height/2;t.setEdge(r.e,r.label),t.removeNode(e),r.label.points=[{x:o+2*i/3,y:a-u},{x:o+5*i/6,y:a-u},{x:o+i,y:a},{x:o+5*i/6,y:a+u},{x:o+2*i/3,y:a+u}],r.label.x=r.x,r.label.y=r.y}})}),r(" removeBorderNodes",()=>{var t;return t=e,void(l.A(t.nodes(),function(e){if(t.children(e).length){var r=t.node(e),n=t.node(r.borderTop),o=t.node(r.borderBottom),a=t.node(e5(r.borderLeft)),i=t.node(e5(r.borderRight));r.width=Math.abs(i.x-a.x),r.height=Math.abs(o.y-n.y),r.x=a.x+r.width/2,r.y=n.y+r.height/2}}),l.A(t.nodes(),function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}),r(" normalize.undo",()=>{l.A(e.graph().dummyChains,function(t){var r,n=e.node(t),o=n.edgeLabel;for(e.setEdge(n.edgeObj,o);n.dummy;)r=e.successors(t)[0],e.removeNode(t),o.points.push({x:n.x,y:n.y}),"edge-label"===n.dummy&&(o.x=n.x,o.y=n.y,o.width=n.width,o.height=n.height),t=r,n=e.node(t)})}),r(" fixupEdgeLabelCoords",()=>{var t;return t=e,void l.A(t.edges(),function(e){var r=t.edge(e);if(Object.prototype.hasOwnProperty.call(r,"x"))switch(("l"===r.labelpos||"r"===r.labelpos)&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset}})}),r(" undoCoordinateSystem",()=>{var t,r,n;("bt"===(t=e.graph().rankdir.toLowerCase())||"rl"===t)&&(r=e,l.A(r.nodes(),function(e){tv(r.node(e))}),l.A(r.edges(),function(e){var t=r.edge(e);l.A(t.points,tv),Object.prototype.hasOwnProperty.call(t,"y")&&tv(t)})),("lr"===t||"rl"===t)&&(n=e,l.A(n.nodes(),function(e){ty(n.node(e))}),l.A(n.edges(),function(e){var t=n.edge(e);l.A(t.points,ty),Object.prototype.hasOwnProperty.call(t,"x")&&ty(t)}),th(e))}),r(" translateGraph",()=>(function(e){var t=1/0,r=0,n=1/0,o=0,a=e.graph(),i=a.marginx||0,u=a.marginy||0;function d(e){var a=e.x,i=e.y,u=e.width,d=e.height;t=Math.min(t,a-u/2),r=Math.max(r,a+u/2),n=Math.min(n,i-d/2),o=Math.max(o,i+d/2)}l.A(e.nodes(),function(t){d(e.node(t))}),l.A(e.edges(),function(t){var r=e.edge(t);Object.prototype.hasOwnProperty.call(r,"x")&&d(r)}),t-=i,n-=u,l.A(e.nodes(),function(r){var o=e.node(r);o.x-=t,o.y-=n}),l.A(e.edges(),function(r){var o=e.edge(r);l.A(o.points,function(e){e.x-=t,e.y-=n}),Object.prototype.hasOwnProperty.call(o,"x")&&(o.x-=t),Object.prototype.hasOwnProperty.call(o,"y")&&(o.y-=n)}),a.width=r-t+i,a.height=o-n+u})(e)),r(" assignNodeIntersects",()=>{var t;return t=e,void l.A(t.edges(),function(e){var r,n,o=t.edge(e),a=t.node(e.v),i=t.node(e.w);o.points?(r=o.points[0],n=o.points[o.points.length-1]):(o.points=[],r=i,n=a),o.points.unshift(td(a,r)),o.points.push(td(i,n))})}),r(" reversePoints",()=>{var t;return t=e,void l.A(t.edges(),function(e){var r=t.edge(e);r.reversed&&r.points.reverse()})}),r(" acyclic.undo",()=>{l.A(e.edges(),function(t){var r=e.edge(t);if(r.reversed){e.removeEdge(t);var n=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(t.w,t.v,r,n)}})}))}),tl(" updateInputGraph",()=>{var r,n;return r=e,n=t,void(l.A(r.nodes(),function(e){var t=r.node(e),o=n.node(e);t&&(t.x=o.x,t.y=o.y,n.children(e).length&&(t.width=o.width,t.height=o.height))}),l.A(r.edges(),function(e){var t=r.edge(e),o=n.edge(e);t.points=o.points,Object.prototype.hasOwnProperty.call(o,"x")&&(t.x=o.x,t.y=o.y)}),r.graph().width=n.graph().width,r.graph().height=n.graph().height)})})}(e)},"runDagreGraphLayout"),r$=(0,f.K)((e,t,r)=>{let n=e.node(t);if(!n)return;let o={...n};return n?.clusterNode?o.y=(n.y??0)+r:e.children(t).length>0?o.height=(n.height??0)+r:o.y=(n.y??0)+r/2,o},"normalizeDagreNode"),rH=(0,f.K)((e,t)=>{rF.forEach(r=>{void 0!==t[r]&&(e[r]=t[r])})},"applyDagreNodeLayout"),rW=(0,f.K)((e,t,r,n)=>({...e,start:e.start??t,end:e.end??r,points:(e.points??[]).map(e=>({...e,y:"number"==typeof e.y?e.y+n:e.y}))}),"normalizeDagreEdge"),rQ=(0,f.K)((e,t)=>{let{graph:r,mergeSelfLoops:n,subGraphTitleTotalMargin:a=0}=t,i=new Map(e.nodes.map(e=>[e.id,e]));(0,o.sc)(r).forEach(e=>{let t=r$(r,e,a);if(!t)return;rH(r.node(e),t);let n=i.get(e);n&&rH(n,t)});let u=a/2;return e.edges=rz(r,u,{mergeSelfLoops:n}).map(({edge:e,start:t,end:r})=>rW(e,t,r,u)),e},"applyDagreLayoutResult"),rZ=(0,f.K)(async({elem:e,graph:t,groups:{clusters:r,edgePaths:n},diagramType:d,id:c,mergeSelfLoops:f,subGraphTitleTotalMargin:l})=>{let g=0;await Promise.all((0,o.sc)(t).map(async function(e){let n=t.node(e);if(s.R.info("Position XBX => "+e+": ("+n.x,","+n.y,") width: ",n.width," height: ",n.height),n?.clusterNode)n.y+=l,s.R.info("A tainted cluster node XBX1",e,n.id,n.width,n.height,n.x,n.y,t.parent(e)),o.ju.get(n.id).node=n,(0,u.U_)(n);else if(t.children(e).length>0){s.R.info("A pure cluster node XBX1",e,n.id,n.x,n.y,n.width,n.height,t.parent(e)),n.height+=l,t.node(n.parentId);let i=n?.padding/2||0,u=n?.labelBBox?.height||0;s.R.debug("OffsetY",u-i||0,"labelHeight",u,"halfPadding",i),await (0,a.U)(r,n),o.ju.get(n.id).node=n}else{let e=t.node(n.parentId);n.y+=l/2,s.R.info("A regular node XBX1 - using the padding",n.id,"parent",n.parentId,n.width,n.height,n.x,n.y,"offsetY",n.offsetY,"parent",e,e?.offsetY,n),(0,u.U_)(n)}}));let h=l/2;return rz(t,h,{mergeSelfLoops:f}).forEach(function({edge:e,start:r,end:a}){s.R.info("Edge "+r+" -> "+a+": "+JSON.stringify(e),e),e.points.forEach(e=>e.y+=h);let u=t.node(r),f=t.node(a),l=(0,i.Jo)(n,e,o.ju,d,u,f,c);(0,i.T_)(e,l)}),t.nodes().forEach(function(e){let r=t.node(e);s.R.info(e,r.type,r.diff),r.isGroup&&(g=r.diff)}),s.R.warn("Returning from recursive render XAX",e,g),{elem:e,diff:g}},"paintDagreLayoutCore"),r0=(0,f.K)(async e=>{let t=await rV(e);return rY(t.graph),await rZ(t)},"renderDagreSubgraph"),r1=(0,f.K)(e=>{let t=new z.T({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.nodeSpacing||e.config?.flowchart?.nodeSpacing,ranksep:e.config?.rankSpacing||e.rankSpacing||e.config?.flowchart?.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});return e.nodes.forEach(e=>{t.setNode(e.id,{...e}),e.parentId&&t.setParent(e.id,e.parentId)}),s.R.debug("Edges:",e.edges),e.edges.forEach(e=>{if(e.start===e.end){let r=e.start,n=r+"---"+r+"---1",o=r+"---"+r+"---2",a=t.node(r);t.setNode(n,{domId:n,id:n,parentId:a.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),t.setParent(n,a.parentId),t.setNode(o,{domId:o,id:o,parentId:a.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),t.setParent(o,a.parentId);let i=structuredClone(e),u=structuredClone(e),d=structuredClone(e),c=structuredClone(e);u.originalEdge=i,u.selfLoop={id:i.id,order:0},d.originalEdge=i,d.selfLoop={id:i.id,order:1},c.originalEdge=i,c.selfLoop={id:i.id,order:2},u.label="",u.arrowTypeEnd="none",u.endLabelLeft="",u.endLabelRight="",u.startLabelLeft="",u.id=r+"-cyclic-special-1",d.startLabelRight="",d.startLabelLeft="",d.endLabelLeft="",d.endLabelRight="",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=r+"-cyclic-special-mid",c.label="",c.startLabelRight="",c.startLabelLeft="",c.arrowTypeStart="none",a.isGroup&&(u.fromCluster=r,c.toCluster=r),c.id=r+"-cyclic-special-2",c.arrowTypeStart="none",t.setEdge(r,n,u,r+"-cyclic-special-0"),t.setEdge(n,o,d,r+"-cyclic-special-1"),t.setEdge(o,r,c,r+"-cyclic-special-2")}else t.setEdge(e.start,e.end,{...e},e.id)}),(0,o.OS)(t),{graph:t}},"prepareLayoutForDagre"),r2=(0,f.K)(async(e,{element:t,preparedLayout:r})=>{let n=r??r1(e),o=(0,c.D7)(),a=await rV({element:t,graph:n.graph,diagramType:e.type,id:e.diagramId,parentCluster:void 0,siteConfig:o});return n.measuredLayout=a,a},"measureDagreLayout"),r3=(0,f.K)((e,t)=>{let r=t.preparedLayout?.measuredLayout;if(!r)throw Error("runDagreLayoutCore requires measureDagreLayout to run first");return rY(r.graph),rQ(e,r),r},"runDagreLayoutCore"),r6=(0,f.K)((e,{measure:t})=>(0,o.sc)(t.graph).map(e=>t.graph.node(e)).filter(Boolean),"getDagrePaintNodes"),r8=(0,f.K)((e,t,{measure:r})=>e?r.graph.node(e):void 0,"getDagreEdgeNode"),r5=(0,o.xY)({prepareLayout:r1,measureLayout:r2,runLayoutCore:r3,paintOptions:{clusterDb:o.ju,getNodes:r6,getEdgeNode:r8,skipNode:(0,f.K)((e,{measure:t})=>!t.graph.hasNode(e.id),"skipNode"),isCluster:(0,f.K)((e,{measure:t})=>t.graph.hasNode(e.id)&&(t.graph.children(e.id)??[]).length>0,"isCluster")}})}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6580],{34860:(e,t,s)=>{s.d(t,{Qb:()=>o,SI:()=>l,dJ:()=>i});let n="elanous:auth-required",r=null,a=!1;function o(e){null===r&&(r=e,window.dispatchEvent(new CustomEvent(n,{detail:{path:e}})))}function i(e){let t=window,s=t=>e(t.detail);return t.addEventListener(n,s),null===r||a||e({path:r}),()=>t.removeEventListener(n,s)}function l(){a=!0}},54111:(e,t,s)=>{let n;s.d(t,{cY:()=>d,x8:()=>i});let r={debug:0,info:1,warn:2,error:3},a="/v1/debug-logs/batch",o=null;function i(e){o=e}class l{health(){return{pending:this.queue.length,consecutiveFailures:this.consecutiveFailures,lastOkAt:this.lastOkAt,droppedByCap:this.droppedByCap,fallbackBatches:this.fallbackBatches}}push(e){if(!(r[function(e){let t=e.slice(e.lastIndexOf(".")+1).toLowerCase();return/^(error|exception|crash|fail|failed)$/.test(t)?"error":/^(warn|degraded|timeout)$/.test(t)?"warn":/^(boot|ready|start|begin|open|ok|done|resolve|end|stop|close)$/.test(t)?"info":"debug"}(e.category)]<r[this.minLevel])){if(this.queue.push(e),this.queue.length>500){let e=this.queue.length-500;this.droppedByCap+=e,this.queue.splice(0,e)}if(this.queue.length>=100&&!this.inFlight){null!==this.timer&&(clearTimeout(this.timer),this.timer=null),this.flush();return}null===this.timer&&(this.timer=setTimeout(()=>{this.flush()},this.flushMs))}}async flush(){if(this.timer&&(clearTimeout(this.timer),this.timer=null),this.inFlight||0===this.queue.length)return;let e=this.queue.slice(0,100);this.inFlight=!0;let t=!1,s=JSON.stringify({records:e});try{var n,r;t=await (n=this.fetchFn(s),r=this.postTimeoutMs,new Promise((e,t)=>{let s=setTimeout(()=>t(Error("debug-forward timeout after ".concat(r,"ms"))),r);n.then(t=>{clearTimeout(s),e(t)},e=>{clearTimeout(s),t(e)})}))}catch(e){t=!1}finally{this.inFlight=!1}if(!t){if(this.consecutiveFailures+=1,this.consecutiveFailures>=2&&o)try{await o(JSON.stringify({records:[...e,this.blockedNotice()]}))&&(this.fallbackBatches+=1)}catch(e){}this.wasFailing=!0,this.scheduleRetry();return}let a=this.lastOkAt;this.lastOkAt=Date.now();let i=this.consecutiveFailures;this.consecutiveFailures=0,this.queue.splice(0,e.length),this.wasFailing&&(this.wasFailing=!1,this.queue.push({ts:new Date().toISOString(),category:"pwa.debug-forwarder.recovered",event:"recovered",data:{consecutiveFailures:i,droppedByCap:this.droppedByCap,fallbackBatches:this.fallbackBatches,pending:this.queue.length,previousOkAt:a},source:{platform:"pwa"}})),this.queue.length>0&&null===this.timer&&(this.timer=setTimeout(()=>{this.flush()},this.flushMs))}scheduleRetry(){if(null!==this.timer||0===this.queue.length)return;let e=Math.min(this.flushMs*2**this.consecutiveFailures,3e4);this.timer=setTimeout(()=>{this.flush()},e)}blockedNotice(){return{ts:new Date().toISOString(),category:"pwa.debug-forwarder.http-blocked",event:"http-blocked",data:{consecutiveFailures:this.consecutiveFailures,pending:this.queue.length,droppedByCap:this.droppedByCap,lastOkAt:this.lastOkAt,via:"acp-fallback"},source:{platform:"pwa"}}}beaconFlush(){if(0!==this.queue.length)try{if("undefined"!=typeof navigator&&"function"==typeof navigator.sendBeacon){let e=this.queue.slice(0,100),t=new Blob([JSON.stringify({records:e})],{type:"application/json"});navigator.sendBeacon(a,t)&&this.queue.splice(0,e.length)}}catch(e){}}get pending(){return this.queue.length}constructor(e=c,t="debug",s=1e4,n=100){this.fetchFn=e,this.minLevel=t,this.postTimeoutMs=s,this.flushMs=n,this.queue=[],this.timer=null,this.inFlight=!1,this.consecutiveFailures=0,this.lastOkAt=null,this.droppedByCap=0,this.fallbackBatches=0,this.wasFailing=!1}}async function c(e){return(await fetch(a,{method:"POST",headers:{"content-type":"application/json"},body:e,keepalive:!0,..."undefined"!=typeof AbortSignal&&"function"==typeof AbortSignal.timeout?{signal:AbortSignal.timeout(1e4)}:{}})).ok}function d(e,t){if("undefined"==typeof console)return;let s=new Date().toISOString();if(void 0!==t){let n="";try{let e=new WeakSet;n=JSON.stringify(t,(t,s)=>{if("bigint"==typeof s)return"".concat(s.toString(),"n");if("function"==typeof s)return"[fn ".concat(s.name||"anon","]");if(s&&"object"==typeof s){if(e.has(s))return"[circular]";e.add(s)}return s})}catch(e){n="[unserializable: ".concat(String(e),"]")}n&&n.length>800&&(n=n.slice(0,797)+"..."),console.debug("[".concat(s,"] ").concat(e," ").concat(n),t),u(s,e,n)}else console.debug("[".concat(s,"] ").concat(e)),u(s,e,void 0)}function u(e,t,s){let r,a=function(){if(void 0!==n)return n;let e=function(){try{let e="off"!==window.localStorage.getItem("elanous.pwa.debug.forward"),t=window.localStorage.getItem("elanous.pwa.debug.forwardLevel");return{forward:e,level:"info"===t||"warn"===t||"error"===t?t:"debug"}}catch(e){return{forward:!0,level:"debug"}}}();if(!e.forward)return n=null,null;let t=new l(c,e.level,1e4,1500);try{window.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&t.beaconFlush()})}catch(e){}return n=t,t}();if(!a)return;let o=t.slice(t.lastIndexOf(".")+1)||t;if(void 0!==s&&""!==s)try{r=JSON.parse(s)}catch(e){r=s}a.push({ts:e,category:t,event:o,...void 0!==r?{data:r}:{},source:{platform:"pwa"}})}},56580:(e,t,s)=>{s.d(t,{J_:()=>i,ki:()=>l});var n=s(34860),r=s(62474),a=s(54111),o=s(99950);class i extends Error{constructor(e,t,s=[]){super(t),this.status=e,this.code=t,this.seats=s}}class l{updateConfig(e){let t="".concat((0,r.yS)(this.cfg),"\0").concat(this.cfg.token),s="".concat((0,r.yS)(e),"\0").concat(e.token);this.cfg=e,t!==s&&(this.acpConnections.forEach(e=>e.dispose()),this.acpConnections.clear())}async fetchResponse(e,t){var s;let r=await fetch(this.url(e),{...t,headers:{...this.authHeaders(),...null!=(s=null==t?void 0:t.headers)?s:{}}});return 401===r.status&&(0,n.Qb)(e),r}async fetchJson(e,t){var s;if(e.startsWith("/v1/terminals")&&!e.startsWith("/v1/terminals/")&&(!t||(null!=(s=t.method)?s:"GET")==="GET"&&void 0===t.body)){let s=this.inflightTerminals.get(e);if(s)return s;let n=this.fetchJsonOnce(e,t).finally(()=>{this.inflightTerminals.delete(e)});return this.inflightTerminals.set(e,n),n}return this.fetchJsonOnce(e,t)}async fetchJsonOnce(e,t){var s,n,r;let a=await this.fetchResponse(e,t),o=(null!=(s=a.headers.get("content-type"))?s:"").includes("application/json")?await a.json():await a.text();if(!a.ok)throw Error(String("string"==typeof o?o:null!=(r=null!=(n=null==o?void 0:o.reason)?n:null==o?void 0:o.error)?r:"".concat(a.status)));return o}getCodexLogin(){return this.fetchJson("/v1/setup/codex-login")}startCodexLogin(e){return this.fetchJson("/v1/setup/codex-login",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({mode:e})})}async health(){return this.fetchJson("/v1/health")}async fieldDefaultEvent(){return this.fetchJson("/v1/field/uploads")}async fieldReelStatus(e){return this.fetchJson("/v1/field/reel?event=".concat(encodeURIComponent(e)))}uploadField(e,t,s,r){let a=new FormData;t.forEach(e=>a.append("file",e,e.name)),t.forEach(()=>a.append("capturedAt",""));let o=new URLSearchParams({event:e,device:"pwa"});s.trim()&&(o.set("caption",s.trim()),a.append("caption",s.trim()));let i="/v1/field/uploads?".concat(o);return new Promise((e,t)=>{let s=new XMLHttpRequest;s.open("POST",this.url(i)),this.cfg.token&&s.setRequestHeader("authorization","Bearer ".concat(this.cfg.token)),s.upload.onprogress=e=>{e.lengthComputable&&e.total>0&&r(Math.min(100,Math.round(100*e.loaded/e.total)))},s.onerror=()=>t(Error("field upload: network error")),s.onload=()=>{let r;401===s.status&&(0,n.Qb)(i);try{r=JSON.parse(s.responseText)}catch(e){t(Error("field upload ".concat(s.status,": invalid response")));return}if("object"!=typeof r||null===r)return void t(Error("field upload ".concat(s.status,": invalid response")));if(s.status<200||s.status>=300||!0!==r.ok){var a,o;t(Error(null!=(o=null!=(a=r.reason)?a:r.error)?o:"field upload ".concat(s.status)));return}if("string"!=typeof r.event||"number"!=typeof r.count)return void t(Error("field upload ".concat(s.status,": invalid response")));e({event:r.event,count:r.count})},s.send(a)})}async submitConsultRequest(e){let t=await this.fetchResponse("/v1/consult-requests",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e)});if(202===t.status||400===t.status)return await t.json();throw Error("consult-requests ".concat(t.status))}async listExecRequests(){return this.fetchJson("/v1/exec-requests")}async getExecRequest(e){return this.fetchJson("/v1/exec-requests/".concat(encodeURIComponent(e)))}async submitExecRequest(e){let t=await this.fetchResponse("/v1/exec-requests",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:e})});if(202!==t.status)throw Error("exec-requests ".concat(t.status));return await t.json()}async listSeatRequests(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new URLSearchParams;void 0!==e.seat&&t.set("seat",e.seat),void 0!==e.limit&&t.set("limit",String(e.limit));let s=t.size?"?".concat(t):"";return this.fetchJson("/v1/seat-requests".concat(s))}async listSeatAskAnswers(e){return this.fetchJson("/v1/seat-requests?answers=1",{headers:{"x-seat-ask-client":e}})}async acknowledgeSeatAskAnswers(e,t){await this.fetchJson("/v1/seat-requests?answers=ack",{method:"POST",headers:{"content-type":"application/json","x-seat-ask-client":e},body:JSON.stringify({ids:t})})}async submitSeatAsk(e,t){let s=await this.fetchResponse("/v1/seat-requests",{method:"POST",headers:{"content-type":"application/json","x-seat-ask-client":t},body:JSON.stringify({seat:"TC",text:e})});if(!s.ok)throw Error("seat ask ".concat(s.status));return s.json()}async submitSeatRequest(e,t){let{seat:s,text:n,attachments:r}=e,a=await this.fetchResponse("/v1/seat-requests",{method:"POST",headers:{"content-type":"application/json","Idempotency-Key":t},body:JSON.stringify({...void 0!==s?{seat:s}:{},text:n,...(null==r?void 0:r.length)?{attachments:r.map(e=>{let{id:t,filename:s,mediaType:n,size:r}=e;return{id:t,name:s,mediaType:n,bytes:r}})}:{}})}),o=await a.json();if(!a.ok){var l,c;throw new i(a.status,null!=(l=o.error)?l:"http-".concat(a.status),null!=(c=o.seats)?c:[])}return o}subscribeChatEvents(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=new AbortController,r={method:"GET",headers:{accept:"text/event-stream",...this.authHeaders()},signal:s.signal},o="".concat(this.url("/v1/chat/events"),"?sessionId=").concat(encodeURIComponent(e));return(0,a.cY)("webterm.chat.observer.subscribe",{sessionId:e}),(async()=>{var i,l;try{let e=await fetch(o,r);if(401===e.status&&(0,n.Qb)("/v1/chat/events"),!e.ok||!e.body){null==(i=t.onError)||i.call(t,{error:"observer_failed",message:"".concat(e.status,": ").concat(await e.text())});return}await f(e.body,t)}catch(e){if(s.signal.aborted)return;null==(l=t.onError)||l.call(t,{error:"observer_disconnected",message:e instanceof Error?e.message:String(e)})}(0,a.cY)("webterm.chat.observer.end",{sessionId:e})})(),()=>{(0,a.cY)("webterm.chat.observer.dispose",{sessionId:e});try{s.abort()}catch(e){}}}subscribeAgentStatusEvents(e,t){let s=new AbortController,r="".concat(this.url("/v1/events"),"?topics=agent.status");return(0,a.cY)("webterm.agent-status.subscribe",{sessionId:e}),(async()=>{var o,i;try{let a=await fetch(r,{method:"GET",headers:{accept:"text/event-stream",...this.authHeaders()},signal:s.signal});if(401===a.status&&(0,n.Qb)("/v1/events"),!a.ok||!a.body){null==(o=t.onError)||o.call(t,{error:"agent_status_failed",message:"".concat(a.status,": ").concat(await a.text())});return}await g(a.body,e,t)}catch(e){if(s.signal.aborted)return;null==(i=t.onError)||i.call(t,{error:"agent_status_disconnected",message:e instanceof Error?e.message:String(e)})}(0,a.cY)("webterm.agent-status.end",{sessionId:e})})(),()=>{(0,a.cY)("webterm.agent-status.dispose",{sessionId:e});try{s.abort()}catch(e){}}}subscribeHudSegmentEvents(e,t){let s=new AbortController,r="".concat(this.url("/v1/events"),"?topics=hud.segment");return(0,a.cY)("webterm.hud-segment.subscribe",{sessionId:e}),(async()=>{var o,i;try{let a=await fetch(r,{method:"GET",headers:{accept:"text/event-stream",...this.authHeaders()},signal:s.signal});if(401===a.status&&(0,n.Qb)("/v1/events"),!a.ok||!a.body){null==(o=t.onError)||o.call(t,{error:"hud_segment_failed",message:"".concat(a.status,": ").concat(await a.text())});return}await y(a.body,e,t)}catch(e){if(s.signal.aborted)return;null==(i=t.onError)||i.call(t,{error:"hud_segment_disconnected",message:e instanceof Error?e.message:String(e)})}(0,a.cY)("webterm.hud-segment.end",{sessionId:e})})(),()=>{(0,a.cY)("webterm.hud-segment.dispose",{sessionId:e});try{s.abort()}catch(e){}}}subscribeChatFeedbackEvents(e,t){let s=new AbortController,r=["agent.status","hud.segment"],o="".concat(this.url("/v1/events"),"?topics=").concat(r.join(","));return(0,a.cY)("webterm.chat-feedback.subscribe",{sessionId:e,topics:r}),(async()=>{var r,i,l,c,d,u,h,p;try{let a=await fetch(o,{method:"GET",headers:{accept:"text/event-stream",...this.authHeaders()},signal:s.signal});if(401===a.status&&(0,n.Qb)("/v1/events"),!a.ok||!a.body){let e="".concat(a.status,": ").concat(await a.text());null==(r=(i=t.agentStatus).onError)||r.call(i,{error:"agent_status_failed",message:e}),null==(l=(c=t.hudSegment).onError)||l.call(c,{error:"hud_segment_failed",message:e});return}let[d,u]=a.body.tee();await Promise.all([g(d,e,t.agentStatus),y(u,e,t.hudSegment)])}catch(n){if(s.signal.aborted)return;let e=n instanceof Error?n.message:String(n);null==(d=(u=t.agentStatus).onError)||d.call(u,{error:"agent_status_disconnected",message:e}),null==(h=(p=t.hudSegment).onError)||h.call(p,{error:"hud_segment_disconnected",message:e})}(0,a.cY)("webterm.chat-feedback.end",{sessionId:e})})(),()=>{(0,a.cY)("webterm.chat-feedback.dispose",{sessionId:e});try{s.abort()}catch(e){}}}async promptStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,a.cY)("webterm.rest.prompt.stream",{sessionId:e.sessionId,len:e.userText.length});let s={method:"POST",headers:{"content-type":"application/json",accept:"text/event-stream",...this.authHeaders()},body:JSON.stringify({...void 0!==e.sessionId?{sessionId:e.sessionId}:{},userText:e.userText,...void 0!==e.userContent?{userContent:e.userContent}:{},...void 0!==e.provider?{provider:e.provider}:{},...void 0!==e.personaId?{personaId:e.personaId}:{}})};t.signal&&(s.signal=t.signal);let r=!0===t.debugTap?"/v1/prompt/stream?debug-tap=on":"/v1/prompt/stream",o=await fetch(this.url(r),s);if(401===o.status&&(0,n.Qb)(r),!o.ok||!o.body)throw Error("prompt/stream ".concat(o.status,": ").concat(await o.text()));return p(o.body,t)}connectAcp(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=(0,r.yS)(this.cfg);if(!s)throw Error("daemon baseUrl not configured");if(!t.sessionId)return new c(s,this.cfg.token).acquire(t.onSession);let n=t.sessionId,a=this.acpConnections.get(n);return a&&!a.isTerminal?a.acquire(t.onSession):(e=new c(s,this.cfg.token,t.sessionId,()=>{this.acpConnections.get(n)===e&&this.acpConnections.delete(n)}),this.acpConnections.set(n,e),e.acquire(t.onSession))}voiceWsUrl(){return(0,r.uh)(this.cfg)}async voiceCost(){return this.fetchJson("/v1/voice/cost")}async listTerminals(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=!0===e.all&&!0===e.includeTest?"?all=true&includeTest=true":"";return this.fetchJson("/v1/terminals".concat(t))}async fetchTerminalLineage(e){return this.fetchJson("/v1/terminals/lineage?key=".concat(encodeURIComponent(e)))}async fetchTerminalScrollback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=encodeURIComponent(e),r=new URLSearchParams({lines:String(t)});return s.sourceRoot&&r.set("sourceRoot",s.sourceRoot),this.fetchJson("/v1/terminals/".concat(n,"/scrollback?").concat(r))}streamTerminal(e,t,r,a){let o=new AbortController,i=t.sourceRoot?"?sourceRoot=".concat(encodeURIComponent(t.sourceRoot)):"",l=this.url("/v1/terminals/".concat(encodeURIComponent(e),"/stream").concat(i));return(async()=>{try{let e=await fetch(l,{method:"GET",headers:{accept:"text/event-stream",...this.authHeaders()},signal:o.signal});if(401===e.status&&(0,n.Qb)("/v1/terminals/stream"),!e.ok||!e.body)return void a("stream ".concat(e.status));let{parseTerminalSse:t}=await s.e(5711).then(s.bind(s,35711)),i=e.body.getReader(),c=new TextDecoder,d="";for(;;){let e=await i.read();if(e.done)break;d+=c.decode(e.value,{stream:!0});let s=t(d);for(let e of(d=s.rest,s.events))r(e)}}catch(e){if(o.signal.aborted)return;a(e instanceof Error?e.message:String(e))}})(),()=>{try{o.abort()}catch(e){}}}async snapshotTerminal(e,t){return this.requestTerminalControl(e,{action:"snapshot",ansi:t.ansi},t)}async sendTerminalText(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.requestTerminalControl(e,{action:"input-text",chars:t},s)}async sendTerminalKey(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.requestTerminalControl(e,{action:"input-key",chars:t},s)}async sendTerminalMouse(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.requestTerminalControl(e,{action:"input-mouse",...t},s)}async controlTerminal(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.requestTerminalControl(e,{action:t},s)}async requestTerminalControl(e,t){let s,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=encodeURIComponent(e),o=r.sourceRoot?"?sourceRoot=".concat(encodeURIComponent(r.sourceRoot)):"",i=await fetch(this.url("/v1/terminals/".concat(a,"/control").concat(o)),{method:"POST",headers:{"content-type":"application/json",...this.authHeaders()},body:JSON.stringify(t)});401===i.status&&(0,n.Qb)("/v1/terminals/".concat(a,"/control"));try{s=await i.json()}catch(e){throw Error("terminal control ".concat(i.status,": invalid JSON response"))}let l=s&&"object"==typeof s?s.status:void 0,c="write-failed"===l?"failed":l;if("success"!==c&&"unknown-pty"!==c&&"denied"!==c&&"failed"!==c&&"owner-unreachable"!==c||i.status!==({success:200,"unknown-pty":404,denied:409,failed:502,"owner-unreachable":504})[c]){var d;let e=s&&"object"==typeof s?null!=(d=s.reason)?d:s.error:void 0;throw Error("terminal control ".concat(i.status,": ").concat(String(null!=e?e:"unexpected response")))}let u=s;if("snapshot"===t.action&&"success"===c&&"string"!=typeof u.screen)throw Error("terminal control ".concat(i.status,": missing screen"));return{status:c,..."string"==typeof u.reason?{reason:u.reason}:{},..."snapshot"===t.action&&"string"==typeof u.screen?{screen:u.screen}:{}}}async renameTerminal(e,t){let s,r=encodeURIComponent(e),a=await fetch(this.url("/v1/terminals/".concat(r,"/rename")),{method:"POST",headers:{"content-type":"application/json",...this.authHeaders()},body:JSON.stringify({name:t})});401===a.status&&(0,n.Qb)("/v1/terminals/".concat(r,"/rename"));try{s=await a.json()}catch(e){throw Error("terminal rename ".concat(a.status,": invalid JSON response"))}let o=s&&"object"==typeof s?s:{},i="write-failed"===o.status?"failed":"unknown-pty"===o.status||"denied"===o.status||"failed"===o.status||"owner-unreachable"===o.status?o.status:"success"===o.status?"success":"invalid-name"===o.error?"invalid-name":void 0;if(void 0===i||a.status!==({success:200,"invalid-name":400,"unknown-pty":404,denied:409,failed:502,"owner-unreachable":504})[i]||"success"===i&&("string"!=typeof o.id||"string"!=typeof o.name)){var l,c;throw Error("terminal rename ".concat(a.status,": ").concat(String(null!=(c=null!=(l=o.reason)?l:o.error)?c:"unexpected response")))}return"success"===i?{status:i,id:o.id,name:o.name}:{status:i}}async fetchTerminalFrame(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=encodeURIComponent(e),n=t.sourceRoot?"?sourceRoot=".concat(encodeURIComponent(t.sourceRoot)):"",r=await this.fetchJson("/v1/terminals/".concat(s,"/frame").concat(n));return{id:r.id,frame:r.frame,frameAt:r.frameAt,frameSource:r.frameSource}}async createAgentCliSession(e,t,s){let n=(null==s?void 0:s.hitl)==="off"?"/v1/agent-cli/sessions?hitl=off":"/v1/agent-cli/sessions";return this.fetchJson(n,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({backend:e,...t?{cwd:t}:{}})})}async agentCliPromptStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s={method:"POST",headers:{"content-type":"application/json",...this.authHeaders()},body:JSON.stringify(e)};t.signal&&(s.signal=t.signal);let r=await fetch(this.url("/v1/agent-cli/prompt"),s);if(401===r.status&&(0,n.Qb)("/v1/agent-cli/prompt"),!r.ok){let e=await r.text().catch(()=>"");throw Error("agent-cli/prompt ".concat(r.status,": ").concat(e))}if(!r.body)throw Error("agent-cli/prompt: no body");let a=r.body.getReader(),o=new TextDecoder,i="",l="",c="end_turn",d=e.sessionId,u=null;for(;;){let{value:e,done:s}=await a.read();if(s)break;let n=(i+=o.decode(e,{stream:!0})).indexOf("\n\n");for(;-1!==n;){var h,p,f,m,g,y;let e=i.slice(0,n);i=i.slice(n+2);let s=e.split("\n"),r="message",a=[];for(let e of s)e.startsWith("event: ")?r=e.slice(7).trim():e.startsWith("data: ")&&a.push(e.slice(6));let o=a.join("\n");if("chunk"===r)try{let e=JSON.parse(o);"string"==typeof e.text&&(l+=e.text,null==(h=t.onTextDelta)||h.call(t,{delta:e.text,full:l}))}catch(e){}else if("stop"===r)try{let e=JSON.parse(o);e.stopReason&&(c=e.stopReason),e.sessionId&&(d=e.sessionId),null==(p=t.onStop)||p.call(t,{stopReason:c,sessionId:d})}catch(e){}else if("tool_call"===r||"tool_call_update"===r)try{let e=JSON.parse(o),s=e.rawOutput,n=null===s||"object"!=typeof s||Array.isArray(s)?void 0:s,a=null==n?void 0:n._meta,i=null===a||"object"!=typeof a||Array.isArray(a)?void 0:a.ui,l=null===i||"object"!=typeof i||Array.isArray(i)?void 0:i.resourceUri,c=null==n?void 0:n["ui/resourceUri"],d="string"==typeof l?l:"string"==typeof c?c:void 0;null==(f=t.onToolCall)||f.call(t,{kind:r,...e.toolCallId?{toolCallId:e.toolCallId}:{},...e.title?{title:e.title}:{},...e.kind?{toolKind:e.kind}:{},...e.status?{status:e.status}:{},...e.contentText?{contentText:e.contentText}:{},...void 0!==s?{rawOutput:s}:{},...void 0!==d?{resourceUri:d}:{}})}catch(e){}else if("usage"===r)try{let e=JSON.parse(o);"number"==typeof e.turnDurationMs&&"number"==typeof e.toolCallCount&&"number"==typeof e.textBytes&&(null==(m=t.onUsage)||m.call(t,{turnDurationMs:e.turnDurationMs,toolCallCount:e.toolCallCount,textBytes:e.textBytes}))}catch(e){}else if("error"===r)try{u=null!=(y=JSON.parse(o).error)?y:"unknown",null==(g=t.onError)||g.call(t,{error:u})}catch(e){u="parse-error"}n=i.indexOf("\n\n")}}if(u)throw Error(u);return{sessionId:d,text:l,stopReason:c}}async cancelAgentCliSession(e){return this.fetchJson("/v1/agent-cli/cancel",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:e})})}async closeAgentCliSession(e){let t=encodeURIComponent(e);return this.fetchJson("/v1/agent-cli/sessions/".concat(t),{method:"DELETE"})}async listShowroomLayouts(){return this.fetchJson("/v1/showroom/layouts")}async getShowroomLayout(e){let t=encodeURIComponent(e);return this.fetchJson("/v1/showroom/layouts/".concat(t))}async saveShowroomLayout(e,t){let s=encodeURIComponent(e);return this.fetchJson("/v1/showroom/layouts/".concat(s),{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify(t)})}async deleteShowroomLayout(e){let t=encodeURIComponent(e);return this.fetchJson("/v1/showroom/layouts/".concat(t),{method:"DELETE"})}async fetchUrlContext(e){return this.fetchJson("/v1/context/fetch-url",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({url:e})})}async listLlmModels(){let e=await fetch(this.url("/v1/llm/models"),{method:"GET",headers:{...this.authHeaders()}});return(401===e.status&&(0,n.Qb)("/v1/llm/models"),e.ok)?await e.json():{models:[],error:"http-".concat(e.status)}}async getLlmHosts(){return this.fetchJson("/v1/llm/hosts")}async setLlmHosts(e){return this.fetchJson("/v1/llm/hosts",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify(e)})}async clearLlmHosts(){return this.fetchJson("/v1/llm/hosts",{method:"DELETE"})}async transcribeAudio(e,t){let s=new FormData;s.append("file",e,e.name),t&&s.append("language",t);let r=await fetch(this.url("/v1/audio/stt"),{method:"POST",headers:{...this.authHeaders()},body:s});if(401===r.status&&(0,n.Qb)("/v1/audio/stt"),!r.ok){let e="";try{e=await r.text()}catch(e){}throw Error("audio-stt http ".concat(r.status,": ").concat(e.slice(0,200)))}return await r.json()}async judgeRole(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s={prompt:e};t.backend&&(s.backend=t.backend),t.model&&(s.model=t.model);let r=await fetch(this.url("/v1/showroom/role-judge"),{method:"POST",headers:{"content-type":"application/json",...this.authHeaders()},body:JSON.stringify(s)});if(401===r.status&&(0,n.Qb)("/v1/showroom/role-judge"),!r.ok)throw Error("role-judge http ".concat(r.status));return await r.json()}showroomLayoutsEventsUrl(){return this.cfg.baseUrl?this.url("/v1/showroom/layouts/events"):null}personasEventsUrl(){return this.cfg.baseUrl?this.url("/v1/personas/events"):null}sessionStoreEventsUrl(){return this.cfg.baseUrl?"".concat(this.url("/v1/events"),"?topics=session."):null}async listLogs(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new URLSearchParams(e).toString();return this.fetchJson("/v1/logs".concat(t?"?".concat(t):""))}async listProgressFrames(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:200;return this.listLogs({event:"headless.progress-frame",limit:String(e)})}logsStreamUrl(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.cfg.baseUrl)return null;let t=new URLSearchParams(e).toString();return"".concat(this.url("/v1/logs/stream")).concat(t?"?".concat(t):"")}async listPersonas(){return this.fetchJson("/v1/personas")}async getRegistryCatalog(){return this.fetchJson("/v1/registry/catalog")}url(e){let t=this.cfg.baseUrl.replace(/\/$/,"");return"".concat(t).concat(e)}authHeaders(){return this.cfg.token?{authorization:"Bearer ".concat(this.cfg.token)}:{}}constructor(e){this.cfg=e,this.acpConnections=new Map,this.inflightTerminals=new Map}}class c{get ready(){return this.readyPromise}sendRaw(e,t){if("FAILED"===this.stateValue||"CLOSED"===this.stateValue||this.ws.readyState!==WebSocket.OPEN){var s;return Promise.reject(null!=(s=this.stateError)?s:Error("socket is ".concat(this.stateValue)))}let n=this.nextId++,r={jsonrpc:"2.0",id:n,method:e,params:t};return(0,a.cY)("webterm.acp.send",{method:e,id:n}),new Promise((e,t)=>{this.pending.set(n,{resolve:e,reject:t});try{this.ws.send(JSON.stringify(r)+"\n")}catch(e){this.pending.delete(n),t(e),this.closeIfUnused()}})}get readyState(){return this.ws.readyState}get state(){return this.stateValue}get isTerminal(){return"FAILED"===this.stateValue||"CLOSED"===this.stateValue}acquire(e){return this.leases+=1,new d(this,e)}subscribeSession(e){return this.sessionHandlers.add(e),()=>this.sessionHandlers.delete(e)}release(){if(this.leases=Math.max(0,this.leases-1),0===this.leases){if(this.pending.size>0)return void(0,a.cY)("webterm.acp.release-deferred",{pending:this.pending.size});this.closeIfUnused()}}closeIfUnused(){0!==this.leases||0!==this.pending.size||this.isTerminal||this.dispose(Error("ACP transport released"))}dispose(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Error("ACP transport disposed");"CLOSED"!==this.stateValue&&this.transition("CLOSED",e),this.rejectPending(e),this.notifyTerminal(),this.ws.readyState!==WebSocket.CLOSED&&this.ws.readyState!==WebSocket.CLOSING&&this.ws.close()}onState(e){return this.stateHandlers.add(e),this.notifyStateHandler(e,this.stateValue,this.stateError),()=>this.stateHandlers.delete(e)}transition(e,t){(this.stateValue!==e||this.stateError!==t)&&(this.stateValue=e,t&&(this.stateError=t),this.stateHandlers.forEach(s=>this.notifyStateHandler(s,e,t)),(0,a.cY)("webterm.acp.state",{state:e,reason:null==t?void 0:t.message}))}notifyStateHandler(e,t,s){try{e(t,s)}catch(e){(0,a.cY)("webterm.acp.state-handler.error",{state:t,reason:String(e)})}}rejectPending(e){this.pending.forEach(t=>t.reject(e)),this.pending.clear()}notifyTerminal(){var e;this.terminalNotified||(this.terminalNotified=!0,null==(e=this.onTerminal)||e.call(this))}terminate(e,t){this.isTerminal||this.transition(t,e),this.rejectPending(e),this.notifyTerminal()}fail(e){this.terminate(e,"FAILED"),(this.ws.readyState===WebSocket.CONNECTING||this.ws.readyState===WebSocket.OPEN)&&this.ws.close()}async send(e,t){return await this.readyPromise.catch(()=>void 0),this.sendRaw(e,t)}on(e,t){let s=this.kindHandlers.get(e);return s||(s=new Set,this.kindHandlers.set(e,s)),s.add(t),()=>s.delete(t)}onAny(e){return this.anyHandlers.add(e),()=>this.anyHandlers.delete(e)}onRequest(e,t){let s=Symbol(e),n=this.requestHandlers.get(e);return n||(n=new Map,this.requestHandlers.set(e,n)),n.set(s,t),()=>{let t=this.requestHandlers.get(e);t&&(t.delete(s),0===t.size&&this.requestHandlers.delete(e))}}close(){this.release()}async handleInboundRequest(e,t,s,n){(0,a.cY)("webterm.acp.request.in",{method:t,id:e});try{let r=await n(s);this.sendResponse({jsonrpc:"2.0",id:e,result:r},t)}catch(n){let s=n instanceof Error?n.message:String(n);this.sendResponse({jsonrpc:"2.0",id:e,error:{code:-32603,message:"internal error: ".concat(s)}},t)}}sendErrorResponse(e,t,s){this.sendResponse({jsonrpc:"2.0",id:e,error:{code:t,message:s}},"error-response")}sendResponse(e,t){if("OPEN"!==this.stateValue||this.ws.readyState!==WebSocket.OPEN)return void(0,a.cY)("webterm.acp.request.response.drop",{method:t,id:e.id,state:this.stateValue});try{this.ws.send(JSON.stringify(e)+"\n")}catch(s){(0,a.cY)("webterm.acp.request.response.fail",{method:t,id:e.id,reason:String(s)})}}async waitOpen(){if(this.ws.readyState!==WebSocket.OPEN){if(this.ws.readyState===WebSocket.CLOSED||this.ws.readyState===WebSocket.CLOSING)throw Error("socket already closed");await new Promise((e,t)=>{let s=()=>{a(),this.transition("OPEN"),e()},n=()=>{a(),t(Error("socket open failed"))},r=()=>{a(),t(Error("socket closed before open"))},a=()=>{this.ws.removeEventListener("open",s),this.ws.removeEventListener("error",n),this.ws.removeEventListener("close",r)};this.ws.addEventListener("open",s),this.ws.addEventListener("error",n),this.ws.addEventListener("close",r)})}}onMessage(e){var t;let s,n,r=e.data;if("string"==typeof r)s=r;else if(r instanceof ArrayBuffer)s=new TextDecoder().decode(new Uint8Array(r));else{if("undefined"!=typeof Blob&&r instanceof Blob)return void r.text().then(t=>this.onMessage({...e,data:t}));s=""}try{n=JSON.parse(s)}catch(e){(0,a.cY)("webterm.acp.parse-error",{err:String(e),len:s.length});return}if(!n.kind&&n.method&&"session/update"===n.method&&(n.kind="sessionUpdate"),(0,a.cY)("webterm.acp.frame.in",{method:null!=(t=n.method)?t:"(notif)",kind:n.kind,id:n.id}),void 0!==n.id&&this.pending.has(n.id)){let e=this.pending.get(n.id);this.pending.delete(n.id),n.error?e.reject(Error(n.error.message)):e.resolve(n.result),queueMicrotask(()=>this.closeIfUnused())}else if(void 0!==n.id&&n.method&&this.requestHandlers.has(n.method)){let e=[...this.requestHandlers.get(n.method).values()].at(-1);e&&this.handleInboundRequest(n.id,n.method,n.params,e)}else void 0!==n.id&&n.method&&this.sendErrorResponse(n.id,-32601,"method not found: ".concat(n.method));if(n.kind){let e=this.kindHandlers.get(n.kind);null==e||e.forEach(e=>e(n))}this.anyHandlers.forEach(e=>e(n))}constructor(e,t,s,n){this.nextId=1,this.pending=new Map,this.kindHandlers=new Map,this.anyHandlers=new Set,this.requestHandlers=new Map,this.sessionHandlers=new Set,this.stateHandlers=new Set,this.leases=0,this.stateValue="CONNECTING",this.handshakeComplete=!1,this.terminalNotified=!1;let r=s?"".concat(e,"?session=").concat(encodeURIComponent(s)):e;(0,a.cY)("webterm.acp.connect",{url:r,hasToken:!!t,sessionId:s}),this.ws=t?new WebSocket(r,["bearer.".concat(t)]):new WebSocket(r),this.onTerminal=n,this.ws.binaryType="arraybuffer",this.ws.addEventListener("message",e=>this.onMessage(e)),this.ws.addEventListener("error",()=>{let e=Error(function(e,t){let s="unknown-host";try{s=new URL(t).host}catch(e){}return 0===e?"socket error before open — daemon unreachable or refused (".concat(s,")"):"socket error while open — connection dropped (".concat(s,")")}(this.ws.readyState,r));this.fail(e),(this.ws.readyState===WebSocket.CONNECTING||this.ws.readyState===WebSocket.OPEN)&&this.ws.close(),(0,a.cY)("webterm.acp.error",{reason:e.message})}),this.ws.addEventListener("close",e=>{var t;let s=e.reason?": ".concat(e.reason):"",n=null!=(t=this.stateError)?t:Error("socket closed: ".concat(e.code).concat(s));this.terminate(n,this.handshakeComplete?"CLOSED":"FAILED"),(0,a.cY)("webterm.acp.close",{code:e.code,reason:e.reason,handshakeComplete:this.handshakeComplete})}),this.readyPromise=(async()=>{await this.waitOpen();let e=await this.sendRaw("initialize",{protocolVersion:1,clientCapabilities:{fs:{readTextFile:!1,writeTextFile:!1},terminal:!1,_meta:{elanous:{ui:{showModal:!0,showToast:!0,updateStatusPill:!0,usage:!1},term:{terminalOutput:!0,terminalExit:!0,terminalFrame:!0},ask:{askUserQuestion:!0}}}}});(0,a.cY)("webterm.acp.initialize.done",{res:e});let t="";if(s)try{await this.sendRaw("session/load",{sessionId:s,cwd:"/",mcpServers:[]}),t=s,(0,a.cY)("webterm.acp.session-load.done",{sessionId:t})}catch(e){(0,a.cY)("webterm.acp.session-load.miss",{sessionId:s,reason:String(e)})}if(!t){var n;let e=await this.sendRaw("session/new",{cwd:"/",mcpServers:[]});t=null!=(n=null==e?void 0:e.sessionId)?n:"",(0,a.cY)("webterm.acp.session-new.done",{sessionId:t})}return t&&this.sessionHandlers.forEach(e=>{try{e(t)}catch(e){}}),this.handshakeComplete=!0,t})().catch(e=>{let t=e instanceof Error?e:Error(String(e));return this.fail(t),(0,a.cY)("webterm.acp.handshake-failed",{reason:t.message}),""})}}class d{track(e){return this.closed?(e(),()=>{}):(this.disposers.add(e),()=>{this.disposers.delete(e),e()})}get ready(){return this.core.ready}get readyState(){return this.core.readyState}get state(){return this.core.state}send(e,t){return this.closed?Promise.reject(Error("ACP lease released")):this.core.send(e,t)}on(e,t){return this.closed?()=>{}:this.track(this.core.on(e,t))}onAny(e){return this.closed?()=>{}:this.track(this.core.onAny(e))}onRequest(e,t){return this.closed?()=>{}:this.track(this.core.onRequest(e,t))}onState(e){return this.closed?()=>{}:this.track(this.core.onState(e))}close(){this.closed||(this.closed=!0,this.disposers.forEach(e=>e()),this.disposers.clear(),this.core.release())}constructor(e,t){this.core=e,this.closed=!1,this.disposers=new Set,t&&this.disposers.add(e.subscribeSession(t))}}function u(e){if(!e||"object"!=typeof e||Array.isArray(e))return null;let t=e.result,s=null===t||"object"!=typeof t||Array.isArray(t)?void 0:t,n=null==s?void 0:s._meta,r=null===n||"object"!=typeof n||Array.isArray(n)?void 0:n.ui,a=null===r||"object"!=typeof r||Array.isArray(r)?void 0:r.resourceUri,o=null==s?void 0:s["ui/resourceUri"],i="string"==typeof a?a:"string"==typeof o?o:void 0;return{id:e.id,name:e.name,ok:e.ok,...void 0!==e.summary?{summary:e.summary}:{},...void 0!==t?{rawOutput:t}:{},...void 0!==i?{resourceUri:i}:{},...void 0!==e.resultOmittedReason?{resultOmittedReason:e.resultOmittedReason}:{}}}function h(e){let t="message",s="";for(let n of e.split("\n"))if(n.startsWith("event:"))t=n.slice(6).trim();else if(n.startsWith("data:")){let e=n.slice(5);s+=e.startsWith(" ")?e.slice(1):e}if(!s)return null;try{return{event:t,data:JSON.parse(s)}}catch(e){return null}}async function p(e,t){let s=e.getReader(),n=new TextDecoder,r="",i=null,l=null;for(;;){let e,{value:w,done:b}=await s.read();if(b)break;for(r+=n.decode(w,{stream:!0});(e=r.indexOf("\n\n"))>=0;){var c,d,p,f,m,g,y,v;let s=r.slice(0,e);r=r.slice(e+2);let n=h(s);if(n)if("turn-begin"===n.event)null==(c=t.onTurnBegin)||c.call(t,n.data);else if("text-delta"===n.event)null==(d=t.onTextDelta)||d.call(t,n.data);else if("image-block"===n.event)null==(p=t.onImageBlock)||p.call(t,n.data);else if("tool-call"===n.event)null==(f=t.onToolCall)||f.call(t,n.data);else if("tool-result"===n.event){let e=u(n.data);e&&(null==(m=t.onToolResult)||m.call(t,e))}else"feedback"===n.event?(0,o.L)(n.data)?null==(g=t.onFeedback)||g.call(t,n.data):(0,a.cY)("webterm.sse.feedback.drop",{reason:"schema-mismatch"}):"turn-end"===n.event?(i=n.data,null==(y=t.onTurnEnd)||y.call(t,i)):"error"===n.event&&(l=n.data,null==(v=t.onError)||v.call(t,l))}}if(l){let e=l.message?": ".concat(l.message):"";throw Error("".concat(l.error).concat(e))}if(!i)throw Error("prompt/stream closed without turn-end");return i}async function f(e,t){let s=e.getReader(),n=new TextDecoder,r="";for(;;){let{value:e,done:y}=await s.read();if(y)break;let v=(r+=n.decode(e,{stream:!0})).indexOf("\n\n");for(;v>=0;){var i,l,c,d,p,f,m,g;let e=r.slice(0,v);r=r.slice(v+2);let s=h(e);if(v=r.indexOf("\n\n"),s&&"subscribed"!==s.event)if("turn-begin"===s.event)null==(i=t.onTurnBegin)||i.call(t,s.data);else if("text-delta"===s.event)null==(l=t.onTextDelta)||l.call(t,s.data);else if("image-block"===s.event)null==(c=t.onImageBlock)||c.call(t,s.data);else if("tool-call"===s.event)null==(d=t.onToolCall)||d.call(t,s.data);else if("tool-result"===s.event){let e=u(s.data);e&&(null==(p=t.onToolResult)||p.call(t,e))}else"feedback"===s.event?(0,o.L)(s.data)?null==(f=t.onFeedback)||f.call(t,s.data):(0,a.cY)("webterm.sse.feedback.observer-drop",{reason:"schema-mismatch"}):"turn-end"===s.event?null==(m=t.onTurnEnd)||m.call(t,s.data):"error"===s.event&&(null==(g=t.onError)||g.call(t,s.data))}}}let m={idle:null,working:"running",awaiting:"queued",done:"done",err:"error"};async function g(e,t,s){let n=e.getReader(),r=new TextDecoder,i="",l=new Map,c=e=>{var t;let s=(null!=(t=l.get(e))?t:0)+1;return l.set(e,s),s};for(;;){let{value:e,done:l}=await n.read();if(l)break;let d=(i+=r.decode(e,{stream:!0})).indexOf("\n\n");for(;d>=0;){let e=i.slice(0,d);d=(i=i.slice(d+2)).indexOf("\n\n");let n=h(e);if(!n||"agent.status"!==n.event)continue;let r=n.data;if(!r||"object"!=typeof r)continue;let l=r.detail;if(!l||"string"!=typeof l.agentId||"string"!=typeof l.status)continue;let u=m[l.status];if(null==u)continue;let p="".concat(t,":agent-status:").concat(l.agentId),f={envelopeVersion:1,sessionId:t,blockId:p,kind:"agent.status",phase:"update",emittedAt:"number"==typeof l.updatedAt?l.updatedAt:r.ts,seq:c(p),payload:{agentId:l.agentId,status:u,..."string"==typeof l.lastEvent?{lastEvent:l.lastEvent}:{}},asciiFallback:["".concat(l.agentId," ").concat(u).concat(l.lastEvent?" \xb7 "+l.lastEvent:"")]};if(!(0,o.L)(f)){(0,a.cY)("webterm.agent-status.synthesize.drop",{agentId:l.agentId,status:l.status});continue}s.onFeedback(f)}}}async function y(e,t,s){let n=e.getReader(),r=new TextDecoder,i="",l=new Map,c=e=>{var t;let s=(null!=(t=l.get(e))?t:0)+1;return l.set(e,s),s};for(;;){let{value:e,done:l}=await n.read();if(l)break;let u=(i+=r.decode(e,{stream:!0})).indexOf("\n\n");for(;u>=0;){var d;let e=i.slice(0,u);u=(i=i.slice(u+2)).indexOf("\n\n");let n=h(e);if(!n||"hud.segment"!==n.event)continue;let r=n.data;if(!r||"object"!=typeof r)continue;let l=r.detail;if(!l||"string"!=typeof l.key||!l.key)continue;let p="end"===l.phase?"end":"update",f="".concat(t,":hud:").concat(l.key),m={key:l.key};if("update"===p){if("string"!=typeof l.value){(0,a.cY)("webterm.hud-segment.synthesize.drop",{key:l.key,reason:"missing-value"});continue}m.value=l.value,"number"==typeof l.priority&&(m.priority=l.priority),"string"==typeof l.tone&&(m.tone=l.tone),"string"==typeof l.glyph&&(m.glyph=l.glyph)}else m.value="";let g={envelopeVersion:1,sessionId:t,blockId:f,kind:"hud.segment",phase:p,emittedAt:r.ts,seq:c(f),payload:m,asciiFallback:"update"===p&&"string"==typeof l.value?["".concat(null!=(d=l.glyph)?d:"").concat(l.glyph?" ":"").concat(l.value)]:[]};if(!(0,o.L)(g)){(0,a.cY)("webterm.hud-segment.synthesize.drop",{key:l.key,reason:"wire-guard"});continue}s.onFeedback(g)}}}},62474:(e,t,s)=>{function n(e){if("undefined"==typeof localStorage)return{migrated:!1,currentValue:null};let t=localStorage.getItem(e.currentKey);if(t&&t.length>0)return{migrated:!1,currentValue:t};let s=localStorage.getItem(e.legacyKey);if(!s||0===s.length)return{migrated:!1,currentValue:t};let n=s;if(e.transformValue)try{n=e.transformValue(s)}catch(e){n=null}if(!n||0===n.length)return{migrated:!1,currentValue:t};try{localStorage.setItem(e.currentKey,n),localStorage.removeItem(e.legacyKey)}catch(e){return{migrated:!1,currentValue:t}}return{migrated:!0,currentValue:n}}s.d(t,{yS:()=>d,uh:()=>u,Ip:()=>o,Fp:()=>l,Qc:()=>c});let r={baseUrl:"elanous.nexus.baseUrl",token:"elanous.daemon.token",provider:"elanous.daemon.provider"},a={daemonBaseUrl:"elanous.daemon.baseUrl",voiceWsUrl:"elanous.voice.wsUrl",voiceToken:"elanous.voice.token"};function o(){let e="https:"===window.location.protocol?"https:":"http:";return"".concat(e,"//").concat(window.location.host)}function i(e,t){if(!e)return"";let s=new URL(t,e);return s.protocol="https:"===s.protocol?"wss:":"ws:",s.toString()}function l(){var e,t;n({legacyKey:a.daemonBaseUrl,currentKey:r.baseUrl}),n({legacyKey:a.voiceWsUrl,currentKey:r.baseUrl,transformValue:e=>{try{let t=new URL(e);return t.protocol="wss:"===t.protocol?"https:":"http:",t.pathname="/",t.toString().replace(/\/$/,"")}catch(e){return null}}});let s=localStorage.getItem(a.voiceToken);s&&!localStorage.getItem(r.token)&&localStorage.setItem(r.token,s);let i=localStorage.getItem(r.baseUrl);return{baseUrl:i&&i.length>0?i:o(),token:null!=(e=localStorage.getItem(r.token))?e:"",provider:null!=(t=localStorage.getItem(r.provider))?t:""}}function c(e){void 0!==e.baseUrl&&localStorage.setItem(r.baseUrl,e.baseUrl),void 0!==e.token&&localStorage.setItem(r.token,e.token),void 0!==e.provider&&localStorage.setItem(r.provider,e.provider)}function d(e){return i(e.baseUrl,"/v1/acp")}function u(e){return i(e.baseUrl,"/v1/voice/ws")}},99950:(e,t,s)=>{s.d(t,{L:()=>a});let n=new Set(["tool.progress","tool.diff","tool.search-hit","agent.status","agent.thinking","agent.plan","debug.line","perf.tick","hud.segment","mission.update","agent.chat-stream","media.image","media.video","media.job"]),r=new Set(["start","delta","update","end"]);function a(e){return null!==e&&"object"==typeof e&&1===e.envelopeVersion&&"string"==typeof e.sessionId&&!!e.sessionId&&"string"==typeof e.blockId&&!!e.blockId&&"string"==typeof e.kind&&!!n.has(e.kind)&&"string"==typeof e.phase&&!!r.has(e.phase)&&"number"==typeof e.emittedAt&&"number"==typeof e.seq&&!(e.seq<0)&&!!Array.isArray(e.asciiFallback)&&void 0!==e.payload&&null!==e.payload&&(void 0===e.parentToolCallId||"string"==typeof e.parentToolCallId)&&!0}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6659],{4245:(e,t,n)=>{n.d(t,{ZO:()=>Y,Ys:()=>v,Wq:()=>x,To:()=>y});var r=n(59473),a=n(24725),l=n(56922),o=n(55958),s=n(3703),i=n(24113),u=n(12711),c=n(54111);function d(e,t){let n="preview-1"===e?"tui-preview":/^preview-\d+$/.test(e)?"web-scratch":e.startsWith("tui:")?"tui-surface":e.startsWith("term-")?"human-terminal":e.startsWith("webterm-")?"web-terminal":e.startsWith("self_")?"harness-run":e.startsWith("agent:")?"agent":e.startsWith("pty_")?"pty":"unknown",r=null==t?void 0:t.trim();switch(n){case"tui-preview":return{text:"TUI 프리뷰",hint:"TUI 프리뷰 페인의 웹 이름 \xb7 ".concat(e),kind:n};case"web-scratch":return{text:e,hint:"이 브라우저가 만든 스크래치 터미널 \xb7 ".concat(e),kind:n};case"tui-surface":return{text:e,hint:"대화형 대시보드 TUI 표면 \xb7 ".concat(e),kind:n};case"human-terminal":return{text:e,hint:"사람이 만든 웹 터미널 \xb7 ".concat(e),kind:n};case"web-terminal":return{text:e,hint:"데몬이 발급한 웹 터미널 \xb7 ".concat(e),kind:n};case"harness-run":return{text:r||e,hint:"하니스 자율 런의 터미널 \xb7 ".concat(e),kind:n};case"agent":return{text:r||e,hint:"서브 에이전트 실행 \xb7 ".concat(e),kind:n};case"pty":return{text:r||e,hint:"PTY \xb7 ".concat(e),kind:n};default:return{text:e,hint:"분류를 모르는 터미널 \xb7 ".concat(e),kind:n}}}function m(e){return(null==e?void 0:e.terminalOriginCategory)==="direct-human"?"사람":(null==e?void 0:e.terminalOriginCategory)==="elanous"?"elanous":(null==e?void 0:e.terminalOriginCategory)==="external-tool"?e.externalToolName?"외부 도구: ".concat(e.externalToolName):"외부 도구":(null==e?void 0:e.terminalOriginReason)?"이 행에서는 알 수 없음: ".concat(e.terminalOriginReason):"이 행에서는 알 수 없음"}function f(e){return{action:e,sendsDestroy:"terminate"===e}}let p="elanous.webterm.tabs",g="elanous.webterm.hidden-tabs",h=new Map;function b(e){return(null==e?void 0:e.isAlive)&&void 0!==e.controller?"human"===e.controller?"release":"takeover":null}function w(e){return"takeover"===e?"넘겨받기":"놓기"}function v(){try{let e=window.localStorage.getItem(p);if(!e)return[];let t=JSON.parse(e);if(!Array.isArray(t))return[];return t.filter(e=>"string"==typeof e&&e.length>0)}catch(e){return[]}}function y(e){window.localStorage.setItem(p,JSON.stringify(e))}function k(e){window.localStorage.setItem(g,JSON.stringify(e))}function x(e){let t=1;for(;e.includes("preview-".concat(t));)t+=1;return"preview-".concat(t)}function I(e,t){let n=null==e?void 0:e.terminalId;if("string"==typeof n&&n.trim().length>0)return{id:n,issuedBy:"daemon"};let r=C(e)?e.spawnFailure:null==e?"no-response":"response-without-terminal-id";return{id:x(t),issuedBy:"local",fallbackReason:r}}function C(e){return"object"==typeof e&&null!==e&&"string"==typeof e.spawnFailure}async function S(e,t){let n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:c.cY,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:j,l=arguments.length>4?arguments[4]:void 0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:N;if(r("webterm.tabs.add.start",{hasAcp:!!e,hasSessionId:!!t}),!e||!t){let t=e?"no-session":"no-acp";return r("webterm.tabs.add.skip",{reason:t}),{spawnFailure:t}}r("webterm.tabs.add.spawn-pending",{sessionId:t});let s=l?setTimeout(()=>{r("webterm.tabs.add.spawn-slow",{sessionId:t,slowMs:o}),l()},o):void 0;try{let l=new Promise(e=>{n=setTimeout(()=>e({spawnFailure:"spawn-timeout"}),a)}),o=await Promise.race([e.send("terminal/spawn",{sessionId:t}),l]);return C(o)&&r("webterm.tabs.add.spawn-timeout",{sessionId:t,timeoutMs:a}),o}catch(e){return r("webterm.tabs.add.spawn-error",{reason:String(e)}),{spawnFailure:"spawn-error",detail:String(e)}}finally{void 0!==n&&clearTimeout(n),void 0!==s&&clearTimeout(s)}}let N=8e3,j=9e4;function Y(e){let{activeId:t,onActiveChange:n,onInitialTerminalState:p,minimized:C=!1,onToggleMinimize:Y,recording:T=!1,peerCount:P=0,chatDockOpen:M=!0,onToggleChatDock:A,tabIntent:R=null,onTabsChange:D,suspendInitialSpawn:O=!1,variant:E="default",renderSheet:U}=e,{client:q,sessionId:L}=(0,u.Q)(),[F,B]=(0,a.useState)(v),K=(0,a.useRef)(new Set(function(){try{let e=window.localStorage.getItem(g),t=e?JSON.parse(e):[];return Array.isArray(t)?t.filter(e=>"string"==typeof e&&e.length>0):[]}catch(e){return[]}}())),W=(0,a.useRef)(F);W.current=F;let _=(0,a.useRef)(t);_.current=t;let J=(0,a.useRef)(0),V=(0,a.useRef)(!1),G=(0,a.useRef)(null),H=(0,a.useRef)(!1),[Q,Z]=(0,a.useState)(0),$=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(el.current+=1,J.current+=1,V.current=!1,H.current=!1,!L)return;let e=q.connectAcp({sessionId:L});$.current=e;let t=e.onState(t=>{$.current===e&&"OPEN"===t&&Z(e=>e+1)});return"OPEN"===e.state&&Z(e=>e+1),(0,c.cY)("webterm.tabs.acp.attach",{sessionId:L}),()=>{var n;t();let r=null!=(n=$.current)?n:e;try{r.close()}catch(e){}$.current=null}},[q,L]);let[X,z]=(0,a.useState)({sessionId:null,entries:new Map}),[ee,et]=(0,a.useState)(new Map),en=(0,a.useRef)(new Map),er=null!==X.sessionId&&X.sessionId===L,ea=er?X.entries:h,el=(0,a.useRef)(0),eo=(0,a.useCallback)(()=>{var e;let t=$.current;if(!L)return null;if(null!==(e=t?t.state:null)&&"FAILED"!==e&&"CLOSED"!==e)return t;let n=t?t.state:"none";(0,c.cY)("webterm.tabs.acp.reacquire.attempt",{sessionId:L,previousState:n});try{null==t||t.close()}catch(e){}let r=q.connectAcp({sessionId:L});return $.current=r,el.current+=1,z({sessionId:null,entries:new Map}),(0,c.cY)("webterm.tabs.acp.reacquire.ok",{sessionId:L,previousState:n,state:r.state}),r},[q,L]),es=(0,a.useCallback)(async()=>{let e;if(L){try{e=eo()}catch(e){(0,c.cY)("webterm.tabs.list.error",{sessionId:L,connectionState:"reacquire-failed",reason:String(e)});return}if(e)try{let t=el.current,n=await e.send("terminal/list",{sessionId:L});if(t!==el.current)return void(0,c.cY)("webterm.tabs.list.stale",{sessionId:L,generation:t,now:el.current});let r=function(e){if(null==e)return{ok:!1,reason:"no-response"};let t=e.terminals;if(!Array.isArray(t))return{ok:!1,reason:"malformed"};let n=[];for(let e of t){if("object"!=typeof e||null===e)return{ok:!1,reason:"malformed"};let{terminalId:t,isAlive:r,pid:a,cols:l,rows:o,lastOutputAt:s,ownerRunUsage:i,terminalOriginCategory:u,terminalOriginReason:c,externalToolName:d,controller:m}=e;if("string"!=typeof t||0===t.trim().length||"boolean"!=typeof r)return{ok:!1,reason:"malformed"};let f=e=>"number"==typeof e&&Number.isFinite(e)?e:void 0;n.push({terminalId:t,isAlive:r,...void 0!==f(a)?{pid:f(a)}:{},...void 0!==f(l)?{cols:f(l)}:{},...void 0!==f(o)?{rows:f(o)}:{},...void 0!==f(s)?{lastOutputAt:f(s)}:{},..."running"===i||"terminated-live-owner"===i||"no-run-id"===i||"unknown"===i?{ownerRunUsage:i}:{},..."direct-human"===u||"elanous"===u||"external-tool"===u||"unknown"===u?{terminalOriginCategory:u}:{},..."string"==typeof c?{terminalOriginReason:c}:{},..."string"==typeof d?{externalToolName:d}:{},..."string"==typeof m?{controller:m}:{}})}return{ok:!0,entries:n}}(n);if(!r.ok)return void(0,c.cY)("webterm.tabs.list.error",{sessionId:L,connectionState:e.state,reason:"list-".concat(r.reason)});let a=r.entries,l=a.map(e=>e.terminalId),o=new Set(l);for(let e of K.current)o.has(e)||K.current.delete(e);k([...K.current]),z({sessionId:L,entries:new Map(a.map(e=>[e.terminalId,e]))}),(0,c.cY)("webterm.tabs.list",{sessionId:L,local:F.length,daemon:l.length}),B(e=>{let t=[...e];for(let e of l)K.current.has(e)||t.includes(e)||t.push(e);return t.length===e.length?e:(y(t),t)})}catch(t){(0,c.cY)("webterm.tabs.list.error",{sessionId:L,connectionState:e.state,reason:String(t)})}}},[eo,L,F.length]);(0,a.useEffect)(()=>{if(!$.current)return;es();let e=!1,t=setInterval(()=>{e||"undefined"!=typeof document&&document.hidden||(e=!0,es().finally(()=>{e=!1}))},15e3);return()=>clearInterval(t)},[$.current]);let ei=(0,a.useCallback)(e=>(y(e),e),[]);(0,a.useEffect)(()=>{null==D||D(F)},[D,F]);let eu=(0,a.useCallback)(async e=>{if(V.current||W.current.length>0)return;V.current=!0;let t=++J.current;null==p||p({status:"pending"});let r=await S(e,L,c.cY,j,()=>{t===J.current&&(null==p||p({status:"pending",slow:!0}))});if(t!==J.current||W.current.length>0){var a;V.current=!1;let e=r&&"spawned"===r.status&&"string"==typeof r.sessionId&&"string"==typeof r.terminalId&&r.sessionId.trim()&&r.terminalId.trim()?{sessionId:r.sessionId,terminalId:r.terminalId}:null;(0,c.cY)("webterm.tabs.initial.discarded",{reason:t!==J.current?"session-changed":"tabs-present",orphan:e}),e&&(null==(a=$.current)||a.send("terminal/destroy",e).catch(t=>(0,c.cY)("webterm.tabs.initial.orphan-destroy-error",{...e,reason:String(t)})));return}let l=I(r,W.current),o=[l.id];H.current=!0,ei(o),B(o),n(l.id),null==p||p({status:"ready",issuedBy:l.issuedBy,...l.fallbackReason?{fallbackReason:l.fallbackReason}:{}}),(0,c.cY)("webterm.tabs.initial",{id:l.id,issuedBy:l.issuedBy,...l.fallbackReason?{fallbackReason:l.fallbackReason}:{}})},[n,p,ei,L]);(0,a.useEffect)(()=>{if(O)return;if(F.length>0){let e=H.current;V.current=!1,t||n(F[0]),e||null==p||p({status:"ready",issuedBy:"local",fallbackReason:"restored-tab"});return}let e=$.current;if(!e||"OPEN"!==e.state){null==p||p({status:"pending"}),null===G.current&&(G.current=Date.now());let e=setTimeout(()=>{var e,t;if(W.current.length>0||(null==(e=$.current)?void 0:e.state)==="OPEN")return;let r=x(W.current);H.current=!0,ei([r]),B([r]),n(r),null==p||p({status:"ready",issuedBy:"local",fallbackReason:"acp-not-open"}),(0,c.cY)("webterm.tabs.initial",{id:r,issuedBy:"local",fallbackReason:"acp-not-open",waitedMs:Date.now()-(null!=(t=G.current)?t:Date.now())})},Math.max(0,N-(Date.now()-G.current)));return()=>clearTimeout(e)}G.current=null,eu(e)},[Q,t,eu,n,p,ei,O,F.length]);let ec=(0,a.useCallback)(async()=>{let e=await S($.current,L);B(t=>{let{id:r,issuedBy:a,fallbackReason:l}=I(e,t);if(K.current.delete(r)&&k([...K.current]),t.includes(r))return n(r),(0,c.cY)("webterm.tabs.add.existing",{id:r,issuedBy:a,total:t.length}),t;let o=ei([...t,r]);return n(r),(0,c.cY)("webterm.tabs.add",{id:r,total:o.length,issuedBy:a,...l?{fallbackReason:l}:{}}),o})},[n,ei,L]),ed=(0,a.useCallback)(e=>{e!==t&&((0,c.cY)("webterm.tabs.switch",{from:t,to:e}),n(e))},[t,n]),em=(0,a.useCallback)(function(e){var t;let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];en.current.set(e,(null!=(t=en.current.get(e))?t:0)+1),et(t=>{if(!t.has(e))return t;let n=new Map(t);return n.delete(e),n});let a=W.current;if(r&&(K.current.add(e),k([...K.current])),!a.includes(e))return;let l=a.filter(t=>t!==e);ei(l),B(l),e===_.current&&l.length>0&&n(l[0]),0===l.length&&(V.current=!1,null==p||p({status:"pending"}))},[n,p,ei]),ef=(0,a.useCallback)(e=>{f("remove-local").sendsDestroy||(em(e,!0),(0,c.cY)("webterm.tabs.remove-local",{id:e}),es())},[es,em]),ep=(0,a.useCallback)(async(e,t)=>{var n;let r=ee.get(e);if(r&&!r.message)return;let a=(null!=(n=en.current.get(e))?n:0)+1;en.current.set(e,a),et(n=>{let r=new Map(n);return r.set(e,{action:t}),r});try{let n=await q.controlTerminal(e,t);if(a!==en.current.get(e)||!W.current.includes(e))return;let r=function(e,t){switch(t.status){case"success":return"takeover"===e?"터미널을 넘겨받았습니다.":"터미널 제어를 놓았습니다.";case"unknown-pty":return"이 PTY를 찾을 수 없습니다. 목록을 새로고침해 주세요.";case"denied":return"이 PTY의 제어를 바꿀 권한이 없습니다.";case"failed":return"PTY 제어 전환에 실패했습니다. 잠시 후 다시 시도해 주세요.";case"owner-unreachable":return"PTY 소유 프로세스에 연결할 수 없어 제어를 전환하지 못했습니다.";default:return t.status}}(t,n);et(n=>{let a=new Map(n);return a.set(e,{action:t,message:r}),a}),(0,c.cY)("webterm.tabs.control",{id:e,action:t,status:n.status}),"success"===n.status&&es()}catch(n){if(a!==en.current.get(e)||!W.current.includes(e))return;et(n=>{let r=new Map(n);return r.set(e,{action:t,message:"PTY 제어 요청을 전송하지 못했습니다. 네트워크 연결을 확인해 주세요."}),r}),(0,c.cY)("webterm.tabs.control.error",{id:e,action:t,reason:String(n)})}},[q,es,ee]),eg=(0,a.useCallback)(async(e,t)=>{let n=f("terminate"),r=function(e){switch("running"===e||"terminated-live-owner"===e||"no-run-id"===e||"unknown"===e?e:"unknown"){case"running":return{title:"터미널을 끝낼까요?",message:"실행 중인 런이 이 터미널을 사용하고 있습니다. 끝내면 터미널과 그 프로세스가 종료됩니다."};case"terminated-live-owner":return{title:"터미널을 끝낼까요?",message:"소유 런은 종료됐지만 이 터미널은 아직 남아 있습니다. 끝내면 터미널과 그 프로세스가 종료됩니다."};case"no-run-id":return{title:"터미널을 끝낼까요?",message:"이 터미널에는 소유 런 정보가 없습니다. 끝내면 터미널과 그 프로세스가 종료됩니다."};case"unknown":return{title:"터미널을 끝낼까요?",message:"이 터미널의 사용 상태를 확인할 수 없습니다. 아무도 쓰지 않는다고 단정할 수 없으며, 끝내면 터미널과 그 프로세스가 종료됩니다."}}}(t);if(!window.confirm("".concat(r.title,"\n\n").concat(r.message))||!n.sendsDestroy)return;let a=$.current;if(!a||!L)return void(0,c.cY)("webterm.tabs.destroy.error",{id:e,reason:"no-acp-or-session"});try{await a.send("terminal/destroy",{sessionId:L,terminalId:e}),(0,c.cY)("webterm.tabs.destroyed",{id:e}),em(e,!0),es()}catch(t){(0,c.cY)("webterm.tabs.destroy.error",{id:e,reason:String(t)})}},[em,es,L]);(0,a.useEffect)(()=>{!t||K.current.has(t)||B(e=>e.includes(t)?e:ei([...e,t]))},[t,ei]),(0,a.useEffect)(()=>{let e;if(!R||!t||0===F.length)return;let r=F.indexOf(t);if("next"===R.intent)e=F[(r+1)%F.length];else if("prev"===R.intent)e=F[(r-1+F.length)%F.length];else if("number"==typeof R.intent){let t=R.intent-1;t>=0&&t<F.length&&(e=F[t])}e&&e!==t&&((0,c.cY)("webterm.tabs.intent.apply",{intent:R.intent,from:t,to:e}),n(e))},[null==R?void 0:R.nonce]);let eh=(0,a.useCallback)(e=>{var t;return null==(t=ea.get(e))?void 0:t.isAlive},[ea]),eb=(0,a.useMemo)(()=>{if(!L)return"session 미설정";var e=function(e,t){let n=0,r=0,a=0;for(let l of e){let e=t(l);void 0===e?a+=1:e?n+=1:r+=1}return{total:e.length,alive:n,daemonKnownDead:r,daemonUnknown:a}}(F,eh);let t="".concat(e.total," terminal").concat(1===e.total?"":"s");if(!er)return"".concat(t," \xb7 데몬 상태 미확인");let n=[];return e.alive>0&&n.push("".concat(e.alive," alive")),e.daemonKnownDead>0&&n.push("".concat(e.daemonKnownDead," 종료")),e.daemonUnknown>0&&n.push("".concat(e.daemonUnknown," 데몬이 모름")),n.length>0?"".concat(t," \xb7 ").concat(n.join(" \xb7 ")):t},[L,F,eh,er]),ew=(0,a.useMemo)(()=>er&&t?F.filter(e=>e!==t&&void 0===eh(e)):[],[er,F,eh,t]),ev=(0,a.useCallback)(()=>{if(0===ew.length)return;let e=new Set(ew),t=F.filter(t=>!e.has(t));ei(t),(0,c.cY)("webterm.tabs.clean-unknown",{removed:ew.length,remaining:t.length}),B(t)},[ew,ei,F]);if("sheet"===E&&U){var ey,ek,ex;let e=t?ea.get(t):void 0;return U({tabs:F,status:L&&(null==(ey=$.current)?void 0:ey.state)!=="FAILED"&&(null==(ek=$.current)?void 0:ek.state)!=="CLOSED"&&(null==e?void 0:e.isAlive)!==!1?(null==(ex=$.current)?void 0:ex.state)==="OPEN"?"connected":"connecting":"disconnected",onSwitch:ed,onAdd:()=>{ec()},actions:(0,r.jsxs)("div",{className:"flex flex-col gap-2 text-xs","aria-label":"터미널 탭 동작",children:[F.map(e=>{var t;let n=ea.get(e),a=b(n);return(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate",children:d(e).text}),(0,r.jsx)("button",{type:"button",onClick:()=>ef(e),"aria-label":"remove ".concat(e," locally"),children:"\xd7 탭 빼기"}),a&&(0,r.jsx)("button",{type:"button",disabled:ee.has(e)&&!(null==(t=ee.get(e))?void 0:t.message),onClick:()=>void ep(e,a),"aria-label":"".concat(a," ").concat(e),children:w(a)}),(0,r.jsx)("button",{type:"button",onClick:()=>void eg(e,null==n?void 0:n.ownerRunUsage),"aria-label":"terminate ".concat(e),children:"끝내기"})]},e)}),ew.length>0&&(0,r.jsxs)("button",{type:"button",onClick:ev,children:["정리 ",ew.length]}),[...ee.values()].filter(e=>e.message).map((e,t)=>(0,r.jsx)("p",{role:"status",children:e.message},"".concat(e.action,"-").concat(t))),A&&(0,r.jsx)("button",{type:"button",onClick:A,children:M?"terminal chat dock 숨기기":"terminal chat dock 보이기"}),Y&&(0,r.jsx)("button",{type:"button",onClick:Y,children:C?"패널 펼치기":"패널 접기"}),T&&(0,r.jsx)("span",{children:"REC"}),P>1&&(0,r.jsxs)("span",{children:[P," devices"]}),(0,r.jsx)("span",{title:"터미널 PTY 는 데몬에 상주 — 연결이 끊겨도 유지되고 재접속 시 이어집니다",children:eb})]})})}return(0,r.jsxs)("div",{className:"flex items-center gap-1 border-b bg-background/50 px-2 py-1 text-xs",children:[(0,r.jsxs)("div",{className:"flex flex-1 flex-wrap items-center gap-1",children:[F.map(e=>{let n=e===t,a=ea.get(e),l=a?a.isAlive?"bg-emerald-500":"bg-rose-500":"bg-muted-foreground/40",o=function(e){if(!e||!Number.isFinite(e))return"";let t=Math.max(0,Math.floor((Date.now()-e)/1e3));return t<30?"방금":t<3600?"".concat(Math.floor(t/60),"분 전"):t<86400?"".concat(Math.floor(t/3600),"시간 전"):"".concat(Math.floor(t/86400),"일 전")}(null==a?void 0:a.lastOutputAt),s=(null==a?void 0:a.terminalOriginCategory)&&"unknown"!==a.terminalOriginCategory?m(a):"",i="출처: ".concat(m(a)),u=d(e),c=ee.get(e),f=a?"".concat(a.isAlive?"alive":"exited").concat("number"==typeof a.pid?" \xb7 pid ".concat(a.pid):"").concat(o?" \xb7 마지막 출력 ".concat(o):""," \xb7 ").concat(i).concat(a.controller?" \xb7 통제: ".concat(a.controller):""):"데몬 미기동 (선택 시 spawn) \xb7 ".concat(i);return(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-md border px-2 py-0.5 font-mono ".concat(n?"border-primary bg-primary/10 text-primary":"border-border text-muted-foreground hover:bg-accent"),children:[(0,r.jsx)("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full ".concat(l),title:f,"aria-label":f}),(0,r.jsxs)("button",{type:"button",className:"cursor-pointer",onClick:()=>ed(e),title:"".concat(u.hint," — ").concat(n?"지금 보는 터미널":"눌러서 전환"," \xb7 ").concat(f),"aria-label":"switch to ".concat(e),children:[u.text,s?" \xb7 ".concat(s):"",(null==a?void 0:a.controller)?" \xb7 통제: ".concat(a.controller):""]}),(0,r.jsx)("button",{type:"button",className:"ml-0.5 rounded text-muted-foreground hover:text-rose-500",onClick:t=>{t.stopPropagation(),ef(e)},title:"목록에서 ".concat(e," 탭 빼기 — PTY는 유지합니다"),"aria-label":"remove ".concat(e," locally"),children:"\xd7"}),b(a)&&(0,r.jsx)("button",{type:"button",disabled:void 0!==c&&!c.message,className:"rounded text-muted-foreground hover:text-primary disabled:cursor-wait disabled:opacity-60",onClick:t=>{t.stopPropagation(),ep(e,b(a))},title:"".concat(w(b(a))," ").concat(e),"aria-label":"".concat(b(a)," ").concat(e),children:void 0===c||c.message?w(b(a)):"전환 중…"}),(0,r.jsx)("button",{type:"button",className:"rounded text-muted-foreground hover:text-rose-500",onClick:t=>{t.stopPropagation(),eg(e,null==a?void 0:a.ownerRunUsage)},title:"끝내기 ".concat(e),"aria-label":"terminate ".concat(e),children:"끝내기"})]},e)}),(0,r.jsx)("button",{type:"button",className:"rounded-md border border-dashed border-border px-2 py-0.5 text-muted-foreground hover:bg-accent",onClick:()=>{ec()},title:"new terminal",children:"+"})]}),[...ee.values()].filter(e=>e.message).map((e,t)=>(0,r.jsx)("p",{role:"status",className:"text-muted-foreground",children:e.message},"".concat(e.action,"-").concat(t))),C&&T&&(0,r.jsxs)("span",{className:"ml-2 flex items-center gap-1 rounded bg-rose-500/15 px-1.5 py-0.5 font-medium text-rose-600 dark:text-rose-400",title:"recording in progress",children:[(0,r.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-rose-500 animate-pulse","aria-hidden":!0}),"REC"]}),C&&P>1&&(0,r.jsxs)("span",{className:"ml-1 flex items-center gap-1 rounded bg-amber-500/15 px-1.5 py-0.5 font-medium text-amber-700 dark:text-amber-400",title:"".concat(P," devices on this session"),children:[(0,r.jsx)(l.A,{className:"h-3 w-3","aria-hidden":!0}),P]}),(0,r.jsx)("span",{className:"ml-2 text-[11px] text-muted-foreground",title:"터미널 PTY 는 데몬에 상주 — 연결이 끊겨도 유지되고 재접속 시 이어집니다",children:eb}),ew.length>0&&(0,r.jsxs)("button",{type:"button",className:"ml-1 rounded-md border border-dashed border-border px-1.5 py-0.5 text-[11px] text-muted-foreground hover:bg-accent",onClick:ev,title:"데몬이 모르는 탭 ".concat(ew.length,"개를 목록에서 뺍니다 — PTY 는 건드리지 않고, 활성 탭은 남깁니다"),children:["정리 ",ew.length]}),A&&(0,r.jsx)("button",{type:"button",onClick:A,"aria-label":M?"hide terminal chat dock":"show terminal chat dock",title:M?"terminal chat dock 숨기기":"terminal chat dock 보이기",className:"ml-1 rounded-md p-1 ".concat(M?"bg-primary/10 text-primary":"text-muted-foreground hover:bg-accent hover:text-foreground"),children:(0,r.jsx)(o.A,{className:"h-3.5 w-3.5"})}),Y&&(0,r.jsx)("button",{type:"button",onClick:Y,"aria-label":C?"expand panels":"collapse panels",title:C?"패널 펼치기":"패널 접기",className:"ml-1 rounded-md p-1 text-muted-foreground hover:bg-accent hover:text-foreground",children:C?(0,r.jsx)(s.A,{className:"h-3.5 w-3.5"}):(0,r.jsx)(i.A,{className:"h-3.5 w-3.5"})})]})}},12711:(e,t,n)=>{n.d(t,{C:()=>u,DaemonProvider:()=>c,Q:()=>d});var r=n(59473),a=n(24725),l=n(62474),o=n(49333),s=n(56580),i=n(54111);let u=(0,a.createContext)(null);function c(e){let{children:t}=e,n={baseUrl:"",token:"",provider:""},[c,d]=(0,a.useState)(n),[m,f]=(0,a.useState)(""),[p]=(0,a.useState)(()=>new s.ki(n));(0,a.useEffect)(()=>{let e=(0,l.Fp)();d(e),p.updateConfig(e),f((0,o.oD)()),(0,i.cY)("webterm.provider.daemon.init",{baseUrl:e.baseUrl,hasToken:!!e.token})},[p]),(0,a.useEffect)(()=>{let e=e=>{if("elanous.daemon.token"===e.key||"elanous.nexus.baseUrl"===e.key){let t=(0,l.Fp)();p.updateConfig(t),d(t),(0,i.cY)("webterm.provider.daemon.config-cross-tab",{key:e.key,hasToken:!!t.token});return}"elanous.daemon.sessionId"===e.key&&e.newValue&&f(t=>t===e.newValue?t:((0,i.cY)("webterm.provider.daemon.session-cross-tab",{previous:t||"(empty)",next:e.newValue}),e.newValue))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[p]);let g=e=>{d(t=>{let n={...t,...e};return(0,l.Qc)(e),p.updateConfig(n),(0,i.cY)("webterm.provider.daemon.config-update",{keys:Object.keys(e)}),n})},h=e=>{f(e),localStorage.setItem("elanous.daemon.sessionId",e),(0,i.cY)("webterm.provider.daemon.session-set",{sessionId:e})},b=(0,a.useMemo)(()=>({config:c,setConfig:g,client:p,sessionId:m,setSessionId:h}),[c,p,m]);return(0,r.jsx)(u.Provider,{value:b,children:t})}function d(){let e=(0,a.useContext)(u);if(!e)throw Error("useDaemon must be used inside <DaemonProvider>");return e}},49333:(e,t,n)=>{n.d(t,{Zr:()=>o,f6:()=>a,oD:()=>l});let r="elanous.daemon.sessionId";function a(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"s-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,10))}function l(){let e=function(){let e=new URLSearchParams(window.location.search).get("session");return e?(localStorage.setItem(r,e),e):localStorage.getItem(r)}();if(e)return e;let t=a();return localStorage.setItem(r,t),t}function o(){let e=a();return localStorage.setItem(r,e),e}},66659:(e,t,n)=>{n.d(t,{Dw:()=>g,Kh:()=>u,OZ:()=>s,cl:()=>i,gA:()=>p,hH:()=>d,lH:()=>m,tC:()=>o,x3:()=>c,xu:()=>l});var r=n(74787);function a(e){return"number"==typeof e&&Number.isFinite(e)?Number.isNaN(new Date(e).getTime())?null:e:null}function l(e){let t=new Set,n=[];for(let r of e){let e=c(r);!1===r.hasPty||t.has(e)||(t.add(e),n.push(r))}return n.sort((e,t)=>{var n,r,l,o;let s=a(e.startedAt),i=a(t.startedAt);if(null!==s&&null!==i&&s!==i)return i-s;if(null!==s&&null===i)return -1;if(null===s&&null!==i)return 1;let u=(n=e.id)<(r=t.id)?-1:+(n>r);return 0!==u?u:(l=c(e))<(o=c(t))?-1:+(l>o)})}function o(e){return(0,r.KN)(e)}function s(e){return"number"!=typeof e||!Number.isFinite(e)||Number.isNaN(new Date(e).getTime())?"시작 시각 알 수 없음":new Date(e).toLocaleString()}function i(e,t){return e&&!t?"프로세스 실행 중 \xb7 출력 스트림 열림":e&&t?"프로세스 실행 중 \xb7 출력 스트림 닫힘":e||t?"프로세스 종료 \xb7 출력 스트림 닫힘":"프로세스 종료 \xb7 출력 스트림 열림"}function u(e,t){if(null===e)return null;if("unrequested"===t.status||"loading"===t.status)return{kind:"loading",unreadablePayloadsSummary:null,groups:[]};if("error"===t.status)return{kind:"error",unreadablePayloadsSummary:null,groups:[]};let{lineage:n}=t,r=void 0===n.unreadablePayloads?"읽지 못한 계보 payload 수를 데몬이 알리지 않았습니다.":0===n.unreadablePayloads?"읽지 못한 계보 payload가 0개입니다.":"읽지 못한 계보 payload가 ".concat(n.unreadablePayloads,"개입니다.");return{kind:0===n.groups.length?"empty":"content",unreadablePayloadsSummary:r,groups:n.groups.map(t=>({joinedBy:t.joinedBy,key:t.key,rows:t.rows.map(t=>({ptyId:t.ptyId,kind:t.kind,instance:t.instance,alive:t.alive,startedAt:t.startedAt,closed:!0===t.closed||void 0!==t.closedAt,selected:t.ptyId===e}))}))}}function c(e){var t,n;return"".concat(null!=(n=null==(t=e.sourceRoot)?void 0:t.dbPath)?n:"","\0").concat(e.id)}function d(e,t){let n=t.filter(t=>t.id===e);if(1===n.length){let e=n[0];return{kind:"selected",terminal:e,terminalKey:c(e),candidates:[e],reason:"unique-id"}}return n.length>1?{kind:"ambiguous",terminal:null,terminalKey:null,candidates:n,reason:"duplicate-id"}:{kind:"not-found",terminal:null,terminalKey:null,candidates:[],reason:0===t.length?"empty-terminal-list":"terminal-id-not-found"}}function m(e,t,n,r,a){let l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"raw",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:new Map,s=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"raw",a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:new Map,l=null!==t&&e.some(e=>c(e)===t);return e.map(e=>{var o,s,i;let u=l&&c(e)===t,d=u?"raw"===r?"unrequested"===(i=null!=(o=n.get(c(e)))?o:{status:"unrequested"}).status?{kind:"loading",text:"화면 글자를 아직 불러오지 않았습니다.",frameInfo:null,frameMetadata:null}:"loading"===i.status?{kind:"loading",text:"화면 글자를 불러오는 중…",frameInfo:null,frameMetadata:null}:"error"===i.status?{kind:"error",text:"화면 글자를 불러오지 못했습니다.",frameInfo:null,frameMetadata:null}:0===i.scrollback.length?{kind:"empty",text:"표시할 화면 글자가 없습니다.",frameInfo:null,frameMetadata:null}:{kind:"content",text:i.scrollback,frameInfo:null,frameMetadata:null}:function(e){if("unrequested"===e.status)return{kind:"loading",text:"렌더 화면을 아직 불러오지 않았습니다.",frameInfo:null,frameMetadata:null};if("loading"===e.status)return{kind:"loading",text:"렌더 화면을 불러오는 중…",frameInfo:null,frameMetadata:null};if("error"===e.status)return{kind:"error",text:"렌더 화면을 불러오지 못했습니다.",frameInfo:null,frameMetadata:null};let[t,...n]=e.frame.split("\n"),r=n.join("\n"),a={frameAt:e.frameAt,frameSource:e.frameSource};return 0===r.length?{kind:"empty",text:"표시할 렌더 화면이 없습니다.",frameInfo:t||null,frameMetadata:a}:{kind:"content",text:r,frameInfo:t||null,frameMetadata:a}}(null!=(s=a.get(c(e)))?s:{status:"unrequested"}):null;return{terminal:e,selected:u,scrollback:d,view:null===d?null:{visible:!0,modes:[{mode:"raw",label:"원시 글자",selected:"raw"===r},{mode:"render",label:"렌더 화면",selected:"render"===r}],display:d}}})}(t,r,a,l,o);return{includeAll:e,scopeSummary:["number"!=typeof(null==n?void 0:n.hiddenDead)?null:0===n.hiddenDead?"숨긴 종료 PTY가 0개입니다.":"숨긴 종료 PTY가 ".concat(n.hiddenDead,"개입니다."),function(e){let t=e.filter(e=>{let{terminal:t}=e;return"terminated-live-owner"===t.ownerRunUsage}).length;return"소유 런이 끝났는데 터미널이 남아 있는 행이 ".concat(t,"개입니다.")}(s)].filter(e=>null!==e).join(" "),rows:s}}function f(e,t){return e.observedAt-t.observedAt||e.logId-t.logId}function p(e){var t,n,r;let a=new Map;for(let n of e){let e=function(e){if("headless.progress-frame"!==e.event||!e.data||"object"!=typeof e.data)return null;let t=e.data;if("string"!=typeof t.ptyId||"string"!=typeof t.runId||"string"!=typeof t.planId||!Number.isSafeInteger(t.seq)||t.seq<1||"string"!=typeof t.humanLine)return null;let n=Date.parse(e.ts);return{ptyId:t.ptyId,runId:t.runId,planId:t.planId,seq:t.seq,humanLine:t.humanLine,observedAt:Number.isFinite(n)?n:0,logId:e.id}}(n);if(!e)continue;let r=null!=(t=a.get(e.ptyId))?t:[];r.push(e),a.set(e.ptyId,r)}let l=new Map;for(let[e,t]of a){t.sort(f);let a=t.at(-1),o=new Map;for(let e of t){let t="".concat(e.runId,"\0").concat(e.planId),r=null!=(n=o.get(t))?n:new Set;r.add(e.seq),o.set(t,r)}let s=[...o.values()].some(e=>{let t=[...e].sort((e,t)=>e-t);return t.some((e,n)=>0===n&&1!==e||n>0&&e-t[n-1]!=1)});l.set(e,{line:a.humanLine,status:(r=a.humanLine,/^\s*●/.test(r))?"complete":"running",hasMissingFrames:s})}return l}function g(e){var t;let n=null==(t=e.storedId)?void 0:t.trim();if(n)return{terminalId:n,reason:"stored"};let r=e.terminals.find(e=>!0===e.alive&&"web-terminal"===e.cmd);return r?{terminalId:r.id,reason:"live-pty"}:void 0!==e.fallbackId&&null!==e.fallbackId?{terminalId:e.fallbackId,reason:"fallback"}:{terminalId:null,reason:"no-terminals"}}},74787:(e,t,n)=>{n.d(t,{GG:()=>i,HS:()=>c,KN:()=>a,L4:()=>l,U$:()=>f,XG:()=>d,h7:()=>o,t_:()=>m,vq:()=>p,xV:()=>s});var r=n(4245);function a(e){return e?{all:!0,includeTest:!0}:{}}function l(){try{let e=(0,r.Ys)(),t=(0,r.Wq)(e);return(0,r.To)([...e,t]),t}catch(e){return null}}function o(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=Object.entries(a(e)).map(e=>{let[t,n]=e;return"".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(String(n)))}).join("&");return 0===t.length?"/v1/terminals":"/v1/terminals?".concat(t)}function s(e){return"/v1/terminals/".concat(encodeURIComponent(e),"/frame")}function i(){return"/v1/terminals/view"}let u={unknown:"Unknown target: this PTY was not found. Check the subject list and try again.",denied:"Denied: takeover was refused. Check ownership and try again.","owner-unreachable":"Owner unreachable: could not reach the PTY owner. Check the owner process and try again.",failed:"Server failed: ownership transfer did not complete. Check status and try again.",http:"Takeover failed. Check status and try again.",network:"Network failed: could not request takeover. Check the connection and try again."};async function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:globalThis.fetch,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};try{var r,a;let l=await t("/v1/terminals/".concat(encodeURIComponent(e),"/control"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"takeover"}),signal:n.signal});if(200===l.status)return{ok:!0,ptyId:e};let o=(r=l.status,404===r?"unknown":409===r?"denied":504===r?"owner-unreachable":502===r?"failed":"http");return{ok:!1,ptyId:e,kind:o,status:l.status,message:(a=l.status,"http"===o&&void 0!==a?"Takeover failed (".concat(a,"). Check status and try again."):u[o])}}catch(t){return{ok:!1,ptyId:e,kind:"network",message:u.network}}}function d(e){return{talk:e.talk.length>0,screen:e.screen.ptyIds.length>0,agent:e.agent.names.length>0||e.agent.controllers.length>0}}function m(e){let t=d(e);return e.screen.liveCount>0?"live":!t.screen&&t.agent?"unknown":"inactive"}function f(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t?[...e]:e.filter(e=>"inactive"!==m(e))}function p(e,t){let n=new Map;for(let a of e){var r;let e=(function(e){let t=new Set,n=[];for(let r of e)!1===r.hasPty||t.has(r.id)||(t.add(r.id),n.push({id:r.id,value:r}));return n})(a.screen.ptyIds.map(e=>({id:e}))).sort((e,t)=>e.id.localeCompare(t.id));if(0===e.length){n.set(a.id,{kind:"no-screen"});continue}let l=null==(r=e.find(e=>{let{id:n}=e;return t.has(n)}))?void 0:r.id,o=void 0===l?void 0:t.get(l);n.set(a.id,void 0===l||void 0===o?{kind:"no-progress"}:{kind:"progress",ptyId:l,...o})}return n}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6690],{66690:(a,e,s)=>{s.d(e,{diagram:()=>k.AC});var k=s(70771);s(11525),s(36096),s(27899),s(35518),s(83953),s(31236),s(75007),s(17634),s(68355),s(24861),s(92763),s(70208),s(21521),s(66357),s(29346),s(33492),s(1372),s(32298),s(62108)}}]);