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.
- package/apps/pwa/out/404/index.html +1 -1
- package/apps/pwa/out/404.html +1 -1
- package/apps/pwa/out/_next/static/{LSXfY0u9QtfDbejY0Ukf_ → L04y73dlwKeTW-GetaTF3}/_buildManifest.js +1 -1
- package/apps/pwa/out/_next/static/chunks/1162.c69abda138c7ce43.js +79 -0
- package/apps/pwa/out/_next/static/chunks/1449-1fede62af84c3e43.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1598-13fc845935e816df.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1639.62c5e16fa20d242f.js +94 -0
- package/apps/pwa/out/_next/static/chunks/{4174.92ed04922709ac9e.js → 1644.35dd25240ae24e4b.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/1661-adb8b2babc9aaf8c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2940-619bfd8ef337c611.js → 1895-60ed0e341c658bd4.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{5525.86debf231e181813.js → 2124.ed5bf480cea7f85b.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/2147.107c0fc6146fb15a.js +23 -0
- package/apps/pwa/out/_next/static/chunks/2202-ef1c9b000c3074fc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2247.1e326638ee43e672.js +115 -0
- package/apps/pwa/out/_next/static/chunks/2268.56e1e3d58180abae.js +8 -0
- package/apps/pwa/out/_next/static/chunks/2469-606819c812414021.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{6092.a7f99e68b188ca66.js → 2547.dd27303624cb4da8.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{2213.2ccbada92c33ea0f.js → 2554.3b5e200f5f5cfcd6.js} +16 -16
- package/apps/pwa/out/_next/static/chunks/2593.e53c1620c0bb3599.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2690.e96671114222676a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2898-79ee1a5cc0cd9d13.js +1 -0
- package/apps/pwa/out/_next/static/chunks/298.26099a9f65e5c8ff.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5173-233188df2f42c626.js → 2987-30cf9c2eb7b8bdd5.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/2992.51fc2a7295bd8139.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{3541-ce3a5424ed5ad7f1.js → 3001-5a52788c813b6113.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/3014-291245fba9df7b5b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3068.ee78201f0251a18d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3083.cd399a17e9365f78.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3103.84470c8445962f04.js +34 -0
- package/apps/pwa/out/_next/static/chunks/{6433.fc573af22bbc9ab7.js → 3110.0a7065f25c841818.js} +17 -17
- package/apps/pwa/out/_next/static/chunks/3117-e1c474683fd1f824.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3121.779fafe3e44612c5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3251-2c17bd5a91f8de2e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/326.3fb32322bb2ddf6d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3411-f87314c6c66ebc73.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{6157.0c9af021de4fb31b.js → 3414.172ad4ca2d9b08e8.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/3421-7ff7fbaa156985a7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{4745.67d6f99c245af3f7.js → 3498.cf2a15a8a9e5b926.js} +3 -3
- package/apps/pwa/out/_next/static/chunks/381.f55dc63ea87735e6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3819.163d4777f0a597f6.js +32 -0
- package/apps/pwa/out/_next/static/chunks/{5543.a438b8ab5a13ea47.js → 3837.722e053fb9f321ad.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/4129-ab0a6189f1778633.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4361.93d14ba594b3a035.js +104 -0
- package/apps/pwa/out/_next/static/chunks/4364.7a7eb19cceb67d2f.js +286 -0
- package/apps/pwa/out/_next/static/chunks/4406.d71f506f7c3ee9d3.js +149 -0
- package/apps/pwa/out/_next/static/chunks/4461.2ad1514180ae7e29.js +148 -0
- package/apps/pwa/out/_next/static/chunks/4479.bd309cbe0e3842ee.js +64 -0
- package/apps/pwa/out/_next/static/chunks/4522-05966f777d66d13b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4543-9a3e9812e845de65.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4557.f8f1d84a0d90d590.js +74 -0
- package/apps/pwa/out/_next/static/chunks/4589-79b11542179ef58c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4633-9f8f9f88ffbb8f5c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4831.23af4d10c0697b5e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4983.5951b85724f61f2a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{b313b242.cb1265eea908db61.js → 4fa33ebd.21c1bd5b294496e6.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{997ce8a5-2ad501927003b41b.js → 5014f970-22bef0b5210f7d60.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{2112-e4efc21a6505d5bc.js → 5028-f0722e6114c313e7.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{2898.fd781bc7cf01a7b7.js → 5249.96a848656b582a93.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/5311.16e0ffbfa5468b80.js +62 -0
- package/apps/pwa/out/_next/static/chunks/{9407.e49124dedf0f5e72.js → 5446.edf141cff9ef647d.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{9002.e5658224e3dc1b6f.js → 5489.ec2dd1b5272a19dc.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{1335-6731f392c35216eb.js → 5576-82d3703636d5c4b9.js} +3 -3
- package/apps/pwa/out/_next/static/chunks/559.df87695df637920c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5618-5c88f2f70178c4ad.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5764.05487bf0b73ddb6b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5930.e678826c3f831aab.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5dfb57f7.f2e3305326202474.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6053-d893974de92e6198.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2985.39ccdecd36848b12.js → 6086.913a69e6fa3e4a8b.js} +4 -4
- package/apps/pwa/out/_next/static/chunks/6200-cefd6f33f59d765e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6314-edeba650ae686ac9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6316-bc9a9b74d7842d79.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6476-13b9779b73528008.js +1 -0
- package/apps/pwa/out/_next/static/chunks/666-04db3ac4c8e3c66f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/670.682e55106ef915a6.js +77 -0
- package/apps/pwa/out/_next/static/chunks/{7862.30a8d6482bb238eb.js → 6740.43de73fc427c9fe2.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/6816.b7ba9d0a1a4a46a7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/690-fbbcc777f189af37.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6989.0d3d4020e5cb3df6.js +90 -0
- package/apps/pwa/out/_next/static/chunks/{2871.0bca6137343b3f76.js → 7005.1623d2aea78eb85f.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/7193-cf355cca5ba6c5d5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7217-d17393fe7af78fa6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7232.24edbd938a69c8d0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7295cd1e.b4b557908888eeee.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7323.adb02de21991883c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7386.5d8e7e42e818dfb6.js +287 -0
- package/apps/pwa/out/_next/static/chunks/{7502.ccd5b8065545edd0.js → 7431.3051e9b8a4372d2d.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/{3583.a05e88cc8d594628.js → 7448.478958ffbbba0ac0.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/7537.ba2208c5c656b8a3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7562.948255cbc3e79d33.js +41 -0
- package/apps/pwa/out/_next/static/chunks/7596-962ae6db6cfc9c83.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7671.cff51beac212a2ba.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7883.3916734ee16d3e58.js +27 -0
- package/apps/pwa/out/_next/static/chunks/{9989.3694300e5f000b14.js → 7952.b192c31b6a0e00cc.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/801.5b24e81eded22d1b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8176.8c9a8613f5a01ac1.js +36 -0
- package/apps/pwa/out/_next/static/chunks/819e78a6.fa3dd7f7da19bf61.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8220-78978450c3183d8d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8221-eb60b5bc692a3361.js +1 -0
- package/apps/pwa/out/_next/static/chunks/826.e9a26064f474949e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5307.60f2209e809bd627.js → 8368.014caa8de2f5af34.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/8459-a351487a4480f584.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8482-75823d513a4ce151.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8488.8da515248cda3f3a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{9221.7d22eaf353a2d4e7.js → 8548.036c344973968847.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/8584.388a1779d9b203af.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8637.a55e098e61ffefb8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8817.61bb7ffbba502ecb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{9398-6aed28f0a96d0d6f.js → 9131-fce7256c4180c4a5.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/9207-8e6a12db30373f32.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9263-00ae932c62696a86.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9318.caafc3a130e8769c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/932.da3fb55951882562.js +93 -0
- package/apps/pwa/out/_next/static/chunks/9433.002f8426ac75b6b7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9464.dd631a5a14b1d660.js +24 -0
- package/apps/pwa/out/_next/static/chunks/{3278.2e5d15b53a4091c8.js → 9550.d5f76828f972058c.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/{2534.e85ae21ad0dac829.js → 9739.8d5f36ac67a3b236.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/9743.beeabb9d5f86abe4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9843-a23d3f32dc43f715.js +1 -0
- package/apps/pwa/out/_next/static/chunks/994-28211077c7c587d5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{7a1887c4.f36b88fba31da8fd.js → 9a8cb466.cc9fc9e6e46038aa.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{0bb0ff36.b8d418980951e5ba.js → 9b48c871.204d5d13e7809bd0.js} +7 -7
- package/apps/pwa/out/_next/static/chunks/{409f1e57.d0649fc47691ebfe.js → abb4b98b.163e0f56e84ae35d.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-3b4c947f174e33d8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-369d5ce99483f859.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-63c0ed0eb26e5fce.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/board/page-62802c6003bc85cc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/botlab/page-ecb41560d4e77be9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/bots/page-7b65ad8130c93e95.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ceo/page-8755477c15a9060c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/chat/page-5725447dd972c471.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/consult/page-b979de0591a69375.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/control/page-6d0796bf4633751a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/decisions/page-59c31dc0394e67b4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-12dfc95f6cc5c718.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/editor/page-25788244e66aa4dd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/exec/page-a2555dc705466322.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/field/page-4fb31eb476dcbad3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-3b4c947f174e33d8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/inside/page-578729adbeaa40cb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/intake/page-a1d20fffbec35205.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/layout-4a558f94516b8004.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live/page-9e3834705b86145e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live-run/page-d7bff0f0905a662c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/loops/page-cb1c5fe746ea4014.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/market/page-9ee320507356582a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-66fd183b74835886.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/morning/page-3272a064a01a9927.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/not-found-f281b7a7f6ef2529.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-d45a65f8b7124fcd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-e9c1fe684dd19a66.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-b8322932fc6e34de.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-82c66d9af2290575.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-63c6752009c97b05.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/page-bb33d42ebc358aec.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-7e4c9379197d7214.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-38bf1e9a7001732b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-2e5b752012389d56.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/{page-0a07363b130182a1.js → page-398c0faa173203f7.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-002f53a965b6445c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-7f75997f61a26269.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-3b4c947f174e33d8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/page-05631753294f23fb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/share/page-edd700fd2cc3d7f8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-105f83ecb4594365.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-5823e87d2017f19c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/term/page-df3445b207ceceab.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/today/page-b51ca09566c03de7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/trace/page-8aacd5ded5dbac60.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/vault/page-bae3365a0b3c6a8e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-9ed52b48ff1aa7fd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-b6f8cad35fe00946.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-6d25ceda500d2457.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-b6401a5f2c962fe8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/ebf6cf5e.0d2f887b040e80fb.js +122 -0
- package/apps/pwa/out/_next/static/chunks/f09ec7d7-d29abe23edcbb193.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{ebc7d829.264a0bcb6c750b50.js → ffdc3a04.b9c23c1b28dd4a96.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/framework-9322cb8a56ac081c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-2fbab294e49a1561.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-app-f36729f56621a8f3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_app-2a62e450b47c6114.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_error-5e17f7b445f34d43.js +1 -0
- package/apps/pwa/out/_next/static/chunks/webpack-b4263e2190ea7adf.js +1 -0
- package/apps/pwa/out/_next/static/css/b5d88eba78a3d7bf.css +1 -0
- package/apps/pwa/out/approvals/index.html +1 -1
- package/apps/pwa/out/approvals/index.txt +23 -23
- package/apps/pwa/out/autopilot/index.html +1 -1
- package/apps/pwa/out/autopilot/index.txt +23 -23
- package/apps/pwa/out/board/index.html +1 -1
- package/apps/pwa/out/board/index.txt +23 -23
- package/apps/pwa/out/botlab/index.html +1 -1
- package/apps/pwa/out/botlab/index.txt +22 -22
- package/apps/pwa/out/bots/index.html +1 -1
- package/apps/pwa/out/bots/index.txt +22 -22
- package/apps/pwa/out/ceo/index.html +1 -1
- package/apps/pwa/out/ceo/index.txt +23 -23
- package/apps/pwa/out/chat/index.html +1 -1
- package/apps/pwa/out/chat/index.txt +22 -22
- package/apps/pwa/out/consult/index.html +1 -1
- package/apps/pwa/out/consult/index.txt +23 -23
- package/apps/pwa/out/control/index.html +1 -1
- package/apps/pwa/out/control/index.txt +23 -23
- package/apps/pwa/out/decisions/index.html +1 -1
- package/apps/pwa/out/decisions/index.txt +22 -22
- package/apps/pwa/out/design-check/index.html +1 -1
- package/apps/pwa/out/design-check/index.txt +23 -23
- package/apps/pwa/out/editor/index.html +1 -1
- package/apps/pwa/out/editor/index.txt +23 -23
- package/apps/pwa/out/exec/index.html +1 -1
- package/apps/pwa/out/exec/index.txt +23 -23
- package/apps/pwa/out/field/index.html +1 -1
- package/apps/pwa/out/field/index.txt +23 -23
- package/apps/pwa/out/healthz +1 -1
- package/apps/pwa/out/index.html +1 -1
- package/apps/pwa/out/index.txt +22 -22
- package/apps/pwa/out/inside/index.html +1 -1
- package/apps/pwa/out/inside/index.txt +22 -22
- package/apps/pwa/out/intake/index.html +1 -1
- package/apps/pwa/out/intake/index.txt +23 -23
- package/apps/pwa/out/live/index.html +1 -1
- package/apps/pwa/out/live/index.txt +26 -23
- package/apps/pwa/out/live-run/index.html +1 -1
- package/apps/pwa/out/live-run/index.txt +23 -23
- package/apps/pwa/out/loops/index.html +1 -1
- package/apps/pwa/out/loops/index.txt +22 -22
- package/apps/pwa/out/market/index.html +1 -1
- package/apps/pwa/out/market/index.txt +22 -22
- package/apps/pwa/out/missions/placeholder/index.html +1 -1
- package/apps/pwa/out/missions/placeholder/index.txt +22 -22
- package/apps/pwa/out/morning/index.html +1 -1
- package/apps/pwa/out/morning/index.txt +23 -23
- package/apps/pwa/out/observatory/index.html +1 -1
- package/apps/pwa/out/observatory/index.txt +23 -23
- package/apps/pwa/out/ops/checklist/index.html +1 -1
- package/apps/pwa/out/ops/checklist/index.txt +22 -22
- package/apps/pwa/out/ops/release/index.html +1 -1
- package/apps/pwa/out/ops/release/index.txt +22 -22
- package/apps/pwa/out/ops/seats/index.html +1 -1
- package/apps/pwa/out/ops/seats/index.txt +22 -22
- package/apps/pwa/out/outputs/index.html +1 -1
- package/apps/pwa/out/outputs/index.txt +22 -22
- package/apps/pwa/out/reflection/index.html +1 -1
- package/apps/pwa/out/reflection/index.txt +23 -23
- package/apps/pwa/out/scheduler/index.html +1 -1
- package/apps/pwa/out/scheduler/index.txt +23 -23
- package/apps/pwa/out/sessions/index.html +1 -1
- package/apps/pwa/out/sessions/index.txt +22 -22
- package/apps/pwa/out/settings/devices/index.html +1 -1
- package/apps/pwa/out/settings/devices/index.txt +23 -23
- package/apps/pwa/out/settings/index.html +1 -1
- package/apps/pwa/out/settings/index.txt +23 -23
- package/apps/pwa/out/setup/done/index.html +1 -1
- package/apps/pwa/out/setup/done/index.txt +23 -23
- package/apps/pwa/out/setup/index.html +1 -1
- package/apps/pwa/out/setup/index.txt +23 -23
- package/apps/pwa/out/share/index.html +1 -1
- package/apps/pwa/out/share/index.txt +23 -23
- package/apps/pwa/out/showroom/index.html +1 -1
- package/apps/pwa/out/showroom/index.txt +22 -22
- package/apps/pwa/out/tasks/index.html +1 -1
- package/apps/pwa/out/tasks/index.txt +23 -23
- package/apps/pwa/out/term/index.html +1 -1
- package/apps/pwa/out/term/index.txt +23 -23
- package/apps/pwa/out/today/index.html +1 -1
- package/apps/pwa/out/today/index.txt +23 -23
- package/apps/pwa/out/trace/index.html +1 -1
- package/apps/pwa/out/trace/index.txt +23 -23
- package/apps/pwa/out/vault/index.html +1 -1
- package/apps/pwa/out/vault/index.txt +23 -23
- package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
- package/apps/pwa/out/workflows/chat-ui/index.txt +23 -23
- package/apps/pwa/out/workflows/index.html +1 -1
- package/apps/pwa/out/workflows/index.txt +23 -23
- package/apps/pwa/out/workspace/index.html +1 -1
- package/apps/pwa/out/workspace/index.txt +23 -23
- package/apps/pwa/out/worktrees/index.html +1 -1
- package/apps/pwa/out/worktrees/index.txt +23 -23
- package/bin/elanous.mjs +9 -2
- package/docs/goal-context/README.md +1 -0
- package/graphs/default-loop.yaml +20 -3
- package/graphs/document-loop.yaml +21 -2
- package/graphs/implement-loop.yaml +11 -0
- package/graphs/journey/SCENARIOS.md +33 -0
- package/graphs/journey/recipes.yaml +1 -0
- package/graphs/journey/ta-journey.yaml +84 -0
- package/graphs/journey/units/author/author.yaml +20 -0
- package/graphs/journey/units/author/recipes.yaml +2 -0
- package/graphs/journey/units/green/green.yaml +20 -0
- package/graphs/journey/units/green/recipes.yaml +2 -0
- package/graphs/journey/units/pr/pr.yaml +20 -0
- package/graphs/journey/units/pr/recipes.yaml +2 -0
- package/graphs/journey/units/remember/recipes.yaml +2 -0
- package/graphs/journey/units/remember/remember.yaml +20 -0
- package/graphs/operate-loop.yaml +21 -2
- package/graphs/overlays/stop-heal-ladder.yaml +1 -1
- package/graphs/release-rehearsal/recipes.yaml +1 -1
- package/graphs/release-rehearsal/release-rehearsal.yaml +2 -2
- package/graphs/research-loop.yaml +23 -2
- package/graphs/units/dispatch-pod/dispatch-pod.yaml +50 -0
- package/graphs/units/dispatch-pod/recipes.yaml +14 -0
- package/graphs/units/entry/entry.yaml +50 -0
- package/graphs/units/entry/recipes.yaml +14 -0
- package/graphs/units/harvest/harvest.yaml +25 -0
- package/graphs/units/harvest/recipes.yaml +4 -0
- package/graphs/units/land/land.yaml +45 -0
- package/graphs/units/land/recipes.yaml +3 -0
- package/graphs/units/recipes.yaml +7 -0
- package/graphs/units/recover.yaml +39 -0
- package/graphs/units/reflect/recipes.yaml +3 -0
- package/graphs/units/reflect/reflect.yaml +15 -0
- package/graphs/units/task-agent-recover-review.yaml +17 -0
- package/graphs/units/task-agent-recover-wait.yaml +17 -0
- package/graphs/units/verbs/make-doc.yaml +34 -0
- package/graphs/units/verbs/recipes.yaml +33 -0
- package/graphs/units/verbs/verify.yaml +55 -0
- package/graphs/work/recipes.yaml +2 -0
- package/graphs/work/research-report.yaml +28 -0
- package/package.json +1 -1
- package/scripts/ci-typecheck-changed.ts +95 -17
- package/scripts/docs/generate-graph-anatomy.ts +19 -2
- package/scripts/graph-harvest-unit.ts +22 -0
- package/scripts/graph-units/journey-stub.ts +6 -0
- package/scripts/graph-units/land-enqueue.ts +78 -0
- package/scripts/graph-units/recover-plan.ts +15 -0
- package/scripts/graph-units/reflect-node.ts +88 -0
- package/scripts/graph-units/ta-journey-observe.ts +109 -0
- package/scripts/graph-units/verbs/headless-goal-loop.ts +152 -0
- package/scripts/graph-units/verbs/verify-stage.ts +75 -0
- package/scripts/graph-units/verbs-envelope.ts +139 -0
- package/scripts/hq/standby-snapshot.ts +25 -0
- package/scripts/measure-si-task-cpu.ts +143 -0
- package/scripts/public-export.ts +43 -1
- package/scripts/ratchets/test-interference-patterns.allowlist.txt +0 -2
- package/scripts/ratchets/train-side-invariants.sh +45 -0
- package/scripts/release-loop/auto-approve-node.ts +30 -16
- package/scripts/release-loop/gate-closure.ts +5 -1
- package/scripts/release-loop/gate-diff.ts +1 -1
- package/scripts/release-loop/gate-node.ts +498 -31
- package/scripts/release-loop/gate-partial.ts +3 -3
- package/scripts/release-loop/gate-radius-shadow.ts +138 -0
- package/scripts/release-loop/gate-traffic-mode.ts +128 -0
- package/scripts/release-loop/gate-triage-node.ts +5 -2
- package/scripts/release-loop/known-issues-0.2.33-approved.json +194 -0
- package/scripts/release-loop/known-issues-node.ts +77 -8
- package/scripts/release-loop/preflight.ts +93 -7
- package/scripts/release-loop/prepare-node.ts +102 -4
- package/scripts/release-loop/publish-node.ts +60 -9
- package/scripts/release-loop/resume-cap.ts +56 -0
- package/scripts/release-loop/resume-release.ts +114 -15
- package/scripts/release-loop/resume.ts +24 -1
- package/scripts/release-loop/tui-sim-node.ts +8 -2
- package/scripts/release-loop/unattended-release.ts +8 -2
- package/src/acp/core-turn-bridge.ts +36 -9
- package/src/acp/elanous-extensions.ts +3 -0
- package/src/acp/reasoning-thought-buffer.ts +45 -0
- package/src/acp/server.ts +3 -0
- package/src/acp/tool-trace.ts +186 -11
- package/src/agent/self-ambient-cache.ts +156 -0
- package/src/agent/self-ambient.ts +8 -1
- package/src/agent/task-notification.ts +5 -0
- package/src/agent-substrate/acp-reviewer.ts +52 -12
- package/src/agent-substrate/pr-reviewer.ts +3 -1
- package/src/agent-substrate/review-finding-key.ts +53 -0
- package/src/agent-substrate/self-review-cli.ts +126 -5
- package/src/ask-user-question/pending-questions.ts +1 -1
- package/src/ask-user-question/tool.ts +22 -0
- package/src/autopilot/build/llm-conflict-merge.ts +56 -10
- package/src/autopilot/pr-manager.ts +213 -46
- package/src/capture/frame-state-detect.ts +39 -0
- package/src/capture/tui-self-report.ts +134 -6
- package/src/chat/index.ts +61 -15
- package/src/chat/pickers/modal-runtime.ts +6 -0
- package/src/chat/pickers/modals.ts +8 -2
- package/src/chat/tool-render/dispatch.ts +62 -10
- package/src/cli/ask-bare.ts +1 -0
- package/src/cli/control-cli.ts +24 -7
- package/src/cli/guardian-cli.ts +10 -0
- package/src/cli/import-cli.ts +12 -0
- package/src/cli/light-entry-route.ts +35 -0
- package/src/cli/llm-detect-cli.ts +23 -1
- package/src/cli/log-event-names.ts +10 -0
- package/src/cli/msg-cli.ts +1 -0
- package/src/cli/pod-cli.ts +14 -3
- package/src/cli/pr-cli.ts +140 -41
- package/src/cli/pr-land-base-read.ts +36 -0
- package/src/cli/pr-land-heavy-remote.ts +81 -25
- package/src/cli/pr-land-overlap-evidence.ts +200 -18
- package/src/cli/pr-land-pod-shadow-job.ts +26 -3
- package/src/cli/pr-land-recovery.ts +64 -0
- package/src/cli/pr-land-refusal.ts +20 -5
- package/src/cli/pty-takeover-cli.ts +94 -19
- package/src/cli/release-cli.ts +120 -33
- package/src/cli/release-run-if-ready.ts +29 -28
- package/src/cli/release-single-flight.ts +178 -0
- package/src/cli/seat-cli.ts +37 -0
- package/src/cli/setup-cli.ts +40 -1
- package/src/cli/sim-cli.ts +18 -0
- package/src/cli/tasks-cli.ts +149 -5
- package/src/context-bus/ops-events.ts +6 -2
- package/src/control/control-status.ts +8 -3
- package/src/control-plane/ledger.ts +5 -3
- package/src/control-plane/server.ts +5 -3
- package/src/core-turn/run-core-turn.ts +1 -0
- package/src/core-turn/run-goal-loop.ts +21 -0
- package/src/core-turn/short-question.ts +5 -1
- package/src/core-turn/types.ts +3 -0
- package/src/dashboard/acp-active-model.ts +42 -1
- package/src/dashboard/background-jobs-status.ts +66 -0
- package/src/dashboard/index.ts +153 -111
- package/src/dashboard/input/agent-wake.ts +242 -0
- package/src/dashboard/input/chat-main-entry-runtime.ts +5 -0
- package/src/dashboard/input/chat-main-plain-turn-runtime.ts +3 -0
- package/src/dashboard/input/dashboard-plain-turn-stream.ts +4 -0
- package/src/dashboard/input/external-input-host.ts +23 -9
- package/src/dashboard/input/mouse-wiring.ts +108 -11
- package/src/dashboard/input/seat-autowake.ts +56 -3
- package/src/dashboard/log-click-runtime.ts +118 -2
- package/src/dashboard/seat-boot-preamble.ts +1 -1
- package/src/dashboard/slash-runtime/ask-clarification.ts +48 -0
- package/src/dashboard/slash-runtime/dashboard-delegated-slashes.ts +68 -0
- package/src/dashboard/slash-runtime/dashboard-handlers.ts +62 -322
- package/src/dashboard/slash-runtime/dashboard-log-slash.ts +208 -0
- package/src/dashboard/turn-preamble.ts +163 -41
- package/src/dashboard/turn-session-layers.ts +4 -2
- package/src/dashboard/turn-start-segments.ts +222 -0
- package/src/dashboard/turn-stream-formatter.ts +34 -1
- package/src/dashboard/turn-stream-runtime.ts +2 -0
- package/src/dashboard/turn-typeahead-prompt-zone.ts +67 -0
- package/src/display/prompt-row-owner.ts +146 -0
- package/src/display/resize-listener.ts +33 -2
- package/src/domains/guardian-tick.ts +54 -2
- package/src/domains/outbound-alert.ts +3 -2
- package/src/extractors.ts +3 -1
- package/src/fold-stack.ts +4 -2
- package/src/git-fs/index.ts +263 -36
- package/src/git-fs/retry.ts +4 -0
- package/src/git-fs/runner.ts +2 -0
- package/src/graph-runner/runner.ts +114 -44
- package/src/grok/credential.ts +5 -0
- package/src/harness/gate-reserve.ts +87 -0
- package/src/harness/harness-cli-command.ts +39 -10
- package/src/harness/harness-incidents.ts +17 -0
- package/src/harness/harness-pod-dispatch.ts +38 -1
- package/src/harness/harness-queue.ts +15 -0
- package/src/harness/harness-salvage-cli.ts +14 -2
- package/src/index.ts +198 -12
- package/src/input/external-input-queue.ts +34 -9
- package/src/intake-plane/already-built-hint.ts +89 -0
- package/src/knowhow/pack.ts +199 -0
- package/src/light-cli.ts +95 -0
- package/src/llm/route-decision.ts +36 -0
- package/src/llm/tool-loop-steered-rejection.ts +8 -0
- package/src/llm-request-shape.ts +209 -0
- package/src/llm.ts +221 -276
- package/src/loops/budget.ts +95 -0
- package/src/loops/msg-wake.ts +8 -2
- package/src/loops/orchestrator/tick.ts +24 -2
- package/src/loops/orchestrator/traffic.ts +132 -1
- package/src/maturity/feature-maturity.ts +1 -1
- package/src/mss/logging/log-store.ts +4 -5
- package/src/mss/logging/render-categories.ts +5 -0
- package/src/nexus/api/graphs-api.ts +22 -3
- package/src/nexus/api/http-server.ts +1 -1
- package/src/nexus/api/ops-api.ts +12 -0
- package/src/oauth/claude-pty-maturity.ts +66 -0
- package/src/oauth/codex-access-mirror.ts +55 -0
- package/src/oauth/fallback-chain.ts +1 -1
- package/src/onboarding/first-run.ts +5 -3
- package/src/onboarding/non-interactive.ts +64 -13
- package/src/onboarding.ts +10 -2
- package/src/ops/overview-collect.ts +36 -1
- package/src/ops/overview.ts +70 -2
- package/src/pr-tool/census.ts +41 -8
- package/src/pr-tool/inflight-registry.ts +296 -0
- package/src/prompt-library/gpt6-family-addendum.ts +14 -1
- package/src/pty-shell/herdr-agent-report.ts +442 -0
- package/src/pty-shell/pty-control-ipc.ts +5 -5
- package/src/pty-shell/pty-manifest.ts +12 -3
- package/src/pty-shell/pty-write-outcome.ts +24 -6
- package/src/pty-shell/tui-run-state.ts +151 -6
- package/src/release-loop/checklist.ts +79 -5
- package/src/release-loop/feature-store.ts +19 -2
- package/src/release-loop/placement.ts +10 -3
- package/src/release-loop/rehearsal.ts +205 -25
- package/src/release-loop/rubric.ts +16 -2
- package/src/seat-loop/traffic-signal.ts +2 -1
- package/src/self-dev/ask-launch-flow.ts +13 -0
- package/src/self-dev/draft-residue.ts +243 -24
- package/src/self-dev/draft-sweep.ts +52 -3
- package/src/self-dev/graph-journey-nodes.ts +10 -6
- package/src/self-dev/graph-journey-route.ts +60 -6
- package/src/self-dev/orchestrate.ts +79 -3
- package/src/self-dev/run-supervisor.ts +107 -12
- package/src/self-dev/run-types.ts +5 -1
- package/src/self-dev/shard-plan.ts +11 -3
- package/src/self-dev/shard-run.ts +103 -10
- package/src/self-implement/elanous-tui-spawn.ts +14 -0
- package/src/self-implement/follow-up-placement.ts +79 -0
- package/src/self-implement/gate-artifacts.ts +15 -4
- package/src/self-implement/gate-baseline.ts +145 -10
- package/src/self-implement/gate-cli.ts +7 -2
- package/src/self-implement/gate-remote.ts +35 -6
- package/src/self-implement/goal-author-identity.ts +66 -0
- package/src/self-implement/goal-author-preservation-obligation.ts +35 -0
- package/src/self-implement/goal-author.ts +4 -120
- package/src/self-implement/graph-overlay-yaml.ts +17 -2
- package/src/self-implement/graph-unit-flatten.ts +103 -0
- package/src/self-implement/graph-unit-resolver.ts +107 -0
- package/src/self-implement/graph-yaml.ts +151 -1
- package/src/self-implement/headless-elanous-driver.ts +1 -0
- package/src/self-implement/host-regate.ts +36 -4
- package/src/self-implement/knowhow-pack.ts +103 -0
- package/src/self-implement/orchestrator.ts +109 -11
- package/src/self-implement/pod-warm-pool-profile.ts +45 -0
- package/src/self-implement/review-mustfix-class.ts +203 -0
- package/src/self-implement/run-ledger.ts +16 -14
- package/src/self-implement/run-stop.ts +8 -2
- package/src/self-implement/seams.ts +32 -1
- package/src/self-implement/stop-autoheal.ts +25 -1
- package/src/session/chat.ts +27 -0
- package/src/session-runtime/index.ts +22 -267
- package/src/session-runtime/retry-policy.ts +2 -1
- package/src/shell-runner/background-surface.ts +15 -5
- package/src/skills/tools/agent.ts +39 -6
- package/src/skills/tools/list-dir.ts +11 -0
- package/src/skills/tools/schedule-wakeup.ts +457 -0
- package/src/skills/tools/shell.ts +245 -3
- package/src/status/bar.ts +26 -0
- package/src/steward/digest-delivery.ts +118 -0
- package/src/steward/hold-hygiene.ts +120 -0
- package/src/steward/release-day.ts +7 -3
- package/src/steward/triage.ts +47 -4
- package/src/surface/shell-runner-boot.ts +5 -2
- package/src/task-agent/harvest-unit.ts +141 -0
- package/src/task-agent/live-moves.ts +98 -12
- package/src/task-agent/parent-host.ts +93 -3
- package/src/task-agent/postland-card.ts +80 -1
- package/src/task-agent/rejudge-on-head.ts +112 -26
- package/src/task-agent/repair-branch-cas.ts +4 -1
- package/src/task-agent/repair-cycle.ts +16 -3
- package/src/task-agent/run-identity.ts +4 -3
- package/src/task-agent/shadow.ts +12 -2
- package/src/task-agent/task-hand.ts +76 -5
- package/src/task-agent/work-order-build.ts +22 -0
- package/src/task-orchestrator/surfaces/pod-account-broker.ts +39 -3
- package/src/task-orchestrator/surfaces/pod-command-job.ts +67 -12
- package/src/task-orchestrator/surfaces/pod-lease.ts +98 -0
- package/src/task-orchestrator/surfaces/pod-ledger-events.ts +1 -1
- package/src/task-orchestrator/surfaces/pod-lifecycle-stages.ts +86 -8
- package/src/task-orchestrator/surfaces/pod-pool.ts +76 -18
- package/src/task-orchestrator/surfaces/pod-reuse-cleanup.ts +10 -6
- package/src/task-orchestrator/surfaces/pod-source-receive.ts +54 -4
- package/src/task-orchestrator/surfaces/pod-warm-worker-pod.ts +548 -0
- package/src/task-orchestrator/surfaces/pod-warm-worker-provider.ts +389 -0
- package/src/task-orchestrator/surfaces/pod-warm-worker-runner.ts +90 -0
- package/src/task-orchestrator/surfaces/pod-warm-worker-runtime.ts +158 -3
- package/src/task-orchestrator/surfaces/self-implement-pod.ts +230 -43
- package/src/task-orchestrator/surfaces/self-implement.ts +83 -2
- package/src/tool-runtime/truncation-store.ts +4 -0
- package/src/tui/chat/execution-badge.ts +5 -1
- package/src/tui/input-lag-probe.ts +230 -0
- package/src/tui-client/dashboard-session.ts +10 -1
- package/src/tui.ts +4 -0
- package/src/user-config/coercion.ts +36 -0
- package/src/user-config.ts +18 -41
- package/src/ux-sim/scenario.ts +314 -0
- package/src/version/packed-revision.json +1 -1
- package/apps/pwa/out/_next/static/chunks/1034-8b639cee57b8e4a8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1085-6c2d35526f11f840.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1220.1ff7d5cdc34b1ae5.js +0 -27
- package/apps/pwa/out/_next/static/chunks/1247.5884ec81b39fe2e7.js +0 -287
- package/apps/pwa/out/_next/static/chunks/1302.87681521a7a4661e.js +0 -62
- package/apps/pwa/out/_next/static/chunks/1324-59dae3002413623b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1343-f40b5870ac1eda5a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/146-b6cd56be11dda017.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1654.32de4b324981a188.js +0 -23
- package/apps/pwa/out/_next/static/chunks/1834-50625904996a8fa8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1849.1ce38efa6c527d9a.js +0 -149
- package/apps/pwa/out/_next/static/chunks/1913.7cc6fb6055b1ed3f.js +0 -41
- package/apps/pwa/out/_next/static/chunks/2001.6c7e0fd02190886c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2030.41fae98c7e907304.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2099-08b2f2dfba742c9b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2134.ecee03a550ee7250.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2236.66061832181cb745.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2422.b0bd272e7020d7e6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3040.92ff9ffc9f971cb9.js +0 -115
- package/apps/pwa/out/_next/static/chunks/3144.6861096c7b4edef7.js +0 -64
- package/apps/pwa/out/_next/static/chunks/3267c0e6.d34854e7b3984a6e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3771.e928edf2867d28c0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3902.e1e71aaac850a045.js +0 -34
- package/apps/pwa/out/_next/static/chunks/4063-03284b5de59965f3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4111.2bfedbb233ad206b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4300-c7ec4eeabbb5f3f7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4483.646d5065199e1b55.js +0 -36
- package/apps/pwa/out/_next/static/chunks/4519.28199ff26b2fd80d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4581.ef2443578054544f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4608-8d894e9cbe4f08bf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4639.ae48a01d1bb50a93.js +0 -286
- package/apps/pwa/out/_next/static/chunks/4739.08742ac668aada67.js +0 -77
- package/apps/pwa/out/_next/static/chunks/4882-16cef71d6a1a32be.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4999.c064a4000c2a9e94.js +0 -79
- package/apps/pwa/out/_next/static/chunks/5260-69f35419bca263e7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5272.b92d1b72a15c25fe.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5304.04d24756f242a094.js +0 -148
- package/apps/pwa/out/_next/static/chunks/5415-997980f828667736.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5458-16cd7a2b51b74c8c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5572-42c9084f27ca761e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5661-80470aac963d9f36.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5723.421338408b5c30c4.js +0 -74
- package/apps/pwa/out/_next/static/chunks/5809.64c3664267c50bce.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6000.64bc21ac8627f2f5.js +0 -94
- package/apps/pwa/out/_next/static/chunks/6013.39459b9c68eabf5f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/607-06466dff012b03ef.js +0 -1
- package/apps/pwa/out/_next/static/chunks/60fb96c9.360b01d8d4927b7b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6192.a190b989b81e9743.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6323.8672b4817a306928.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6444.7d1fdcb9b09ae71c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6517.4147878ac06d584d.js +0 -90
- package/apps/pwa/out/_next/static/chunks/6532.e34302010b2f0b68.js +0 -32
- package/apps/pwa/out/_next/static/chunks/6544cb48.a87fe20ddf137be2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6546.74bc4ed82f19016d.js +0 -104
- package/apps/pwa/out/_next/static/chunks/6684-e7523ce7c2fad075.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6726.ebdc82feb161431e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6739.00fb6f892e5e392b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6745.934c4921bf15513a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6767.ea607cf0c20a25af.js +0 -24
- package/apps/pwa/out/_next/static/chunks/6843.67bfd020da0926c5.js +0 -93
- package/apps/pwa/out/_next/static/chunks/6948.1062d4594652b5bf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7138-eaf841fc1dc03463.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7174-cda29ee13d7790e7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7304-3c07583f4e405f4f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7371.80c05c653b08e907.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7391.ebae168025c91b6a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7557.e325503a090a4310.js +0 -8
- package/apps/pwa/out/_next/static/chunks/7569-9ce9432c7f10989f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7886-55854585fadeded1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7947-d0759430f8042240.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8018.a32663f04a6fc5f9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8097-92f87bd108322f66.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8215-1661812b6e9ad71f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8260-19c921a51ca8ec3e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8440.3a5cf5c85aa76db8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8519-4599be2249161e68.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8547.b028b90c5c01ace6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8587-cbe02a953a7f4990.js +0 -1
- package/apps/pwa/out/_next/static/chunks/877-2b977259c4b15655.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9019-0a4b40c50c7314fb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9138.b6e80031afb1d973.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9188-d36e4fc869ddc166.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9230.44f5039e796e4ab4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9279-d28c5b7754d010ae.js +0 -1
- package/apps/pwa/out/_next/static/chunks/939.336acce73e98482c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9610.c07cce4bfcc14ed7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9667-ce78c2ce91050ff9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-339fabb3499da0e1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-bf3634a117322df7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-3535a4a69f1fafaa.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/board/page-b9f51447f757fbf2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/botlab/page-2ebb8fd59b9461f9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/page-a2fc4e49a4fa4ba8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ceo/page-5a503541353e60a8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/chat/page-6025101384e361a5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/consult/page-f4b630cc8b5273cd.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/control/page-a645f00a06483e9a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/decisions/page-61ac22cbab1ee4ec.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-e9bab7413b028b28.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/editor/page-c992eafe028b642e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/exec/page-e547e6ce55f1fb33.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/field/page-d27e1b9850fd54bf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-339fabb3499da0e1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/inside/page-805ac2e137b7a121.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/intake/page-0fec29c7ba01894b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/layout-339a07410cd6f36b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live/page-349f2752d8cd37ad.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live-run/page-d5c6dcf31c25cecc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/loops/page-2fd93ed8c9f16580.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/market/page-9b564dbff0fefc35.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-62f4475d3c38fb9b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/morning/page-814ba51385225776.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/not-found-397d479626e5a459.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-af1bba4e3251b728.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-3ad3be5e7d3fdce9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-f219ccdbc0bf27df.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-4da93ad35d4a8d28.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-456666766e5ce6fc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/page-7404e377e8adb8c5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-14456240ed2a36ad.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-3a658d5fa6d16a25.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-0157de6e85f8bb6b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-841d73d4ac44ed49.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-6f43a3d1146e6377.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-339fabb3499da0e1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/page-521ee23ac8c0abfa.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/share/page-a9992ee285efaa83.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-3d48e85fa89ec04f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-d2ced71132fac9b2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/term/page-f08358bdf251adb9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/today/page-233c71cd5f68f0d7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/trace/page-70151d78de2f375e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/vault/page-dcac33a3e2cb72c0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-149dc1caba411bb9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-0448145ccd5c45c1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-9cb0c444903da65d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-17e504c396e0e389.js +0 -1
- package/apps/pwa/out/_next/static/chunks/e5012ffe.f727e23c231f4342.js +0 -122
- package/apps/pwa/out/_next/static/chunks/ea695e3c-1f1d70d740cf3031.js +0 -1
- package/apps/pwa/out/_next/static/chunks/framework-906af9bd029e166c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-a24847f9f684d469.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-app-7bdcd8aa7c8397d3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_app-6ba46a5066fc226d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_error-a8dc6d07591f2a25.js +0 -1
- package/apps/pwa/out/_next/static/chunks/webpack-f13df28c15c55eee.js +0 -1
- package/apps/pwa/out/_next/static/css/3f5fc6f96e2cf7b2.css +0 -1
- package/src/cli/g6a-registration-probe.ts +0 -16
- /package/apps/pwa/out/_next/static/{LSXfY0u9QtfDbejY0Ukf_ → L04y73dlwKeTW-GetaTF3}/_ssgManifest.js +0 -0
package/src/dashboard/index.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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) => {
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
}
|