elanous 0.2.31 → 0.2.34

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 (715) 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/{LSXfY0u9QtfDbejY0Ukf_ → L04y73dlwKeTW-GetaTF3}/_buildManifest.js +1 -1
  4. package/apps/pwa/out/_next/static/chunks/1162.c69abda138c7ce43.js +79 -0
  5. package/apps/pwa/out/_next/static/chunks/1449-1fede62af84c3e43.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1598-13fc845935e816df.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1639.62c5e16fa20d242f.js +94 -0
  8. package/apps/pwa/out/_next/static/chunks/{4174.92ed04922709ac9e.js → 1644.35dd25240ae24e4b.js} +2 -2
  9. package/apps/pwa/out/_next/static/chunks/1661-adb8b2babc9aaf8c.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/{2940-619bfd8ef337c611.js → 1895-60ed0e341c658bd4.js} +1 -1
  11. package/apps/pwa/out/_next/static/chunks/{5525.86debf231e181813.js → 2124.ed5bf480cea7f85b.js} +1 -1
  12. package/apps/pwa/out/_next/static/chunks/2147.107c0fc6146fb15a.js +23 -0
  13. package/apps/pwa/out/_next/static/chunks/2202-ef1c9b000c3074fc.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/2247.1e326638ee43e672.js +115 -0
  15. package/apps/pwa/out/_next/static/chunks/2268.56e1e3d58180abae.js +8 -0
  16. package/apps/pwa/out/_next/static/chunks/2469-606819c812414021.js +1 -0
  17. package/apps/pwa/out/_next/static/chunks/{6092.a7f99e68b188ca66.js → 2547.dd27303624cb4da8.js} +1 -1
  18. package/apps/pwa/out/_next/static/chunks/{2213.2ccbada92c33ea0f.js → 2554.3b5e200f5f5cfcd6.js} +16 -16
  19. package/apps/pwa/out/_next/static/chunks/2593.e53c1620c0bb3599.js +1 -0
  20. package/apps/pwa/out/_next/static/chunks/2690.e96671114222676a.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/2898-79ee1a5cc0cd9d13.js +1 -0
  22. package/apps/pwa/out/_next/static/chunks/298.26099a9f65e5c8ff.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/{5173-233188df2f42c626.js → 2987-30cf9c2eb7b8bdd5.js} +1 -1
  24. package/apps/pwa/out/_next/static/chunks/2992.51fc2a7295bd8139.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/{3541-ce3a5424ed5ad7f1.js → 3001-5a52788c813b6113.js} +1 -1
  26. package/apps/pwa/out/_next/static/chunks/3014-291245fba9df7b5b.js +1 -0
  27. package/apps/pwa/out/_next/static/chunks/3068.ee78201f0251a18d.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/3083.cd399a17e9365f78.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/3103.84470c8445962f04.js +34 -0
  30. package/apps/pwa/out/_next/static/chunks/{6433.fc573af22bbc9ab7.js → 3110.0a7065f25c841818.js} +17 -17
  31. package/apps/pwa/out/_next/static/chunks/3117-e1c474683fd1f824.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/3121.779fafe3e44612c5.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/3251-2c17bd5a91f8de2e.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/326.3fb32322bb2ddf6d.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/3411-f87314c6c66ebc73.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/{6157.0c9af021de4fb31b.js → 3414.172ad4ca2d9b08e8.js} +2 -2
  37. package/apps/pwa/out/_next/static/chunks/3421-7ff7fbaa156985a7.js +1 -0
  38. package/apps/pwa/out/_next/static/chunks/{4745.67d6f99c245af3f7.js → 3498.cf2a15a8a9e5b926.js} +3 -3
  39. package/apps/pwa/out/_next/static/chunks/381.f55dc63ea87735e6.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/3819.163d4777f0a597f6.js +32 -0
  41. package/apps/pwa/out/_next/static/chunks/{5543.a438b8ab5a13ea47.js → 3837.722e053fb9f321ad.js} +1 -1
  42. package/apps/pwa/out/_next/static/chunks/4129-ab0a6189f1778633.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/4361.93d14ba594b3a035.js +104 -0
  44. package/apps/pwa/out/_next/static/chunks/4364.7a7eb19cceb67d2f.js +286 -0
  45. package/apps/pwa/out/_next/static/chunks/4406.d71f506f7c3ee9d3.js +149 -0
  46. package/apps/pwa/out/_next/static/chunks/4461.2ad1514180ae7e29.js +148 -0
  47. package/apps/pwa/out/_next/static/chunks/4479.bd309cbe0e3842ee.js +64 -0
  48. package/apps/pwa/out/_next/static/chunks/4522-05966f777d66d13b.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/4543-9a3e9812e845de65.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/4557.f8f1d84a0d90d590.js +74 -0
  51. package/apps/pwa/out/_next/static/chunks/4589-79b11542179ef58c.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/4633-9f8f9f88ffbb8f5c.js +1 -0
  53. package/apps/pwa/out/_next/static/chunks/4831.23af4d10c0697b5e.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/4983.5951b85724f61f2a.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/{b313b242.cb1265eea908db61.js → 4fa33ebd.21c1bd5b294496e6.js} +1 -1
  56. package/apps/pwa/out/_next/static/chunks/{997ce8a5-2ad501927003b41b.js → 5014f970-22bef0b5210f7d60.js} +1 -1
  57. package/apps/pwa/out/_next/static/chunks/{2112-e4efc21a6505d5bc.js → 5028-f0722e6114c313e7.js} +1 -1
  58. package/apps/pwa/out/_next/static/chunks/{2898.fd781bc7cf01a7b7.js → 5249.96a848656b582a93.js} +1 -1
  59. package/apps/pwa/out/_next/static/chunks/5311.16e0ffbfa5468b80.js +62 -0
  60. package/apps/pwa/out/_next/static/chunks/{9407.e49124dedf0f5e72.js → 5446.edf141cff9ef647d.js} +1 -1
  61. package/apps/pwa/out/_next/static/chunks/{9002.e5658224e3dc1b6f.js → 5489.ec2dd1b5272a19dc.js} +1 -1
  62. package/apps/pwa/out/_next/static/chunks/{1335-6731f392c35216eb.js → 5576-82d3703636d5c4b9.js} +3 -3
  63. package/apps/pwa/out/_next/static/chunks/559.df87695df637920c.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/5618-5c88f2f70178c4ad.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/5764.05487bf0b73ddb6b.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/5930.e678826c3f831aab.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/5dfb57f7.f2e3305326202474.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/6053-d893974de92e6198.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/{2985.39ccdecd36848b12.js → 6086.913a69e6fa3e4a8b.js} +4 -4
  70. package/apps/pwa/out/_next/static/chunks/6200-cefd6f33f59d765e.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/6314-edeba650ae686ac9.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/6316-bc9a9b74d7842d79.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/6476-13b9779b73528008.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/666-04db3ac4c8e3c66f.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/670.682e55106ef915a6.js +77 -0
  76. package/apps/pwa/out/_next/static/chunks/{7862.30a8d6482bb238eb.js → 6740.43de73fc427c9fe2.js} +1 -1
  77. package/apps/pwa/out/_next/static/chunks/6816.b7ba9d0a1a4a46a7.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/690-fbbcc777f189af37.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/6989.0d3d4020e5cb3df6.js +90 -0
  80. package/apps/pwa/out/_next/static/chunks/{2871.0bca6137343b3f76.js → 7005.1623d2aea78eb85f.js} +1 -1
  81. package/apps/pwa/out/_next/static/chunks/7193-cf355cca5ba6c5d5.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/7217-d17393fe7af78fa6.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/7232.24edbd938a69c8d0.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/7295cd1e.b4b557908888eeee.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/7323.adb02de21991883c.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/7386.5d8e7e42e818dfb6.js +287 -0
  87. package/apps/pwa/out/_next/static/chunks/{7502.ccd5b8065545edd0.js → 7431.3051e9b8a4372d2d.js} +2 -2
  88. package/apps/pwa/out/_next/static/chunks/{3583.a05e88cc8d594628.js → 7448.478958ffbbba0ac0.js} +1 -1
  89. package/apps/pwa/out/_next/static/chunks/7537.ba2208c5c656b8a3.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/7562.948255cbc3e79d33.js +41 -0
  91. package/apps/pwa/out/_next/static/chunks/7596-962ae6db6cfc9c83.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/7671.cff51beac212a2ba.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/7883.3916734ee16d3e58.js +27 -0
  94. package/apps/pwa/out/_next/static/chunks/{9989.3694300e5f000b14.js → 7952.b192c31b6a0e00cc.js} +1 -1
  95. package/apps/pwa/out/_next/static/chunks/801.5b24e81eded22d1b.js +1 -0
  96. package/apps/pwa/out/_next/static/chunks/8176.8c9a8613f5a01ac1.js +36 -0
  97. package/apps/pwa/out/_next/static/chunks/819e78a6.fa3dd7f7da19bf61.js +1 -0
  98. package/apps/pwa/out/_next/static/chunks/8220-78978450c3183d8d.js +1 -0
  99. package/apps/pwa/out/_next/static/chunks/8221-eb60b5bc692a3361.js +1 -0
  100. package/apps/pwa/out/_next/static/chunks/826.e9a26064f474949e.js +1 -0
  101. package/apps/pwa/out/_next/static/chunks/{5307.60f2209e809bd627.js → 8368.014caa8de2f5af34.js} +1 -1
  102. package/apps/pwa/out/_next/static/chunks/8459-a351487a4480f584.js +1 -0
  103. package/apps/pwa/out/_next/static/chunks/8482-75823d513a4ce151.js +1 -0
  104. package/apps/pwa/out/_next/static/chunks/8488.8da515248cda3f3a.js +1 -0
  105. package/apps/pwa/out/_next/static/chunks/{9221.7d22eaf353a2d4e7.js → 8548.036c344973968847.js} +1 -1
  106. package/apps/pwa/out/_next/static/chunks/8584.388a1779d9b203af.js +1 -0
  107. package/apps/pwa/out/_next/static/chunks/8637.a55e098e61ffefb8.js +1 -0
  108. package/apps/pwa/out/_next/static/chunks/8817.61bb7ffbba502ecb.js +1 -0
  109. package/apps/pwa/out/_next/static/chunks/{9398-6aed28f0a96d0d6f.js → 9131-fce7256c4180c4a5.js} +1 -1
  110. package/apps/pwa/out/_next/static/chunks/9207-8e6a12db30373f32.js +1 -0
  111. package/apps/pwa/out/_next/static/chunks/9263-00ae932c62696a86.js +1 -0
  112. package/apps/pwa/out/_next/static/chunks/9318.caafc3a130e8769c.js +1 -0
  113. package/apps/pwa/out/_next/static/chunks/932.da3fb55951882562.js +93 -0
  114. package/apps/pwa/out/_next/static/chunks/9433.002f8426ac75b6b7.js +1 -0
  115. package/apps/pwa/out/_next/static/chunks/9464.dd631a5a14b1d660.js +24 -0
  116. package/apps/pwa/out/_next/static/chunks/{3278.2e5d15b53a4091c8.js → 9550.d5f76828f972058c.js} +2 -2
  117. package/apps/pwa/out/_next/static/chunks/{2534.e85ae21ad0dac829.js → 9739.8d5f36ac67a3b236.js} +1 -1
  118. package/apps/pwa/out/_next/static/chunks/9743.beeabb9d5f86abe4.js +1 -0
  119. package/apps/pwa/out/_next/static/chunks/9843-a23d3f32dc43f715.js +1 -0
  120. package/apps/pwa/out/_next/static/chunks/994-28211077c7c587d5.js +1 -0
  121. package/apps/pwa/out/_next/static/chunks/{7a1887c4.f36b88fba31da8fd.js → 9a8cb466.cc9fc9e6e46038aa.js} +1 -1
  122. package/apps/pwa/out/_next/static/chunks/{0bb0ff36.b8d418980951e5ba.js → 9b48c871.204d5d13e7809bd0.js} +7 -7
  123. package/apps/pwa/out/_next/static/chunks/{409f1e57.d0649fc47691ebfe.js → abb4b98b.163e0f56e84ae35d.js} +1 -1
  124. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-3b4c947f174e33d8.js +1 -0
  125. package/apps/pwa/out/_next/static/chunks/app/approvals/page-369d5ce99483f859.js +1 -0
  126. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-63c0ed0eb26e5fce.js +1 -0
  127. package/apps/pwa/out/_next/static/chunks/app/board/page-62802c6003bc85cc.js +1 -0
  128. package/apps/pwa/out/_next/static/chunks/app/botlab/page-ecb41560d4e77be9.js +1 -0
  129. package/apps/pwa/out/_next/static/chunks/app/bots/page-7b65ad8130c93e95.js +1 -0
  130. package/apps/pwa/out/_next/static/chunks/app/ceo/page-8755477c15a9060c.js +1 -0
  131. package/apps/pwa/out/_next/static/chunks/app/chat/page-5725447dd972c471.js +1 -0
  132. package/apps/pwa/out/_next/static/chunks/app/consult/page-b979de0591a69375.js +1 -0
  133. package/apps/pwa/out/_next/static/chunks/app/control/page-6d0796bf4633751a.js +1 -0
  134. package/apps/pwa/out/_next/static/chunks/app/decisions/page-59c31dc0394e67b4.js +1 -0
  135. package/apps/pwa/out/_next/static/chunks/app/design-check/page-12dfc95f6cc5c718.js +1 -0
  136. package/apps/pwa/out/_next/static/chunks/app/editor/page-25788244e66aa4dd.js +1 -0
  137. package/apps/pwa/out/_next/static/chunks/app/exec/page-a2555dc705466322.js +1 -0
  138. package/apps/pwa/out/_next/static/chunks/app/field/page-4fb31eb476dcbad3.js +1 -0
  139. package/apps/pwa/out/_next/static/chunks/app/healthz/route-3b4c947f174e33d8.js +1 -0
  140. package/apps/pwa/out/_next/static/chunks/app/inside/page-578729adbeaa40cb.js +1 -0
  141. package/apps/pwa/out/_next/static/chunks/app/intake/page-a1d20fffbec35205.js +1 -0
  142. package/apps/pwa/out/_next/static/chunks/app/layout-4a558f94516b8004.js +1 -0
  143. package/apps/pwa/out/_next/static/chunks/app/live/page-9e3834705b86145e.js +1 -0
  144. package/apps/pwa/out/_next/static/chunks/app/live-run/page-d7bff0f0905a662c.js +1 -0
  145. package/apps/pwa/out/_next/static/chunks/app/loops/page-cb1c5fe746ea4014.js +1 -0
  146. package/apps/pwa/out/_next/static/chunks/app/market/page-9ee320507356582a.js +1 -0
  147. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-66fd183b74835886.js +1 -0
  148. package/apps/pwa/out/_next/static/chunks/app/morning/page-3272a064a01a9927.js +1 -0
  149. package/apps/pwa/out/_next/static/chunks/app/not-found-f281b7a7f6ef2529.js +1 -0
  150. package/apps/pwa/out/_next/static/chunks/app/observatory/page-d45a65f8b7124fcd.js +1 -0
  151. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-e9c1fe684dd19a66.js +1 -0
  152. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-b8322932fc6e34de.js +1 -0
  153. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-82c66d9af2290575.js +1 -0
  154. package/apps/pwa/out/_next/static/chunks/app/outputs/page-63c6752009c97b05.js +1 -0
  155. package/apps/pwa/out/_next/static/chunks/app/page-bb33d42ebc358aec.js +1 -0
  156. package/apps/pwa/out/_next/static/chunks/app/reflection/page-7e4c9379197d7214.js +1 -0
  157. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-38bf1e9a7001732b.js +1 -0
  158. package/apps/pwa/out/_next/static/chunks/app/sessions/page-2e5b752012389d56.js +1 -0
  159. package/apps/pwa/out/_next/static/chunks/app/settings/devices/{page-0a07363b130182a1.js → page-398c0faa173203f7.js} +1 -1
  160. package/apps/pwa/out/_next/static/chunks/app/settings/page-002f53a965b6445c.js +1 -0
  161. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-7f75997f61a26269.js +1 -0
  162. package/apps/pwa/out/_next/static/chunks/app/setup/layout-3b4c947f174e33d8.js +1 -0
  163. package/apps/pwa/out/_next/static/chunks/app/setup/page-05631753294f23fb.js +1 -0
  164. package/apps/pwa/out/_next/static/chunks/app/share/page-edd700fd2cc3d7f8.js +1 -0
  165. package/apps/pwa/out/_next/static/chunks/app/showroom/page-105f83ecb4594365.js +1 -0
  166. package/apps/pwa/out/_next/static/chunks/app/tasks/page-5823e87d2017f19c.js +1 -0
  167. package/apps/pwa/out/_next/static/chunks/app/term/page-df3445b207ceceab.js +1 -0
  168. package/apps/pwa/out/_next/static/chunks/app/today/page-b51ca09566c03de7.js +1 -0
  169. package/apps/pwa/out/_next/static/chunks/app/trace/page-8aacd5ded5dbac60.js +1 -0
  170. package/apps/pwa/out/_next/static/chunks/app/vault/page-bae3365a0b3c6a8e.js +1 -0
  171. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-9ed52b48ff1aa7fd.js +1 -0
  172. package/apps/pwa/out/_next/static/chunks/app/workflows/page-b6f8cad35fe00946.js +1 -0
  173. package/apps/pwa/out/_next/static/chunks/app/workspace/page-6d25ceda500d2457.js +1 -0
  174. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-b6401a5f2c962fe8.js +1 -0
  175. package/apps/pwa/out/_next/static/chunks/ebf6cf5e.0d2f887b040e80fb.js +122 -0
  176. package/apps/pwa/out/_next/static/chunks/f09ec7d7-d29abe23edcbb193.js +1 -0
  177. package/apps/pwa/out/_next/static/chunks/{ebc7d829.264a0bcb6c750b50.js → ffdc3a04.b9c23c1b28dd4a96.js} +1 -1
  178. package/apps/pwa/out/_next/static/chunks/framework-9322cb8a56ac081c.js +1 -0
  179. package/apps/pwa/out/_next/static/chunks/main-2fbab294e49a1561.js +1 -0
  180. package/apps/pwa/out/_next/static/chunks/main-app-f36729f56621a8f3.js +1 -0
  181. package/apps/pwa/out/_next/static/chunks/pages/_app-2a62e450b47c6114.js +1 -0
  182. package/apps/pwa/out/_next/static/chunks/pages/_error-5e17f7b445f34d43.js +1 -0
  183. package/apps/pwa/out/_next/static/chunks/webpack-b4263e2190ea7adf.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 +9 -2
  279. package/docs/goal-context/README.md +1 -0
  280. package/graphs/default-loop.yaml +20 -3
  281. package/graphs/document-loop.yaml +21 -2
  282. package/graphs/implement-loop.yaml +11 -0
  283. package/graphs/journey/SCENARIOS.md +33 -0
  284. package/graphs/journey/recipes.yaml +1 -0
  285. package/graphs/journey/ta-journey.yaml +84 -0
  286. package/graphs/journey/units/author/author.yaml +20 -0
  287. package/graphs/journey/units/author/recipes.yaml +2 -0
  288. package/graphs/journey/units/green/green.yaml +20 -0
  289. package/graphs/journey/units/green/recipes.yaml +2 -0
  290. package/graphs/journey/units/pr/pr.yaml +20 -0
  291. package/graphs/journey/units/pr/recipes.yaml +2 -0
  292. package/graphs/journey/units/remember/recipes.yaml +2 -0
  293. package/graphs/journey/units/remember/remember.yaml +20 -0
  294. package/graphs/operate-loop.yaml +21 -2
  295. package/graphs/overlays/stop-heal-ladder.yaml +1 -1
  296. package/graphs/release-rehearsal/recipes.yaml +1 -1
  297. package/graphs/release-rehearsal/release-rehearsal.yaml +2 -2
  298. package/graphs/research-loop.yaml +23 -2
  299. package/graphs/units/dispatch-pod/dispatch-pod.yaml +50 -0
  300. package/graphs/units/dispatch-pod/recipes.yaml +14 -0
  301. package/graphs/units/entry/entry.yaml +50 -0
  302. package/graphs/units/entry/recipes.yaml +14 -0
  303. package/graphs/units/harvest/harvest.yaml +25 -0
  304. package/graphs/units/harvest/recipes.yaml +4 -0
  305. package/graphs/units/land/land.yaml +45 -0
  306. package/graphs/units/land/recipes.yaml +3 -0
  307. package/graphs/units/recipes.yaml +7 -0
  308. package/graphs/units/recover.yaml +39 -0
  309. package/graphs/units/reflect/recipes.yaml +3 -0
  310. package/graphs/units/reflect/reflect.yaml +15 -0
  311. package/graphs/units/task-agent-recover-review.yaml +17 -0
  312. package/graphs/units/task-agent-recover-wait.yaml +17 -0
  313. package/graphs/units/verbs/make-doc.yaml +34 -0
  314. package/graphs/units/verbs/recipes.yaml +33 -0
  315. package/graphs/units/verbs/verify.yaml +55 -0
  316. package/graphs/work/recipes.yaml +2 -0
  317. package/graphs/work/research-report.yaml +28 -0
  318. package/package.json +1 -1
  319. package/scripts/ci-typecheck-changed.ts +95 -17
  320. package/scripts/docs/generate-graph-anatomy.ts +19 -2
  321. package/scripts/graph-harvest-unit.ts +22 -0
  322. package/scripts/graph-units/journey-stub.ts +6 -0
  323. package/scripts/graph-units/land-enqueue.ts +78 -0
  324. package/scripts/graph-units/recover-plan.ts +15 -0
  325. package/scripts/graph-units/reflect-node.ts +88 -0
  326. package/scripts/graph-units/ta-journey-observe.ts +109 -0
  327. package/scripts/graph-units/verbs/headless-goal-loop.ts +152 -0
  328. package/scripts/graph-units/verbs/verify-stage.ts +75 -0
  329. package/scripts/graph-units/verbs-envelope.ts +139 -0
  330. package/scripts/hq/standby-snapshot.ts +25 -0
  331. package/scripts/measure-si-task-cpu.ts +143 -0
  332. package/scripts/public-export.ts +43 -1
  333. package/scripts/ratchets/test-interference-patterns.allowlist.txt +0 -2
  334. package/scripts/ratchets/train-side-invariants.sh +45 -0
  335. package/scripts/release-loop/auto-approve-node.ts +30 -16
  336. package/scripts/release-loop/gate-closure.ts +5 -1
  337. package/scripts/release-loop/gate-diff.ts +1 -1
  338. package/scripts/release-loop/gate-node.ts +498 -31
  339. package/scripts/release-loop/gate-partial.ts +3 -3
  340. package/scripts/release-loop/gate-radius-shadow.ts +138 -0
  341. package/scripts/release-loop/gate-traffic-mode.ts +128 -0
  342. package/scripts/release-loop/gate-triage-node.ts +5 -2
  343. package/scripts/release-loop/known-issues-0.2.33-approved.json +194 -0
  344. package/scripts/release-loop/known-issues-node.ts +77 -8
  345. package/scripts/release-loop/preflight.ts +93 -7
  346. package/scripts/release-loop/prepare-node.ts +102 -4
  347. package/scripts/release-loop/publish-node.ts +60 -9
  348. package/scripts/release-loop/resume-cap.ts +56 -0
  349. package/scripts/release-loop/resume-release.ts +114 -15
  350. package/scripts/release-loop/resume.ts +24 -1
  351. package/scripts/release-loop/tui-sim-node.ts +8 -2
  352. package/scripts/release-loop/unattended-release.ts +8 -2
  353. package/src/acp/core-turn-bridge.ts +36 -9
  354. package/src/acp/elanous-extensions.ts +3 -0
  355. package/src/acp/reasoning-thought-buffer.ts +45 -0
  356. package/src/acp/server.ts +3 -0
  357. package/src/acp/tool-trace.ts +186 -11
  358. package/src/agent/self-ambient-cache.ts +156 -0
  359. package/src/agent/self-ambient.ts +8 -1
  360. package/src/agent/task-notification.ts +5 -0
  361. package/src/agent-substrate/acp-reviewer.ts +52 -12
  362. package/src/agent-substrate/pr-reviewer.ts +3 -1
  363. package/src/agent-substrate/review-finding-key.ts +53 -0
  364. package/src/agent-substrate/self-review-cli.ts +126 -5
  365. package/src/ask-user-question/pending-questions.ts +1 -1
  366. package/src/ask-user-question/tool.ts +22 -0
  367. package/src/autopilot/build/llm-conflict-merge.ts +56 -10
  368. package/src/autopilot/pr-manager.ts +213 -46
  369. package/src/capture/frame-state-detect.ts +39 -0
  370. package/src/capture/tui-self-report.ts +134 -6
  371. package/src/chat/index.ts +61 -15
  372. package/src/chat/pickers/modal-runtime.ts +6 -0
  373. package/src/chat/pickers/modals.ts +8 -2
  374. package/src/chat/tool-render/dispatch.ts +62 -10
  375. package/src/cli/ask-bare.ts +1 -0
  376. package/src/cli/control-cli.ts +24 -7
  377. package/src/cli/guardian-cli.ts +10 -0
  378. package/src/cli/import-cli.ts +12 -0
  379. package/src/cli/light-entry-route.ts +35 -0
  380. package/src/cli/llm-detect-cli.ts +23 -1
  381. package/src/cli/log-event-names.ts +10 -0
  382. package/src/cli/msg-cli.ts +1 -0
  383. package/src/cli/pod-cli.ts +14 -3
  384. package/src/cli/pr-cli.ts +140 -41
  385. package/src/cli/pr-land-base-read.ts +36 -0
  386. package/src/cli/pr-land-heavy-remote.ts +81 -25
  387. package/src/cli/pr-land-overlap-evidence.ts +200 -18
  388. package/src/cli/pr-land-pod-shadow-job.ts +26 -3
  389. package/src/cli/pr-land-recovery.ts +64 -0
  390. package/src/cli/pr-land-refusal.ts +20 -5
  391. package/src/cli/pty-takeover-cli.ts +94 -19
  392. package/src/cli/release-cli.ts +120 -33
  393. package/src/cli/release-run-if-ready.ts +29 -28
  394. package/src/cli/release-single-flight.ts +178 -0
  395. package/src/cli/seat-cli.ts +37 -0
  396. package/src/cli/setup-cli.ts +40 -1
  397. package/src/cli/sim-cli.ts +18 -0
  398. package/src/cli/tasks-cli.ts +149 -5
  399. package/src/context-bus/ops-events.ts +6 -2
  400. package/src/control/control-status.ts +8 -3
  401. package/src/control-plane/ledger.ts +5 -3
  402. package/src/control-plane/server.ts +5 -3
  403. package/src/core-turn/run-core-turn.ts +1 -0
  404. package/src/core-turn/run-goal-loop.ts +21 -0
  405. package/src/core-turn/short-question.ts +5 -1
  406. package/src/core-turn/types.ts +3 -0
  407. package/src/dashboard/acp-active-model.ts +42 -1
  408. package/src/dashboard/background-jobs-status.ts +66 -0
  409. package/src/dashboard/index.ts +153 -111
  410. package/src/dashboard/input/agent-wake.ts +242 -0
  411. package/src/dashboard/input/chat-main-entry-runtime.ts +5 -0
  412. package/src/dashboard/input/chat-main-plain-turn-runtime.ts +3 -0
  413. package/src/dashboard/input/dashboard-plain-turn-stream.ts +4 -0
  414. package/src/dashboard/input/external-input-host.ts +23 -9
  415. package/src/dashboard/input/mouse-wiring.ts +108 -11
  416. package/src/dashboard/input/seat-autowake.ts +56 -3
  417. package/src/dashboard/log-click-runtime.ts +118 -2
  418. package/src/dashboard/seat-boot-preamble.ts +1 -1
  419. package/src/dashboard/slash-runtime/ask-clarification.ts +48 -0
  420. package/src/dashboard/slash-runtime/dashboard-delegated-slashes.ts +68 -0
  421. package/src/dashboard/slash-runtime/dashboard-handlers.ts +62 -322
  422. package/src/dashboard/slash-runtime/dashboard-log-slash.ts +208 -0
  423. package/src/dashboard/turn-preamble.ts +163 -41
  424. package/src/dashboard/turn-session-layers.ts +4 -2
  425. package/src/dashboard/turn-start-segments.ts +222 -0
  426. package/src/dashboard/turn-stream-formatter.ts +34 -1
  427. package/src/dashboard/turn-stream-runtime.ts +2 -0
  428. package/src/dashboard/turn-typeahead-prompt-zone.ts +67 -0
  429. package/src/display/prompt-row-owner.ts +146 -0
  430. package/src/display/resize-listener.ts +33 -2
  431. package/src/domains/guardian-tick.ts +54 -2
  432. package/src/domains/outbound-alert.ts +3 -2
  433. package/src/extractors.ts +3 -1
  434. package/src/fold-stack.ts +4 -2
  435. package/src/git-fs/index.ts +263 -36
  436. package/src/git-fs/retry.ts +4 -0
  437. package/src/git-fs/runner.ts +2 -0
  438. package/src/graph-runner/runner.ts +114 -44
  439. package/src/grok/credential.ts +5 -0
  440. package/src/harness/gate-reserve.ts +87 -0
  441. package/src/harness/harness-cli-command.ts +39 -10
  442. package/src/harness/harness-incidents.ts +17 -0
  443. package/src/harness/harness-pod-dispatch.ts +38 -1
  444. package/src/harness/harness-queue.ts +15 -0
  445. package/src/harness/harness-salvage-cli.ts +14 -2
  446. package/src/index.ts +198 -12
  447. package/src/input/external-input-queue.ts +34 -9
  448. package/src/intake-plane/already-built-hint.ts +89 -0
  449. package/src/knowhow/pack.ts +199 -0
  450. package/src/light-cli.ts +95 -0
  451. package/src/llm/route-decision.ts +36 -0
  452. package/src/llm/tool-loop-steered-rejection.ts +8 -0
  453. package/src/llm-request-shape.ts +209 -0
  454. package/src/llm.ts +221 -276
  455. package/src/loops/budget.ts +95 -0
  456. package/src/loops/msg-wake.ts +8 -2
  457. package/src/loops/orchestrator/tick.ts +24 -2
  458. package/src/loops/orchestrator/traffic.ts +132 -1
  459. package/src/maturity/feature-maturity.ts +1 -1
  460. package/src/mss/logging/log-store.ts +4 -5
  461. package/src/mss/logging/render-categories.ts +5 -0
  462. package/src/nexus/api/graphs-api.ts +22 -3
  463. package/src/nexus/api/http-server.ts +1 -1
  464. package/src/nexus/api/ops-api.ts +12 -0
  465. package/src/oauth/claude-pty-maturity.ts +66 -0
  466. package/src/oauth/codex-access-mirror.ts +55 -0
  467. package/src/oauth/fallback-chain.ts +1 -1
  468. package/src/onboarding/first-run.ts +5 -3
  469. package/src/onboarding/non-interactive.ts +64 -13
  470. package/src/onboarding.ts +10 -2
  471. package/src/ops/overview-collect.ts +36 -1
  472. package/src/ops/overview.ts +70 -2
  473. package/src/pr-tool/census.ts +41 -8
  474. package/src/pr-tool/inflight-registry.ts +296 -0
  475. package/src/prompt-library/gpt6-family-addendum.ts +14 -1
  476. package/src/pty-shell/herdr-agent-report.ts +442 -0
  477. package/src/pty-shell/pty-control-ipc.ts +5 -5
  478. package/src/pty-shell/pty-manifest.ts +12 -3
  479. package/src/pty-shell/pty-write-outcome.ts +24 -6
  480. package/src/pty-shell/tui-run-state.ts +151 -6
  481. package/src/release-loop/checklist.ts +79 -5
  482. package/src/release-loop/feature-store.ts +19 -2
  483. package/src/release-loop/placement.ts +10 -3
  484. package/src/release-loop/rehearsal.ts +205 -25
  485. package/src/release-loop/rubric.ts +16 -2
  486. package/src/seat-loop/traffic-signal.ts +2 -1
  487. package/src/self-dev/ask-launch-flow.ts +13 -0
  488. package/src/self-dev/draft-residue.ts +243 -24
  489. package/src/self-dev/draft-sweep.ts +52 -3
  490. package/src/self-dev/graph-journey-nodes.ts +10 -6
  491. package/src/self-dev/graph-journey-route.ts +60 -6
  492. package/src/self-dev/orchestrate.ts +79 -3
  493. package/src/self-dev/run-supervisor.ts +107 -12
  494. package/src/self-dev/run-types.ts +5 -1
  495. package/src/self-dev/shard-plan.ts +11 -3
  496. package/src/self-dev/shard-run.ts +103 -10
  497. package/src/self-implement/elanous-tui-spawn.ts +14 -0
  498. package/src/self-implement/follow-up-placement.ts +79 -0
  499. package/src/self-implement/gate-artifacts.ts +15 -4
  500. package/src/self-implement/gate-baseline.ts +145 -10
  501. package/src/self-implement/gate-cli.ts +7 -2
  502. package/src/self-implement/gate-remote.ts +35 -6
  503. package/src/self-implement/goal-author-identity.ts +66 -0
  504. package/src/self-implement/goal-author-preservation-obligation.ts +35 -0
  505. package/src/self-implement/goal-author.ts +4 -120
  506. package/src/self-implement/graph-overlay-yaml.ts +17 -2
  507. package/src/self-implement/graph-unit-flatten.ts +103 -0
  508. package/src/self-implement/graph-unit-resolver.ts +107 -0
  509. package/src/self-implement/graph-yaml.ts +151 -1
  510. package/src/self-implement/headless-elanous-driver.ts +1 -0
  511. package/src/self-implement/host-regate.ts +36 -4
  512. package/src/self-implement/knowhow-pack.ts +103 -0
  513. package/src/self-implement/orchestrator.ts +109 -11
  514. package/src/self-implement/pod-warm-pool-profile.ts +45 -0
  515. package/src/self-implement/review-mustfix-class.ts +203 -0
  516. package/src/self-implement/run-ledger.ts +16 -14
  517. package/src/self-implement/run-stop.ts +8 -2
  518. package/src/self-implement/seams.ts +32 -1
  519. package/src/self-implement/stop-autoheal.ts +25 -1
  520. package/src/session/chat.ts +27 -0
  521. package/src/session-runtime/index.ts +22 -267
  522. package/src/session-runtime/retry-policy.ts +2 -1
  523. package/src/shell-runner/background-surface.ts +15 -5
  524. package/src/skills/tools/agent.ts +39 -6
  525. package/src/skills/tools/list-dir.ts +11 -0
  526. package/src/skills/tools/schedule-wakeup.ts +457 -0
  527. package/src/skills/tools/shell.ts +245 -3
  528. package/src/status/bar.ts +26 -0
  529. package/src/steward/digest-delivery.ts +118 -0
  530. package/src/steward/hold-hygiene.ts +120 -0
  531. package/src/steward/release-day.ts +7 -3
  532. package/src/steward/triage.ts +47 -4
  533. package/src/surface/shell-runner-boot.ts +5 -2
  534. package/src/task-agent/harvest-unit.ts +141 -0
  535. package/src/task-agent/live-moves.ts +98 -12
  536. package/src/task-agent/parent-host.ts +93 -3
  537. package/src/task-agent/postland-card.ts +80 -1
  538. package/src/task-agent/rejudge-on-head.ts +112 -26
  539. package/src/task-agent/repair-branch-cas.ts +4 -1
  540. package/src/task-agent/repair-cycle.ts +16 -3
  541. package/src/task-agent/run-identity.ts +4 -3
  542. package/src/task-agent/shadow.ts +12 -2
  543. package/src/task-agent/task-hand.ts +76 -5
  544. package/src/task-agent/work-order-build.ts +22 -0
  545. package/src/task-orchestrator/surfaces/pod-account-broker.ts +39 -3
  546. package/src/task-orchestrator/surfaces/pod-command-job.ts +67 -12
  547. package/src/task-orchestrator/surfaces/pod-lease.ts +98 -0
  548. package/src/task-orchestrator/surfaces/pod-ledger-events.ts +1 -1
  549. package/src/task-orchestrator/surfaces/pod-lifecycle-stages.ts +86 -8
  550. package/src/task-orchestrator/surfaces/pod-pool.ts +76 -18
  551. package/src/task-orchestrator/surfaces/pod-reuse-cleanup.ts +10 -6
  552. package/src/task-orchestrator/surfaces/pod-source-receive.ts +54 -4
  553. package/src/task-orchestrator/surfaces/pod-warm-worker-pod.ts +548 -0
  554. package/src/task-orchestrator/surfaces/pod-warm-worker-provider.ts +389 -0
  555. package/src/task-orchestrator/surfaces/pod-warm-worker-runner.ts +90 -0
  556. package/src/task-orchestrator/surfaces/pod-warm-worker-runtime.ts +158 -3
  557. package/src/task-orchestrator/surfaces/self-implement-pod.ts +230 -43
  558. package/src/task-orchestrator/surfaces/self-implement.ts +83 -2
  559. package/src/tool-runtime/truncation-store.ts +4 -0
  560. package/src/tui/chat/execution-badge.ts +5 -1
  561. package/src/tui/input-lag-probe.ts +230 -0
  562. package/src/tui-client/dashboard-session.ts +10 -1
  563. package/src/tui.ts +4 -0
  564. package/src/user-config/coercion.ts +36 -0
  565. package/src/user-config.ts +18 -41
  566. package/src/ux-sim/scenario.ts +314 -0
  567. package/src/version/packed-revision.json +1 -1
  568. package/apps/pwa/out/_next/static/chunks/1034-8b639cee57b8e4a8.js +0 -1
  569. package/apps/pwa/out/_next/static/chunks/1085-6c2d35526f11f840.js +0 -1
  570. package/apps/pwa/out/_next/static/chunks/1220.1ff7d5cdc34b1ae5.js +0 -27
  571. package/apps/pwa/out/_next/static/chunks/1247.5884ec81b39fe2e7.js +0 -287
  572. package/apps/pwa/out/_next/static/chunks/1302.87681521a7a4661e.js +0 -62
  573. package/apps/pwa/out/_next/static/chunks/1324-59dae3002413623b.js +0 -1
  574. package/apps/pwa/out/_next/static/chunks/1343-f40b5870ac1eda5a.js +0 -1
  575. package/apps/pwa/out/_next/static/chunks/146-b6cd56be11dda017.js +0 -1
  576. package/apps/pwa/out/_next/static/chunks/1654.32de4b324981a188.js +0 -23
  577. package/apps/pwa/out/_next/static/chunks/1834-50625904996a8fa8.js +0 -1
  578. package/apps/pwa/out/_next/static/chunks/1849.1ce38efa6c527d9a.js +0 -149
  579. package/apps/pwa/out/_next/static/chunks/1913.7cc6fb6055b1ed3f.js +0 -41
  580. package/apps/pwa/out/_next/static/chunks/2001.6c7e0fd02190886c.js +0 -1
  581. package/apps/pwa/out/_next/static/chunks/2030.41fae98c7e907304.js +0 -1
  582. package/apps/pwa/out/_next/static/chunks/2099-08b2f2dfba742c9b.js +0 -1
  583. package/apps/pwa/out/_next/static/chunks/2134.ecee03a550ee7250.js +0 -1
  584. package/apps/pwa/out/_next/static/chunks/2236.66061832181cb745.js +0 -1
  585. package/apps/pwa/out/_next/static/chunks/2422.b0bd272e7020d7e6.js +0 -1
  586. package/apps/pwa/out/_next/static/chunks/3040.92ff9ffc9f971cb9.js +0 -115
  587. package/apps/pwa/out/_next/static/chunks/3144.6861096c7b4edef7.js +0 -64
  588. package/apps/pwa/out/_next/static/chunks/3267c0e6.d34854e7b3984a6e.js +0 -1
  589. package/apps/pwa/out/_next/static/chunks/3771.e928edf2867d28c0.js +0 -1
  590. package/apps/pwa/out/_next/static/chunks/3902.e1e71aaac850a045.js +0 -34
  591. package/apps/pwa/out/_next/static/chunks/4063-03284b5de59965f3.js +0 -1
  592. package/apps/pwa/out/_next/static/chunks/4111.2bfedbb233ad206b.js +0 -1
  593. package/apps/pwa/out/_next/static/chunks/4300-c7ec4eeabbb5f3f7.js +0 -1
  594. package/apps/pwa/out/_next/static/chunks/4483.646d5065199e1b55.js +0 -36
  595. package/apps/pwa/out/_next/static/chunks/4519.28199ff26b2fd80d.js +0 -1
  596. package/apps/pwa/out/_next/static/chunks/4581.ef2443578054544f.js +0 -1
  597. package/apps/pwa/out/_next/static/chunks/4608-8d894e9cbe4f08bf.js +0 -1
  598. package/apps/pwa/out/_next/static/chunks/4639.ae48a01d1bb50a93.js +0 -286
  599. package/apps/pwa/out/_next/static/chunks/4739.08742ac668aada67.js +0 -77
  600. package/apps/pwa/out/_next/static/chunks/4882-16cef71d6a1a32be.js +0 -1
  601. package/apps/pwa/out/_next/static/chunks/4999.c064a4000c2a9e94.js +0 -79
  602. package/apps/pwa/out/_next/static/chunks/5260-69f35419bca263e7.js +0 -1
  603. package/apps/pwa/out/_next/static/chunks/5272.b92d1b72a15c25fe.js +0 -1
  604. package/apps/pwa/out/_next/static/chunks/5304.04d24756f242a094.js +0 -148
  605. package/apps/pwa/out/_next/static/chunks/5415-997980f828667736.js +0 -1
  606. package/apps/pwa/out/_next/static/chunks/5458-16cd7a2b51b74c8c.js +0 -1
  607. package/apps/pwa/out/_next/static/chunks/5572-42c9084f27ca761e.js +0 -1
  608. package/apps/pwa/out/_next/static/chunks/5661-80470aac963d9f36.js +0 -1
  609. package/apps/pwa/out/_next/static/chunks/5723.421338408b5c30c4.js +0 -74
  610. package/apps/pwa/out/_next/static/chunks/5809.64c3664267c50bce.js +0 -1
  611. package/apps/pwa/out/_next/static/chunks/6000.64bc21ac8627f2f5.js +0 -94
  612. package/apps/pwa/out/_next/static/chunks/6013.39459b9c68eabf5f.js +0 -1
  613. package/apps/pwa/out/_next/static/chunks/607-06466dff012b03ef.js +0 -1
  614. package/apps/pwa/out/_next/static/chunks/60fb96c9.360b01d8d4927b7b.js +0 -1
  615. package/apps/pwa/out/_next/static/chunks/6192.a190b989b81e9743.js +0 -1
  616. package/apps/pwa/out/_next/static/chunks/6323.8672b4817a306928.js +0 -1
  617. package/apps/pwa/out/_next/static/chunks/6444.7d1fdcb9b09ae71c.js +0 -1
  618. package/apps/pwa/out/_next/static/chunks/6517.4147878ac06d584d.js +0 -90
  619. package/apps/pwa/out/_next/static/chunks/6532.e34302010b2f0b68.js +0 -32
  620. package/apps/pwa/out/_next/static/chunks/6544cb48.a87fe20ddf137be2.js +0 -1
  621. package/apps/pwa/out/_next/static/chunks/6546.74bc4ed82f19016d.js +0 -104
  622. package/apps/pwa/out/_next/static/chunks/6684-e7523ce7c2fad075.js +0 -1
  623. package/apps/pwa/out/_next/static/chunks/6726.ebdc82feb161431e.js +0 -1
  624. package/apps/pwa/out/_next/static/chunks/6739.00fb6f892e5e392b.js +0 -1
  625. package/apps/pwa/out/_next/static/chunks/6745.934c4921bf15513a.js +0 -1
  626. package/apps/pwa/out/_next/static/chunks/6767.ea607cf0c20a25af.js +0 -24
  627. package/apps/pwa/out/_next/static/chunks/6843.67bfd020da0926c5.js +0 -93
  628. package/apps/pwa/out/_next/static/chunks/6948.1062d4594652b5bf.js +0 -1
  629. package/apps/pwa/out/_next/static/chunks/7138-eaf841fc1dc03463.js +0 -1
  630. package/apps/pwa/out/_next/static/chunks/7174-cda29ee13d7790e7.js +0 -1
  631. package/apps/pwa/out/_next/static/chunks/7304-3c07583f4e405f4f.js +0 -1
  632. package/apps/pwa/out/_next/static/chunks/7371.80c05c653b08e907.js +0 -1
  633. package/apps/pwa/out/_next/static/chunks/7391.ebae168025c91b6a.js +0 -1
  634. package/apps/pwa/out/_next/static/chunks/7557.e325503a090a4310.js +0 -8
  635. package/apps/pwa/out/_next/static/chunks/7569-9ce9432c7f10989f.js +0 -1
  636. package/apps/pwa/out/_next/static/chunks/7886-55854585fadeded1.js +0 -1
  637. package/apps/pwa/out/_next/static/chunks/7947-d0759430f8042240.js +0 -1
  638. package/apps/pwa/out/_next/static/chunks/8018.a32663f04a6fc5f9.js +0 -1
  639. package/apps/pwa/out/_next/static/chunks/8097-92f87bd108322f66.js +0 -1
  640. package/apps/pwa/out/_next/static/chunks/8215-1661812b6e9ad71f.js +0 -1
  641. package/apps/pwa/out/_next/static/chunks/8260-19c921a51ca8ec3e.js +0 -1
  642. package/apps/pwa/out/_next/static/chunks/8440.3a5cf5c85aa76db8.js +0 -1
  643. package/apps/pwa/out/_next/static/chunks/8519-4599be2249161e68.js +0 -1
  644. package/apps/pwa/out/_next/static/chunks/8547.b028b90c5c01ace6.js +0 -1
  645. package/apps/pwa/out/_next/static/chunks/8587-cbe02a953a7f4990.js +0 -1
  646. package/apps/pwa/out/_next/static/chunks/877-2b977259c4b15655.js +0 -1
  647. package/apps/pwa/out/_next/static/chunks/9019-0a4b40c50c7314fb.js +0 -1
  648. package/apps/pwa/out/_next/static/chunks/9138.b6e80031afb1d973.js +0 -1
  649. package/apps/pwa/out/_next/static/chunks/9188-d36e4fc869ddc166.js +0 -1
  650. package/apps/pwa/out/_next/static/chunks/9230.44f5039e796e4ab4.js +0 -1
  651. package/apps/pwa/out/_next/static/chunks/9279-d28c5b7754d010ae.js +0 -1
  652. package/apps/pwa/out/_next/static/chunks/939.336acce73e98482c.js +0 -1
  653. package/apps/pwa/out/_next/static/chunks/9610.c07cce4bfcc14ed7.js +0 -1
  654. package/apps/pwa/out/_next/static/chunks/9667-ce78c2ce91050ff9.js +0 -1
  655. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-339fabb3499da0e1.js +0 -1
  656. package/apps/pwa/out/_next/static/chunks/app/approvals/page-bf3634a117322df7.js +0 -1
  657. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-3535a4a69f1fafaa.js +0 -1
  658. package/apps/pwa/out/_next/static/chunks/app/board/page-b9f51447f757fbf2.js +0 -1
  659. package/apps/pwa/out/_next/static/chunks/app/botlab/page-2ebb8fd59b9461f9.js +0 -1
  660. package/apps/pwa/out/_next/static/chunks/app/bots/page-a2fc4e49a4fa4ba8.js +0 -1
  661. package/apps/pwa/out/_next/static/chunks/app/ceo/page-5a503541353e60a8.js +0 -1
  662. package/apps/pwa/out/_next/static/chunks/app/chat/page-6025101384e361a5.js +0 -1
  663. package/apps/pwa/out/_next/static/chunks/app/consult/page-f4b630cc8b5273cd.js +0 -1
  664. package/apps/pwa/out/_next/static/chunks/app/control/page-a645f00a06483e9a.js +0 -1
  665. package/apps/pwa/out/_next/static/chunks/app/decisions/page-61ac22cbab1ee4ec.js +0 -1
  666. package/apps/pwa/out/_next/static/chunks/app/design-check/page-e9bab7413b028b28.js +0 -1
  667. package/apps/pwa/out/_next/static/chunks/app/editor/page-c992eafe028b642e.js +0 -1
  668. package/apps/pwa/out/_next/static/chunks/app/exec/page-e547e6ce55f1fb33.js +0 -1
  669. package/apps/pwa/out/_next/static/chunks/app/field/page-d27e1b9850fd54bf.js +0 -1
  670. package/apps/pwa/out/_next/static/chunks/app/healthz/route-339fabb3499da0e1.js +0 -1
  671. package/apps/pwa/out/_next/static/chunks/app/inside/page-805ac2e137b7a121.js +0 -1
  672. package/apps/pwa/out/_next/static/chunks/app/intake/page-0fec29c7ba01894b.js +0 -1
  673. package/apps/pwa/out/_next/static/chunks/app/layout-339a07410cd6f36b.js +0 -1
  674. package/apps/pwa/out/_next/static/chunks/app/live/page-349f2752d8cd37ad.js +0 -1
  675. package/apps/pwa/out/_next/static/chunks/app/live-run/page-d5c6dcf31c25cecc.js +0 -1
  676. package/apps/pwa/out/_next/static/chunks/app/loops/page-2fd93ed8c9f16580.js +0 -1
  677. package/apps/pwa/out/_next/static/chunks/app/market/page-9b564dbff0fefc35.js +0 -1
  678. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-62f4475d3c38fb9b.js +0 -1
  679. package/apps/pwa/out/_next/static/chunks/app/morning/page-814ba51385225776.js +0 -1
  680. package/apps/pwa/out/_next/static/chunks/app/not-found-397d479626e5a459.js +0 -1
  681. package/apps/pwa/out/_next/static/chunks/app/observatory/page-af1bba4e3251b728.js +0 -1
  682. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-3ad3be5e7d3fdce9.js +0 -1
  683. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-f219ccdbc0bf27df.js +0 -1
  684. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-4da93ad35d4a8d28.js +0 -1
  685. package/apps/pwa/out/_next/static/chunks/app/outputs/page-456666766e5ce6fc.js +0 -1
  686. package/apps/pwa/out/_next/static/chunks/app/page-7404e377e8adb8c5.js +0 -1
  687. package/apps/pwa/out/_next/static/chunks/app/reflection/page-14456240ed2a36ad.js +0 -1
  688. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-3a658d5fa6d16a25.js +0 -1
  689. package/apps/pwa/out/_next/static/chunks/app/sessions/page-0157de6e85f8bb6b.js +0 -1
  690. package/apps/pwa/out/_next/static/chunks/app/settings/page-841d73d4ac44ed49.js +0 -1
  691. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-6f43a3d1146e6377.js +0 -1
  692. package/apps/pwa/out/_next/static/chunks/app/setup/layout-339fabb3499da0e1.js +0 -1
  693. package/apps/pwa/out/_next/static/chunks/app/setup/page-521ee23ac8c0abfa.js +0 -1
  694. package/apps/pwa/out/_next/static/chunks/app/share/page-a9992ee285efaa83.js +0 -1
  695. package/apps/pwa/out/_next/static/chunks/app/showroom/page-3d48e85fa89ec04f.js +0 -1
  696. package/apps/pwa/out/_next/static/chunks/app/tasks/page-d2ced71132fac9b2.js +0 -1
  697. package/apps/pwa/out/_next/static/chunks/app/term/page-f08358bdf251adb9.js +0 -1
  698. package/apps/pwa/out/_next/static/chunks/app/today/page-233c71cd5f68f0d7.js +0 -1
  699. package/apps/pwa/out/_next/static/chunks/app/trace/page-70151d78de2f375e.js +0 -1
  700. package/apps/pwa/out/_next/static/chunks/app/vault/page-dcac33a3e2cb72c0.js +0 -1
  701. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-149dc1caba411bb9.js +0 -1
  702. package/apps/pwa/out/_next/static/chunks/app/workflows/page-0448145ccd5c45c1.js +0 -1
  703. package/apps/pwa/out/_next/static/chunks/app/workspace/page-9cb0c444903da65d.js +0 -1
  704. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-17e504c396e0e389.js +0 -1
  705. package/apps/pwa/out/_next/static/chunks/e5012ffe.f727e23c231f4342.js +0 -122
  706. package/apps/pwa/out/_next/static/chunks/ea695e3c-1f1d70d740cf3031.js +0 -1
  707. package/apps/pwa/out/_next/static/chunks/framework-906af9bd029e166c.js +0 -1
  708. package/apps/pwa/out/_next/static/chunks/main-a24847f9f684d469.js +0 -1
  709. package/apps/pwa/out/_next/static/chunks/main-app-7bdcd8aa7c8397d3.js +0 -1
  710. package/apps/pwa/out/_next/static/chunks/pages/_app-6ba46a5066fc226d.js +0 -1
  711. package/apps/pwa/out/_next/static/chunks/pages/_error-a8dc6d07591f2a25.js +0 -1
  712. package/apps/pwa/out/_next/static/chunks/webpack-f13df28c15c55eee.js +0 -1
  713. package/apps/pwa/out/_next/static/css/3f5fc6f96e2cf7b2.css +0 -1
  714. package/src/cli/g6a-registration-probe.ts +0 -16
  715. /package/apps/pwa/out/_next/static/{LSXfY0u9QtfDbejY0Ukf_ → L04y73dlwKeTW-GetaTF3}/_ssgManifest.js +0 -0
