elanous 0.2.29 → 0.2.32

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 (775) 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/{cIpv5nU9AycwYWZI9H589 → IVKr3AlRUVLKsw2fh7eXF}/_buildManifest.js +1 -1
  4. package/apps/pwa/out/_next/static/chunks/{058a98ba.7eb28d5e6dc03565.js → 0bb0ff36.b8d418980951e5ba.js} +7 -7
  5. package/apps/pwa/out/_next/static/chunks/1034-8b639cee57b8e4a8.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1085-6c2d35526f11f840.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1220.1ff7d5cdc34b1ae5.js +27 -0
  8. package/apps/pwa/out/_next/static/chunks/1247.5884ec81b39fe2e7.js +287 -0
  9. package/apps/pwa/out/_next/static/chunks/1302.87681521a7a4661e.js +62 -0
  10. package/apps/pwa/out/_next/static/chunks/1324-59dae3002413623b.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/{6013-2f769370d8b4c2c6.js → 1335-6731f392c35216eb.js} +3 -3
  12. package/apps/pwa/out/_next/static/chunks/1343-f40b5870ac1eda5a.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/146-b6cd56be11dda017.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/{8332.6f0f49df772e163b.js → 1654.32de4b324981a188.js} +1 -1
  15. package/apps/pwa/out/_next/static/chunks/1834-98b64172bc1efe77.js +1 -0
  16. package/apps/pwa/out/_next/static/chunks/1849.1ce38efa6c527d9a.js +149 -0
  17. package/apps/pwa/out/_next/static/chunks/{8795.32573a185af18c7b.js → 1913.7cc6fb6055b1ed3f.js} +2 -2
  18. package/apps/pwa/out/_next/static/chunks/{419.736c0d6f426249a7.js → 2001.6c7e0fd02190886c.js} +1 -1
  19. package/apps/pwa/out/_next/static/chunks/2030.41fae98c7e907304.js +1 -0
  20. package/apps/pwa/out/_next/static/chunks/2099-08b2f2dfba742c9b.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/2112-e4efc21a6505d5bc.js +1 -0
  22. package/apps/pwa/out/_next/static/chunks/2134.ecee03a550ee7250.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/{6767.1fcfc9b8be83975f.js → 2213.2ccbada92c33ea0f.js} +16 -16
  24. package/apps/pwa/out/_next/static/chunks/2236.66061832181cb745.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/2422.b0bd272e7020d7e6.js +1 -0
  26. package/apps/pwa/out/_next/static/chunks/2534.e85ae21ad0dac829.js +1 -0
  27. package/apps/pwa/out/_next/static/chunks/{4759.1f76713aefb87db5.js → 2871.0bca6137343b3f76.js} +1 -1
  28. package/apps/pwa/out/_next/static/chunks/{6776.06ff1e3b464cc607.js → 2898.fd781bc7cf01a7b7.js} +1 -1
  29. package/apps/pwa/out/_next/static/chunks/{1782-59db1b5aa06df38a.js → 2940-619bfd8ef337c611.js} +1 -1
  30. package/apps/pwa/out/_next/static/chunks/{8471.8d2a8c74f09c36ff.js → 2985.39ccdecd36848b12.js} +4 -4
  31. package/apps/pwa/out/_next/static/chunks/3040.92ff9ffc9f971cb9.js +115 -0
  32. package/apps/pwa/out/_next/static/chunks/3144.6861096c7b4edef7.js +64 -0
  33. package/apps/pwa/out/_next/static/chunks/{bc324b7c.02a09dd93f6a399b.js → 3267c0e6.d34854e7b3984a6e.js} +1 -1
  34. package/apps/pwa/out/_next/static/chunks/3278.2e5d15b53a4091c8.js +2 -0
  35. package/apps/pwa/out/_next/static/chunks/{7725-4f83d5541fbdb81b.js → 3541-ce3a5424ed5ad7f1.js} +1 -1
  36. package/apps/pwa/out/_next/static/chunks/3583.a05e88cc8d594628.js +1 -0
  37. package/apps/pwa/out/_next/static/chunks/3771.e928edf2867d28c0.js +1 -0
  38. package/apps/pwa/out/_next/static/chunks/3902.e1e71aaac850a045.js +34 -0
  39. package/apps/pwa/out/_next/static/chunks/4063-03284b5de59965f3.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/{46bd8bea.2f4b4099172fcdb7.js → 409f1e57.d0649fc47691ebfe.js} +1 -1
  41. package/apps/pwa/out/_next/static/chunks/4111.2bfedbb233ad206b.js +1 -0
  42. package/apps/pwa/out/_next/static/chunks/{1142.65d002789ab3af7d.js → 4174.92ed04922709ac9e.js} +2 -2
  43. package/apps/pwa/out/_next/static/chunks/4300-c7ec4eeabbb5f3f7.js +1 -0
  44. package/apps/pwa/out/_next/static/chunks/4483.646d5065199e1b55.js +36 -0
  45. package/apps/pwa/out/_next/static/chunks/4519.28199ff26b2fd80d.js +1 -0
  46. package/apps/pwa/out/_next/static/chunks/4581.ef2443578054544f.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/4608-8d894e9cbe4f08bf.js +1 -0
  48. package/apps/pwa/out/_next/static/chunks/4639.ae48a01d1bb50a93.js +286 -0
  49. package/apps/pwa/out/_next/static/chunks/4739.08742ac668aada67.js +77 -0
  50. package/apps/pwa/out/_next/static/chunks/4745.67d6f99c245af3f7.js +226 -0
  51. package/apps/pwa/out/_next/static/chunks/4882-16cef71d6a1a32be.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/4999.c064a4000c2a9e94.js +79 -0
  53. package/apps/pwa/out/_next/static/chunks/5173-233188df2f42c626.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/5260-69f35419bca263e7.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/5272.b92d1b72a15c25fe.js +1 -0
  56. package/apps/pwa/out/_next/static/chunks/5304.04d24756f242a094.js +148 -0
  57. package/apps/pwa/out/_next/static/chunks/5307.60f2209e809bd627.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/5415-997980f828667736.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/{3396-97b97928c49190c9.js → 5458-16cd7a2b51b74c8c.js} +1 -1
  60. package/apps/pwa/out/_next/static/chunks/{3403.7199205e65124486.js → 5525.86debf231e181813.js} +1 -1
  61. package/apps/pwa/out/_next/static/chunks/{9143.ff14585db1d275ff.js → 5543.a438b8ab5a13ea47.js} +1 -1
  62. package/apps/pwa/out/_next/static/chunks/5572-42c9084f27ca761e.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/5661-80470aac963d9f36.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/5723.421338408b5c30c4.js +74 -0
  65. package/apps/pwa/out/_next/static/chunks/5809.64c3664267c50bce.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/6000.64bc21ac8627f2f5.js +94 -0
  67. package/apps/pwa/out/_next/static/chunks/6013.39459b9c68eabf5f.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/607-06466dff012b03ef.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/{8398.73a19b39715eda04.js → 6092.a7f99e68b188ca66.js} +1 -1
  70. package/apps/pwa/out/_next/static/chunks/60fb96c9.360b01d8d4927b7b.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/{5591.a35e7a217734a8b9.js → 6157.0c9af021de4fb31b.js} +2 -2
  72. package/apps/pwa/out/_next/static/chunks/6192.a190b989b81e9743.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/6323.8672b4817a306928.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/{7375.050ea0d72968e49f.js → 6433.fc573af22bbc9ab7.js} +17 -17
  75. package/apps/pwa/out/_next/static/chunks/6444.7d1fdcb9b09ae71c.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/6517.4147878ac06d584d.js +90 -0
  77. package/apps/pwa/out/_next/static/chunks/6532.e34302010b2f0b68.js +32 -0
  78. package/apps/pwa/out/_next/static/chunks/6544cb48.a87fe20ddf137be2.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/6546.74bc4ed82f19016d.js +104 -0
  80. package/apps/pwa/out/_next/static/chunks/6684-e7523ce7c2fad075.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/6726.ebdc82feb161431e.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/6739.00fb6f892e5e392b.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/6745.934c4921bf15513a.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/6767.ea607cf0c20a25af.js +24 -0
  85. package/apps/pwa/out/_next/static/chunks/6843.67bfd020da0926c5.js +93 -0
  86. package/apps/pwa/out/_next/static/chunks/69-0a2c8209c6d4a158.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/6948.1062d4594652b5bf.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/7138-eaf841fc1dc03463.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/7174-cda29ee13d7790e7.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/7304-3c07583f4e405f4f.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/7371.80c05c653b08e907.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/7391.ebae168025c91b6a.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/{1852.7f7b53991fcb99ef.js → 7502.ccd5b8065545edd0.js} +2 -2
  94. package/apps/pwa/out/_next/static/chunks/7557.e325503a090a4310.js +8 -0
  95. package/apps/pwa/out/_next/static/chunks/7569-9ce9432c7f10989f.js +1 -0
  96. package/apps/pwa/out/_next/static/chunks/{6534.1ab00f370db7b105.js → 7862.30a8d6482bb238eb.js} +1 -1
  97. package/apps/pwa/out/_next/static/chunks/7886-55854585fadeded1.js +1 -0
  98. package/apps/pwa/out/_next/static/chunks/7947-d0759430f8042240.js +1 -0
  99. package/apps/pwa/out/_next/static/chunks/{285adb1a.5654e605dddf86d2.js → 7a1887c4.f36b88fba31da8fd.js} +1 -1
  100. package/apps/pwa/out/_next/static/chunks/8018.a32663f04a6fc5f9.js +1 -0
  101. package/apps/pwa/out/_next/static/chunks/8097-9530c03bcc550f02.js +1 -0
  102. package/apps/pwa/out/_next/static/chunks/8215-1661812b6e9ad71f.js +1 -0
  103. package/apps/pwa/out/_next/static/chunks/8260-19c921a51ca8ec3e.js +1 -0
  104. package/apps/pwa/out/_next/static/chunks/8440.3a5cf5c85aa76db8.js +1 -0
  105. package/apps/pwa/out/_next/static/chunks/8519-4599be2249161e68.js +1 -0
  106. package/apps/pwa/out/_next/static/chunks/8547.b028b90c5c01ace6.js +1 -0
  107. package/apps/pwa/out/_next/static/chunks/8587-cbe02a953a7f4990.js +1 -0
  108. package/apps/pwa/out/_next/static/chunks/877-2b977259c4b15655.js +1 -0
  109. package/apps/pwa/out/_next/static/chunks/9002.e5658224e3dc1b6f.js +24 -0
  110. package/apps/pwa/out/_next/static/chunks/9019-0a4b40c50c7314fb.js +1 -0
  111. package/apps/pwa/out/_next/static/chunks/{1516.dfaceff3fd2d0e0d.js → 9138.b6e80031afb1d973.js} +1 -1
  112. package/apps/pwa/out/_next/static/chunks/9188-d36e4fc869ddc166.js +1 -0
  113. package/apps/pwa/out/_next/static/chunks/{9907.49be0fcadaf214b5.js → 9221.7d22eaf353a2d4e7.js} +1 -1
  114. package/apps/pwa/out/_next/static/chunks/9230.44f5039e796e4ab4.js +1 -0
  115. package/apps/pwa/out/_next/static/chunks/{8767-2f6a634f5abeaa01.js → 9279-d28c5b7754d010ae.js} +1 -1
  116. package/apps/pwa/out/_next/static/chunks/939.336acce73e98482c.js +1 -0
  117. package/apps/pwa/out/_next/static/chunks/{3160-95c96f4d2a21dd26.js → 9398-6aed28f0a96d0d6f.js} +1 -1
  118. package/apps/pwa/out/_next/static/chunks/9407.e49124dedf0f5e72.js +1 -0
  119. package/apps/pwa/out/_next/static/chunks/9610.c07cce4bfcc14ed7.js +1 -0
  120. package/apps/pwa/out/_next/static/chunks/9667-ce78c2ce91050ff9.js +1 -0
  121. package/apps/pwa/out/_next/static/chunks/{328bb3ab-6628a1114fe3fb3b.js → 997ce8a5-2ad501927003b41b.js} +1 -1
  122. package/apps/pwa/out/_next/static/chunks/{6853.cc5174a9dee59593.js → 9989.3694300e5f000b14.js} +1 -1
  123. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-339fabb3499da0e1.js +1 -0
  124. package/apps/pwa/out/_next/static/chunks/app/approvals/page-504204b58c82c253.js +1 -0
  125. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-a9717a67c2eecbaf.js +1 -0
  126. package/apps/pwa/out/_next/static/chunks/app/board/page-5c9ec30aee62dfbf.js +1 -0
  127. package/apps/pwa/out/_next/static/chunks/app/botlab/page-584191533721fa16.js +1 -0
  128. package/apps/pwa/out/_next/static/chunks/app/bots/page-73c4b4bb3ac7ab5f.js +1 -0
  129. package/apps/pwa/out/_next/static/chunks/app/ceo/page-c0f1ca371f710b06.js +1 -0
  130. package/apps/pwa/out/_next/static/chunks/app/chat/page-46430d45a9e04eac.js +1 -0
  131. package/apps/pwa/out/_next/static/chunks/app/consult/page-3b2ebf1dc64ff0be.js +1 -0
  132. package/apps/pwa/out/_next/static/chunks/app/control/page-a27b1e5a0d1b308f.js +1 -0
  133. package/apps/pwa/out/_next/static/chunks/app/decisions/page-25654b82094f7d22.js +1 -0
  134. package/apps/pwa/out/_next/static/chunks/app/design-check/page-8ea49a4c6dd2c6e7.js +1 -0
  135. package/apps/pwa/out/_next/static/chunks/app/editor/page-ce5113aefea0a8d1.js +1 -0
  136. package/apps/pwa/out/_next/static/chunks/app/exec/page-0e5a41fac1c75396.js +1 -0
  137. package/apps/pwa/out/_next/static/chunks/app/field/page-31aaf1ed37c6df9a.js +1 -0
  138. package/apps/pwa/out/_next/static/chunks/app/healthz/route-339fabb3499da0e1.js +1 -0
  139. package/apps/pwa/out/_next/static/chunks/app/inside/page-3dcc1fa411e1f4e0.js +1 -0
  140. package/apps/pwa/out/_next/static/chunks/app/intake/page-c69247e7134d329d.js +1 -0
  141. package/apps/pwa/out/_next/static/chunks/app/layout-66dc5cd3a0999abe.js +1 -0
  142. package/apps/pwa/out/_next/static/chunks/app/live/page-26ff7ff651a7217d.js +1 -0
  143. package/apps/pwa/out/_next/static/chunks/app/live-run/page-617b3976981efa96.js +1 -0
  144. package/apps/pwa/out/_next/static/chunks/app/loops/page-d256f5d5d9552823.js +1 -0
  145. package/apps/pwa/out/_next/static/chunks/app/market/page-ce8f1907b8a6101c.js +1 -0
  146. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-33e182a316263116.js +1 -0
  147. package/apps/pwa/out/_next/static/chunks/app/morning/page-32866485913d6a04.js +1 -0
  148. package/apps/pwa/out/_next/static/chunks/app/not-found-7607cca9b84950c6.js +1 -0
  149. package/apps/pwa/out/_next/static/chunks/app/observatory/page-eeab86176b03dc3b.js +1 -0
  150. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-5b93dbae3432b996.js +1 -0
  151. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-77a6cb90a9cf2b10.js +1 -0
  152. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-f47e768b5b242b5a.js +1 -0
  153. package/apps/pwa/out/_next/static/chunks/app/outputs/page-eb41aa3367fc2505.js +1 -0
  154. package/apps/pwa/out/_next/static/chunks/app/page-4d13ab0b8a267e3f.js +1 -0
  155. package/apps/pwa/out/_next/static/chunks/app/reflection/page-84dad32ff0fc0831.js +1 -0
  156. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-95306f892aa2d0ee.js +1 -0
  157. package/apps/pwa/out/_next/static/chunks/app/sessions/page-940fb6c217f6b470.js +1 -0
  158. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-8c66a3b24a745630.js +1 -0
  159. package/apps/pwa/out/_next/static/chunks/app/settings/page-7b675dfd35c36fc9.js +1 -0
  160. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-8bd0d3cf7665bcfc.js +1 -0
  161. package/apps/pwa/out/_next/static/chunks/app/setup/layout-339fabb3499da0e1.js +1 -0
  162. package/apps/pwa/out/_next/static/chunks/app/setup/{page-29900ed0011b2c83.js → page-c219f2ed171131be.js} +1 -1
  163. package/apps/pwa/out/_next/static/chunks/app/share/page-40f8fa21bdae955b.js +1 -0
  164. package/apps/pwa/out/_next/static/chunks/app/showroom/page-468f8313e4f1fbd9.js +1 -0
  165. package/apps/pwa/out/_next/static/chunks/app/tasks/page-7bbb8fa353a246c4.js +1 -0
  166. package/apps/pwa/out/_next/static/chunks/app/term/page-04d00ae9b0890349.js +1 -0
  167. package/apps/pwa/out/_next/static/chunks/app/today/page-4214b855d9233ea8.js +1 -0
  168. package/apps/pwa/out/_next/static/chunks/app/trace/page-936752c7aa58762e.js +1 -0
  169. package/apps/pwa/out/_next/static/chunks/app/vault/page-ec052ad359df1797.js +1 -0
  170. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-8305570551091338.js +1 -0
  171. package/apps/pwa/out/_next/static/chunks/app/workflows/page-fad650e4793adb65.js +1 -0
  172. package/apps/pwa/out/_next/static/chunks/app/workspace/page-d90e64743826e1d8.js +1 -0
  173. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-a16bcfd49af86a32.js +1 -0
  174. package/apps/pwa/out/_next/static/chunks/{425cfc4d.fb91158e3971c39f.js → b313b242.cb1265eea908db61.js} +1 -1
  175. package/apps/pwa/out/_next/static/chunks/e5012ffe.f727e23c231f4342.js +122 -0
  176. package/apps/pwa/out/_next/static/chunks/ea695e3c-1f1d70d740cf3031.js +1 -0
  177. package/apps/pwa/out/_next/static/chunks/ebc7d829.264a0bcb6c750b50.js +1 -0
  178. package/apps/pwa/out/_next/static/chunks/framework-906af9bd029e166c.js +1 -0
  179. package/apps/pwa/out/_next/static/chunks/main-a24847f9f684d469.js +1 -0
  180. package/apps/pwa/out/_next/static/chunks/main-app-7bdcd8aa7c8397d3.js +1 -0
  181. package/apps/pwa/out/_next/static/chunks/pages/_app-6ba46a5066fc226d.js +1 -0
  182. package/apps/pwa/out/_next/static/chunks/pages/_error-a8dc6d07591f2a25.js +1 -0
  183. package/apps/pwa/out/_next/static/chunks/webpack-f13df28c15c55eee.js +1 -0
  184. package/apps/pwa/out/_next/static/css/b5d88eba78a3d7bf.css +1 -0
  185. package/apps/pwa/out/approvals/index.html +1 -1
  186. package/apps/pwa/out/approvals/index.txt +23 -23
  187. package/apps/pwa/out/autopilot/index.html +1 -1
  188. package/apps/pwa/out/autopilot/index.txt +23 -23
  189. package/apps/pwa/out/board/index.html +1 -1
  190. package/apps/pwa/out/board/index.txt +23 -23
  191. package/apps/pwa/out/botlab/index.html +1 -1
  192. package/apps/pwa/out/botlab/index.txt +22 -22
  193. package/apps/pwa/out/bots/index.html +1 -1
  194. package/apps/pwa/out/bots/index.txt +22 -22
  195. package/apps/pwa/out/ceo/index.html +1 -1
  196. package/apps/pwa/out/ceo/index.txt +23 -23
  197. package/apps/pwa/out/chat/index.html +1 -1
  198. package/apps/pwa/out/chat/index.txt +22 -22
  199. package/apps/pwa/out/consult/index.html +1 -1
  200. package/apps/pwa/out/consult/index.txt +23 -23
  201. package/apps/pwa/out/control/index.html +1 -1
  202. package/apps/pwa/out/control/index.txt +23 -23
  203. package/apps/pwa/out/decisions/index.html +1 -1
  204. package/apps/pwa/out/decisions/index.txt +22 -22
  205. package/apps/pwa/out/design-check/index.html +1 -1
  206. package/apps/pwa/out/design-check/index.txt +23 -23
  207. package/apps/pwa/out/editor/index.html +1 -1
  208. package/apps/pwa/out/editor/index.txt +23 -23
  209. package/apps/pwa/out/exec/index.html +1 -1
  210. package/apps/pwa/out/exec/index.txt +23 -23
  211. package/apps/pwa/out/field/index.html +1 -1
  212. package/apps/pwa/out/field/index.txt +23 -23
  213. package/apps/pwa/out/healthz +1 -1
  214. package/apps/pwa/out/index.html +1 -1
  215. package/apps/pwa/out/index.txt +22 -22
  216. package/apps/pwa/out/inside/index.html +1 -1
  217. package/apps/pwa/out/inside/index.txt +22 -22
  218. package/apps/pwa/out/intake/index.html +1 -1
  219. package/apps/pwa/out/intake/index.txt +23 -23
  220. package/apps/pwa/out/live/index.html +1 -1
  221. package/apps/pwa/out/live/index.txt +26 -23
  222. package/apps/pwa/out/live-run/index.html +1 -1
  223. package/apps/pwa/out/live-run/index.txt +23 -23
  224. package/apps/pwa/out/loops/index.html +1 -1
  225. package/apps/pwa/out/loops/index.txt +22 -22
  226. package/apps/pwa/out/market/index.html +1 -1
  227. package/apps/pwa/out/market/index.txt +22 -22
  228. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  229. package/apps/pwa/out/missions/placeholder/index.txt +22 -22
  230. package/apps/pwa/out/morning/index.html +1 -1
  231. package/apps/pwa/out/morning/index.txt +23 -23
  232. package/apps/pwa/out/observatory/index.html +1 -1
  233. package/apps/pwa/out/observatory/index.txt +23 -23
  234. package/apps/pwa/out/ops/checklist/index.html +1 -1
  235. package/apps/pwa/out/ops/checklist/index.txt +22 -22
  236. package/apps/pwa/out/ops/release/index.html +1 -1
  237. package/apps/pwa/out/ops/release/index.txt +22 -22
  238. package/apps/pwa/out/ops/seats/index.html +1 -1
  239. package/apps/pwa/out/ops/seats/index.txt +22 -22
  240. package/apps/pwa/out/outputs/index.html +1 -1
  241. package/apps/pwa/out/outputs/index.txt +22 -22
  242. package/apps/pwa/out/reflection/index.html +1 -1
  243. package/apps/pwa/out/reflection/index.txt +23 -23
  244. package/apps/pwa/out/scheduler/index.html +1 -1
  245. package/apps/pwa/out/scheduler/index.txt +23 -23
  246. package/apps/pwa/out/sessions/index.html +1 -1
  247. package/apps/pwa/out/sessions/index.txt +22 -22
  248. package/apps/pwa/out/settings/devices/index.html +1 -1
  249. package/apps/pwa/out/settings/devices/index.txt +23 -23
  250. package/apps/pwa/out/settings/index.html +1 -1
  251. package/apps/pwa/out/settings/index.txt +23 -23
  252. package/apps/pwa/out/setup/done/index.html +1 -1
  253. package/apps/pwa/out/setup/done/index.txt +23 -23
  254. package/apps/pwa/out/setup/index.html +1 -1
  255. package/apps/pwa/out/setup/index.txt +23 -23
  256. package/apps/pwa/out/share/index.html +1 -1
  257. package/apps/pwa/out/share/index.txt +23 -23
  258. package/apps/pwa/out/showroom/index.html +1 -1
  259. package/apps/pwa/out/showroom/index.txt +22 -22
  260. package/apps/pwa/out/tasks/index.html +1 -1
  261. package/apps/pwa/out/tasks/index.txt +23 -23
  262. package/apps/pwa/out/term/index.html +1 -1
  263. package/apps/pwa/out/term/index.txt +23 -23
  264. package/apps/pwa/out/today/index.html +1 -1
  265. package/apps/pwa/out/today/index.txt +23 -23
  266. package/apps/pwa/out/trace/index.html +1 -1
  267. package/apps/pwa/out/trace/index.txt +23 -23
  268. package/apps/pwa/out/vault/index.html +1 -1
  269. package/apps/pwa/out/vault/index.txt +23 -23
  270. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  271. package/apps/pwa/out/workflows/chat-ui/index.txt +23 -23
  272. package/apps/pwa/out/workflows/index.html +1 -1
  273. package/apps/pwa/out/workflows/index.txt +23 -23
  274. package/apps/pwa/out/workspace/index.html +1 -1
  275. package/apps/pwa/out/workspace/index.txt +23 -23
  276. package/apps/pwa/out/worktrees/index.html +1 -1
  277. package/apps/pwa/out/worktrees/index.txt +23 -23
  278. package/bin/elanous.mjs +7 -3
  279. package/graphs/context/nightly-condense.yaml +1 -0
  280. package/graphs/implement-loop.yaml +5 -0
  281. package/graphs/intake/intake-daily.yaml +8 -1
  282. package/graphs/intake/recipes.yaml +5 -0
  283. package/graphs/lecture/lecture-note.yaml +2 -2
  284. package/graphs/ops/harness-gc.yaml +1 -0
  285. package/graphs/release/recipes.yaml +3 -0
  286. package/graphs/release/release-loop.yaml +9 -5
  287. package/graphs/units/recipes.yaml +3 -0
  288. package/graphs/units/release-gate-recheck.yaml +15 -0
  289. package/package.json +2 -1
  290. package/scripts/check-native-tool-wiring.ts +3 -2
  291. package/scripts/ci-android-unit-tests.ts +16 -0
  292. package/scripts/ci-typecheck-changed.ts +63 -10
  293. package/scripts/coord-channel-watch.sh +22 -16
  294. package/scripts/coord-role-pack.ts +81 -2
  295. package/scripts/cron-run.ts +96 -3
  296. package/scripts/detect-test-interference.ts +38 -5
  297. package/scripts/gate-pr-cache.ts +65 -0
  298. package/scripts/gh-surface/capture.ts +126 -0
  299. package/scripts/gh-surface/gh +40 -0
  300. package/scripts/import-graph-scc.ts +38 -0
  301. package/scripts/install.ps1 +19 -0
  302. package/scripts/intake-social.ts +181 -0
  303. package/scripts/lecture-note/node.ts +71 -4
  304. package/scripts/lib/android-toolchain.ts +32 -0
  305. package/scripts/lib/deterministic-env.ts +62 -0
  306. package/scripts/lib/gate-test-env.ts +19 -0
  307. package/scripts/measure-goal-grounding-corpus.ts +2 -1
  308. package/scripts/measure-si-task-cpu.ts +143 -0
  309. package/scripts/ratchets/test-interference-patterns.allowlist.txt +255 -0
  310. package/scripts/ratchets/test-interference-patterns.ts +367 -0
  311. package/scripts/release-loop/cut-branch.ts +4 -3
  312. package/scripts/release-loop/export-check-node.ts +0 -1
  313. package/scripts/release-loop/fixtures/warm-failure-assertion/sample.junit.xml +8 -0
  314. package/scripts/release-loop/fixtures/warm-job-029/sample.json +1 -0
  315. package/scripts/release-loop/fixtures/warm-job-029/sample.junit.xml +10 -0
  316. package/scripts/release-loop/gate-closure.ts +12 -8
  317. package/scripts/release-loop/gate-diff.ts +1 -1
  318. package/scripts/release-loop/gate-host-mirror.ts +66 -0
  319. package/scripts/release-loop/gate-node.ts +523 -75
  320. package/scripts/release-loop/gate-partial.ts +106 -9
  321. package/scripts/release-loop/gate-pr-cache.ts +66 -0
  322. package/scripts/release-loop/gate-prewarm-plan.ts +66 -0
  323. package/scripts/release-loop/gate-r2-verdict.ts +189 -0
  324. package/scripts/release-loop/gate-recheck-plan-node.ts +52 -0
  325. package/scripts/release-loop/gate-warm-artifacts.ts +253 -0
  326. package/scripts/release-loop/import-graph-scc-run.ts +54 -0
  327. package/scripts/release-loop/import-graph-scc.ts +215 -0
  328. package/scripts/release-loop/node-verdict.ts +2 -0
  329. package/scripts/release-loop/prepare-node.ts +102 -4
  330. package/scripts/release-loop/probe-pod-host-dirs-live.ts +113 -0
  331. package/scripts/release-loop/resume-release.ts +33 -4
  332. package/scripts/release-loop/resume.ts +13 -5
  333. package/scripts/release-loop/spawn-lane.ts +2 -19
  334. package/scripts/release-loop/tui-sim-node.ts +3 -2
  335. package/scripts/release-loop/unattended-release.ts +16 -0
  336. package/scripts/test-deterministic.ts +5 -61
  337. package/scripts/train-reach-grouping.ts +48 -0
  338. package/scripts/tsc-incremental-cache.ts +86 -0
  339. package/scripts/tsc-incremental-diagnostics.ts +76 -0
  340. package/scripts/tsc-main-safety-net.ts +2 -2
  341. package/src/acp/client.ts +4 -1
  342. package/src/acp/core-turn-bridge.ts +65 -8
  343. package/src/acp/elanous-extensions.ts +3 -0
  344. package/src/acp/server.ts +3 -0
  345. package/src/acp/tool-trace.ts +186 -11
  346. package/src/ad-pipeline/run.ts +4 -2
  347. package/src/agent/runner.ts +169 -3
  348. package/src/agent/self-ambient-cache.ts +156 -0
  349. package/src/agent/self-ambient.ts +8 -1
  350. package/src/agent/subagent-callable.ts +3 -2
  351. package/src/agent/task-notification.ts +5 -0
  352. package/src/agent-mission/review-loop.ts +6 -3
  353. package/src/agent-substrate/acp-implementer.ts +14 -2
  354. package/src/agent-substrate/pr-reviewer.ts +14 -0
  355. package/src/agent-substrate/self-review-cli.ts +30 -4
  356. package/src/ask-user-question/tool.ts +22 -0
  357. package/src/autopilot/build/llm-conflict-merge.ts +56 -10
  358. package/src/autopilot/pr-manager.ts +80 -7
  359. package/src/briefing/brief-items.ts +24 -22
  360. package/src/capture/frame-state-detect.ts +39 -0
  361. package/src/capture/tui-self-report.ts +149 -6
  362. package/src/chat/chat-cli.ts +10 -2
  363. package/src/chat/index.ts +138 -26
  364. package/src/chat/input-control-key.ts +5 -3
  365. package/src/chat/pickers/modal-runtime.ts +6 -0
  366. package/src/chat/pickers/modals.ts +8 -2
  367. package/src/chat/tool-interrupt-behavior.ts +38 -0
  368. package/src/chat/tool-render/dispatch.ts +5 -1
  369. package/src/chat/turn-typeahead.ts +75 -20
  370. package/src/cli/__fixtures__/agent-help-before/agent.txt +4 -2
  371. package/src/cli/agent-cli.ts +41 -13
  372. package/src/cli/ask-bare.ts +1 -0
  373. package/src/cli/config-audit.ts +123 -0
  374. package/src/cli/decisions-cli.ts +80 -6
  375. package/src/cli/import-cli.ts +12 -0
  376. package/src/cli/log-event-names.ts +17 -0
  377. package/src/cli/mcp-login.ts +21 -5
  378. package/src/cli/msg-cli.ts +89 -0
  379. package/src/cli/pod-cli.ts +14 -3
  380. package/src/cli/pr-cli.ts +273 -81
  381. package/src/cli/pr-land-base-read.ts +34 -0
  382. package/src/cli/pr-land-heavy-remote.ts +82 -26
  383. package/src/cli/pr-land-overlap-evidence.ts +109 -11
  384. package/src/cli/pr-land-pod-shadow-job.ts +106 -0
  385. package/src/cli/pr-land-pod-shadow.ts +16 -3
  386. package/src/cli/pr-land-refusal.ts +20 -5
  387. package/src/cli/pr-land-virtual-rebase.ts +108 -0
  388. package/src/cli/pty-takeover-cli.ts +88 -14
  389. package/src/cli/release-cli.ts +80 -14
  390. package/src/cli/seat-cli.ts +138 -3
  391. package/src/cli/self-update.ts +5 -2
  392. package/src/cli/sim-cli.ts +18 -0
  393. package/src/cli/tasks-cli.ts +97 -19
  394. package/src/context-bus/context-first.ts +13 -0
  395. package/src/context-bus/context-now.ts +13 -2
  396. package/src/context-bus/ops-events.ts +79 -0
  397. package/src/control-plane/lease-holder.ts +12 -8
  398. package/src/control-plane/ledger.ts +163 -4
  399. package/src/control-plane/server.ts +91 -11
  400. package/src/core-turn/run-core-turn.ts +2 -0
  401. package/src/core-turn/run-goal-loop.ts +243 -3
  402. package/src/core-turn/seat-turn-cap.ts +79 -0
  403. package/src/core-turn/short-question.ts +38 -6
  404. package/src/core-turn/types.ts +6 -0
  405. package/src/dashboard/acp-active-model.ts +42 -1
  406. package/src/dashboard/acp-boot.ts +3 -0
  407. package/src/dashboard/background-jobs-status.ts +66 -0
  408. package/src/dashboard/index.ts +339 -657
  409. package/src/dashboard/input/agent-wake.ts +242 -0
  410. package/src/dashboard/input/chat-main-entry-runtime.ts +6 -1
  411. package/src/dashboard/input/chat-main-plain-turn-runtime.ts +4 -1
  412. package/src/dashboard/input/chat-main-session.ts +8 -1
  413. package/src/dashboard/input/chat-main-turn.ts +12 -3
  414. package/src/dashboard/input/compact-prepass-recovery.ts +33 -0
  415. package/src/dashboard/input/external-input-host.ts +49 -9
  416. package/src/dashboard/input/internal-turn.ts +261 -0
  417. package/src/dashboard/input/mouse-wiring.ts +108 -11
  418. package/src/dashboard/input/seat-autowake.ts +318 -0
  419. package/src/dashboard/input/turn-steer-bridge.ts +70 -0
  420. package/src/dashboard/log-click-runtime.ts +118 -2
  421. package/src/dashboard/loop-scheduler.ts +72 -0
  422. package/src/dashboard/seat-boot-preamble.ts +18 -0
  423. package/src/dashboard/skill-runtime.ts +2 -0
  424. package/src/dashboard/slash-runtime/dashboard-handlers.ts +126 -1181
  425. package/src/dashboard/slash-runtime/help-from-registry.ts +2 -1
  426. package/src/dashboard/slash-runtime/index.ts +13 -0
  427. package/src/dashboard/turn-busy-teardown.ts +50 -0
  428. package/src/dashboard/turn-preamble.ts +116 -40
  429. package/src/dashboard/turn-session-layers.ts +4 -2
  430. package/src/dashboard/turn-start-segments.ts +222 -0
  431. package/src/decisions/decision-ledger.ts +45 -4
  432. package/src/discord-self-message.ts +4 -4
  433. package/src/display/prompt-row-owner.ts +146 -0
  434. package/src/display/resize-listener.ts +33 -2
  435. package/src/domains/release-tool.ts +18 -1
  436. package/src/field-note/transcribe.ts +17 -0
  437. package/src/fold-stack.ts +4 -2
  438. package/src/git-fs/index.ts +263 -36
  439. package/src/github/remote-call.ts +81 -0
  440. package/src/goals/registry.ts +46 -6
  441. package/src/goals/types.ts +7 -1
  442. package/src/graph-runner/runner.ts +1 -0
  443. package/src/grok/credential.ts +26 -0
  444. package/src/harness/gate-reserve.ts +87 -0
  445. package/src/harness/harness-clean.ts +2 -1
  446. package/src/harness/harness-cli-command.ts +52 -5
  447. package/src/harness/harness-gc.ts +2 -1
  448. package/src/harness/harness-incidents.ts +70 -20
  449. package/src/harness/harness-pod-dispatch.ts +87 -10
  450. package/src/harness/harness-queue.ts +68 -4
  451. package/src/harness/harness-stop.ts +4 -3
  452. package/src/harness/harness-substrate-default.ts +78 -7
  453. package/src/harness/harness-worktree-auto.ts +2 -1
  454. package/src/harness/harness-worktrees.ts +3 -2
  455. package/src/hooks/dispatch.ts +2 -1
  456. package/src/index.ts +156 -27
  457. package/src/input/external-input-queue.ts +64 -7
  458. package/src/intake-plane/slash.ts +14 -3
  459. package/src/keybindings.ts +4 -1
  460. package/src/llm/route-decision.ts +36 -0
  461. package/src/llm/tool-loop-steered-rejection.ts +41 -0
  462. package/src/llm-request-shape.ts +209 -0
  463. package/src/llm.ts +301 -283
  464. package/src/loops/consensus.ts +348 -0
  465. package/src/loops/msg-wake.ts +206 -4
  466. package/src/loops/observe.ts +19 -3
  467. package/src/loops/orchestrator/tick.ts +88 -12
  468. package/src/loops/orchestrator/traffic.ts +64 -1
  469. package/src/loops/registry.ts +30 -0
  470. package/src/market/signed-index.ts +14 -0
  471. package/src/maturity/feature-maturity.ts +1 -1
  472. package/src/mcp/mcp-oauth.ts +54 -5
  473. package/src/models/prompts.ts +28 -0
  474. package/src/msg/msg-sse-client.ts +223 -0
  475. package/src/msg/msg-store.ts +86 -2
  476. package/src/mss/logging/log-store.ts +225 -1
  477. package/src/mss/logging/render-categories.ts +5 -0
  478. package/src/nexus/DAEMON-THIN-inventory-2026-10-15.md +122 -0
  479. package/src/nexus/api/http-server.ts +54 -15
  480. package/src/nexus/api/loop-resources.ts +19 -3
  481. package/src/nexus/api/ops-api.ts +11 -0
  482. package/src/nexus/daemon-thin-inventory.md +37 -0
  483. package/src/nexus/index.ts +70 -0
  484. package/src/nexus/state/state.ts +1 -0
  485. package/src/oauth/store.ts +32 -7
  486. package/src/onboarding/first-run.ts +28 -3
  487. package/src/ops/overview-cache.ts +16 -4
  488. package/src/ops/overview.ts +59 -2
  489. package/src/ops/resources.ts +82 -0
  490. package/src/plugins/maker/connector-maker.ts +41 -0
  491. package/src/plugins/maker/skill-maker.ts +42 -0
  492. package/src/pr-tool/census.ts +303 -0
  493. package/src/pr-tool/inflight-registry.ts +143 -0
  494. package/src/prompt-library/chat-conciseness.ts +13 -0
  495. package/src/prompt-library/universal-preamble.ts +10 -5
  496. package/src/pty-shell/pty-manifest.ts +12 -3
  497. package/src/pty-shell/tui-run-state.ts +34 -3
  498. package/src/release-loop/gate-host-reservation.ts +97 -0
  499. package/src/release-loop/landing-freeze.ts +5 -0
  500. package/src/release-loop/light-rc.ts +5 -2
  501. package/src/release-loop/placement.ts +92 -1
  502. package/src/release-loop/rehearsal-shard-plan.ts +149 -0
  503. package/src/release-loop/rehearsal.ts +73 -17
  504. package/src/repl/index.ts +20 -2
  505. package/src/seat-loop/seat-knowhow.ts +282 -0
  506. package/src/seat-loop/seat-loop.ts +41 -2
  507. package/src/seat-loop/traffic-signal.ts +5 -1
  508. package/src/self-dev/ask-launch-flow.ts +37 -3
  509. package/src/self-dev/decompose-compose-graph.ts +28 -27
  510. package/src/self-dev/decompose-proposal.ts +53 -38
  511. package/src/self-dev/decompose.ts +17 -0
  512. package/src/self-dev/dev-pipeline.ts +31 -2
  513. package/src/self-dev/draft-residue.ts +267 -33
  514. package/src/self-dev/draft-sweep.ts +59 -4
  515. package/src/self-dev/external-call-zero.ts +77 -0
  516. package/src/self-dev/launch-preflight-text.ts +6 -0
  517. package/src/self-dev/launch-preflight.ts +25 -3
  518. package/src/self-dev/local-supervisor-judge.ts +185 -0
  519. package/src/self-dev/run-supervisor.ts +229 -19
  520. package/src/self-dev/run-types.ts +20 -0
  521. package/src/self-dev/shard-aggregate.ts +13 -2
  522. package/src/self-dev/shard-plan.ts +56 -1
  523. package/src/self-dev/shard-run.ts +207 -12
  524. package/src/self-dev/spawn-lane-files.ts +19 -0
  525. package/src/self-implement/app-api-budget.ts +51 -11
  526. package/src/self-implement/config-gate.ts +2 -1
  527. package/src/self-implement/elanous-tui-spawn.ts +14 -0
  528. package/src/self-implement/expose-gate.ts +2 -1
  529. package/src/self-implement/follow-up-placement.ts +79 -0
  530. package/src/self-implement/gate-artifacts.ts +416 -0
  531. package/src/self-implement/gate-baseline.ts +96 -5
  532. package/src/self-implement/gate-cli.ts +207 -17
  533. package/src/self-implement/gate-remote.ts +136 -26
  534. package/src/self-implement/gate-scenario.ts +85 -0
  535. package/src/self-implement/goal-author.ts +160 -8
  536. package/src/self-implement/graph-authority.ts +38 -6
  537. package/src/self-implement/graph-overlay-condition.ts +92 -1
  538. package/src/self-implement/heal-triage.ts +79 -0
  539. package/src/self-implement/host-regate.ts +97 -7
  540. package/src/self-implement/orchestrator.ts +115 -134
  541. package/src/self-implement/pr-title.ts +123 -0
  542. package/src/self-implement/run-checkpoint.ts +235 -0
  543. package/src/self-implement/run-ledger.ts +162 -15
  544. package/src/self-implement/run-stop.ts +4 -3
  545. package/src/self-implement/run-ttl.ts +28 -4
  546. package/src/self-implement/seams.ts +2 -0
  547. package/src/self-implement/shadow-stage.ts +7 -6
  548. package/src/self-implement/stop-autoheal.ts +2 -1
  549. package/src/self-implement/train-gate-remote.ts +37 -8
  550. package/src/self-implement/train-reach-grouping.ts +157 -0
  551. package/src/self-implement/train-scenario-layers.ts +133 -0
  552. package/src/self-implement/uncommitted-work.ts +2 -0
  553. package/src/session/pending-input.ts +19 -0
  554. package/src/session/session-start.ts +224 -0
  555. package/src/session-runtime/index.ts +22 -267
  556. package/src/session-runtime/parallel-dispatch.ts +22 -5
  557. package/src/shell-runner/background-surface.ts +15 -5
  558. package/src/skills/tools/agent.ts +39 -6
  559. package/src/skills/tools/dev-harness.ts +6 -4
  560. package/src/skills/tools/list-dir.ts +11 -0
  561. package/src/skills/tools/schedule-wakeup.ts +408 -0
  562. package/src/skills/tools/shell.ts +246 -4
  563. package/src/status/bar.ts +26 -0
  564. package/src/steward/digest-delivery.ts +118 -0
  565. package/src/steward/hold-hygiene.ts +120 -0
  566. package/src/steward/resync-tick.ts +114 -23
  567. package/src/steward/ta-repair-event-collect.ts +158 -0
  568. package/src/steward/triage.ts +10 -0
  569. package/src/surface/shell-runner-boot.ts +5 -2
  570. package/src/task-agent/card-evidence.ts +25 -1
  571. package/src/task-agent/green-sweep.ts +8 -3
  572. package/src/task-agent/judge.ts +76 -0
  573. package/src/task-agent/land-queue.ts +79 -0
  574. package/src/task-agent/live-moves.ts +30 -9
  575. package/src/task-agent/postland-card.ts +5 -0
  576. package/src/task-agent/prelaunch-already-done.ts +98 -0
  577. package/src/task-agent/real-launch-guard.ts +37 -0
  578. package/src/task-agent/rejudge-on-head.ts +89 -12
  579. package/src/task-agent/remote-rejudge-bind.ts +28 -8
  580. package/src/task-agent/repair-cycle.ts +45 -7
  581. package/src/task-agent/repair-worker.ts +7 -0
  582. package/src/task-agent/run-identity.ts +200 -0
  583. package/src/task-agent/shadow.ts +50 -3
  584. package/src/task-agent/task-hand.ts +182 -5
  585. package/src/task-agent/train-landing.ts +77 -0
  586. package/src/task-agent/work-order.ts +104 -0
  587. package/src/task-orchestrator/surfaces/pod-command-job.ts +151 -37
  588. package/src/task-orchestrator/surfaces/pod-failure-reason.ts +88 -19
  589. package/src/task-orchestrator/surfaces/pod-host-acp-review.ts +2 -1
  590. package/src/task-orchestrator/surfaces/pod-image-source.ts +2 -1
  591. package/src/task-orchestrator/surfaces/pod-install-slots.ts +121 -9
  592. package/src/task-orchestrator/surfaces/pod-lease.ts +118 -6
  593. package/src/task-orchestrator/surfaces/pod-ledger-events.ts +1 -1
  594. package/src/task-orchestrator/surfaces/pod-lifecycle-stages.ts +169 -0
  595. package/src/task-orchestrator/surfaces/pod-mirror-seed.ts +27 -0
  596. package/src/task-orchestrator/surfaces/pod-pool.ts +3 -1
  597. package/src/task-orchestrator/surfaces/pod-result-marker-wait.ts +33 -0
  598. package/src/task-orchestrator/surfaces/pod-reuse-cleanup.ts +67 -0
  599. package/src/task-orchestrator/surfaces/pod-source-receive.ts +19 -3
  600. package/src/task-orchestrator/surfaces/pod-warm-switch.ts +141 -0
  601. package/src/task-orchestrator/surfaces/pod-warm-ta-shadow.ts +85 -0
  602. package/src/task-orchestrator/surfaces/pod-warm-worker-pod.ts +525 -0
  603. package/src/task-orchestrator/surfaces/pod-warm-worker-protocol.ts +153 -0
  604. package/src/task-orchestrator/surfaces/pod-warm-worker-runner.ts +90 -0
  605. package/src/task-orchestrator/surfaces/pod-warm-worker-runtime.ts +362 -0
  606. package/src/task-orchestrator/surfaces/self-implement-pod.ts +138 -19
  607. package/src/telegram.ts +2 -4
  608. package/src/tui/chat/execution-badge.ts +5 -1
  609. package/src/tui/input/pickers.ts +732 -0
  610. package/src/tui/input-lag-probe.ts +230 -0
  611. package/src/tui/slash/mission.ts +492 -0
  612. package/src/tui/slash/term.ts +877 -0
  613. package/src/tui-client/dashboard-session.ts +9 -0
  614. package/src/tui.ts +52 -0
  615. package/src/user-config/gemini-server-tools.ts +9 -0
  616. package/src/user-config.ts +53 -16
  617. package/src/util/spawn-sync-output.ts +7 -0
  618. package/src/ux-sim/fake-bin.ts +154 -0
  619. package/src/ux-sim/fake-clock.ts +36 -0
  620. package/src/ux-sim/headless-tui.ts +72 -0
  621. package/src/ux-sim/in-process-cli.ts +2 -1
  622. package/src/ux-sim/scenario.ts +255 -0
  623. package/src/ux-sim/temp-git-remote.ts +82 -0
  624. package/src/version/packed-revision.json +1 -1
  625. package/src/video-pipeline/recipes/vlog.ts +25 -7
  626. package/apps/pwa/out/_next/static/chunks/1015-9cba22a5a4554797.js +0 -1
  627. package/apps/pwa/out/_next/static/chunks/1084-4e66af7376a18db7.js +0 -1
  628. package/apps/pwa/out/_next/static/chunks/1106.3a6410b7b0c70ad4.js +0 -1
  629. package/apps/pwa/out/_next/static/chunks/1127.32fc642f70423506.js +0 -8
  630. package/apps/pwa/out/_next/static/chunks/1189-d9b8e1995a831fae.js +0 -1
  631. package/apps/pwa/out/_next/static/chunks/1224.6da98c7ad0eb7dd8.js +0 -34
  632. package/apps/pwa/out/_next/static/chunks/1370.4e3e2558f111fd5d.js +0 -1
  633. package/apps/pwa/out/_next/static/chunks/1514-b7da377fdc4eb17a.js +0 -1
  634. package/apps/pwa/out/_next/static/chunks/1577.3c24c32584e10d70.js +0 -286
  635. package/apps/pwa/out/_next/static/chunks/161.130a569855c4d68c.js +0 -24
  636. package/apps/pwa/out/_next/static/chunks/1864.16da9556e78a9236.js +0 -1
  637. package/apps/pwa/out/_next/static/chunks/1b6f6b2a.aff090122be3726e.js +0 -1
  638. package/apps/pwa/out/_next/static/chunks/2341.e8a9135e5b910dd5.js +0 -36
  639. package/apps/pwa/out/_next/static/chunks/257.10afdbe3520f2fc2.js +0 -1
  640. package/apps/pwa/out/_next/static/chunks/2658.87550e692dc493f6.js +0 -64
  641. package/apps/pwa/out/_next/static/chunks/2673.85e2f02efae7a85f.js +0 -1
  642. package/apps/pwa/out/_next/static/chunks/2766-bee623b37472ed63.js +0 -1
  643. package/apps/pwa/out/_next/static/chunks/2794.6d836872b0bf43e2.js +0 -1
  644. package/apps/pwa/out/_next/static/chunks/2806.eb57ced1a528ed39.js +0 -1
  645. package/apps/pwa/out/_next/static/chunks/283.7a121c4910e6dad7.js +0 -1
  646. package/apps/pwa/out/_next/static/chunks/2870.1dc29aa5fc01f09f.js +0 -115
  647. package/apps/pwa/out/_next/static/chunks/293.fd38e77ce5d48103.js +0 -1
  648. package/apps/pwa/out/_next/static/chunks/2993-5952a1cd3fd5d441.js +0 -1
  649. package/apps/pwa/out/_next/static/chunks/32-a523427c5bd5ed00.js +0 -1
  650. package/apps/pwa/out/_next/static/chunks/3280.af38002a6424a905.js +0 -90
  651. package/apps/pwa/out/_next/static/chunks/3292-5ddffdb2f517b44f.js +0 -1
  652. package/apps/pwa/out/_next/static/chunks/3523.d3231daaf7aba993.js +0 -1
  653. package/apps/pwa/out/_next/static/chunks/3763.577de3181e1e6ea0.js +0 -1
  654. package/apps/pwa/out/_next/static/chunks/4138-cc56b0938ef72783.js +0 -1
  655. package/apps/pwa/out/_next/static/chunks/4255-8350c43d307a8875.js +0 -1
  656. package/apps/pwa/out/_next/static/chunks/4352.a4954693499c2714.js +0 -1
  657. package/apps/pwa/out/_next/static/chunks/4421-f2dcbc6fd80ec013.js +0 -1
  658. package/apps/pwa/out/_next/static/chunks/4513-51b94aeee37c9905.js +0 -1
  659. package/apps/pwa/out/_next/static/chunks/4928-c3b72f99aa588699.js +0 -1
  660. package/apps/pwa/out/_next/static/chunks/4986-f9fc0283fb325219.js +0 -1
  661. package/apps/pwa/out/_next/static/chunks/5014.671a7b9f69c2b7b1.js +0 -94
  662. package/apps/pwa/out/_next/static/chunks/5137.d398e24710b3feb6.js +0 -1
  663. package/apps/pwa/out/_next/static/chunks/5298.0bea74885cabe754.js +0 -1
  664. package/apps/pwa/out/_next/static/chunks/5315.74c53a39739b11c4.js +0 -1
  665. package/apps/pwa/out/_next/static/chunks/5317-8b1df8d02105cd07.js +0 -1
  666. package/apps/pwa/out/_next/static/chunks/5358-33051f41a2b239af.js +0 -1
  667. package/apps/pwa/out/_next/static/chunks/5388.a2ec02501f714ad5.js +0 -62
  668. package/apps/pwa/out/_next/static/chunks/5395.e6ac948a2d15058d.js +0 -1
  669. package/apps/pwa/out/_next/static/chunks/5409-f282bf533c151849.js +0 -1
  670. package/apps/pwa/out/_next/static/chunks/5466.d0f4aba9d52acfa8.js +0 -27
  671. package/apps/pwa/out/_next/static/chunks/5564.3d28b353470fe305.js +0 -104
  672. package/apps/pwa/out/_next/static/chunks/569.b0cbfb4dee4a167a.js +0 -93
  673. package/apps/pwa/out/_next/static/chunks/5835-72465b73a8bb8d74.js +0 -1
  674. package/apps/pwa/out/_next/static/chunks/5941.045d6093139e1f7a.js +0 -1
  675. package/apps/pwa/out/_next/static/chunks/6228.47cabb83564dfe54.js +0 -24
  676. package/apps/pwa/out/_next/static/chunks/6457-8d1993002a87d0fe.js +0 -1
  677. package/apps/pwa/out/_next/static/chunks/6513.ef54cfae52351982.js +0 -2
  678. package/apps/pwa/out/_next/static/chunks/6582.13d245bf87df69f1.js +0 -148
  679. package/apps/pwa/out/_next/static/chunks/6655.c33f6acc2c61bb89.js +0 -149
  680. package/apps/pwa/out/_next/static/chunks/6731-9d7195af289c8d4c.js +0 -1
  681. package/apps/pwa/out/_next/static/chunks/6733.0be05b1db9279fc5.js +0 -79
  682. package/apps/pwa/out/_next/static/chunks/6742-90937146253a8b9e.js +0 -1
  683. package/apps/pwa/out/_next/static/chunks/687-816858f77a396a4e.js +0 -1
  684. package/apps/pwa/out/_next/static/chunks/6888.72c7b8cfb02a7e61.js +0 -1
  685. package/apps/pwa/out/_next/static/chunks/6993.c17c828ac3ef3253.js +0 -1
  686. package/apps/pwa/out/_next/static/chunks/7076.9f27ef666b0cefdd.js +0 -1
  687. package/apps/pwa/out/_next/static/chunks/7113.1403c5d451804e8c.js +0 -287
  688. package/apps/pwa/out/_next/static/chunks/7169.9dd603c726c2cd7c.js +0 -1
  689. package/apps/pwa/out/_next/static/chunks/7247-e3ec21f761f86710.js +0 -1
  690. package/apps/pwa/out/_next/static/chunks/7261-a47b72f96f5199df.js +0 -1
  691. package/apps/pwa/out/_next/static/chunks/7335-5cda81ac90310077.js +0 -1
  692. package/apps/pwa/out/_next/static/chunks/7356-c2e4af090546e2d4.js +0 -1
  693. package/apps/pwa/out/_next/static/chunks/738-59518742078fda71.js +0 -1
  694. package/apps/pwa/out/_next/static/chunks/7385.a7375f10db73243a.js +0 -77
  695. package/apps/pwa/out/_next/static/chunks/7445.cf1cf2fe109bcd96.js +0 -1
  696. package/apps/pwa/out/_next/static/chunks/7505.a2057432ab6ef99a.js +0 -1
  697. package/apps/pwa/out/_next/static/chunks/7515.31f45fac1f9c70cb.js +0 -74
  698. package/apps/pwa/out/_next/static/chunks/7658-d4ce8c72a9548a91.js +0 -1
  699. package/apps/pwa/out/_next/static/chunks/8107-0b1ae46bc5bcb788.js +0 -1
  700. package/apps/pwa/out/_next/static/chunks/8132.bfea2f016ce8d992.js +0 -1
  701. package/apps/pwa/out/_next/static/chunks/8672.e299832bc7d18ee2.js +0 -1
  702. package/apps/pwa/out/_next/static/chunks/8735.f1ef798a5f260f6f.js +0 -226
  703. package/apps/pwa/out/_next/static/chunks/8774-88f67f7d8d53d299.js +0 -1
  704. package/apps/pwa/out/_next/static/chunks/8782.252e5a405d86e4ed.js +0 -32
  705. package/apps/pwa/out/_next/static/chunks/909-9ed7aa0dba804316.js +0 -1
  706. package/apps/pwa/out/_next/static/chunks/9100.22b0301256827007.js +0 -1
  707. package/apps/pwa/out/_next/static/chunks/9140-dde77575570bc71e.js +0 -1
  708. package/apps/pwa/out/_next/static/chunks/9292-a7ad9a01c7044b93.js +0 -1
  709. package/apps/pwa/out/_next/static/chunks/9517.00627dc51b02821c.js +0 -1
  710. package/apps/pwa/out/_next/static/chunks/9725.dcbb585652d8e9c5.js +0 -1
  711. package/apps/pwa/out/_next/static/chunks/9761.a3ebf5c389c24ddc.js +0 -1
  712. package/apps/pwa/out/_next/static/chunks/9972.834d2b2b7d48f1ed.js +0 -1
  713. package/apps/pwa/out/_next/static/chunks/9995-1a90486f5ae01546.js +0 -1
  714. package/apps/pwa/out/_next/static/chunks/a435ad95.577add051b4facb2.js +0 -1
  715. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-83372d8b5863ebf7.js +0 -1
  716. package/apps/pwa/out/_next/static/chunks/app/approvals/page-d69256d7613c140a.js +0 -1
  717. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-352c5e9ba3f9b858.js +0 -1
  718. package/apps/pwa/out/_next/static/chunks/app/board/page-69f1d725524201a8.js +0 -1
  719. package/apps/pwa/out/_next/static/chunks/app/botlab/page-a5635eba0d73b84e.js +0 -1
  720. package/apps/pwa/out/_next/static/chunks/app/bots/page-ad9181d84285e4ea.js +0 -1
  721. package/apps/pwa/out/_next/static/chunks/app/ceo/page-86feb08080261a2f.js +0 -1
  722. package/apps/pwa/out/_next/static/chunks/app/chat/page-ffa15987e4756d03.js +0 -1
  723. package/apps/pwa/out/_next/static/chunks/app/consult/page-11a3ab44ac327cc1.js +0 -1
  724. package/apps/pwa/out/_next/static/chunks/app/control/page-6309b11c4264d24d.js +0 -1
  725. package/apps/pwa/out/_next/static/chunks/app/decisions/page-8800472079612e87.js +0 -1
  726. package/apps/pwa/out/_next/static/chunks/app/design-check/page-d387bf3f2301882a.js +0 -1
  727. package/apps/pwa/out/_next/static/chunks/app/editor/page-048f88d8c8658da6.js +0 -1
  728. package/apps/pwa/out/_next/static/chunks/app/exec/page-6c14f9739b7f6880.js +0 -1
  729. package/apps/pwa/out/_next/static/chunks/app/field/page-2834f44f64e98d74.js +0 -1
  730. package/apps/pwa/out/_next/static/chunks/app/healthz/route-83372d8b5863ebf7.js +0 -1
  731. package/apps/pwa/out/_next/static/chunks/app/inside/page-a13df6f88e824887.js +0 -1
  732. package/apps/pwa/out/_next/static/chunks/app/intake/page-8a4397248754cf2b.js +0 -1
  733. package/apps/pwa/out/_next/static/chunks/app/layout-daf0bd329360a336.js +0 -1
  734. package/apps/pwa/out/_next/static/chunks/app/live/page-f7ef1c28764cb476.js +0 -1
  735. package/apps/pwa/out/_next/static/chunks/app/live-run/page-61e74f28b9353dac.js +0 -1
  736. package/apps/pwa/out/_next/static/chunks/app/loops/page-8aaa6dedc4c10dfb.js +0 -1
  737. package/apps/pwa/out/_next/static/chunks/app/market/page-294602ba649be829.js +0 -1
  738. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-5fa5f41ed3fce323.js +0 -1
  739. package/apps/pwa/out/_next/static/chunks/app/morning/page-33bf667a5fb297bf.js +0 -1
  740. package/apps/pwa/out/_next/static/chunks/app/not-found-5ae3cbd6e5dba515.js +0 -1
  741. package/apps/pwa/out/_next/static/chunks/app/observatory/page-eb867d16ad6fdede.js +0 -1
  742. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-1ab789fa68682f7e.js +0 -1
  743. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-6fd41b5b6ff13a71.js +0 -1
  744. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-fb3d5f7642c99fba.js +0 -1
  745. package/apps/pwa/out/_next/static/chunks/app/outputs/page-70f705b2b5ed42ca.js +0 -1
  746. package/apps/pwa/out/_next/static/chunks/app/page-c9c93b358a7667b5.js +0 -1
  747. package/apps/pwa/out/_next/static/chunks/app/reflection/page-1563c556b81c96ed.js +0 -1
  748. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-ce89c20c45b3a673.js +0 -1
  749. package/apps/pwa/out/_next/static/chunks/app/sessions/page-423ae63d786f4ee9.js +0 -1
  750. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-591a5378a4c4447c.js +0 -1
  751. package/apps/pwa/out/_next/static/chunks/app/settings/page-a250496b19a5824b.js +0 -1
  752. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-c36a9277febc5911.js +0 -1
  753. package/apps/pwa/out/_next/static/chunks/app/setup/layout-83372d8b5863ebf7.js +0 -1
  754. package/apps/pwa/out/_next/static/chunks/app/share/page-a5de57edc6d7f942.js +0 -1
  755. package/apps/pwa/out/_next/static/chunks/app/showroom/page-16bdd4c9f40498df.js +0 -1
  756. package/apps/pwa/out/_next/static/chunks/app/tasks/page-75e946e6e71cc6d8.js +0 -1
  757. package/apps/pwa/out/_next/static/chunks/app/term/page-9eb56166774eb256.js +0 -1
  758. package/apps/pwa/out/_next/static/chunks/app/today/page-1c5f9ef35dbb22c5.js +0 -1
  759. package/apps/pwa/out/_next/static/chunks/app/trace/page-657ff9985e508498.js +0 -1
  760. package/apps/pwa/out/_next/static/chunks/app/vault/page-22dc72499da68fb2.js +0 -1
  761. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-9f92737b8766009a.js +0 -1
  762. package/apps/pwa/out/_next/static/chunks/app/workflows/page-094ad334e40f8169.js +0 -1
  763. package/apps/pwa/out/_next/static/chunks/app/workspace/page-8bcd379852ff6287.js +0 -1
  764. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-6b04413f280cd344.js +0 -1
  765. package/apps/pwa/out/_next/static/chunks/de70ab42-d28d47437208d458.js +0 -1
  766. package/apps/pwa/out/_next/static/chunks/f800c5e3.46dbd7f2af8c3fce.js +0 -1
  767. package/apps/pwa/out/_next/static/chunks/f8bc19ad.47579f6d684b0760.js +0 -122
  768. package/apps/pwa/out/_next/static/chunks/framework-ca9ac4609fb9fed8.js +0 -1
  769. package/apps/pwa/out/_next/static/chunks/main-app-0dd08d32d15a030f.js +0 -1
  770. package/apps/pwa/out/_next/static/chunks/main-f0399d33955c4e01.js +0 -1
  771. package/apps/pwa/out/_next/static/chunks/pages/_app-d42caca6f8ac2211.js +0 -1
  772. package/apps/pwa/out/_next/static/chunks/pages/_error-42e713c13aa41ca8.js +0 -1
  773. package/apps/pwa/out/_next/static/chunks/webpack-8fbf8f61a377aa16.js +0 -1
  774. package/apps/pwa/out/_next/static/css/72becfd42807b50d.css +0 -1
  775. /package/apps/pwa/out/_next/static/{cIpv5nU9AycwYWZI9H589 → IVKr3AlRUVLKsw2fh7eXF}/_ssgManifest.js +0 -0