@@ -176,6 +176,7 @@ import {
176
176
  } from '../chat/turn-typeahead.js';
177
177
  import { dispatchStreamingTurnTypeaheadSubmission } from './input/streaming-turn-typeahead.js';
178
178
  import { composeVertical, type LayoutZone } from '../layout/composer.js';
179
+ import { createPromptBandRenderObserver, createPromptRowOwner, renderPromptOwnerHintRow, withPromptRowOwner } from '../display/prompt-row-owner.js';
179
180
  import type { CoreTurnDispatchTool } from '../core-turn/index.js';
180
181
  // streamGrok kept as back-compat shim in chat.ts — not imported here
181
182
  // directly anymore. Dashboard runs every turn through the in-process
@@ -201,6 +202,7 @@ import { startThinking, startPinnedThinking, type ThinkingHandle } from '../thin
201
202
  import { goalLoopIterationThinking } from './goal-loop-thinking.js';
202
203
  import { debug, getAmbientSessionId } from '../debug/log.js';
203
204
  import { startEventLoopStallMonitor, thinkingVerbFromFooter } from './event-loop-stall-monitor.js';
205
+ import { createInputLagProbe, noteInputLagPaint, setInputLagProbe } from '../tui/input-lag-probe.js';
204
206
  import { getPushcutClient } from '../pushcut/client.js';
205
207
  // P2-3 + P4 + P5 — input-core wiring. Aliased on import to dodge the
206
208
  // many existing `resolveInputEvent`-ish names elsewhere in this file.
@@ -304,13 +306,20 @@ import {
304
306
  } from './render/renderer.js';
305
307
  import { buildPromptFrameDividerRows } from '../display/prompt-frame-paint.js';
306
308
  import {
307
- drawTurnTypeaheadPromptRows,
308
309
  paintTurnTypeaheadEchoRow,
309
310
  resolveEssentialFrameCursorDecision,
310
311
  type EssentialFrameCursorDecision,
311
- type TurnTypeaheadPromptPaintSink,
312
- type TurnTypeaheadPromptRowsInput,
313
312
  } from './input/turn-typeahead-prompt.js';
313
+ import {
314
+ buildDashboardTurnTypeaheadPromptZone,
315
+ drawDashboardTurnTypeaheadPromptRows,
316
+ observeDashboardTurnTypeaheadPromptZone,
317
+ } from './turn-typeahead-prompt-zone.js';
318
+ export {
319
+ buildDashboardTurnTypeaheadPromptZone,
320
+ drawDashboardTurnTypeaheadPromptRows,
321
+ observeDashboardTurnTypeaheadPromptZone,
322
+ } from './turn-typeahead-prompt-zone.js';
314
323
  import { DashboardStateStore } from './runtime/state-store.js';