@@ -0,0 +1,255 @@
1
+ import { mkdtempSync, readFileSync, realpathSync, rmSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { extname, join, relative, resolve, sep } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { parse as parseYaml } from 'yaml';
6
+ import { debug } from '../debug/log.js';
7
+ import { streamCodexResponsesEvents } from '../llm.js';
8
+ import { LogStore, StoreSink, type LogStoreRow } from '../mss/logging/log-store.js';
9
+ import { getTestStateRoot } from '../nexus/paths.js';
10
+ import { simRenderLogFrame } from './render-frame.js';
11
+
12
+ export interface ScenarioV0 {
13
+ version: 0;
14
+ id: string;
15
+ isolation: 'test';
16
+ triggers: [{ id: string; type: 'codex.responses.fetch'; status: number; count?: number }];
17
+ expect: {
18
+ screen: { mode: 'widget'; snapshot: { contains: string[]; excludes?: string[] } };
19
+ logs: [{ category: string; event: string; level: string; count?: number; data?: Record<string, unknown> }];
20
+ };
21
+ }
22
+
23
+ export interface ScenarioResult {
24
+ id: string;
25
+ pass: boolean;
26
+ trigger: { id: string; type: string; status: number; expectedCount: number; fetchCount: number; error: string | null };
27
+ screen: { pass: boolean; containsMissing: string[]; excludesFound: string[]; snapshot: string };
28
+ logs: { pass: boolean; category: string; event: string; level: string | null; expectedLevel: string; levelMismatch: boolean; expectedCount: number; observedCount: number; matchedData: Record<string, unknown>; evidenceLine: string; dataMismatch: string[] };
29
+ failureReasons: string[];
30
+ }
31
+
32
+ let previousScenarioTurn: Promise<void> = Promise.resolve();
33
+ const REPOSITORY_ROOT = fileURLToPath(new URL('../..', import.meta.url));
34
+
35
+ function record(value: unknown, where: string): Record<string, unknown> {
36
+ if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error(`${where} must be an object`);
37
+ return value as Record<string, unknown>;
38
+ }
39
+
40
+ function exactKeys(value: Record<string, unknown>, allowed: readonly string[], where: string): void {
41
+ const extra = Object.keys(value).filter((key) => !allowed.includes(key));
42
+ if (extra.length) throw new Error(`${where} has unsupported key(s): ${extra.join(', ')}`);
43
+ }
44
+
45
+ function requiredString(value: unknown, where: string): string {
46
+ if (typeof value !== 'string' || value.trim() === '') throw new Error(`${where} must be a non-empty string`);
47
+ return value;
48
+ }
49
+
50
+ export function parseScenarioV0(source: string): ScenarioV0 {
51
+ const value = record(parseYaml(source), 'scenario');
52
+ exactKeys(value, ['version', 'id', 'isolation', 'triggers', 'expect'], 'scenario');
53
+ if (value.version !== 0) throw new Error('scenario.version must be 0');
54
+ const id = requiredString(value.id, 'scenario.id');
55
+ if (!/^[a-z0-9][a-z0-9-]{0,63}$/.test(id)) throw new Error('scenario.id must be lowercase letters, digits, and hyphens');
56
+ if (value.isolation !== 'test') throw new Error('scenario.isolation must be test');
57
+
58
+ if (!Array.isArray(value.triggers) || value.triggers.length !== 1) throw new Error('scenario.triggers must contain exactly one registered trigger');
59
+ const trigger = record(value.triggers[0], 'scenario.triggers[0]');
60
+ exactKeys(trigger, ['id', 'type', 'status', 'count'], 'scenario.triggers[0]');
61
+ const triggerId = requiredString(trigger.id, 'scenario.triggers[0].id');
62
+ if (trigger.type !== 'codex.responses.fetch') throw new Error(`unregistered scenario trigger: ${String(trigger.type)}`);
63
+ if (!Number.isInteger(trigger.status) || (trigger.status as number) < 400 || (trigger.status as number) > 499) throw new Error('codex.responses.fetch.status must be an HTTP 4xx status');
64
+ if (trigger.count !== undefined && (!Number.isInteger(trigger.count) || (trigger.count as number) < 1)) throw new Error('codex.responses.fetch.count must be a positive integer');
65
+
66
+ const expect = record(value.expect, 'scenario.expect');
67
+ exactKeys(expect, ['screen', 'logs'], 'scenario.expect');
68
+ const screen = record(expect.screen, 'scenario.expect.screen');
69
+ exactKeys(screen, ['mode', 'snapshot'], 'scenario.expect.screen');
70
+ if (screen.mode !== 'widget') throw new Error('scenario.expect.screen.mode must be widget');
71
+ const snapshot = record(screen.snapshot, 'scenario.expect.screen.snapshot');
72
+ exactKeys(snapshot, ['contains', 'excludes'], 'scenario.expect.screen.snapshot');
73
+ if (!Array.isArray(snapshot.contains) || snapshot.contains.length === 0 || snapshot.contains.some((s) => typeof s !== 'string' || s.length === 0)) {
74
+ throw new Error('scenario.expect.screen.snapshot.contains must contain at least one non-empty string');
75
+ }
76
+ if (snapshot.excludes !== undefined && (!Array.isArray(snapshot.excludes) || snapshot.excludes.some((s) => typeof s !== 'string'))) {
77
+ throw new Error('scenario.expect.screen.snapshot.excludes must be an array of strings');
78
+ }
79
+
80
+ if (!Array.isArray(expect.logs) || expect.logs.length !== 1) throw new Error('scenario.expect.logs must contain exactly one expected event');
81
+ const expectedLog = record(expect.logs[0], 'scenario.expect.logs[0]');
82
+ exactKeys(expectedLog, ['category', 'event', 'level', 'count', 'data'], 'scenario.expect.logs[0]');
83
+ const category = requiredString(expectedLog.category, 'scenario.expect.logs[0].category');
84
+ const event = requiredString(expectedLog.event, 'scenario.expect.logs[0].event');
85
+ const level = requiredString(expectedLog.level, 'scenario.expect.logs[0].level');
86
+ if (expectedLog.count !== undefined && (!Number.isInteger(expectedLog.count) || (expectedLog.count as number) < 1)) throw new Error('scenario.expect.logs[0].count must be a positive integer; absent events cannot pass');
87
+ if (expectedLog.data !== undefined) record(expectedLog.data, 'scenario.expect.logs[0].data');
88
+
89
+ return {
90
+ version: 0,
91
+ id,
92
+ isolation: 'test',
93
+ triggers: [{ id: triggerId, type: 'codex.responses.fetch', status: trigger.status as number, ...(trigger.count !== undefined ? { count: trigger.count as number } : {}) }],
94
+ expect: {
95
+ screen: {
96
+ mode: 'widget',
97
+ snapshot: { contains: snapshot.contains as string[], ...(snapshot.excludes ? { excludes: snapshot.excludes as string[] } : {}) },
98
+ },
99
+ logs: [{ category, event, level, ...(expectedLog.count !== undefined ? { count: expectedLog.count as number } : {}), ...(expectedLog.data ? { data: expectedLog.data as Record<string, unknown> } : {}) }],
100
+ },
101
+ };
102
+ }
103
+
104
+ function matchesSubset(actual: unknown, expected: Record<string, unknown>, path = 'data'): string[] {
105
+ let parsed = actual;
106
+ if (typeof parsed === 'string') {
107
+ try { parsed = JSON.parse(parsed); } catch { return [`${path}: stored data is not JSON`]; }
108
+ }
109
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return [`${path}: expected object data`];
110
+ const actualRecord = parsed as Record<string, unknown>;
111
+ return Object.entries(expected).flatMap(([key, value]) => {
112
+ if (!(key in actualRecord)) return [`${path}.${key}: missing`];
113
+ if (value && typeof value === 'object' && !Array.isArray(value)) return matchesSubset(actualRecord[key], value as Record<string, unknown>, `${path}.${key}`);
114
+ return JSON.stringify(actualRecord[key]) === JSON.stringify(value) ? [] : [`${path}.${key}: expected ${JSON.stringify(value)}, observed ${JSON.stringify(actualRecord[key])}`];
115
+ });
116
+ }
117
+
118
+ function projectSubset(actual: unknown, expected: Record<string, unknown>): Record<string, unknown> {
119
+ let parsed = actual;
120
+ if (typeof parsed === 'string') {
121
+ try { parsed = JSON.parse(parsed); } catch { return {}; }
122
+ }
123
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return {};
124
+ const actualRecord = parsed as Record<string, unknown>;
125
+ const selected: Record<string, unknown> = {};
126
+ for (const [key, expectedValue] of Object.entries(expected)) {
127
+ if (!(key in actualRecord)) continue;
128
+ const actualValue = actualRecord[key];
129
+ selected[key] = expectedValue && typeof expectedValue === 'object' && !Array.isArray(expectedValue)
130
+ ? projectSubset(actualValue, expectedValue as Record<string, unknown>)
131
+ : actualValue;
132
+ }
133
+ return selected;
134
+ }
135
+
136
+ function rowData(row: LogStoreRow): unknown {
137
+ return row.data;
138
+ }
139
+
140
+ export function resolveScenarioFilePath(filePath: string, repositoryRoot = REPOSITORY_ROOT): string {
141
+ const realRepositoryRoot = realpathSync(repositoryRoot);
142
+ const scenarioRoot = resolve(realRepositoryRoot, 'scenarios');
143
+ const fullPath = resolve(realRepositoryRoot, filePath);
144
+ const rel = relative(scenarioRoot, fullPath);
145
+ if (!rel || rel === '..' || rel.startsWith(`..${sep}`) || resolve(scenarioRoot, rel) !== fullPath) throw new Error('scenario file must be inside the repository scenarios/ directory');
146
+ if (!['.yaml', '.yml', '.json'].includes(extname(fullPath).toLowerCase())) throw new Error('scenario file must use .yaml, .yml, or .json');
147
+ const realScenarioRoot = realpathSync(scenarioRoot);
148
+ if (realScenarioRoot !== scenarioRoot) throw new Error('scenario file must be inside the repository scenarios/ directory');
149
+ const realScenarioPath = realpathSync(fullPath);
150
+ const realRel = relative(realScenarioRoot, realScenarioPath);
151
+ if (!realRel || realRel === '..' || realRel.startsWith(`..${sep}`)) throw new Error('scenario file must be inside the repository scenarios/ directory');
152
+ if (realRel.split(sep).some((part) => part.startsWith('.'))) throw new Error('hidden scenario files cannot be run');
153
+ return realScenarioPath;
154
+ }
155
+
156
+ /** Execute the one registered scenario trigger. Only the provider network boundary is faked. */
157
+ export async function runScenarioV0(scenario: ScenarioV0): Promise<ScenarioResult> {
158
+ if (!getTestStateRoot()) throw new Error('scenario runner requires --test isolated mode');
159
+ scenario = parseScenarioV0(JSON.stringify(scenario));
160
+ const turn = previousScenarioTurn;
161
+ let release!: () => void;
162
+ previousScenarioTurn = new Promise<void>((resolveTurn) => { release = resolveTurn; });
163
+ await turn;
164
+ try {
165
+ return await runScenarioV0Exclusive(scenario);
166
+ } finally {
167
+ release();
168
+ }
169
+ }
170
+
171
+ async function runScenarioV0Exclusive(scenario: ScenarioV0): Promise<ScenarioResult> {
172
+ const root = mkdtempSync(join(tmpdir(), `ux-sim-${scenario.id}-`));
173
+ const store = new LogStore(join(root, 'logs.db'), { instance: `ux-sim:${scenario.id}` });
174
+ const sink = new StoreSink(store, `ux-sim:${scenario.id}`, { installExitHandlers: false });
175
+ const off = debug.registerSink(sink);
176
+ const originalFetch = globalThis.fetch;
177
+ const trigger = scenario.triggers[0];
178
+ let errorMessage: string | null = null;
179
+ let fetchCount = 0;
180
+ globalThis.fetch = (async (input: RequestInfo | URL) => {
181
+ fetchCount++;
182
+ if (String(input) !== 'https://chatgpt.com/backend-api/codex/responses') throw new Error('scenario fake fetch received an unregistered URL');
183
+ return new Response('{"detail":"Bad Request"}', { status: trigger.status, headers: { 'content-type': 'application/json' } });
184
+ }) as unknown as typeof fetch;
185
+
186
+ try {
187
+ try {
188
+ for await (const _event of streamCodexResponsesEvents('https://chatgpt.com/backend-api/codex/responses', 'scenario-fake-token', {
189
+ model: 'gpt-6-sol',
190
+ instructions: 'scenario test request',
191
+ input: [{ role: 'user', content: [{ type: 'input_text', text: 'scenario test input' }] }],
192
+ tools: [{ type: 'function', name: 'RunShell', description: 'test tool', parameters: {} }],
193
+ }, undefined, { promptCache: false })) { /* consume the deterministic fake response */ }
194
+ } catch (error) {
195
+ errorMessage = error instanceof Error ? error.message : String(error);
196
+ }
197
+
198
+ const screenText = simRenderLogFrame({ phase: 'idle', lines: errorMessage ? [errorMessage] : [] }, { width: 100, height: 12 }).text;
199
+ const containsMissing = scenario.expect.screen.snapshot.contains.filter((fragment) => !screenText.includes(fragment));
200
+ const excludesFound = (scenario.expect.screen.snapshot.excludes ?? []).filter((fragment) => screenText.includes(fragment));
201
+
202
+ sink.flush();
203
+ const expected = scenario.expect.logs[0];
204
+ const rows = store.query({ exactCategories: [expected.category], events: [expected.event], limit: 1000 });
205
+ const expectedCount = expected.count ?? 1;
206
+ const levelMismatch = rows.some((row) => row.level !== expected.level);
207
+ const dataMismatch = expected.data ? rows.flatMap((row) => matchesSubset(rowData(row), expected.data!)) : [];
208
+ const logPass = rows.length === expectedCount && !levelMismatch && dataMismatch.length === 0;
209
+ const screenPass = containsMissing.length === 0 && excludesFound.length === 0;
210
+ const failureReasons: string[] = [];
211
+ const expectedTriggerCount = trigger.count ?? 1;
212
+ if (fetchCount !== expectedTriggerCount) failureReasons.push(`trigger-count-mismatch:expected-${expectedTriggerCount}-observed-${fetchCount}`);
213
+ if (errorMessage === null) failureReasons.push('provider-error-not-observed');
214
+ if (!screenPass) failureReasons.push('screen-snapshot-mismatch');
215
+ if (rows.length === 0) failureReasons.push('expected-log-event-absent');
216
+ else if (rows.length !== expectedCount) failureReasons.push(`log-event-count-mismatch:expected-${expectedCount}-observed-${rows.length}`);
217
+ if (levelMismatch) failureReasons.push(`log-level-mismatch:expected-${expected.level}-observed-${rows[0]?.level ?? 'none'}`);
218
+ if (dataMismatch.length) failureReasons.push('log-data-mismatch');
219
+
220
+ return {
221
+ id: scenario.id,
222
+ pass: failureReasons.length === 0,
223
+ trigger: { id: trigger.id, type: trigger.type, status: trigger.status, expectedCount: expectedTriggerCount, fetchCount, error: errorMessage },
224
+ screen: { pass: screenPass, containsMissing, excludesFound, snapshot: screenText },
225
+ logs: {
226
+ pass: logPass,
227
+ category: expected.category,
228
+ event: expected.event,
229
+ level: rows[0]?.level ?? null,
230
+ expectedLevel: expected.level,
231
+ levelMismatch,
232
+ expectedCount,
233
+ observedCount: rows.length,
234
+ matchedData: rows[0] && expected.data ? projectSubset(rowData(rows[0]), expected.data) : {},
235
+ evidenceLine: JSON.stringify({ category: expected.category, event: expected.event, level: rows[0]?.level ?? null, count: rows.length, data: rows[0] && expected.data ? projectSubset(rowData(rows[0]), expected.data) : {} }),
236
+ dataMismatch,
237
+ },
238
+ failureReasons,
239
+ };
240
+ } finally {
241
+ globalThis.fetch = originalFetch;
242
+ off();
243
+ sink.close();
244
+ store.close();
245
+ rmSync(root, { recursive: true, force: true });
246
+ }
247
+ }
248
+
249
+ export async function runScenarioFile(filePath: string): Promise<ScenarioResult> {
250
+ if (!getTestStateRoot()) throw new Error('scenario runner requires --test isolated mode');
251
+ const realScenarioPath = resolveScenarioFilePath(filePath);
252
+ const source = readFileSync(realScenarioPath, 'utf8');
253
+ const scenario = parseScenarioV0(source);
254
+ return runScenarioV0(scenario);
255
+ }
@@ -0,0 +1,82 @@
1
+ // A real, local Git transport fixture for tests that need an origin/main.
2
+ // No GitHub API, network server, or pack protocol is simulated here.
3
+ import { spawnSync } from 'node:child_process';
4
+ import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
5
+ import { tmpdir } from 'node:os';
6
+ import { join } from 'node:path';
7
+
8
+ export interface TempGitRemote {
9
+ readonly root: string;
10
+ readonly remote: string;
11
+ readonly seed: string;
12
+ readonly checkout: string;
13
+ /** Pass this to child processes that run Git against the fixture. */
14
+ readonly gitEnv: Omit<NodeJS.ProcessEnv, 'NODE_ENV'>;
15
+ git(cwd: string, args: readonly string[]): string;
16
+ advanceMain(count: number): void;
17
+ removeOrigin(): void;
18
+ cleanup(): void;
19
+ }
20
+
21
+ export function createTempGitRemote(): TempGitRemote {
22
+ const root = mkdtempSync(join(tmpdir(), 'ux-sim-git-remote-'));
23
+ const remote = join(root, 'remote.git');
24
+ const seed = join(root, 'seed');
25
+ const checkout = join(root, 'checkout');
26
+ const globalConfig = join(root, 'gitconfig');
27
+ writeFileSync(globalConfig, '');
28
+ const gitEnv: Omit<NodeJS.ProcessEnv, 'NODE_ENV'> = {};
29
+ // Undefined entries remove inherited Git state from both direct Git calls
30
+ // and the invoking CLI child, without replacing its isolated HOME/state.
31
+ for (const key of Object.keys(process.env)) if (key.startsWith('GIT_')) gitEnv[key] = undefined;
32
+ Object.assign(gitEnv, {
33
+ GIT_CONFIG_NOSYSTEM: '1', GIT_CONFIG_GLOBAL: globalConfig,
34
+ GIT_TERMINAL_PROMPT: '0', GIT_ASKPASS: '/usr/bin/false',
35
+ GIT_SSH_COMMAND: 'ssh -o BatchMode=yes', GIT_ALLOW_PROTOCOL: 'file',
36
+ });
37
+ const git = (cwd: string, args: readonly string[]): string => {
38
+ const result = spawnSync('git', [...args], { cwd, env: { ...process.env, ...gitEnv }, encoding: 'utf8' });
39
+ if (result.error || result.status !== 0) {
40
+ throw new Error(`git ${args.join(' ')} failed: ${result.error?.message ?? result.stderr}`);
41
+ }
42
+ return result.stdout.trim();
43
+ };
44
+ let cleaned = false;
45
+ let nextCommitIndex = 0;
46
+ const cleanup = (): void => {
47
+ if (cleaned) return;
48
+ cleaned = true;
49
+ rmSync(root, { recursive: true, force: true });
50
+ };
51
+ try {
52
+ // Set the bare HEAD explicitly: a host's init.defaultBranch may be master.
53
+ git(root, ['init', '--bare', '-b', 'main', remote]);
54
+ git(root, ['init', '-b', 'main', seed]);
55
+ git(seed, ['config', 'user.email', 'test@example.com']);
56
+ git(seed, ['config', 'user.name', 'Test User']);
57
+ writeFileSync(join(seed, 'README.md'), 'base\n');
58
+ git(seed, ['add', 'README.md']);
59
+ git(seed, ['commit', '-m', 'base']);
60
+ git(seed, ['remote', 'add', 'origin', remote]);
61
+ git(seed, ['push', '-u', 'origin', 'main']);
62
+ git(root, ['clone', remote, checkout]);
63
+ return {
64
+ root, remote, seed, checkout, gitEnv, git, cleanup,
65
+ advanceMain(count: number): void {
66
+ if (!Number.isSafeInteger(count) || count < 0) throw new Error('advanceMain count must be a nonnegative integer');
67
+ for (let index = 0; index < count; index += 1) {
68
+ const commitIndex = nextCommitIndex++;
69
+ writeFileSync(join(seed, 'README.md'), `commit ${commitIndex}\n`);
70
+ git(seed, ['add', 'README.md']);
71
+ git(seed, ['commit', '-m', `ahead ${commitIndex}`]);
72
+ }
73
+ if (count > 0) git(seed, ['push', 'origin', 'main']);
74
+ git(checkout, ['fetch', 'origin']);
75
+ },
76
+ removeOrigin(): void { git(checkout, ['remote', 'remove', 'origin']); },
77
+ };
78
+ } catch (error) {
79
+ cleanup();
80
+ throw error;
81
+ }
82
+ }
@@ -1 +1 @@
1
- {"commit":"da327ac97e69de03cc201ab8c1f59338055b9399"}
1
+ {"commit":"df252b01ff0820fc3242a2e8595a1c363cf65d85"}
@@ -189,12 +189,21 @@ export function wrapLines(text: string, max: number, maxLines: number): string[]
189
189
  }