315
324
  import { perf } from '../perf-counters.js';
316
325
  import { createSearchModal, type SearchModalHandle, type SearchItem } from '../chat/search/modal.js';
@@ -434,6 +443,7 @@ import { collectSignals, signalsSummary } from '../tool-hints/signals.js';
434
443
  import { resetProbes } from '../tool-hints/probe.js';
435
444
  import type { HintScope } from '../tool-hints/types.js';
436
445
  import { globalAgentRegistry, type AgentToolCallEvent } from '../agent/registry.js';
446
+ import { createBackgroundJobsStatus } from './background-jobs-status.js';
437
447
  import { SELF_IMPLEMENT_TOOL_NAMES } from '../boot/daemon-tools/self-implement-names.js';
438
448
  import { type FoldMode } from '../log-entry.js';
439
449
  import { renderToolCallEvent, renderToolResultVariants } from '../chat/tool-render/index.js';
@@ -631,7 +641,7 @@ import {
631
641
  } from '../user-config.js';
632
642
  import { streamLLM, anyProviderAvailable, getProviderForConfig, nextReasoningLevel, reasoningLevelLabel, effectiveReasoningLevel, modelSupportsReasoning, type LLMMessage, type LLMToolSpec } from '../llm.js';
633
643
  import { currentRouteDecision, formatRouteDecisionSummary } from '../llm/route-decision.js';
634
- import { resolveDashboardActiveModel } from './acp-active-model.js';
644
+ import { recordDashboardTurnExecution, resolveDashboardActiveModel } from './acp-active-model.js';
635
645
  import { getModelFamily, getModelTier } from '../models/prompts.js';
636
646
  import { buildPromptInjection, getPromptBankStore } from '../prompt-bank/index.js';
637
647
  import { getInputHistoryStore } from '../input-history.js';
@@ -665,7 +675,7 @@ import { registerDashboardPaneArtifactRuntimes } from './pane-artifact-runtime-r
665
675
  import { handleDashboardAttachmentPopupAction } from './attachment-popup-actions.js';
666
676
  import { renderDashboardAttachmentSummary } from './attachment-summary.js';
667
677
  import { openDashboardFolderAttachModal } from './folder-attach-modal-runtime.js';
668
- import { createDashboardLogClickDeps } from './log-click-runtime.js';
678
+ import { createDashboardLogClickDeps, createFoldClickScrollAnchor } from './log-click-runtime.js';
669
679
  import { runDashboardSidebarSessionJoin } from './sidebar-session-join-runtime.js';
670
680
  import {
671
681
  runDashboardAutoRouteCountdown,
@@ -877,7 +887,9 @@ import {
877
887
  getGitStatusView,
878
888
  subscribeGitChanges,
879
889
  refreshDirtyAsync as refreshGitDirtyAsync,
890
+ refreshGitSnapshotAsync,
880
891
  } from '../git-fs/index.js';
892
+ import { refreshSelfAmbientCache } from '../agent/self-ambient-cache.js';
881
893
  import { getPty, listPty, requestPtyTakeover } from '../pty-shell/registry.js';
882
894
  import { listPtyManifestRowsAt } from '../pty-shell/pty-manifest.js';
883
895
  import { ptyManifestTargets } from '../domains/fleet.js';
@@ -1027,6 +1039,7 @@ import { consumeTurnEndInterrupted, handoffTurnTypeaheadAtTurnEnd, releaseTurnTy
1027
1039
  import { abortTurnOnly } from '../turn-abort-scope.js';
1028
1040
  import { consumeInternalTurnYield, createInternalTurnGate, formatInternalTurnBanner, resolveInternalTurnSubmitIntent, type InternalTurnRequest } from './input/internal-turn.js';
1029
1041
  import { createSeatAutowake } from './input/seat-autowake.js';
1042
+ import { createDashboardWakeupScheduler, registerScheduleWakeupHostTool } from '../skills/tools/schedule-wakeup.js';
1030
1043
  import { createAttachmentRowMap } from '../log-pane/attachment-row-map.js';
1031
1044
  import { createAttachmentPopup, type AttachmentPopupAction } from '../log-pane/attachment-popup.js';
1032
1045
  import { findLogMatches, findVisibleLogMatches, type LogSearchResult } from '../log-pane/search.js';
@@ -1147,6 +1160,8 @@ import { agentBatchScratchTitle, renderAgentBatchScratch } from '../display/agen
1147
1160
  import { type ExecutionSurfaceHandle } from '../display/index.js';
1148
1161
  import { AgentSurfaceStore, renderAgentDetail, renderAgentRoster, type AgentSurfaceState } from '../display/agent-surface.js';
1149
1162
  import { globalAgentFlash } from '../display/agent-flash.js';
1163
+ import { globalTaskNotificationQueue } from '../agent/task-notification.js';
1164
+ import { createDashboardAgentWakeNotify, installAgentWake, wrapAgentWakePort } from './input/agent-wake.js';
1150
1165
  import { renderDebugEventDetail, renderDebugEventRows, renderDebugStack, renderPromptInjectionDebug } from '../display/debug-surface.js';
1151
1166
  import { buildDebugCallStack } from '../debug/call-stack.js';
1152
1167
  import { buildAstGrepHostTool } from '../skills/tools/ast-grep.js';
@@ -1307,7 +1322,7 @@ import {
1307
1322
  type SpaceLongPressDetector,
1308
1323
  } from './input/space-longpress-detector.js';
1309
1324
  import { isAllowlistedDictationSurface } from './input/dictation-surface-allowlist.js';
1310
- import { createDashboardExternalInputHost, stopTurnViaEscGate } from './input/external-input-host.js';
1325
+ import { createDashboardExternalInputHost, stopTurnViaEscGate, updateDashboardExternalInputQueueNotice } from './input/external-input-host.js';
1311
1326
  import { registerExternalInputHost } from '../input/external-input-queue.js';
1312
1327
  // H3 #6 follow-up #3 — background sessions render as a distinct sidebar
1313
1328
  // kind with live state badge + tap-to-Join. Dashboard pulls BG records
@@ -1459,30 +1474,6 @@ export function resolveDashboardSlashSurfaceUx(
1459
1474
  : undefined;
1460
1475
  }
1461
1476
 
1462
- /** Dashboard draw entry for the input-prompt zone. Streaming redraws reach
1463
- * this production binding through the zone renderer below. */
1464
- export function drawDashboardTurnTypeaheadPromptRows(
1465
- input: TurnTypeaheadPromptRowsInput,
1466
- sink?: TurnTypeaheadPromptPaintSink,
1467
- ): string[] {
1468
- return drawTurnTypeaheadPromptRows(input, sink);
1469
- }
1470
-
1471
- /** Essential frames own the fallback prompt caret; Z-axis state only wins
1472
- * when a modal has made a visible claim. */
1473
- export function buildDashboardTurnTypeaheadPromptZone(input: TurnTypeaheadPromptRowsInput & {
1474
- suppressPromptArea: boolean;
1475
- }): LayoutZone {
1476
- return {
1477
- id: 'input-prompt',
1478
- height: input.frame.inputHeight,
1479
- render: (height, width) => {
1480
- if (input.suppressPromptArea) return Array.from({ length: height }, () => ' '.repeat(width));
1481
- return drawDashboardTurnTypeaheadPromptRows({ ...input, height, width });
1482
- },
1483
- };
1484
- }
1485
-
1486
1477
  /** The chat-main submit branch calls this before any model dispatch. Keeping
1487
1478
  * the decision here lets the dashboard test execute the same entry point. */
1488
1479
  export function resolveDashboardHarnessSubmitIntent(
@@ -1493,42 +1484,6 @@ export function resolveDashboardHarnessSubmitIntent(
1493
1484
  return routeDevHarnessSubmitIntent(resolveIntent(text, options));
1494
1485
  }
1495
1486
 
1496
- /** 프롬프트 zone 에 관측만 덧입힌다 — 렌더 산출은 `inner` 가 소유한다.
1497
- *
1498
- * ⭐ **왜 뽑았나**(무인 리뷰 must-fix · 2026-08-01): 종전엔 이 래퍼가 `zones.push({...})` 안에
1499
- * 인라인이라, 테스트가 `inner`(=`buildDashboardTurnTypeaheadPromptZone`)만 불러도 통과했다.
1500
- * ⇒ ***래퍼가 `inner.render` 를 부르는 것을 끊어도 검사가 침묵***했다. 이제 그 결선이 검사된다.
1501
- *
1502
- * ⛔⚠️ **여전히 검사 밖인 한 겹**: 이 함수의 반환이 실제로 `zones` 배열에 **push 되는지**는
1503
- * `showDashboard` 안의 지역 조립부라 단위 검사가 닿지 않는다. ***무한 후퇴이므로 여기서 경계를 긋는다*** —
1504
- * 그 한 겹은 **라이브 검증**(`dev --elanous --hold` ⊕ `pty snapshot`)이 맡는다. */
1505
- export function observeDashboardTurnTypeaheadPromptZone(
1506
- inner: LayoutZone,
1507
- deps: {
1508
- promptBottomRow: number;
1509
- state: { buffer: string; queuedSubmissions: string[] };
1510
- isDebugEnabled?: () => boolean;
1511
- log?: (category: string, event: string, data: Record<string, unknown>) => void;
1512
- },
1513
- ): LayoutZone {
1514
- return {
1515
- ...inner,
1516
- render: (height, width) => {
1517
- const rows = inner.render(height, width);
1518
- const enabled = deps.isDebugEnabled ? deps.isDebugEnabled() : debug.enabled;
1519
- if (deps.state.buffer && enabled) {
1520
- (deps.log ?? ((c, e, d) => debug.log(c, e, d)))('dashboard.turn-typeahead-prompt', 'dashboard-draw-prompt', {
1521
- row: deps.promptBottomRow,
1522
- text: rows.at(-1) ?? '',
1523
- bufferLength: deps.state.buffer.length,
1524
- queuedSubmissionCount: deps.state.queuedSubmissions.length,
1525
- });
1526
- }
1527
- return rows;
1528
- },
1529
- };
1530
- }
1531
-
1532
1487
  type DashboardFrameRenderer = (lines: string[], options: RenderOptions) => void;
1533
1488
 
1534
1489
  /** Compose coordinator-owned modal surfaces into the dashboard's single frame overlay. */
@@ -1907,14 +1862,31 @@ export function renderDashboardStatusLines(input: Omit<DashboardStatusLinesInput
1907
1862
  return buildDashboardStatusLines({ ...input, seatsNow });
1908
1863
  }
1909
1864
 
1865
+ /** The pending-input registry is process-local; a remote ACP loop cannot drain it. */
1866
+ export function activeDashboardTypeaheadSessionId(acpSessionId: string | null, daemonAttached: boolean): string | null {
1867
+ return daemonAttached ? null : acpSessionId;
1868
+ }
1869
+
1870
+ /** The streaming keyboard's production typeahead transition. */
1871
+ export function applyDashboardStreamingTypeaheadKey(
1872
+ state: Parameters<typeof applyTurnTypeaheadKey>[0],
1873
+ key: Parameters<typeof applyTurnTypeaheadKey>[1],
1874
+ isImmediate: Parameters<typeof applyTurnTypeaheadKey>[2],
1875
+ ): ReturnType<typeof applyTurnTypeaheadKey> {
1876
+ return applyTurnTypeaheadKey(state, key, isImmediate);
1877
+ }
1878
+
1910
1879
  export async function showDashboard(opts: ShowDashboardOptions = {}): Promise<DashboardAction> {
1911
1880
  let firstDashboardFrameRendered = false;
1912
1881
  await awaitGlobalPersonaLoad().catch(() => {});
1913
1882
  const dashboardQuitConfirmationState = createQuitConfirmationState();
1914
1883
  const signalQuitConfirmationState = createQuitConfirmationState();
1915
1884
  let disposeDashboardEventLoopMonitor = (): void => {};
1885
+ // TUI-AGENT-IDLE-WAKE — 이 대시보드 «자기» 완료 알림 구독만 푼다(배선 지점에서 채운다).
1886
+ let disposeDashboardAgentWake = (): void => {};
1916
1887
  const closeDashboardTui = (): void => {
1917
1888
  disposeDashboardEventLoopMonitor();
1889
+ try { disposeDashboardAgentWake(); } catch { /* never block exit */ }
1918
1890
  closeTui();
1919
1891
  };
1920
1892
  const exitDashboardTui = (): void => {
@@ -2233,6 +2205,7 @@ export async function showDashboard(opts: ShowDashboardOptions = {}): Promise<Da
2233
2205
  pillRowGetter: () => pillRowGetterForClick?.() ?? null,
2234
2206
  onPillClick: () => onPillClickForClick?.(),
2235
2207
  foldStack,
2208
+ foldClickAnchor,
2236
2209
  });
2237
2210
 
2238
2211
  // Dispatcher for attachment-popup actions (log-pane click → popup
@@ -3392,14 +3365,20 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
3392
3365
  getCwd: () => workingDir.cwd,
3393
3366
  notify: (line) => { chatLines.push(C.muted(line)); draw(); },
3394
3367
  });
3395
- const internalTurnYieldPort = seatAutowake.wrapPort(internalTurnGate.port);
3368
+ // Set only by the failed-turn callback and consumed by that turn's streaming cleanup.
3369
+ let autowakeTurnFailureRaw: string | null = null;
3370
+ const internalTurnYieldPort = wrapAgentWakePort(seatAutowake.wrapPort(internalTurnGate.port));
3371
+ // ⭐ H5 자기 예약 깨움(TUI-H5-SCHEDULE-WAKEUP) — 프로세스 안 타이머가 그 시각에 H2 문으로 한 턴을 청한다.
3372
+ // 직전 회차 판정 = 그 예약이 연 내부 턴이 아직 도나. 도구 등록은 아래 host tool 자리(하니스 자식 제외).
3373
+ const wakeupScheduler = createDashboardWakeupScheduler(internalTurnGate, {
3374
+ notify: (line) => { chatLines.push(C.muted(line)); draw(); },
3375
+ });
3396
3376
  // ⭐ `B3` — 큐를 «도는 턴»에 넣으려면 그 턴이 도는 ***ACP 세션 id*** 가 필요하다.
3397
3377
  // ⛔ `attachedSessionId`(대화 세션)와 «다른 축»이다 — 루프는 ACP 세션으로 스코프를 연다.
3398
3378
  // ⚠️ 세션은 이 함수 «뒤»에서 만들어지므로 참조로 둔다(호출 시점엔 채워져 있다).
3399
3379
  const acpSessionIdRef: { current: string | null } = { current: null };
3400
3380
  const adoptedAcpSessionIds = new Set<string>();
3401
3381
  let activeAcpSessionId: string | null = null;
3402
- const activeSessionIdForTypeahead = (): string | null => acpSessionIdRef.current;
3403
3382
  const paintTurnTypeaheadEcho = (): void => {
3404
3383
  const { rows: tr, cols: tc } = termSize();
3405
3384
  const pf = currentPromptFrame(tr);
@@ -3421,6 +3400,7 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
3421
3400
  });