190
190
 
191
191
  /** 한 프레임의 알파 평균(0=투명 · 255=불투명). ⛔ 못 재면 null. */
192
- export function alphaMean(path: string, at = 0): number | null {
193
- const r = run('ffmpeg', ['-hide_banner', '-nostats', '-ss', at.toFixed(2), '-i', path, '-frames:v', '1', '-vf', 'alphaextract,signalstats,metadata=print:key=lavfi.signalstats.YAVG', '-f', 'null', '-']);
192
+ function measureAlphaWith(bin: string, path: string, at: number): number | null {
193
+ const r = run(bin, ['-hide_banner', '-nostats', '-ss', at.toFixed(2), '-i', path, '-frames:v', '1', '-vf', 'alphaextract,signalstats,metadata=print:key=lavfi.signalstats.YAVG', '-f', 'null', '-']);
194
194
  const m = /YAVG=([\d.]+)/.exec(r.err);
195
195
  return m ? Number(m[1]) : null;
196
196
  }
197
197
 
198
+ export function alphaMean(path: string, at = 0): number | null {
199
+ return measureAlphaWith('ffmpeg', path, at);
200
+ }
201
+
202
+ /** 실물 렌더 도구를 바꿔 잴 때도 alphaMean과 같은 판정기를 쓴다. */
203
+ export function alphaMeanFor(bin: string): (path: string, at?: number) => number | null {
204
+ return (path, at = 0) => measureAlphaWith(bin, path, at);
205
+ }
206
+
198
207
  // ── ⑥ layers · build-layers ──────────────────────────────────────────────
199
208
  /**
200
209
  * 무료로 «지금» 지을 수 있는 층 셋 — 스크림(하단 어둡게) · 그레인 · 자막.
@@ -207,13 +216,19 @@ export const buildLayers: Recipe = async (ctx) => {
207
216
  const dir = join(ctx.workdir, 'layers');
208
217
  mkdirSync(dir, { recursive: true });
209
218
  const W = s.width, H = s.height, F = s.fps;
219
+ const render = typeof ctx.state.ffmpeg === 'function'
220
+ ? ctx.state.ffmpeg as typeof ffmpeg
221
+ : ffmpeg;
210
222
  const grain = join(dir, 'grain_loop.mp4');
211
- const g = ffmpeg(['-f', 'lavfi', '-i', `color=c=gray:s=${W}x${H}:r=${F}:d=4`, '-vf', 'noise=c0s=18:c0f=t+u,format=yuv420p', '-c:v', 'libx264', '-preset', 'veryfast', '-crf', '24', grain], 300_000);
223
+ const g = render(['-f', 'lavfi', '-i', `color=c=gray:s=${W}x${H}:r=${F}:d=4`, '-vf', 'noise=c0s=18:c0f=t+u,format=yuv420p', '-c:v', 'libx264', '-preset', 'veryfast', '-crf', '24', grain], 300_000);
212
224
  const scrim = join(dir, 'scrim.mov');
213
- const sc = ffmpeg(['-f', 'lavfi', '-i', `color=c=black:s=${W}x${H}:r=${F}:d=2`, '-vf',
225
+ const sc = render(['-f', 'lavfi', '-i', `color=c=black:s=${W}x${H}:r=${F}:d=2`, '-vf',
214
226
  `format=argb,geq=r=0:g=0:b=0:a='if(gt(Y,H*0.55),150*(Y-H*0.55)/(H*0.45),0)'`, '-c:v', 'qtrle', scrim], 300_000);
215
227
  // 자막 — 장의 text 를 그 장의 시간에만 띄운다. ⛔ 폰트는 «있는 것»만 쓴다.
216
- const font = ['/System/Library/Fonts/AppleSDGothicNeo.ttc', '/System/Library/Fonts/Supplemental/AppleGothic.ttf'].find(existsSync);
228
+ const requestedFont = ctx.state.font_file as string | undefined;
229
+ const font = requestedFont && existsSync(requestedFont)
230
+ ? requestedFont
231
+ : ['/System/Library/Fonts/AppleSDGothicNeo.ttc', '/System/Library/Fonts/Supplemental/AppleGothic.ttf'].find(existsSync);
217
232
  let t = 0;
218
233
  const draws: string[] = [];
219
234
  for (const ch of s.chapters) {
@@ -232,15 +247,18 @@ export const buildLayers: Recipe = async (ctx) => {
232
247
  text = join(dir, 'text.mov');
233
248
  // 🩸 2026-09-23 실물: `color=c=black@0.0` → `format=argb` 는 알파가 «255»였다(색 소스는 알파 없는 yuv 로 나와 @0.0 이 사라진다).
234
249
  // 그 불투명 검정판이 리졸브에서 «영상 전체»를 덮었다(QC: 0~47s 검정). ⇒ 스크림처럼 geq 로 알파를 «직접» 0 으로 쓴다.
235
- const tx = ffmpeg(['-f', 'lavfi', '-i', `color=c=black:s=${W}x${H}:r=${F}:d=${s.target_dur.toFixed(3)}`, '-vf', `format=argb,geq=r=0:g=0:b=0:a=0,${draws.join(',')}`, '-c:v', 'qtrle', text], 600_000);
250
+ const tx = render(['-f', 'lavfi', '-i', `color=c=black:s=${W}x${H}:r=${F}:d=${s.target_dur.toFixed(3)}`, '-vf', `format=argb,geq=r=0:g=0:b=0:a=0,${draws.join(',')}`, '-c:v', 'qtrle', text], 600_000);
236
251
  if (!tx.ok) return { outcome: 'error', note: `자막 층 실패: ${tx.err.slice(-200)}` };
237
252
  }
238
253
  if (!g.ok || !sc.ok) return { outcome: 'error', note: `층 실패: ${(g.err || sc.err).slice(-200)}` };
239
254
  // ⛔⭐ 덮는 층(스크림·자막)은 «투명해야» 한다 — 만든 직후 알파를 «잰다». 불투명이면 영상 전체를 덮는다.
240
255
  // 🩸 이 자가 없어서 결함이 «리졸브 렌더 뒤 QC»에서야 잡혔다(되돌아갈 곳도 cut 으로 잘못 가리켰다).
256
+ const measureAlpha = typeof ctx.state.alpha_mean === 'function'
257
+ ? ctx.state.alpha_mean as (path: string, at: number) => number | null
258
+ : alphaMean;
241
259
  for (const [label, p] of [['스크림', scrim], ['자막', text]] as const) {
242
260
  if (!p) continue;
243
- const a = alphaMean(p, 1.0);
261
+ const a = measureAlpha(p, 1.0);
244
262
  if (a === null) return { outcome: 'error', note: `${label} 층 알파를 못 쟀다` };
245
263
  if (a > 200) return { outcome: 'error', note: `${label} 층이 «불투명»하다(알파 평균 ${a.toFixed(0)}/255) — 영상 전체를 덮는다` };
246
264
  }
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1015],{1015:(e,r,n)=>{n.d(r,{Ck:()=>E,Ux:()=>h,XL:()=>k,Yk:()=>A,b_:()=>F,hM:()=>p,j3:()=>f,mP:()=>d,oE:()=>v,up:()=>y,uz:()=>b,xd:()=>w,yM:()=>c,zD:()=>g});var t=n(69009),o=n(26634),l=n(23396),u=n(91511),i=n(11554),a=n(85738),s=n(46842);function d(){let e=(0,i.M1)(),r=(0,o.jE)(),n=(0,l.I)({queryKey:a.AF.workflows(),queryFn:()=>e.getWorkflows(),refetchInterval:6e4});return(0,t.useEffect)(()=>{let n=e.workflowsEventsUrl();if(n)return(0,s.BX)(n,{events:{change:()=>{r.invalidateQueries({queryKey:a.AF.workflows()})}}})},[e,r]),n}function f(e){var r;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=(0,i.M1)();return(0,l.I)({queryKey:a.AF.workflow(e),queryFn:()=>t.getWorkflow(e),enabled:null!=(r=n.enabled)?r:e.length>0})}function c(){let e=(0,i.M1)(),r=(0,o.jE)();return(0,u.n)({mutationFn:r=>{let{name:n,body:t}=r;return e.saveWorkflow(n,t)},onSuccess:(e,n)=>{let{name:t}=n;r.invalidateQueries({queryKey:a.AF.workflows()}),r.invalidateQueries({queryKey:a.AF.workflow(t)})}})}function v(){let e=(0,i.M1)(),r=(0,o.jE)();return(0,u.n)({mutationFn:r=>{let{name:n,scope:t}=r;return e.deleteWorkflow(n,t?{scope:t}:void 0)},onSuccess:(e,n)=>{let{name:t}=n;r.invalidateQueries({queryKey:a.AF.workflows()}),r.invalidateQueries({queryKey:a.AF.workflow(t)})}})}function w(){let e=(0,i.M1)();return(0,u.n)({mutationFn:r=>{let{yaml:n,signal:t}=r;return e.validateWorkflow(n,t?{signal:t}:void 0)}})}function y(){let e=(0,i.M1)();return(0,u.n)({mutationFn:r=>e.generateWorkflow(r)})}function p(){let e=(0,i.M1)();return(0,u.n)({mutationFn:r=>e.synthesizeWorkflow(r)})}function k(){let e=(0,i.M1)();return(0,u.n)({mutationFn:r=>{let{name:n,args:t,dryRun:o}=r;return e.runWorkflow(n,t,o?{dryRun:!0}:void 0)}})}function F(){var e;let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=(0,i.M1)();return(0,l.I)({queryKey:a.AF.workflowRuns(),queryFn:()=>n.getWorkflowRuns(),enabled:null==(e=r.enabled)||e,refetchInterval:3e4})}function g(){var e;let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=(0,i.M1)();return(0,l.I)({queryKey:a.AF.pendingApprovals(),queryFn:()=>n.getPendingApprovals(),enabled:null==(e=r.enabled)||e,refetchInterval:1e3})}function A(){let e=(0,i.M1)(),r=(0,o.jE)();return(0,u.n)({mutationFn:r=>{let{runId:n,response:t}=r;return e.approveRun(n,t?{response:t}:{})},onSuccess:(e,n)=>{let{runId:t}=n;r.invalidateQueries({queryKey:a.AF.pendingApprovals()}),r.invalidateQueries({queryKey:a.AF.workflowRun(t)})}})}function h(){let e=(0,i.M1)(),r=(0,o.jE)();return(0,u.n)({mutationFn:r=>{let{runId:n,reason:t}=r;return e.rejectRun(n,t?{reason:t}:{})},onSuccess:(e,n)=>{let{runId:t}=n;r.invalidateQueries({queryKey:a.AF.pendingApprovals()}),r.invalidateQueries({queryKey:a.AF.workflowRun(t)})}})}function b(e){let r=(0,i.M1)();return(0,l.I)({queryKey:e?a.AF.workflowRun(e):["nexus","workflow-run","__none__"],queryFn:()=>{if(!e)throw Error("runId required");return r.getWorkflowRun(e)},enabled:!!e,refetchInterval:e=>{let r=e.state.data;return r?void 0===r.ok&&3e4:3e4}})}function E(){var e;let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=(0,i.M1)(),l=(0,o.jE)(),u=null==(e=r.enabled)||e,s=r.EventSourceImpl;(0,t.useEffect)(()=>{if(u)return function(e,r){var n;let t,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},l=null!=(n=o.EventSourceImpl)?n:globalThis.EventSource;if(!l)return()=>{};let u="".concat(e,"/v1/events?topics=").concat(encodeURIComponent("workflow."));try{t=new l(u)}catch(e){return()=>{}}let i=e=>{try{var r;let n=JSON.parse(e.data);if("string"==typeof(null==n||null==(r=n.detail)?void 0:r.runId)&&n.detail.runId.length>0)return n.detail.runId}catch(e){}};for(let e of(t.addEventListener("workflow.approval.pending",()=>r.onApprovalPending()),t.addEventListener("workflow.approval.resolved",e=>r.onApprovalResolved(i(e))),["workflow.run.started","workflow.run.node-started","workflow.run.node-skipped","workflow.run.node-done","workflow.run.completed","workflow.run.failed"]))t.addEventListener(e,e=>r.onRunEvent(i(e)));return()=>{try{t.close()}catch(e){}}}(n.baseUrl,{onApprovalPending:()=>l.invalidateQueries({queryKey:a.AF.pendingApprovals()}),onApprovalResolved:e=>{l.invalidateQueries({queryKey:a.AF.pendingApprovals()}),e&&l.invalidateQueries({queryKey:a.AF.workflowRun(e)})},onRunEvent:e=>{l.invalidateQueries({queryKey:a.AF.workflowRuns()}),e&&l.invalidateQueries({queryKey:a.AF.workflowRun(e)})}},s?{EventSourceImpl:s}:{})},[n.baseUrl,u,l,s])}},46842:(e,r,n)=>{n.d(r,{BX:()=>o});let t=new Map;function o(e,r){var n,o;let l=t.get(e);if(!l){let o;try{o=new EventSource(e)}catch(e){return null==(n=r.onConstructError)||n.call(r,e),()=>{}}let u={source:o,subscribers:new Set};o.onmessage=e=>{var r,n;for(let t of[...u.subscribers])null==(r=(n=t.handlers).onMessage)||r.call(n,e)},o.onerror=e=>{var r,n;for(let t of[...u.subscribers])null==(r=(n=t.handlers).onError)||r.call(n,e)},t.set(e,u),l=u}let u=l,i=[];for(let[e,n]of Object.entries(null!=(o=r.events)?o:{})){let r=e=>{n(e)};u.source.addEventListener(e,r),i.push([e,r])}let a={handlers:r};u.subscribers.add(a);let s=!1;return()=>{if(!s){for(let[e,r]of(s=!0,i))try{u.source.removeEventListener(e,r)}catch(e){}if(u.subscribers.delete(a),0===u.subscribers.size){try{u.source.close()}catch(e){}t.get(e)===u&&t.delete(e)}}}}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1084],{19798:(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}},27689:(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")}},31084:(e,t,s)=>{s.d(t,{J_:()=>i,ki:()=>l});var n=s(82100),r=s(27689),a=s(56471),o=s(19798);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(9143).then(s.bind(s,89143)),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)}}}},56471:(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"}})}},82100:(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}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1106],{968:(t,e,r)=>{r.d(e,{A:()=>i});var n=r(36457);let i=function(){try{var t=(0,n.A)(Object,"defineProperty");return t({},"",{}),t}catch(t){}}()},1041:(t,e,r)=>{r.d(e,{A:()=>c});var n=r(43364),i=r(30849),o=r(76354),u=r(37150),a=r(91261),s=r(32626);let c=function(t,e,r){e=(0,n.A)(e,t);for(var c=-1,l=e.length,f=!1;++c<l;){var h=(0,s.A)(e[c]);if(!(f=null!=t&&r(t,h)))break;t=t[h]}return f||++c!=l?f:!!(l=null==t?0:t.length)&&(0,a.A)(l)&&(0,u.A)(h,l)&&((0,o.A)(t)||(0,i.A)(t))}},1106:(t,e,r)=>{r.d(e,{T:()=>n.T});var n=r(22347)},5509:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(72472),i=r(26301);let o=function(t){return"symbol"==typeof t||(0,i.A)(t)&&"[object Symbol]"==(0,n.A)(t)}},7867:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t,e){return t===e||t!=t&&e!=e}},8333:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(72472),i=r(59778);let o=function(t){if(!(0,i.A)(t))return!1;var e=(0,n.A)(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},8893:(t,e,r)=>{r.d(e,{A:()=>o});let n=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)};var i=Math.max;let o=function(t,e,r){return e=i(void 0===e?t.length-1:e,0),function(){for(var o=arguments,u=-1,a=i(o.length-e,0),s=Array(a);++u<a;)s[u]=o[e+u];u=-1;for(var c=Array(e+1);++u<e;)c[u]=o[u];return c[e]=r(s),n(t,this,c)}}},10529:(t,e,r)=>{r.d(e,{A:()=>W});var n=r(56278),i=r(87723);let o=function(t,e){for(var r=-1,n=null==t?0:t.length;++r<n;)if(e(t[r],r,t))return!0;return!1};var u=r(93280);let a=function(t,e,r,n,a,s){var c=1&r,l=t.length,f=e.length;if(l!=f&&!(c&&f>l))return!1;var h=s.get(t),d=s.get(e);if(h&&d)return h==e&&d==t;var A=-1,p=!0,v=2&r?new i.A:void 0;for(s.set(t,e),s.set(e,t);++A<l;){var _=t[A],b=e[A];if(n)var g=c?n(b,_,A,e,t,s):n(_,b,A,t,e,s);if(void 0!==g){if(g)continue;p=!1;break}if(v){if(!o(e,function(t,e){if(!(0,u.A)(v,e)&&(_===t||a(_,t,r,n,s)))return v.push(e)})){p=!1;break}}else if(!(_===b||a(_,b,r,n,s))){p=!1;break}}return s.delete(t),s.delete(e),p};var s=r(74150),c=r(67523),l=r(7867);let f=function(t){var e=-1,r=Array(t.size);return t.forEach(function(t,n){r[++e]=[n,t]}),r};var h=r(22632),d=s.A?s.A.prototype:void 0,A=d?d.valueOf:void 0;let p=function(t,e,r,n,i,o,u){switch(r){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)break;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":if(t.byteLength!=e.byteLength||!o(new c.A(t),new c.A(e)))break;return!0;case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,l.A)(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var s=f;case"[object Set]":var d=1&n;if(s||(s=h.A),t.size!=e.size&&!d)break;var p=u.get(t);if(p)return p==e;n|=2,u.set(t,e);var v=a(s(t),s(e),n,i,o,u);return u.delete(t),v;case"[object Symbol]":if(A)return A.call(t)==A.call(e)}return!1};var v=r(82633),_=Object.prototype.hasOwnProperty;let b=function(t,e,r,n,i,o){var u=1&r,a=(0,v.A)(t),s=a.length;if(s!=(0,v.A)(e).length&&!u)return!1;for(var c=s;c--;){var l=a[c];if(!(u?l in e:_.call(e,l)))return!1}var f=o.get(t),h=o.get(e);if(f&&h)return f==e&&h==t;var d=!0;o.set(t,e),o.set(e,t);for(var A=u;++c<s;){var p=t[l=a[c]],b=e[l];if(n)var g=u?n(b,p,l,e,t,o):n(p,b,l,t,e,o);if(!(void 0===g?p===b||i(p,b,r,n,o):g)){d=!1;break}A||(A="constructor"==l)}if(d&&!A){var y=t.constructor,j=e.constructor;y!=j&&"constructor"in t&&"constructor"in e&&!("function"==typeof y&&y instanceof y&&"function"==typeof j&&j instanceof j)&&(d=!1)}return o.delete(t),o.delete(e),d};var g=r(13889),y=r(76354),j=r(33778),O=r(17404),w="[object Arguments]",m="[object Array]",C="[object Object]",E=Object.prototype.hasOwnProperty;let P=function(t,e,r,i,o,u){var s=(0,y.A)(t),c=(0,y.A)(e),l=s?m:(0,g.A)(t),f=c?m:(0,g.A)(e);l=l==w?C:l,f=f==w?C:f;var h=l==C,d=f==C,A=l==f;if(A&&(0,j.A)(t)){if(!(0,j.A)(e))return!1;s=!0,h=!1}if(A&&!h)return u||(u=new n.A),s||(0,O.A)(t)?a(t,e,r,i,o,u):p(t,e,l,r,i,o,u);if(!(1&r)){var v=h&&E.call(t,"__wrapped__"),_=d&&E.call(e,"__wrapped__");if(v||_){var P=v?t.value():t,z=_?e.value():e;return u||(u=new n.A),o(P,z,r,i,u)}}return!!A&&(u||(u=new n.A),b(t,e,r,i,o,u))};var z=r(26301);let N=function t(e,r,n,i,o){return e===r||(null!=e&&null!=r&&((0,z.A)(e)||(0,z.A)(r))?P(e,r,n,i,t,o):e!=e&&r!=r)},L=function(t,e,r,i){var o=r.length,u=o,a=!i;if(null==t)return!u;for(t=Object(t);o--;){var s=r[o];if(a&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++o<u;){var c=(s=r[o])[0],l=t[c],f=s[1];if(a&&s[2]){if(void 0===l&&!(c in t))return!1}else{var h=new n.A;if(i)var d=i(l,f,c,t,e,h);if(!(void 0===d?N(f,l,3,i,h):d))return!1}}return!0};var S=r(59778);let D=function(t){return t==t&&!(0,S.A)(t)};var x=r(53065);let k=function(t){for(var e=(0,x.A)(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,D(i)]}return e},F=function(t,e){return function(r){return null!=r&&r[t]===e&&(void 0!==e||t in Object(r))}},M=function(t){var e=k(t);return 1==e.length&&e[0][2]?F(e[0][0],e[0][1]):function(r){return r===t||L(r,t,e)}};var T=r(93601);let $=function(t,e,r){var n=null==t?void 0:(0,T.A)(t,e);return void 0===n?r:n};var B=r(85458),I=r(71465),U=r(32626),R=r(70647),V=r(71738);let G=function(t){return(0,I.A)(t)?(0,V.A)((0,U.A)(t)):function(e){return(0,T.A)(e,t)}},W=function(t){if("function"==typeof t)return t;if(null==t)return R.A;if("object"==typeof t){var e,r;return(0,y.A)(t)?(e=t[0],r=t[1],(0,I.A)(e)&&D(r)?F((0,U.A)(e),r):function(t){var n=$(t,e);return void 0===n&&n===r?(0,B.A)(t,e):N(r,n,3)}):M(t)}return G(t)}},13889:(t,e,r)=>{r.d(e,{A:()=>w});var n=r(36457),i=r(26562),o=(0,n.A)(i.A,"DataView"),u=r(36868),a=(0,n.A)(i.A,"Promise"),s=r(29514),c=(0,n.A)(i.A,"WeakMap"),l=r(72472),f=r(67414),h="[object Map]",d="[object Promise]",A="[object Set]",p="[object WeakMap]",v="[object DataView]",_=(0,f.A)(o),b=(0,f.A)(u.A),g=(0,f.A)(a),y=(0,f.A)(s.A),j=(0,f.A)(c),O=l.A;(o&&O(new o(new ArrayBuffer(1)))!=v||u.A&&O(new u.A)!=h||a&&O(a.resolve())!=d||s.A&&O(new s.A)!=A||c&&O(new c)!=p)&&(O=function(t){var e=(0,l.A)(t),r="[object Object]"==e?t.constructor:void 0,n=r?(0,f.A)(r):"";if(n)switch(n){case _:return v;case b:return h;case g:return d;case y:return A;case j:return p}return e});let w=O},16154:(t,e,r)=>{r.d(e,{A:()=>u});var n=r(67244),i=(0,r(50280).A)(Object.keys,Object),o=Object.prototype.hasOwnProperty;let u=function(t){if(!(0,n.A)(t))return i(t);var e=[];for(var r in Object(t))o.call(t,r)&&"constructor"!=r&&e.push(r);return e}},17404:(t,e,r)=>{r.d(e,{A:()=>l});var n=r(72472),i=r(91261),o=r(26301),u={};u["[object Float32Array]"]=u["[object Float64Array]"]=u["[object Int8Array]"]=u["[object Int16Array]"]=u["[object Int32Array]"]=u["[object Uint8Array]"]=u["[object Uint8ClampedArray]"]=u["[object Uint16Array]"]=u["[object Uint32Array]"]=!0,u["[object Arguments]"]=u["[object Array]"]=u["[object ArrayBuffer]"]=u["[object Boolean]"]=u["[object DataView]"]=u["[object Date]"]=u["[object Error]"]=u["[object Function]"]=u["[object Map]"]=u["[object Number]"]=u["[object Object]"]=u["[object RegExp]"]=u["[object Set]"]=u["[object String]"]=u["[object WeakMap]"]=!1;var a=r(96066),s=r(42954),c=s.A&&s.A.isTypedArray;let l=c?(0,a.A)(c):function(t){return(0,o.A)(t)&&(0,i.A)(t.length)&&!!u[(0,n.A)(t)]}},22347:(t,e,r)=>{r.d(e,{T:()=>M});var n=r(69213),i=r(8333),o=r(53065),u=r(41712),a=r(16154),s=r(13889),c=r(30849),l=r(76354),f=r(62877),h=r(33778),d=r(67244),A=r(17404),p=Object.prototype.hasOwnProperty;let v=function(t){if(null==t)return!0;if((0,f.A)(t)&&((0,l.A)(t)||"string"==typeof t||"function"==typeof t.splice||(0,h.A)(t)||(0,A.A)(t)||(0,c.A)(t)))return!t.length;var e=(0,s.A)(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if((0,d.A)(t))return!(0,a.A)(t).length;for(var r in t)if(p.call(t,r))return!1;return!0};var _=r(27849),b=r(61903),g=r(59917),y=r(93489),j=r(87723),O=r(68348);let w=function(t){return t!=t},m=function(t,e,r){for(var n=r-1,i=t.length;++n<i;)if(t[n]===e)return n;return -1},C=function(t,e){return!!(null==t?0:t.length)&&(e==e?m(t,e,0):(0,O.A)(t,w,0))>-1},E=function(t,e,r){for(var n=-1,i=null==t?0:t.length;++n<i;)if(r(e,t[n]))return!0;return!1};var P=r(93280),z=r(29514),N=r(22632),L=z.A&&1/(0,N.A)(new z.A([,-0]))[1]==1/0?function(t){return new z.A(t)}:function(){};let S=function(t,e,r){var n=-1,i=C,o=t.length,u=!0,a=[],s=a;if(r)u=!1,i=E;else if(o>=200){var c=e?null:L(t);if(c)return(0,N.A)(c);u=!1,i=P.A,s=new j.A}else s=e?[]:a;t:for(;++n<o;){var l=t[n],f=e?e(l):l;if(l=r||0!==l?l:0,u&&f==f){for(var h=s.length;h--;)if(s[h]===f)continue t;e&&s.push(f),a.push(l)}else i(s,f,r)||(s!==a&&s.push(f),a.push(l))}return a};var D=r(90514),x=(0,y.A)(function(t){return S((0,g.A)(t,1,D.A,!0))}),k=r(43434),F=r(82638);class M{constructor(t={}){this._isDirected=!Object.prototype.hasOwnProperty.call(t,"directed")||t.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(t,"multigraph")&&t.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=n.A(void 0),this._defaultEdgeLabelFn=n.A(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children["\0"]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return i.A(t)||(t=n.A(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return o.A(this._nodes)}sources(){var t=this;return u.A(this.nodes(),function(e){return v(t._in[e])})}sinks(){var t=this;return u.A(this.nodes(),function(e){return v(t._out[e])})}setNodes(t,e){var r=arguments,n=this;return _.A(t,function(t){r.length>1?n.setNode(t,e):n.setNode(t)}),this}setNode(t,e){return Object.prototype.hasOwnProperty.call(this._nodes,t)?arguments.length>1&&(this._nodes[t]=e):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]="\0",this._children[t]={},this._children["\0"][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount),this}node(t){return this._nodes[t]}hasNode(t){return Object.prototype.hasOwnProperty.call(this._nodes,t)}removeNode(t){if(Object.prototype.hasOwnProperty.call(this._nodes,t)){var e=t=>this.removeEdge(this._edgeObjs[t]);delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],_.A(this.children(t),t=>{this.setParent(t)}),delete this._children[t]),_.A(o.A(this._in[t]),e),delete this._in[t],delete this._preds[t],_.A(o.A(this._out[t]),e),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw Error("Cannot set parent in a non-compound graph");if(b.A(e))e="\0";else{e+="";for(var r=e;!b.A(r);r=this.parent(r))if(r===t)throw Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if("\0"!==e)return e}}children(t){if(b.A(t)&&(t="\0"),this._isCompound){var e=this._children[t];if(e)return o.A(e)}else if("\0"===t)return this.nodes();else if(this.hasNode(t))return[]}predecessors(t){var e=this._preds[t];if(e)return o.A(e)}successors(t){var e=this._sucs[t];if(e)return o.A(e)}neighbors(t){var e=this.predecessors(t);if(e)return x(e,this.successors(t))}isLeaf(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var r=this;_.A(this._nodes,function(r,n){t(n)&&e.setNode(n,r)}),_.A(this._edgeObjs,function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,r.edge(t))});var n={};return this._isCompound&&_.A(e.nodes(),function(t){e.setParent(t,function t(i){var o=r.parent(i);return void 0===o||e.hasNode(o)?(n[i]=o,o):o in n?n[o]:t(o)}(t))}),e}setDefaultEdgeLabel(t){return i.A(t)||(t=n.A(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return k.A(this._edgeObjs)}setPath(t,e){var r=this,n=arguments;return F.A(t,function(t,i){return n.length>1?r.setEdge(t,i,e):r.setEdge(t,i),i}),this}setEdge(){var t,e,r,n,i=!1,o=arguments[0];"object"==typeof o&&null!==o&&"v"in o?(t=o.v,e=o.w,r=o.name,2==arguments.length&&(n=arguments[1],i=!0)):(t=o,e=arguments[1],r=arguments[3],arguments.length>2&&(n=arguments[2],i=!0)),t=""+t,e=""+e,b.A(r)||(r=""+r);var u=B(this._isDirected,t,e,r);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,u))return i&&(this._edgeLabels[u]=n),this;if(!b.A(r)&&!this._isMultigraph)throw Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[u]=i?n:this._defaultEdgeLabelFn(t,e,r);var a=function(t,e,r,n){var i=""+e,o=""+r;if(!t&&i>o){var u=i;i=o,o=u}var a={v:i,w:o};return n&&(a.name=n),a}(this._isDirected,t,e,r);return t=a.v,e=a.w,Object.freeze(a),this._edgeObjs[u]=a,T(this._preds[e],t),T(this._sucs[t],e),this._in[e][u]=a,this._out[t][u]=a,this._edgeCount++,this}edge(t,e,r){var n=1==arguments.length?I(this._isDirected,arguments[0]):B(this._isDirected,t,e,r);return this._edgeLabels[n]}hasEdge(t,e,r){var n=1==arguments.length?I(this._isDirected,arguments[0]):B(this._isDirected,t,e,r);return Object.prototype.hasOwnProperty.call(this._edgeLabels,n)}removeEdge(t,e,r){var n=1==arguments.length?I(this._isDirected,arguments[0]):B(this._isDirected,t,e,r),i=this._edgeObjs[n];return i&&(t=i.v,e=i.w,delete this._edgeLabels[n],delete this._edgeObjs[n],$(this._preds[e],t),$(this._sucs[t],e),delete this._in[e][n],delete this._out[t][n],this._edgeCount--),this}inEdges(t,e){var r=this._in[t];if(r){var n=k.A(r);return e?u.A(n,function(t){return t.v===e}):n}}outEdges(t,e){var r=this._out[t];if(r){var n=k.A(r);return e?u.A(n,function(t){return t.w===e}):n}}nodeEdges(t,e){var r=this.inEdges(t,e);if(r)return r.concat(this.outEdges(t,e))}}function T(t,e){t[e]?t[e]++:t[e]=1}function $(t,e){--t[e]||delete t[e]}function B(t,e,r,n){var i=""+e,o=""+r;if(!t&&i>o){var u=i;i=o,o=u}return i+"\x01"+o+"\x01"+(b.A(n)?"\0":n)}function I(t,e){return B(t,e.v,e.w,e.name)}M.prototype._nodeCount=0,M.prototype._edgeCount=0},22632:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t){var e=-1,r=Array(t.size);return t.forEach(function(t){r[++e]=t}),r}},26301:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t){return null!=t&&"object"==typeof t}},26562:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(41551),i="object"==typeof self&&self&&self.Object===Object&&self;let o=n.A||i||Function("return this")()},27849:(t,e,r)=>{r.d(e,{A:()=>a});var n=r(68258),i=r(57410),o=r(91817),u=r(76354);let a=function(t,e){return((0,u.A)(t)?n.A:i.A)(t,(0,o.A)(e))}},28155:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t,e){for(var r=-1,n=e.length,i=t.length;++r<n;)t[i+r]=e[r];return t}},29514:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(36457),i=r(26562);let o=(0,n.A)(i.A,"Set")},30849:(t,e,r)=>{r.d(e,{A:()=>c});var n=r(72472),i=r(26301);let o=function(t){return(0,i.A)(t)&&"[object Arguments]"==(0,n.A)(t)};var u=Object.prototype,a=u.hasOwnProperty,s=u.propertyIsEnumerable;let c=o(function(){return arguments}())?o:function(t){return(0,i.A)(t)&&a.call(t,"callee")&&!s.call(t,"callee")}},32626:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(5509),i=1/0;let o=function(t){if("string"==typeof t||(0,n.A)(t))return t;var e=t+"";return"0"==e&&1/t==-i?"-0":e}},33778:(t,e,r)=>{r.d(e,{A:()=>a});var n=r(26562),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=i&&"object"==typeof module&&module&&!module.nodeType&&module,u=o&&o.exports===i?n.A.Buffer:void 0;let a=(u?u.isBuffer:void 0)||function(){return!1}},36457:(t,e,r)=>{r.d(e,{A:()=>A});var n=r(8333),i=r(26562).A["__core-js_shared__"],o=function(){var t=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),u=r(59778),a=r(67414),s=/^\[object .+?Constructor\]$/,c=Object.prototype,l=Function.prototype.toString,f=c.hasOwnProperty,h=RegExp("^"+l.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");let d=function(t){return!!(0,u.A)(t)&&(!o||!(o in t))&&((0,n.A)(t)?h:s).test((0,a.A)(t))},A=function(t,e){var r=null==t?void 0:t[e];return d(r)?r:void 0}},36868:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(36457),i=r(26562);let o=(0,n.A)(i.A,"Map")},37150:(t,e,r)=>{r.d(e,{A:()=>i});var n=/^(?:0|[1-9]\d*)$/;let i=function(t,e){var r=typeof t;return!!(e=null==e?0x1fffffffffffff:e)&&("number"==r||"symbol"!=r&&n.test(t))&&t>-1&&t%1==0&&t<e}},39087:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t,e){for(var r=-1,n=null==t?0:t.length,i=Array(n);++r<n;)i[r]=e(t[r],r,t);return i}},41551:(t,e,r)=>{r.d(e,{A:()=>n});let n="object"==typeof global&&global&&global.Object===Object&&global},41712:(t,e,r)=>{r.d(e,{A:()=>s});var n=r(41875),i=r(57410);let o=function(t,e){var r=[];return(0,i.A)(t,function(t,n,i){e(t,n,i)&&r.push(t)}),r};var u=r(10529),a=r(76354);let s=function(t,e){return((0,a.A)(t)?n.A:o)(t,(0,u.A)(e,3))}},41875:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t,e){for(var r=-1,n=null==t?0:t.length,i=0,o=[];++r<n;){var u=t[r];e(u,r,t)&&(o[i++]=u)}return o}},42954:(t,e,r)=>{r.d(e,{A:()=>a});var n=r(41551),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=i&&"object"==typeof module&&module&&!module.nodeType&&module,u=o&&o.exports===i&&n.A.process;let a=function(){try{var t=o&&o.require&&o.require("util").types;if(t)return t;return u&&u.binding&&u.binding("util")}catch(t){}}()},43364:(t,e,r)=>{r.d(e,{A:()=>f});var n=r(76354),i=r(71465),o=r(72701);function u(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw TypeError("Expected a function");var r=function(){var n=arguments,i=e?e.apply(this,n):n[0],o=r.cache;if(o.has(i))return o.get(i);var u=t.apply(this,n);return r.cache=o.set(i,u)||o,u};return r.cache=new(u.Cache||o.A),r}u.Cache=o.A;var a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,s=/\\(\\)?/g,c=function(t){var e=u(t,function(t){return 500===r.size&&r.clear(),t}),r=e.cache;return e}(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(a,function(t,r,n,i){e.push(n?i.replace(s,"$1"):r||t)}),e}),l=r(44023);let f=function(t,e){return(0,n.A)(t)?t:(0,i.A)(t,e)?[t]:c((0,l.A)(t))}},43434:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(39087),i=r(53065);let o=function(t){var e;return null==t?[]:(e=(0,i.A)(t),(0,n.A)(e,function(e){return t[e]}))}},44023:(t,e,r)=>{r.d(e,{A:()=>f});var n=r(74150),i=r(39087),o=r(76354),u=r(5509),a=1/0,s=n.A?n.A.prototype:void 0,c=s?s.toString:void 0;let l=function t(e){if("string"==typeof e)return e;if((0,o.A)(e))return(0,i.A)(e,t)+"";if((0,u.A)(e))return c?c.call(e):"";var r=e+"";return"0"==r&&1/e==-a?"-0":r},f=function(t){return null==t?"":l(t)}},50280:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t,e){return function(r){return t(e(r))}}},53065:(t,e,r)=>{r.d(e,{A:()=>u});var n=r(65346),i=r(16154),o=r(62877);let u=function(t){return(0,o.A)(t)?(0,n.A)(t):(0,i.A)(t)}},54402:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(59491),i=r(53065);let o=function(t,e){return t&&(0,n.A)(t,e,i.A)}},56278:(t,e,r)=>{r.d(e,{A:()=>a});var n=r(86659),i=r(36868),o=r(72701);function u(t){var e=this.__data__=new n.A(t);this.size=e.size}u.prototype.clear=function(){this.__data__=new n.A,this.size=0},u.prototype.delete=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r},u.prototype.get=function(t){return this.__data__.get(t)},u.prototype.has=function(t){return this.__data__.has(t)},u.prototype.set=function(t,e){var r=this.__data__;if(r instanceof n.A){var u=r.__data__;if(!i.A||u.length<199)return u.push([t,e]),this.size=++r.size,this;r=this.__data__=new o.A(u)}return r.set(t,e),this.size=r.size,this};let a=u},57410:(t,e,r)=>{r.d(e,{A:()=>u});var n,i=r(54402),o=r(62877);let u=(n=i.A,function(t,e){if(null==t)return t;if(!(0,o.A)(t))return n(t,e);for(var r=t.length,i=-1,u=Object(t);++i<r&&!1!==e(u[i],i,u););return t})},59491:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t,e,r){for(var n=-1,i=Object(t),o=r(t),u=o.length;u--;){var a=o[++n];if(!1===e(i[a],a,i))break}return t}},59778:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},59917:(t,e,r)=>{r.d(e,{A:()=>c});var n=r(28155),i=r(74150),o=r(30849),u=r(76354),a=i.A?i.A.isConcatSpreadable:void 0;let s=function(t){return(0,u.A)(t)||(0,o.A)(t)||!!(a&&t&&t[a])},c=function t(e,r,i,o,u){var a=-1,c=e.length;for(i||(i=s),u||(u=[]);++a<c;){var l=e[a];r>0&&i(l)?r>1?t(l,r-1,i,o,u):(0,n.A)(u,l):o||(u[u.length]=l)}return u}},61903:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t){return void 0===t}},62877:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(8333),i=r(91261);let o=function(t){return null!=t&&(0,i.A)(t.length)&&!(0,n.A)(t)}},65346:(t,e,r)=>{r.d(e,{A:()=>l});let n=function(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n};var i=r(30849),o=r(76354),u=r(33778),a=r(37150),s=r(17404),c=Object.prototype.hasOwnProperty;let l=function(t,e){var r=(0,o.A)(t),l=!r&&(0,i.A)(t),f=!r&&!l&&(0,u.A)(t),h=!r&&!l&&!f&&(0,s.A)(t),d=r||l||f||h,A=d?n(t.length,String):[],p=A.length;for(var v in t)(e||c.call(t,v))&&!(d&&("length"==v||f&&("offset"==v||"parent"==v)||h&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||(0,a.A)(v,p)))&&A.push(v);return A}},67060:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(28155),i=r(76354);let o=function(t,e,r){var o=e(t);return(0,i.A)(t)?o:(0,n.A)(o,r(t))}},67244:(t,e,r)=>{r.d(e,{A:()=>i});var n=Object.prototype;let i=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},67260:(t,e,r)=>{r.d(e,{A:()=>s});var n=r(69213),i=r(968),o=r(70647),u=i.A?function(t,e){return(0,i.A)(t,"toString",{configurable:!0,enumerable:!1,value:(0,n.A)(e),writable:!0})}:o.A,a=Date.now;let s=function(t){var e=0,r=0;return function(){var n=a(),i=16-(n-r);if(r=n,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(u)},67414:(t,e,r)=>{r.d(e,{A:()=>i});var n=Function.prototype.toString;let i=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},67523:(t,e,r)=>{r.d(e,{A:()=>n});let n=r(26562).A.Uint8Array},68258:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t,e){for(var r=-1,n=null==t?0:t.length;++r<n&&!1!==e(t[r],r,t););return t}},68348:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t,e,r,n){for(var i=t.length,o=r+(n?1:-1);n?o--:++o<i;)if(e(t[o],o,t))return o;return -1}},69213:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t){return function(){return t}}},70647:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t){return t}},71465:(t,e,r)=>{r.d(e,{A:()=>a});var n=r(76354),i=r(5509),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/;let a=function(t,e){if((0,n.A)(t))return!1;var r=typeof t;return!!("number"==r||"symbol"==r||"boolean"==r||null==t||(0,i.A)(t))||u.test(t)||!o.test(t)||null!=e&&t in Object(e)}},71738:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t){return function(e){return null==e?void 0:e[t]}}},72472:(t,e,r)=>{r.d(e,{A:()=>f});var n=r(74150),i=Object.prototype,o=i.hasOwnProperty,u=i.toString,a=n.A?n.A.toStringTag:void 0;let s=function(t){var e=o.call(t,a),r=t[a];try{t[a]=void 0;var n=!0}catch(t){}var i=u.call(t);return n&&(e?t[a]=r:delete t[a]),i};var c=Object.prototype.toString,l=n.A?n.A.toStringTag:void 0;let f=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":l&&l in Object(t)?s(t):c.call(t)}},72701:(t,e,r)=>{r.d(e,{A:()=>h});var n=(0,r(36457).A)(Object,"create"),i=Object.prototype.hasOwnProperty,o=Object.prototype.hasOwnProperty;function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=function(){this.__data__=n?n(null):{},this.size=0},u.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=!!e,e},u.prototype.get=function(t){var e=this.__data__;if(n){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return i.call(e,t)?e[t]:void 0},u.prototype.has=function(t){var e=this.__data__;return n?void 0!==e[t]:o.call(e,t)},u.prototype.set=function(t,e){var r=this.__data__;return this.size+=+!this.has(t),r[t]=n&&void 0===e?"__lodash_hash_undefined__":e,this};var a=r(86659),s=r(36868);let c=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t},l=function(t,e){var r=t.__data__;return c(e)?r["string"==typeof e?"string":"hash"]:r.map};function f(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}f.prototype.clear=function(){this.size=0,this.__data__={hash:new u,map:new(s.A||a.A),string:new u}},f.prototype.delete=function(t){var e=l(this,t).delete(t);return this.size-=!!e,e},f.prototype.get=function(t){return l(this,t).get(t)},f.prototype.has=function(t){return l(this,t).has(t)},f.prototype.set=function(t,e){var r=l(this,t),n=r.size;return r.set(t,e),this.size+=+(r.size!=n),this};let h=f},74150:(t,e,r)=>{r.d(e,{A:()=>n});let n=r(26562).A.Symbol},76354:(t,e,r)=>{r.d(e,{A:()=>n});let n=Array.isArray},77094:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(){return[]}},80447:(t,e,r)=>{r.d(e,{A:()=>a});var n=r(41875),i=r(77094),o=Object.prototype.propertyIsEnumerable,u=Object.getOwnPropertySymbols;let a=u?function(t){return null==t?[]:(t=Object(t),(0,n.A)(u(t),function(e){return o.call(t,e)}))}:i.A},82633:(t,e,r)=>{r.d(e,{A:()=>u});var n=r(67060),i=r(80447),o=r(53065);let u=function(t){return(0,n.A)(t,o.A,i.A)}},82638:(t,e,r)=>{r.d(e,{A:()=>s});let n=function(t,e,r,n){var i=-1,o=null==t?0:t.length;for(n&&o&&(r=t[++i]);++i<o;)r=e(r,t[i],i,t);return r};var i=r(57410),o=r(10529);let u=function(t,e,r,n,i){return i(t,function(t,i,o){r=n?(n=!1,t):e(r,t,i,o)}),r};var a=r(76354);let s=function(t,e,r){var s=(0,a.A)(t)?n:u,c=arguments.length<3;return s(t,(0,o.A)(e,4),r,c,i.A)}},85458:(t,e,r)=>{r.d(e,{A:()=>o});let n=function(t,e){return null!=t&&e in Object(t)};var i=r(1041);let o=function(t,e){return null!=t&&(0,i.A)(t,e,n)}},86659:(t,e,r)=>{r.d(e,{A:()=>a});var n=r(7867);let i=function(t,e){for(var r=t.length;r--;)if((0,n.A)(t[r][0],e))return r;return -1};var o=Array.prototype.splice;function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=function(){this.__data__=[],this.size=0},u.prototype.delete=function(t){var e=this.__data__,r=i(e,t);return!(r<0)&&(r==e.length-1?e.pop():o.call(e,r,1),--this.size,!0)},u.prototype.get=function(t){var e=this.__data__,r=i(e,t);return r<0?void 0:e[r][1]},u.prototype.has=function(t){return i(this.__data__,t)>-1},u.prototype.set=function(t,e){var r=this.__data__,n=i(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};let a=u},87723:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(72701);function i(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new n.A;++e<r;)this.add(t[e])}i.prototype.add=i.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},i.prototype.has=function(t){return this.__data__.has(t)};let o=i},90514:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(62877),i=r(26301);let o=function(t){return(0,i.A)(t)&&(0,n.A)(t)}},91261:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=0x1fffffffffffff}},91817:(t,e,r)=>{r.d(e,{A:()=>i});var n=r(70647);let i=function(t){return"function"==typeof t?t:n.A}},93280:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t,e){return t.has(e)}},93489:(t,e,r)=>{r.d(e,{A:()=>u});var n=r(70647),i=r(8893),o=r(67260);let u=function(t,e){return(0,o.A)((0,i.A)(t,e,n.A),t+"")}},93601:(t,e,r)=>{r.d(e,{A:()=>o});var n=r(43364),i=r(32626);let o=function(t,e){e=(0,n.A)(e,t);for(var r=0,o=e.length;null!=t&&r<o;)t=t[(0,i.A)(e[r++])];return r&&r==o?t:void 0}},96066:(t,e,r)=>{r.d(e,{A:()=>n});let n=function(t){return function(e){return t(e)}}}}]);