3422
3401
  }
3423
3402
  try { process.stdout.write(paint); } catch { /* fail-soft */ }
3403
+ noteInputLagPaint();
3424
3404
  };
3425
3405
 
3426
3406
  // Use this instead of bare `chatScrollOffset = -1` inside streaming
@@ -3450,9 +3430,17 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
3450
3430
  }),
3451
3431
  log: (category, event, data) => debug.log(category, event, data),
3452
3432
  });
3433
+ // ⌨️ TUI-TYPING-LAG-OBS — 키→칠 ms ⊕ 턴 시작 창 루프 지연(`tui.input-lag`). 훅은 tui.ts·chat·turn-preamble.
3434
+ const inputLagProbe = createInputLagProbe({
3435
+ isBusy: () => streamingInFlight,
3436
+ log: (category, event, data) => debug.log(category, event, { ...data }),
3437
+ });
3438
+ setInputLagProbe(inputLagProbe);
3453
3439
  const disposeEventLoopStallMonitorOnBeforeExit = (): void => disposeDashboardEventLoopMonitor();
3454
3440
  disposeDashboardEventLoopMonitor = (): void => {
3455
3441
  disposeEventLoopStallMonitor();
3442
+ setInputLagProbe(null);
3443
+ inputLagProbe.dispose();
3456
3444
  process.removeListener('beforeExit', disposeEventLoopStallMonitorOnBeforeExit);
3457
3445
  };
3458
3446
  process.once('beforeExit', disposeEventLoopStallMonitorOnBeforeExit);
@@ -3461,14 +3449,24 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
3461
3449
  // batch status during skill execution, plus static folds already
3462
3450
  // committed to chatLines. The runtime helper owns registration;
3463
3451
  // `f` just toggles the most recent target.
3452
+ // A click toggle keeps the viewport top (#81 — pinning to the tail
3453
+ // moved the clicked header, so the same spot no longer folded back).
3454
+ const foldClickAnchor = createFoldClickScrollAnchor({
3455
+ getScrollOffset: () => chatScrollOffset,
3456
+ setScrollOffset: (offset) => { chatScrollOffset = offset; },
3457
+ maxScroll: () => logScrollMax(computeLogH(termSize().rows)),
3458
+ getFrozenTail: () => logFrozenTailIndex,
3459
+ setFrozenTail: (index) => { logFrozenTailIndex = index; },
3460
+ lineCount: () => chatLines.length,
3461
+ }, () => {
3462
+ // Pin back to tail if the user hadn't scrolled away — expanding
3463
+ // a batch tree adds rows, and losing the bottom anchor is
3464
+ // disorienting when `f` was supposed to reveal more content.
3465
+ chatScrollOffset = -1;
3466
+ });
3464
3467
  const foldStack = new FoldStack({
3465
3468
  chatLines,
3466
- onAfterToggle: () => {
3467
- // Pin back to tail if the user hadn't scrolled away — expanding
3468
- // a batch tree adds rows, and losing the bottom anchor is
3469
- // disorienting when `f` was supposed to reveal more content.
3470
- chatScrollOffset = -1;
3471
- },
3469
+ onAfterToggle: (target, delta) => foldClickAnchor.onAfterToggle(target, delta),
3472
3470
  });
3473
3471
  // The most recent streamed assistant response — kept in both raw and
3474
3472
  // formatted form so Ctrl+Y can copy clean markdown and `r` in log
@@ -3700,7 +3698,10 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
3700
3698
  // boot block via bgSurface.onUpdate; read on every status redraw.
3701
3699
  // Null until the first handle is tracked so we don't render an empty
3702
3700
  // pill on a fresh session.
3703
- let latestShellRollup: { running: number; backgrounded: number } | null = null;
3701
+ let latestShellRollup: { running: number; backgrounded: number; background: number } | null = null;
3702
+ // TUI-BG-JOB-VISIBILITY (#71) — «⧗ 백그라운드 N»(턴을 넘어 사는 셸 일). 관측은 모듈, 여기선 배선만
3703
+ // (깨우기 0 — TUI-AGENT-IDLE-WAKE 몫).
3704
+ const backgroundJobsStatus = createBackgroundJobsStatus();
3704
3705
  // The ACP bridge is created later during dashboard boot. Keep status renders
3705
3706
  // safe before then, and bind this reader once the bridge exists.
3706
3707
  let activeAcpRuntimeModel = (): string | undefined => undefined;
@@ -3740,6 +3741,7 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
3740
3741
  sshLabel: sshStatusLabel,
3741
3742
  host: hostLabel,
3742
3743
  runningAgents: globalAgentRegistry.list().filter((agent) => agent.state === 'running').length,
3744
+ backgroundJobs: backgroundJobsStatus.summary(),
3743
3745
  controller: process.env.ELANOUS_CONTROLLER?.trim() || undefined,
3744
3746
  shellCount: liveShells,
3745
3747
  shellRollup: latestShellRollup ?? undefined,
@@ -3767,7 +3769,8 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
3767
3769
  let drawQueued = false;
3768
3770
  let queuedDrawForce = false;
3769
3771
  let lastDrawDebugAt = 0;
3770
- let repaintPromptAfterRender: (opts?: { force?: boolean }) => void = () => {};
3772
+ const promptRowOwner = createPromptRowOwner({ requestFrame: () => draw() });
3773
+ const observePromptBand = createPromptBandRenderObserver();
3771
3774
  const displayEvents = createDisplayEventBus();
3772
3775
  const recentTerminalMouseIntents: Array<{
3773
3776
  surfaceId: string;
@@ -3924,11 +3927,7 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
3924
3927
  // and fires onPush/onPop. The modal-surface-adapter (registered
3925
3928
  // below after widgetHost discovery) fans those into the global
3926
3929
  // SurfaceRegistry. Existing pushModal callsites unchanged.
3927
- const identityHooks = composeIdentityHooks({
3928
- afterRender: (request) => {
3929
- try { repaintPromptAfterRender({ force: request.force }); } catch { /* noop */ }
3930
- },
3931
- });
3930
+ const identityHooks = composeIdentityHooks({});
3932
3931
  // U4 Bundle B — layer the workspace host wiring on top of modal
3933
3932
  // identity wiring so popup/dialog/terminal modal mounts
3934
3933
  // automatically project into a host-managed workspace set. This is
@@ -4110,7 +4109,17 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
4110
4109
  // out-of-process modifications (external editor, another PTY,
4111
4110
  // etc.). Throttle inside git-fs prevents back-to-back subprocess
4112
4111
  // spawns when this and a post-Edit refresh overlap.
4112
+ // TUI-TYPING-LAG — keep the turn-preamble caches warm off the event loop (boot ⊕ every tick):
4113
+ // the git snapshot (async subprocesses) and the self-ambient store scan (worker thread). A turn
4114
+ // then serves them from cache instead of rebuilding synchronously on the turn path. Both are
4115
+ // no-ops while the cached value is younger than the threshold; failures are fail-soft.
4116
+ const warmTurnPreambleCaches = (): void => {
4117
+ try { void refreshGitSnapshotAsync(getSessionCwd(), { ifOlderThanMs: 30_000 }); } catch { /* noop */ }
4118
+ try { void refreshSelfAmbientCache({}, { ifOlderThanMs: 25_000 }); } catch { /* noop */ }
4119
+ };
4120
+ warmTurnPreambleCaches();
4113
4121
  const gitDirtyTimer: ReturnType<typeof setInterval> = setInterval(() => {
4122
+ warmTurnPreambleCaches();
4114
4123
  try {
4115
4124
  const before = getGitStatusView(getSessionCwd());
4116
4125
  // TUI-TYPING-LAG — the 5s probe ran `git status` synchronously (130ms+, hundreds under load).
@@ -4236,7 +4245,13 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
4236
4245
  wireShellRunnerSurface,
4237
4246
  createFileCaptureEngine,
4238
4247
  setShellRunnerDeps,
4239
- setLatestShellRollup: (rollup) => { latestShellRollup = rollup; },
4248
+ setLatestShellRollup: (rollup) => {
4249
+ latestShellRollup = rollup;
4250
+ // 유휴 중 백그라운드가 끝나도 상태줄이 고쳐지도록 — 수가 바뀔 때만 다시 그린다.
4251
+ if (backgroundJobsStatus.noteRollup(rollup)) {
4252
+ try { draw(); } catch { /* TUI torn down */ }
4253
+ }
4254
+ },
4240
4255
  });
4241
4256
  }
4242
4257
  const { setShellApprover } = await import('../shell-primitive/index.js');
@@ -6804,7 +6819,7 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
6804
6819
  } catch { /* 승격 실패가 스트리밍을 막지 않는다 */ }
6805
6820
  return 'consumed';
6806
6821
  }
6807
- const r = applyTurnTypeaheadKey(turnTypeaheadRef.state, k, isStreamingImmediateSlash);
6822
+ const r = applyDashboardStreamingTypeaheadKey(turnTypeaheadRef.state, k, isStreamingImmediateSlash);
6808
6823
  if (r.consumed) {
6809
6824
  turnTypeaheadRef.state = r.state;
6810
6825
  if (r.submissionDisposition) {
@@ -6820,7 +6835,7 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
6820
6835
  // ⛔ H2 — 내부 턴 중의 사람 입력은 그 턴에 끼워 넣지 않는다(턴 끝 FIFO 로 기다린다).
6821
6836
  if (r.submissionDisposition === 'fifo' && !r.immediateSubmission && !internalTurnGate.isInternalTurnActive()) {
6822
6837
  const queuedText = turnTypeaheadRef.state.queuedSubmissions.at(-1);
6823
- const sid = activeSessionIdForTypeahead();
6838
+ const sid = activeDashboardTypeaheadSessionId(acpSessionIdRef.current, daemonAttached);
6824
6839
  if (queuedText && sid) {
6825
6840
  const queuedHistoryEntry = inputHistoryStore.record({
6826
6841
  text: queuedText,
@@ -7112,7 +7127,9 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
7112
7127
  userScrolledDuringStream = false;
7113
7128
  streamingInFlight = false;
7114
7129
  reportTuiTurn('idle');
7115
- seatAutowake.noteTurnEnded();
7130
+ const failedTurnRaw = autowakeTurnFailureRaw;
7131
+ autowakeTurnFailureRaw = null;
7132
+ seatAutowake.noteTurnEnded({ sessionId: currentChatPersonaSessionId(), lastLine: chatLines.at(-1) ?? '', errorDetail: failedTurnRaw ?? undefined });
7116
7133
  }
7117
7134
  };
7118
7135
  };
@@ -9974,6 +9991,8 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
9974
9991
  // kept alive per cwd; reaped on 10-min idle. See
9975
9992
  // 내부 문서 `CAPABILITIES-lsp` for the op surface.
9976
9993
  pluginHost.registerHostTool(buildLspHostTool());
9994
+ // H5 — 이 TUI 로 돌아오는 자기 예약. 하니스 자식(ELANOUS_HARNESS_ROLE 있음)은 무인 런이라 싣지 않는다.
9995
+ registerScheduleWakeupHostTool(pluginHost, wakeupScheduler);
9977
9996
  pluginHost.registerHostTool({
9978
9997
  name: 'view_getConfig',
9979
9998
  description: 'Return dashboard view configuration: native and custom views, order, enabled state, shortcuts, baseView, pane rows, ratios, primary pane, and active view.',
@@ -11301,6 +11320,7 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
11301
11320
  // actually scrolled up. If something else (streaming, slash reply)
11302
11321
  // pulls the offset back to -1 (tail), the freeze is no-op'd so the
11303
11322
  // user sees full content at tail regardless of stale index state.
11323
+ foldClickAnchor.reconcile();
11304
11324
  const logProjection = buildDashboardLogProjection({
11305
11325
  chatScrollOffset,
11306
11326
  logFrozenTailIndex,
@@ -11361,7 +11381,7 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
11361
11381
  height: 1,
11362
11382
  render: (_h, c) => [suppressPromptArea ? ' '.repeat(c) : hLine(c)],
11363
11383
  });
11364
- const inputPromptZone = buildDashboardTurnTypeaheadPromptZone({
11384
+ const inputPromptZone = withPromptRowOwner(buildDashboardTurnTypeaheadPromptZone({
11365
11385
  frame: promptFrame,
11366
11386
  height: promptFrame.inputHeight,
11367
11387
  placeholder: C.muted('\u276f '),
@@ -11371,7 +11391,7 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
11371
11391
  width: totalW,
11372
11392
  suppressPromptArea,
11373
11393
  onPaint: paint => { promptCaret = paint.caret; },
11374
- });
11394
+ }), promptRowOwner, { suppressPromptArea, onCaret: (caret) => { promptCaret = caret; }, observe: observePromptBand });
11375
11395
  zones.push(observeDashboardTurnTypeaheadPromptZone(inputPromptZone, {
11376
11396
  promptBottomRow: promptFrame.promptBottomRow,
11377
11397
  state: turnTypeaheadRef.state,
@@ -11383,7 +11403,7 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
11383
11403
  });
11384
11404
 
11385
11405
  // Essential bottom area: status line only; no dock row.
11386
- zones.push({ id: 'status-gap-top', height: 1, render: () => [''] });
11406
+ zones.push({ id: 'status-gap-top', height: 1, render: () => [renderPromptOwnerHintRow(promptRowOwner, { suppressPromptArea })] });
11387
11407
  zones.push({
11388
11408
  id: 'status',
11389
11409
  height: 1,
@@ -11604,11 +11624,10 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
11604
11624
  if (debug.enabled) {
11605
11625
  debug.log('dashboard.draw', 'flush-microtask', {
11606
11626
  force,
11607
- promptRepainted: true,
11627
+ promptRepainted: false,
11608
11628
  });
11609
11629
  }
11610
11630
  drawNow({ force });
11611
- try { repaintPromptAfterRender({ force }); } catch { /* noop */ }
11612
11631
  });
11613
11632
  };
11614
11633
 
@@ -12411,18 +12430,6 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
12411
12430
  submit?: (request?: string | TextInputExternalSubmitRequest) => void;
12412
12431
  getBufferText?: () => string;
12413
12432
  } = { repaint: () => {} };
12414
- repaintPromptAfterRender = () => {
12415
- if (shouldSuppressDashboardBottomArea()) {
12416
- display.setCursor(null);
12417
- return;
12418
- }
12419
- promptCtl.repaint();
12420
- };
12421
- // V3 note: repaintPromptAfterRender receives {force} from the
12422
- // coordinator hook but promptCtl.repaint() has no diff state of its
12423
- // own — the main render's force=true already did eraseDown before
12424
- // this runs, so prompt rows are clean. Forwarding force is a no-op
12425
- // today but the signature is there for future direct-paint callers.
12426
12433
 
12427
12434
  // Terminal resize wiring — CAPABILITIES-display.md §1.3 defines the
12428
12435
  // coordinator entry triplet as "readKey / mouse / resize" but the
@@ -12431,14 +12438,36 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
12431
12438
  // resize to a forced dashboard redraw plus the prompt repaint hook;
12432
12439
  // the hook is a no-op while input is idle so the call is always
12433
12440
  // safe. Dispose on process exit to keep the listener set clean.
12434
- const disposeResizeListener = installResizeListener({ draw: (opts) => draw(opts), promptCtl });
12441
+ // TUI-PICKER-RESIZE-SHRINK (#76) — the forced coordinator frame
12442
+ // re-emits open overlays (slash picker) AFTER the prompt chrome, so
12443
+ // the divider repaint cannot erase the picker's bottom border.
12444
+ const disposeResizeListener = installResizeListener({
12445
+ draw: (opts) => draw(opts),
12446
+ promptCtl,
12447
+ requestOverlayFrame: () => display.requestRender({ force: true }),
12448
+ });
12435
12449
  process.on('exit', disposeResizeListener);
12436
12450
  // 외부 주입(`pty text`)을 사용자 타이핑과 섞지 않고 별도 대기열로 — 결함 #6(10-14).
12451
+ let externalInputQueueNotice: string | null = null;
12452
+ const setExternalInputQueueNotice = (line: string | null): void => {
12453
+ const changed = updateDashboardExternalInputQueueNotice(
12454
+ chatLines,
12455
+ externalInputQueueNotice,
12456
+ line,
12457
+ (notice) => C.muted(` ${notice}`),
12458
+ );
12459
+ externalInputQueueNotice = line;
12460
+ if (changed) {
12461
+ chatScrollOffset = -1;
12462
+ draw();
12463
+ }
12464
+ };
12437
12465
  const disposeExternalInputHost = registerExternalInputHost(createDashboardExternalInputHost({
12438
12466
  isTurnActive: () => streamingInFlight,
12439
12467
  getTurnStop: () => currentTurnExternalStop,
12440
12468
  promptCtl,
12441
12469
  pushNotice: (line) => { chatLines.push(C.muted(` ${line}`)); chatScrollOffset = -1; draw(); },
12470
+ setQueueNotice: setExternalInputQueueNotice,
12442
12471
  }));
12443
12472
  process.on('exit', disposeExternalInputHost);
12444
12473
 
@@ -13034,6 +13063,17 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
13034
13063
  try { draw(); } catch { /* TUI torn down */ }
13035
13064
  });
13036
13065
  process.once('beforeExit', () => agentDoneRedraw.dispose());
13066
+ // ⭐ TUI-AGENT-IDLE-WAKE — 배경 자식(⊕ RunShell bg) 완료 큐의 «유일한» 구독(onEnqueue 구독 0 → 1).
13067
+ // 채팅 한 줄 «✓ 위임 끝: <이름> — 다음 턴에 결과» · 결과는 다음 턴 preamble 이 싣는다.
13068
+ // ⛔ 입력칸·injectKey·pty 주입 0(대표 비침투). dedupe·수명은 모듈, 여기선 배선만.
13069
+ const agentWake = installAgentWake({
13070
+ subscribe: (listener) => globalTaskNotificationQueue.onEnqueue(listener),
13071
+ // 그리기 실패는 삼키지 않는다 — 모듈이 잡아 notified{shown:false} 로 남긴다.
13072
+ notify: createDashboardAgentWakeNotify((line) => { chatLines.push(C.muted(line)); }, () => draw()),
13073
+ // 조각 2 — 자리 TUI ∧ 유휴면 H2 문으로 다음 턴(origin child-complete) · 판정은 모듈.
13074
+ openTurn: { startTurnIfIdle: (text, opts) => internalTurnGate.startTurnIfIdle(text, opts), getCwd: () => workingDir.cwd, isPending: (taskId) => globalTaskNotificationQueue.has(taskId) },
13075
+ });
13076
+ disposeDashboardAgentWake = () => agentWake.dispose();
13037
13077
 
13038
13078
  // PLAN-chat-hud-multi-surface-port-2026-05-13 §4 M5 — 1Hz ticker
13039
13079
  // that pushes the current token-gauge + variant values onto the
@@ -14766,10 +14806,8 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
14766
14806
  userText,
14767
14807
  hostTools: pluginHost.hostLLMTools(),
14768
14808
  runtimeTools: runtime.listToolRuntimes('tui'),
14769
- pluginTools: pluginHost.activePluginLLMTools(),
14770
14809
  optionalTools: acpTurnRef.optionalSpecs,
14771
14810
  surface: acpTurnRef.turnProfile?.surface,
14772
- rich: false,
14773
14811
  })
14774
14812
  : [];
14775
14813
  return [
@@ -14785,7 +14823,6 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
14785
14823
  // codex-only behavioral addendum (fix L-1) inside the
14786
14824
  // universal preamble.
14787
14825
  modelFamily: getModelFamily(inspectActiveProvider().model),
14788
- rich: false,
14789
14826
  enabledTools: tools.map(t => t.name),
14790
14827
  seatBoot: true,
14791
14828
  }),
@@ -14798,10 +14835,8 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
14798
14835
  userText,
14799
14836
  hostTools: pluginHost.hostLLMTools(),
14800
14837
  runtimeTools: runtime.listToolRuntimes('tui'),
14801
- pluginTools: pluginHost.activePluginLLMTools(),
14802
14838
  optionalTools: acpTurnRef.optionalSpecs,
14803
14839
  surface: acpTurnRef.turnProfile?.surface,
14804
- rich: false,
14805
14840
  });
14806
14841
  // ⭐ Remember this turn's catalog so a spawned sub-agent can inherit it.
14807
14842
  //
@@ -16192,6 +16227,7 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
16192
16227
  // C-d-1 — 하단 슬롯 결정 뷰 활성 시 composer 페인트 정지(단일 소유자).
16193
16228
  shouldPaint: () => !shouldSuppressDashboardBottomArea() && !bottomSlotModalActive(),
16194
16229
  promptCtl,
16230
+ promptRowOwner,
16195
16231
  setInputLines: (n) => dashboardState.setInputLines(n),
16196
16232
  redraw: draw,
16197
16233
  dispatchGlobalAction: runChatMainGlobalAction,
@@ -18367,10 +18403,8 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
18367
18403
  userText: args.userText,
18368
18404
  hostTools: pluginHost.hostLLMTools(),
18369
18405
  runtimeTools: runtime.listToolRuntimes('tui'),
18370
- pluginTools: pluginHost.activePluginLLMTools(),
18371
18406
  optionalTools: acpTurnRef.optionalSpecs,
18372
18407
  surface: acpTurnRef.turnProfile?.surface,
18373
- rich: false,
18374
18408
  })
18375
18409
  : [];
18376
18410
  return [
@@ -18380,7 +18414,6 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
18380
18414
  cwd: args.cwd,
18381
18415
  turnProfile: args.turnProfile as SessionTurnProfile,
18382
18416
  userConfig: args.userConfig,
18383
- rich: false,
18384
18417
  enabledTools: tools.map(t => t.name),
18385
18418
  seatBoot: true,
18386
18419
  }),
@@ -18501,10 +18534,17 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
18501
18534
  settleEscAbortToolCall(escAbortToolState, toolCall);
18502
18535
  escHarnessSpacesByCallId.delete(toolCall.id);
18503
18536
  },
18537
+ onThought: (text) => {
18538
+ turnStreamRuntime.onThought?.(text);
18539
+ draw();
18540
+ },
18504
18541
  };
18505
18542
  },
18506
18543
  runTurnUsageRuntime: (usage) => {
18507
18544
  latestTurnUsage = usage as import('../prompt-cache/types.js').LLMUsage;
18545
+ // 이번 턴의 «실제» 공급자·모델(폴백이면 넘어간 쪽) — 완료 배지가 «A → B» 로 보인다(TUI-MODEL-BADGE-ACTUAL).
18546
+ // 원격 데몬 세션은 적지 않는다(결정이 데몬 쪽 · 후속 칸 TUI-MODEL-BADGE-REMOTE).
18547
+ recordDashboardTurnExecution(usage as { model?: string; routeProvider?: string }, { remote: daemonAttached });
18508
18548
  runDashboardTurnUsageRuntime({
18509
18549
  // The plain-turn pipeline threads usage as `unknown` for
18510
18550
  // decoupling; at this consumer it is the concrete LLM usage
@@ -18618,6 +18658,7 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
18618
18658
  warningLine: (message) => C.warning(`${ICONS.warning} ${message}`),
18619
18659
  pushErrorLine: (message) => { chatLines.push(C.error(`Error: ${message}`)); },
18620
18660
  pushFailureNotice: (notice, raw) => {
18661
+ autowakeTurnFailureRaw = raw;
18621
18662
  chatLines.push(C.warning(notice));
18622
18663
  detailViewerRuntime.stage('turn error', raw.split(/\r?\n/));
18623
18664
  },
@@ -18842,5 +18883,6 @@ Mode- and sync-specific instructions are injected per-turn when relevant — do
18842
18883
  } finally {
18843
18884
  setSelfImplementSoftStopSpaceObserver(null);
18844
18885
  if (tuiSeatAskTimer) clearInterval(tuiSeatAskTimer);
18886
+ wakeupScheduler.dispose();
18845
18887
  }
18846
18888
  }