comate-cli 0.10.8__tar.gz → 0.10.10__tar.gz

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 (509) hide show
  1. {comate_cli-0.10.8 → comate_cli-0.10.10}/PKG-INFO +1 -1
  2. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/app.py +0 -19
  3. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tui.py +95 -19
  4. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tui_parts/input_behavior.py +9 -0
  5. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tui_parts/render_panels.py +4 -1
  6. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/update_check.py +28 -35
  7. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/update_messages.py +43 -78
  8. {comate_cli-0.10.8 → comate_cli-0.10.10}/docs/startup-performance.md +19 -0
  9. comate_cli-0.10.10/docs/superpowers/plans/2026-07-07-tui-first-repaint-before-sdk-submit.md +734 -0
  10. comate_cli-0.10.10/docs/superpowers/plans/2026-07-07-windows-update-manual-rollback.md +928 -0
  11. {comate_cli-0.10.8 → comate_cli-0.10.10}/pyproject.toml +1 -1
  12. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_app_startup_order.py +0 -1
  13. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_send_undo_window.py +90 -1
  14. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_update_check.py +214 -119
  15. {comate_cli-0.10.8 → comate_cli-0.10.10}/uv.lock +2 -2
  16. comate_cli-0.10.8/comate_cli/terminal_agent/windows_updater.py +0 -442
  17. comate_cli-0.10.8/tests/test_windows_updater.py +0 -458
  18. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/08b40bf6a68c85059572f3478db27d848acd36a6e8c6b89fa5173927210e7b53.json +0 -0
  19. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/0ff4f2f1382d2c19ca8d86e01ee8b6768b2fa925bdcf1e57829cecc590120371.txt +0 -0
  20. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/1571cd767eb43ae39534d8f53f60bd56a2a537a64ecf8b5d93ee7556ea4cbb54.txt +0 -0
  21. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/19ac2280798d9988d4bd8e29952989eabf0749b893d4026bf9786169cd50c659.txt +0 -0
  22. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/24efc545d3f0b694a02cfa8022b8f93be27e57547a4f0661f608c80d9bc78113.txt +0 -0
  23. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/3d69373ac48a465a06bd30094e4c28921c1201865c27dc0f012768799351c10b.txt +0 -0
  24. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/46c7def792f8820aff04a0083057d32079d7ccc208e394eb00a440618f4455ba.json +0 -0
  25. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/594a10eddaf1ea6344dc62d41af7146f6e52471ccf1ee1fba6e61376c3ba5bce.json +0 -0
  26. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/5e4d793a1bc3ae3b2c7fedb39645e04d3bd6a86ceb064ba99746d6164034942d.json +0 -0
  27. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/6a28b28d04d8cf003fc6e41560ad05af138aecfdb0f7f9978bf12a1d3b4e353a.json +0 -0
  28. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/8e9d29f51d07bd7d9cd02aae2cc12c1bd575f3748f6a2b9065dcad75973c1e90.json +0 -0
  29. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/954f324b297d871035343be09391bc7c5e0df38faf3f4a3a92be92685a9ad4e3.txt +0 -0
  30. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/a58d73b67de68741d8e4e9e7d212a7e98a7db0b864113fbd2b9056b166095c85.txt +0 -0
  31. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/b44535f54c0d62ce9f9fa3a673ccff0f6d17086dce54787da0f8ab910c2ed1c9.json +0 -0
  32. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/b8f6674b359865d1c0880633f552a30210a60d30d2c11370e9ab0457f65f75a3.txt +0 -0
  33. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/da3d0964cd50a338b3dedc5212ee6d4d045c04629f62a0e948c905c3ec27ab4c.json +0 -0
  34. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/dfc071d5c7a17280f23b1875b16a0f38ff61736e5985b2c9e3056f741f17bd5d.json +0 -0
  35. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/e12f27ecae32f087ea8696b8061c42facb63a91b2b100568f3602cc2f0b6ce60.json +0 -0
  36. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/bash/fe60ed7a2e79c21b81416fa2e77c827ea64df5ba5b6cd343a9b423731dc15b4d.txt +0 -0
  37. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/glob/dc28800ddef1229e5c0bd125335ab31d85d5f8aba0ff2713d09829671b70f2ec.json +0 -0
  38. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/glob/e6fa077dd5e2e19045abf084f97dcfbcbffc1571967a0243ca40ff996d8bc9f2.json +0 -0
  39. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/010b7d94484960699c5c28b5d2ea86d53c2d998a78141c75b834409de64bf25c.txt +0 -0
  40. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/0193f8465b3eaba72bb4f4f78d0376ca89a09d96e87bb9b63c4543023c6b5516.txt +0 -0
  41. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/03edbaec20870710ae8531b002c837e2c092d53ed8b544d05330cf5fd699dcb4.txt +0 -0
  42. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/09c695b86ba43584b134ed6ee26cbe023f58551e579158cf94790644ad6aaa53.txt +0 -0
  43. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/0b96a0a521f9d4c0a88fc75a2e5f69e4c4b7be8ea5d73599eab390c88d4098d8.txt +0 -0
  44. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/0ba5851c04aaa37f25f6b0a37daa3522754d7865e79b3abf0daf8fca54fc07f7.txt +0 -0
  45. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/0beb89f407f205d5b2fdb075c98869ffa5db8e2a3687706e06399d3f58a3278f.txt +0 -0
  46. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/0bf5d9171b6ec0a61962ae22ce8109a26abf764c031ddd5c8dcad25c678020ec.txt +0 -0
  47. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/0db7a1bd5eb18329885082bc554f4456a5c254b687c25c2b3611a364634badd8.txt +0 -0
  48. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/0dd1a484cf5b506de9a8e85db9c9156e7623bc633c07d8805d83768edf1d1b68.txt +0 -0
  49. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/0f48a977857dc6fe0658c5341b8b409205bb6391cc458d19d18f06b1c37e3b8c.txt +0 -0
  50. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/1194ded949e902bc25be21bfe63952a98381416bed255dc052b6715ebb81f11e.txt +0 -0
  51. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/134f90a9b26f8bbc6fc602c3a1301623823abec5cb8eb9680ea060bea5d78b07.txt +0 -0
  52. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/1461fb3572a606968e5d9738ec65dfe0cf4616ead5696f2b47dd36dd12cd8346.txt +0 -0
  53. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/14f7537d8a7090ad8f6531bd9ecfadd9d727f2bf0c620afde878e8765d596cc8.txt +0 -0
  54. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/176241ffb6774d19531593769c50349debb431f8c888f8e4fb46178af6f8f9e6.txt +0 -0
  55. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/17e25775e4ce9b0fcb34b7af659d7d72f53262b1b59c21190f450c4eda8bb6a2.txt +0 -0
  56. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/1a9cea8b7b788598502df8771b6c03f6b393613e1d911f04959ec59f3b7e9869.txt +0 -0
  57. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/1b2ee53405771f837aa234d5a8d128c3f1fd6f16306ec5c71e30df1a55f0eab8.txt +0 -0
  58. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/1c265542a4a6dac9cdc557ba271a9022d5f5bfa044d7ae4201a302ee59517542.txt +0 -0
  59. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/1dd72f0779d1616cc4683de1565d1cc4242dee18987cfe5c9ead6ec445ab952f.txt +0 -0
  60. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/1f0f6484841d5396cfb19f060ada806f54d62594a2a6f81af4ed70d379bdb82e.txt +0 -0
  61. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/1f4854573b520c1a6e0fb4cd8488263f823a61a6867e4c7d92cdce74b4cb4d1b.txt +0 -0
  62. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/200787ede572c7eee4ff7cd579a936b8ab0ecf6f25bb2f6ac89dbd04fdac1ef7.txt +0 -0
  63. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/22fb4c5aa3fea197c71b90824449eca45095da4bd1c7bc76dbfb689abcd5cc49.txt +0 -0
  64. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/29cd9403e9ab3dac5cc3a95fa0ede278decb57cf7183eaad8e29aed9903aba26.txt +0 -0
  65. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/2aa8195d533da9ee878d5ff7e7c4574ad9dc54c57e85f0be801d9aa5ba7e9d65.txt +0 -0
  66. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/2df4412a93598e76038f722e112a5519bbca58e31a27a471346aecf3c5d486b8.txt +0 -0
  67. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/2f04b6777f986f64bbdcdd828eb4a7fa5aa67872fc0d61e891d2af9ec51a6fb8.txt +0 -0
  68. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/3114f2804efe81842b21a85a4bc9eb2ef9f975c28e9220564e6cd2185fed11f7.txt +0 -0
  69. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/3240cf436c636223d89029d2859dc8b8bbc059ea3b8b9a3cdcececb6e75d6da9.txt +0 -0
  70. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/3a03ca37d32ea15316bb77147116bf8eeaa55ea255b7819f1b6350e80cd38481.txt +0 -0
  71. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/4274f27741d2a37b85ea968754ede69180f59300532f1c8e2c8bcc6cb57d93f8.txt +0 -0
  72. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/42c75defbb53e48d8521927f945412100cd487ad492ee1a57a57df3f64831096.txt +0 -0
  73. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/435267ab04edbf55d21c169170faf8eca36f065abb282e9fd731cbf500763757.txt +0 -0
  74. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/448d3ded3b00200238f3782ed0fb5fbe30166139308cfa6cd3e31867f3cf941e.txt +0 -0
  75. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/449ac499b090311eb8b5594f7646d84f67e9da1fad4ad968b772d4d8ab404141.txt +0 -0
  76. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/45f0d5dda63863f163106fbf234ba98c6b2ba88ee63c308b922b6b18b9d6d179.txt +0 -0
  77. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/48a5ea12ce666954aeb22afab26d199f9ceb7c5db99531077bed0298837a4777.txt +0 -0
  78. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/4d6a33d9eaeb38ed7558b7e0162b399580b211cedefdd2a4126b6363b0616b9a.txt +0 -0
  79. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/54822f93bd0f279a2dc67f57f4b49a549938346f606c3ea62f76573ed7c19729.txt +0 -0
  80. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/5592b8582682415bf399fd16bc4e354a8af6979acc7ee5f7d8161b6a2a090a6e.txt +0 -0
  81. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/5697b946b47f9c271273606510662d25c579a1c3cd66a3f73f845178626adf8c.txt +0 -0
  82. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/571cb6737be8d74e05976da2ba022ea1a5e191bdfeafa40b22834b61aca984ec.txt +0 -0
  83. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/592ea99ad61dc416029a0a68a9ea47c765d706d7ffbae9cd697405da2dd8a9ec.txt +0 -0
  84. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/5c0df9216c4f53dc1c2d786266a137dbe326ab4363ddc40307fb21a00a9f94ac.txt +0 -0
  85. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/5ce22f90e1ec6217b95997fad94cc926c12ffdd6f3ef3e278bf0b89ecbcc6d62.txt +0 -0
  86. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/5dc1de7af87cb4091467bc5f0265745e602853afdc3863c267b6e90a26f412c9.txt +0 -0
  87. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/5fff0b4efc09b785f1ee5dee2e5d7ad4e247bdb9c93f41b5814c9db1c04cb8d7.txt +0 -0
  88. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/6249573679ee1a300a25baec32ea72ee34eeffb45f73f676cc0b0f0d11a2d31d.txt +0 -0
  89. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/6258f866ee46c82b3b4584aafd49625b86793f1324318970124c849013397865.txt +0 -0
  90. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/640e6e9edd64f8ed1f4928e9af1f9890c17386cdbc86d329cc2256628e7c50bb.txt +0 -0
  91. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/643717af84fd6f09302e9656f696f853b85dc10bdd144cc4b3ea064c0ee39056.txt +0 -0
  92. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/65ed38867aa3162db6899d4f1b76907655d6af699cff567e2b776ec997f65b9e.txt +0 -0
  93. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/67196d9894f03b07594d654caf016388b13842a7b3d11466a7b7532727d11bfa.txt +0 -0
  94. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/6c6f4e1f9e1d09af3d8a7c10dd243df92781e6ebbbf4f1215c189d74b7a16e01.txt +0 -0
  95. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/6cfadf5d61982d2bb941416d5fefc22202df0bd4dde584321be50716843f2a4e.txt +0 -0
  96. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/6dbade43d62180ae1367c70744d985615fe64768efba5c77317ea4c349aa7958.txt +0 -0
  97. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/6e20e5b86fbf934bbe180ab38a81e259006f0fc43b4d650820994dea3ead8075.txt +0 -0
  98. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/705ec2d0ab89a76fbc02a18d23d8bf10b26eebd5144911cb398e46e2374524cf.txt +0 -0
  99. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/73f1fdec89c242b1c28093dcc12e830a4467c5c5197286879a25feda693b3ede.txt +0 -0
  100. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/745e2b17c9b412d9d89d380626ceb2eb088b2d24e1a4f26be948061a8daaccdd.txt +0 -0
  101. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/74bf1dc40d9b884a5312567e5bc923389e9bcd10e9efa1eb87a01c50b1e11ef1.txt +0 -0
  102. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/758f6bd9fa04989fe968fb80567eb4a4d028e9dd6ca9c482c0a919a7c9da6dad.txt +0 -0
  103. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/762dfb3969ac05cfd8ed58ea34abea8b4e4756ec5c8ef7496e49bb6f824439af.txt +0 -0
  104. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/7880b26ed67f9abd746b4e5c7ccc009f97a16cc5245b4fb04e9e51faf2e99b43.txt +0 -0
  105. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/7b530ebb0d7be5cb364886c326ac09fedb208520170ec424c0d66f2a049cd735.txt +0 -0
  106. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/7d4e0f51f0fa21846dfda5ceebb79cf53d0e8abf1b2f86ecd09ddf06f85cd3bc.txt +0 -0
  107. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/7d79d72b0ff97ae7703118b1c3edc22a3e9aad968baaeb1210281e1b3e0fdf75.txt +0 -0
  108. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/81d4cf35489f009f64aba1f01c0a9c73ac256391d5369dbbae2b3f92c912afb0.txt +0 -0
  109. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/89124ab34d06feebcf91d5fa7fd8d3f36493f0d62ae79b0f339f87a229333a3b.txt +0 -0
  110. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/8a1456d96d430228501f6c305ba67912312bfdd48b2841e2456160a02498ea5b.txt +0 -0
  111. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/8bc79492c38d7124f4214f0437350fb1cfadaf6635bc4391c69fe64c6e8f6096.txt +0 -0
  112. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/8c95072ee427abdb9a07444bf26dc78e72cf93ed9e898d77dd9aa643f6f5b913.txt +0 -0
  113. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/98060d6195be5fb98d6098eb947853a25a305bce1ebf5a4218ffb791379b9dc6.txt +0 -0
  114. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/98b2832dd79c7972eb441b3102f1f6aa40ccb867d7771ec238142564a3b4a117.txt +0 -0
  115. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/98b76a32c3a05f7d91b8b81518f28b613f7ccb373575858fd6aa2711ddbc382e.txt +0 -0
  116. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/9a5fd2d8be3b1e8ef2343f9a19bd75adba3687b2cb8234ee341d6cdc3ab1f361.txt +0 -0
  117. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/9c80158f162aadb87f84195c4496a1c24f68ceca3535852835de9cf4e428d028.txt +0 -0
  118. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/a9594b8f4f25e5b378fcc883960fa7afb2dea9d80851cb5d52f18d856be95219.txt +0 -0
  119. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/abacaab899684c1677f97720dcfc4a6c1fbf98d2cfa44e25f040959586ccaa20.txt +0 -0
  120. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/ac65e45db9f2c51a484173eb31b907c1cb007c5cacca21396790f5345968ca72.txt +0 -0
  121. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/ac8641710e4c96567edad6364d218a08630ff20af9f075f61c20d013f9369648.txt +0 -0
  122. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/ad798be6fa338bd3ee7fc49048192e39d3b2b78837051208815b817e5ca96793.txt +0 -0
  123. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/b04c0955b68f788125018525e308e82987ada00d3943e21cb159f577319ccf11.txt +0 -0
  124. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/b1b9c6d1eefe14c5076aa214fe4f98242f99ed9b146214d0305224539d8e78a1.txt +0 -0
  125. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/b39bb289db5f9e4f31c67766f5e08333d10f384a2d5f6b71fb44522bc4f17f80.txt +0 -0
  126. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/b64736bbdd8fe7ca1ff2ef98558f16f145ca437255ccebca44bf1041b0afbd55.txt +0 -0
  127. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/b898cd80aa00ebdfda4ef314a4e245e62ee96c21935a7f332243a67b0072d1a0.txt +0 -0
  128. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/c1a4508b9a74b3d1649f25dbd474780e6212ced036bbca6b4aac06d324ff10e9.txt +0 -0
  129. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/c3c33582bb37fb71235e9d0fd2b8d2cc8c926cfcb014261356ea917db6417ebd.txt +0 -0
  130. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/c63907ae1cb41e59de75df3d6e0dff27db2ce2434cac5f283a428e4fd9bee301.txt +0 -0
  131. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/d2402b2d42c975305d4866353935ce285eb67ff7f2a2d74ee9be559d022c86f6.txt +0 -0
  132. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/d4e8e439058ef24fb0671ee6674a5b854c17e0b93b012d2dbe8ed85928afe560.txt +0 -0
  133. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/d8c8f51da7a2bc8977320248883adabe9a4d9da131e99f7dfe18a9c826b1c8b1.txt +0 -0
  134. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/dbd79a71f323da5dc1570d5c8d6b99e73b642128697b6c51ab240379fa74f763.txt +0 -0
  135. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/de09b36cc3fd06274fcdbfc7d431f170afe40b4fa8ddd5c0a281581ee03eabec.txt +0 -0
  136. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/dfd45c97a1da7d27da6790c1b24048f584ed4f831e971cf3f4c366b7d8687980.txt +0 -0
  137. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/e138fb7f4303433003aeeaf67b15d783b253696d3d24fd7dfacc50f619db04fd.txt +0 -0
  138. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/e1ca31c715894314164641ba9d80dc13f7e8e146e8f77a995bc3650057ee3ba3.txt +0 -0
  139. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/e6f0fb5f2688faeaa4875724c32f27e79d8a9710bbb91d2a950b84b3481fc374.txt +0 -0
  140. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/e707578cd4b2132eae2e3bdfa918555c2a8f1f4ac52fd6dbc6fc9a347c44221b.txt +0 -0
  141. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/ea0fc86903a5bd1f02832cc3eed4446d55e16dc7df0298c5d74afa56a89a8ca7.txt +0 -0
  142. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/eab81978291f4725b9433192c5b7f4b5409cdcdeb80ffab9884c79ef230bdcdd.txt +0 -0
  143. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/f04828b2b54922581d7cde5351807a457896b2940fd748e8d706fd5dc4bed971.txt +0 -0
  144. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/f04b4f70fe5292dc485164699342c03f3cf4715ba0d5efa815cb7a332dd78c0b.txt +0 -0
  145. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/f2012bd41aa48cd2e3f56611f32b041bd41863b681a79d5ff5f515a97e7e1ddc.txt +0 -0
  146. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/f35c437708355261ca868cf38ade97384e86f24de9aab20849113dc78eb8564c.txt +0 -0
  147. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/f638dfe4edbde834bd968f4d479c1c535dff1dfac10f3e003ec8673d5eca5864.txt +0 -0
  148. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/f916ed291897b4afb5f8a55f5e333a53f11540e2ade24f691a7828885aa77a32.txt +0 -0
  149. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/fa3b737ee93d45bfff6e78245a5ecad2476dc7010c75c772abc1c272cddae072.txt +0 -0
  150. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/fd1133b3a420133590ffb1c050a65477a4751902ca9b832db1c23a6fb90200b8.txt +0 -0
  151. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/fe3df7b68f7041d210336363f5b11faf963427dbcf4027172e19db05f7b24fa1.txt +0 -0
  152. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/grep_content/ff6b896f93f2ac018a3af519be3001d1e4c8ca6ef9ae3e051aa646b409b6773f.txt +0 -0
  153. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/index.json +0 -0
  154. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/ls/4f2cd109869e06f70f28f7aaaa3163fea4731bbb92dc4da8ac25177d6f122f87.json +0 -0
  155. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/ls/768197391db12061fb74d56cad07e9331db0bd832503b5e40be76b49208a111a.json +0 -0
  156. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/ls/a560ae7492ac913282b703abd48897905727acc058d0f9346b17d450f32e1a8a.json +0 -0
  157. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/01f0c4c39cc01ec7d59077fa8bfca183cbd6c93d0a7083261f228badca115eba.txt +0 -0
  158. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/03079608ffe5b120094798aababb67671a20f8466c0197044eacaea56fa12d30.txt +0 -0
  159. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/08e5d1cdde9e2d6dff5435ee87c6710470709d83c271185eaaaa6d652068d80e.txt +0 -0
  160. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/10f74765725e10bd94d92eb25cea495ea8cb9d9151397b05b200ed44a852d882.txt +0 -0
  161. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/3faa3ddc36161e84da99e18707d61b7ffbbbeb8217c28a55a027134f8def5d17.txt +0 -0
  162. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/45cd4ad764e19e3fc0481b8d8649c235ae51634eb41da0806f9f00ab1bdb640d.txt +0 -0
  163. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/4fdacfc564ff558dd602f672edfbb4a72494d8e3c8937bcf0a3d15e085c4a0b7.txt +0 -0
  164. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/50eb11fb5aa96e54b2a7e68c0b9278ec3c07d222bad92270f4a51df58ca69e03.txt +0 -0
  165. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/5a1f18c61191f6b4c1635363748a2aca49ad2183f046035728b5c23ee3df1123.txt +0 -0
  166. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/72718c187cf24910d3c21d7e719e004efa27b4f5d7315bbe2b9a33e2494cc0f9.txt +0 -0
  167. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/7fa851f7100b6e3e652604de11be2767b7a679aea40e941b0b1218478e5935ed.txt +0 -0
  168. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/9d3ace7b725f6aa5809ca4bc298c5ac3d022cb92c29684c7709d63c9c5fd2ad4.txt +0 -0
  169. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/dbeea3cc8bd22fdb703675e202063e7f4ce21ef00c5c83f74268cd6328ad912d.txt +0 -0
  170. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/tool_result/ea66ecb02621262c26d0368c108d2f2f94e2d1f75dea6b38bf958c5bdbaa2ee7.txt +0 -0
  171. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/webfetch/2669c40a92ce6395790ae997503be646bdc3af4a49f799b38d8380e5ecd1e015.md +0 -0
  172. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/webfetch/5701edea87e370ce51349413bcba507833f48f2ad7337eef3deccc82c7d45a8d.md +0 -0
  173. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/webfetch/5c0eeec3d9ab0a6881d12ebd5a95b6b71b90d47640e38c914232d75704332f54.md +0 -0
  174. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/webfetch/80baa6870df61f51b68fadde829aa2ab889fd487f8a8171db36ea3b67ded24db.md +0 -0
  175. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/webfetch/915acd44f3846631527a3cd62e81d9908bb7e8769b970208ffa3326c65df8778.md +0 -0
  176. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/webfetch/a758c9f6242610e875e36aed11e99ac337359cbe512df15db6544504fa9e68b8.md +0 -0
  177. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/artifacts/webfetch/eca7d820f7461f58ee9b2b1e931842de54cd1ec023eca7a27e3bfb387efc6aa2.md +0 -0
  178. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/scheduled_prompts.json +0 -0
  179. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/SKILL.md +0 -0
  180. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/html2pptx.md +0 -0
  181. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
  182. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
  183. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
  184. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
  185. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
  186. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
  187. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
  188. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
  189. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
  190. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
  191. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
  192. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
  193. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
  194. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
  195. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
  196. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
  197. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
  198. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
  199. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
  200. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
  201. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
  202. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
  203. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
  204. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
  205. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
  206. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
  207. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
  208. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
  209. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
  210. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
  211. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
  212. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/mce/mc.xsd +0 -0
  213. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2010.xsd +0 -0
  214. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2012.xsd +0 -0
  215. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2018.xsd +0 -0
  216. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -0
  217. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -0
  218. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
  219. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -0
  220. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/scripts/pack.py +0 -0
  221. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/scripts/unpack.py +0 -0
  222. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/scripts/validate.py +0 -0
  223. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/scripts/validation/base.py +0 -0
  224. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/scripts/validation/docx.py +0 -0
  225. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/scripts/validation/pptx.py +0 -0
  226. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml/scripts/validation/redlining.py +0 -0
  227. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/references/ooxml.md +0 -0
  228. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/scripts/html2pptx.js +0 -0
  229. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/scripts/inventory.py +0 -0
  230. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/scripts/rearrange.py +0 -0
  231. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/scripts/replace.py +0 -0
  232. {comate_cli-0.10.8 → comate_cli-0.10.10}/.agent/skills/powerpoint/scripts/thumbnail.py +0 -0
  233. {comate_cli-0.10.8 → comate_cli-0.10.10}/.gitignore +0 -0
  234. {comate_cli-0.10.8 → comate_cli-0.10.10}/CHANGELOG.md +0 -0
  235. {comate_cli-0.10.8 → comate_cli-0.10.10}/CONTEXT.md +0 -0
  236. {comate_cli-0.10.8 → comate_cli-0.10.10}/README.md +0 -0
  237. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/__init__.py +0 -0
  238. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/__main__.py +0 -0
  239. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/distribution.py +0 -0
  240. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/main.py +0 -0
  241. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/mcp_cli.py +0 -0
  242. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/__init__.py +0 -0
  243. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/animations.py +0 -0
  244. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/approval_bridge.py +0 -0
  245. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/assistant_render.py +0 -0
  246. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/builtin_commands/.keep +0 -0
  247. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/builtin_commands/implement-plan.md +0 -0
  248. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/builtin_commands/learn.md +0 -0
  249. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/codenames.py +0 -0
  250. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/config/__init__.py +0 -0
  251. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/config/model.py +0 -0
  252. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/config/picker.py +0 -0
  253. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/config/picker_state.py +0 -0
  254. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/config/store.py +0 -0
  255. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/custom_slash_commands.py +0 -0
  256. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/env_utils.py +0 -0
  257. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/error_display.py +0 -0
  258. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/event_renderer.py +0 -0
  259. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/figures.py +0 -0
  260. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/file_ref_hint.py +0 -0
  261. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/fragment_utils.py +0 -0
  262. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/goal_edit_view.py +0 -0
  263. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/goal_resume_view.py +0 -0
  264. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/history_printer.py +0 -0
  265. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/input_geometry.py +0 -0
  266. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/layout_coordinator.py +0 -0
  267. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/logging_adapter.py +0 -0
  268. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/logo.py +0 -0
  269. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/markdown_render.py +0 -0
  270. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/mention_completer.py +0 -0
  271. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/message_style.py +0 -0
  272. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/models.py +0 -0
  273. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/path_context_hint.py +0 -0
  274. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/__init__.py +0 -0
  275. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/components/__init__.py +0 -0
  276. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/components/detail_view.py +0 -0
  277. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/components/plugin_list.py +0 -0
  278. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/components/search_box.py +0 -0
  279. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/components/tab_bar.py +0 -0
  280. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/marketplace_install_view.py +0 -0
  281. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/operation_state.py +0 -0
  282. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/plugin_picker.py +0 -0
  283. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/tabs/__init__.py +0 -0
  284. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/tabs/discover_tab.py +0 -0
  285. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/tabs/errors_tab.py +0 -0
  286. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/tabs/installed_tab.py +0 -0
  287. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/plugins/tabs/marketplaces_tab.py +0 -0
  288. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/preflight.py +0 -0
  289. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/preflight_wizard.py +0 -0
  290. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/print_mode.py +0 -0
  291. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/question_view.py +0 -0
  292. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/recap/__init__.py +0 -0
  293. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/recap/controller.py +0 -0
  294. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/resume_picker.py +0 -0
  295. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/resume_preview.py +0 -0
  296. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/resume_selector.py +0 -0
  297. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/rpc/__init__.py +0 -0
  298. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/rpc/approval.py +0 -0
  299. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/rpc/options.py +0 -0
  300. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/rpc/protocol.py +0 -0
  301. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/rpc/serde.py +0 -0
  302. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/rpc/server.py +0 -0
  303. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/rpc/session_host.py +0 -0
  304. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/rpc/stdin_reader.py +0 -0
  305. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/rpc/stdio.py +0 -0
  306. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/rpc_protocol.py +0 -0
  307. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/rpc_stdio.py +0 -0
  308. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/selection_menu.py +0 -0
  309. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/skill_slash_input.py +0 -0
  310. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/slash_commands.py +0 -0
  311. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/startup.py +0 -0
  312. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/startup_profile.py +0 -0
  313. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/status_bar.py +0 -0
  314. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/statusline/__init__.py +0 -0
  315. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/statusline/model.py +0 -0
  316. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/statusline/picker.py +0 -0
  317. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/statusline/picker_state.py +0 -0
  318. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/statusline/store.py +0 -0
  319. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/text_effects.py +0 -0
  320. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/theme.py +0 -0
  321. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tips.py +0 -0
  322. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tool_approval_view.py +0 -0
  323. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tool_fold.py +0 -0
  324. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tool_result_formatters.py +0 -0
  325. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tool_result_store.py +0 -0
  326. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tool_result_viewer.py +0 -0
  327. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tool_view.py +0 -0
  328. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/transcript_viewer.py +0 -0
  329. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tui_parts/__init__.py +0 -0
  330. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tui_parts/btw_view.py +0 -0
  331. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tui_parts/commands.py +0 -0
  332. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tui_parts/history_sync.py +0 -0
  333. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tui_parts/key_bindings.py +0 -0
  334. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tui_parts/mcp_connecting_view.py +0 -0
  335. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tui_parts/slash_command_registry.py +0 -0
  336. {comate_cli-0.10.8 → comate_cli-0.10.10}/comate_cli/terminal_agent/tui_parts/ui_mode.py +0 -0
  337. {comate_cli-0.10.8 → comate_cli-0.10.10}/dist-comate/.gitignore +0 -0
  338. {comate_cli-0.10.8 → comate_cli-0.10.10}/dist-comate/comate_cli-0.7.10-py3-none-any.whl +0 -0
  339. {comate_cli-0.10.8 → comate_cli-0.10.10}/dist-comate/comate_cli-0.7.10.tar.gz +0 -0
  340. {comate_cli-0.10.8 → comate_cli-0.10.10}/dist-hico/.gitignore +0 -0
  341. {comate_cli-0.10.8 → comate_cli-0.10.10}/dist-hico/hico_cli-0.7.17-py3-none-any.whl +0 -0
  342. {comate_cli-0.10.8 → comate_cli-0.10.10}/dist-hico/hico_cli-0.7.17.tar.gz +0 -0
  343. {comate_cli-0.10.8 → comate_cli-0.10.10}/docs/cli-rpc-stdio-guide.md +0 -0
  344. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/config/__init__.py +0 -0
  345. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/config/test_model.py +0 -0
  346. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/config/test_picker_state.py +0 -0
  347. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/config/test_picker_ui.py +0 -0
  348. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/config/test_roundtrip.py +0 -0
  349. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/config/test_store_load.py +0 -0
  350. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/config/test_store_save.py +0 -0
  351. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/conftest.py +0 -0
  352. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/fixtures/fake_mcp_misbehaving_stdout.py +0 -0
  353. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/recap/test_idle_recap_controller.py +0 -0
  354. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/recap/test_recap_history_rendering.py +0 -0
  355. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/recap/test_tui_idle_recap_integration.py +0 -0
  356. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/statusline/__init__.py +0 -0
  357. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/statusline/test_model.py +0 -0
  358. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/statusline/test_picker_state.py +0 -0
  359. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/statusline/test_store.py +0 -0
  360. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_animations_styles.py +0 -0
  361. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_animator_shuffle.py +0 -0
  362. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_app_mcp_preload.py +0 -0
  363. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_app_preflight_gate.py +0 -0
  364. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_app_print_mode.py +0 -0
  365. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_app_profile_threading.py +0 -0
  366. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_app_pty_smoke.py +0 -0
  367. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_app_shutdown.py +0 -0
  368. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_app_startup_latency.py +0 -0
  369. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_app_token_cost_config.py +0 -0
  370. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_app_usage_line.py +0 -0
  371. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_approval_bridge.py +0 -0
  372. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_btw_slash_command.py +0 -0
  373. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_busy_slash_gating.py +0 -0
  374. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_cli_project_root.py +0 -0
  375. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_compact_command_semantics.py +0 -0
  376. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_completion_context_activation.py +0 -0
  377. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_completion_status_panel.py +0 -0
  378. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_context_command.py +0 -0
  379. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_custom_slash_commands.py +0 -0
  380. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_discover_tab.py +0 -0
  381. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_distribution_contract.py +0 -0
  382. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_errors_tab.py +0 -0
  383. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_event_renderer.py +0 -0
  384. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_event_renderer_approval_wait.py +0 -0
  385. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_event_renderer_boundary.py +0 -0
  386. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_event_renderer_e2e.py +0 -0
  387. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_event_renderer_log_boundary.py +0 -0
  388. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_event_renderer_log_queue.py +0 -0
  389. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_event_renderer_stream_staging.py +0 -0
  390. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_event_renderer_streaming.py +0 -0
  391. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_event_renderer_tool_args_progress.py +0 -0
  392. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_event_renderer_tool_fold.py +0 -0
  393. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_file_ref_hint.py +0 -0
  394. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_format_error.py +0 -0
  395. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_goal_edit_handlers.py +0 -0
  396. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_goal_edit_view.py +0 -0
  397. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_goal_resume_tui.py +0 -0
  398. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_goal_resume_view.py +0 -0
  399. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_goal_slash_command.py +0 -0
  400. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_handle_error.py +0 -0
  401. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_history_drain_throttle.py +0 -0
  402. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_history_printer.py +0 -0
  403. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_history_printer_log.py +0 -0
  404. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_history_printer_styles.py +0 -0
  405. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_history_printer_subtitle_position.py +0 -0
  406. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_history_printer_tool_fold.py +0 -0
  407. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_history_sync.py +0 -0
  408. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_history_sync_tool_fold.py +0 -0
  409. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_import_weight.py +0 -0
  410. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_input_behavior.py +0 -0
  411. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_input_history.py +0 -0
  412. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_installed_tab.py +0 -0
  413. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_interrupt_exit_semantics.py +0 -0
  414. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_layout_coordinator.py +0 -0
  415. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_logging_adapter.py +0 -0
  416. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_logo.py +0 -0
  417. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_main_args.py +0 -0
  418. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_main_args_yolo.py +0 -0
  419. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_main_profile_entry.py +0 -0
  420. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_markdown_render.py +0 -0
  421. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_marketplaces_tab.py +0 -0
  422. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_mcp_cli.py +0 -0
  423. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_mcp_slash_command.py +0 -0
  424. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_mention_completer.py +0 -0
  425. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_menu_cursor_unification.py +0 -0
  426. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_message_style.py +0 -0
  427. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_model_switch_command.py +0 -0
  428. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_no_raw_colors.py +0 -0
  429. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_path_context_hint.py +0 -0
  430. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_permission_mode_cycle.py +0 -0
  431. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_plugin_operation_state.py +0 -0
  432. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_plugin_slash_commands.py +0 -0
  433. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_plugin_tui_components.py +0 -0
  434. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_preflight.py +0 -0
  435. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_preflight_copilot.py +0 -0
  436. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_pty_output_integrity.py +0 -0
  437. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_question_key_bindings.py +0 -0
  438. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_question_view.py +0 -0
  439. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_resume_picker.py +0 -0
  440. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_resume_preview.py +0 -0
  441. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_resume_selector.py +0 -0
  442. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_rewind_command_semantics.py +0 -0
  443. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_rpc_approval.py +0 -0
  444. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_rpc_options.py +0 -0
  445. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_rpc_protocol.py +0 -0
  446. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_rpc_serde.py +0 -0
  447. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_rpc_server_methods.py +0 -0
  448. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_rpc_session_host.py +0 -0
  449. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_rpc_stdin_reader.py +0 -0
  450. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_rpc_stdio_transport.py +0 -0
  451. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_selection_menu.py +0 -0
  452. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_session_query_token_summary.py +0 -0
  453. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_shutdown_noise_guard.py +0 -0
  454. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_shutdown_noise_integration.py +0 -0
  455. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_skill_slash_input.py +0 -0
  456. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_skills_slash_command.py +0 -0
  457. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_slash_argument_hint.py +0 -0
  458. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_slash_clear.py +0 -0
  459. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_slash_completer.py +0 -0
  460. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_slash_registry.py +0 -0
  461. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_startup_import_budget.py +0 -0
  462. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_startup_profile.py +0 -0
  463. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_status_bar.py +0 -0
  464. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_status_bar_transient.py +0 -0
  465. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_stream_staging_panel.py +0 -0
  466. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_style_class_coverage.py +0 -0
  467. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_task_panel_format.py +0 -0
  468. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_task_panel_key_bindings.py +0 -0
  469. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_task_panel_rendering.py +0 -0
  470. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_task_poll.py +0 -0
  471. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_theme.py +0 -0
  472. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tips.py +0 -0
  473. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tool_approval_key_bindings.py +0 -0
  474. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tool_approval_tui.py +0 -0
  475. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tool_approval_view.py +0 -0
  476. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tool_fold.py +0 -0
  477. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tool_fold_panel.py +0 -0
  478. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tool_result_formatters.py +0 -0
  479. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tool_result_store.py +0 -0
  480. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tool_result_viewer.py +0 -0
  481. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tool_result_viewer_key_bindings.py +0 -0
  482. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tool_view.py +0 -0
  483. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tool_view_styles.py +0 -0
  484. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_transcript_viewer.py +0 -0
  485. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_transcript_viewer_tool_fold.py +0 -0
  486. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_builtin_slash_chain.py +0 -0
  487. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_elapsed_status.py +0 -0
  488. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_esc_queue.py +0 -0
  489. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_llm_retry_panel.py +0 -0
  490. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_local_interactive_barrier.py +0 -0
  491. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_mcp_init_gate.py +0 -0
  492. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_paste_newline_guard.py +0 -0
  493. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_paste_placeholder.py +0 -0
  494. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_provider_error_shield.py +0 -0
  495. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_queue_preview.py +0 -0
  496. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_queue_sdk_source.py +0 -0
  497. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_scheduled_fire_log.py +0 -0
  498. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_split_invariance.py +0 -0
  499. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_startup_latency.py +0 -0
  500. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_team_messages.py +0 -0
  501. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_thinking_display.py +0 -0
  502. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_tool_result_registry_lifecycle.py +0 -0
  503. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_tui_window_too_small_fallback.py +0 -0
  504. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_usage_command.py +0 -0
  505. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_wellformed_terminal_input.py +0 -0
  506. {comate_cli-0.10.8 → comate_cli-0.10.10}/tests/test_wrap_user_text.py +0 -0
  507. {comate_cli-0.10.8 → comate_cli-0.10.10}/tools/logo_lab.py +0 -0
  508. {comate_cli-0.10.8 → comate_cli-0.10.10}/tools/nico_preview.py +0 -0
  509. {comate_cli-0.10.8 → comate_cli-0.10.10}/tools/startup_bench.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: comate-cli
3
- Version: 0.10.8
3
+ Version: 0.10.10
4
4
  Summary: Comate terminal CLI built on comate-agent-sdk
5
5
  Project-URL: Homepage, https://github.com/AndyLee1024/agent-sdk
6
6
  Project-URL: Repository, https://github.com/AndyLee1024/agent-sdk
@@ -105,23 +105,6 @@ async def _handle_update_on_launch(
105
105
  return False
106
106
 
107
107
 
108
- def _show_startup_update_result(target: UpdateTarget) -> None:
109
- """Display a detached updater result file if one exists."""
110
- try:
111
- from comate_cli.terminal_agent.windows_updater import (
112
- consume_update_result,
113
- format_update_result_message,
114
- )
115
-
116
- result = consume_update_result(target.package)
117
- if result is None:
118
- return
119
- style = "green" if result.status == "success" else "yellow"
120
- console.print(f"[{style}]{format_update_result_message(result, target=target)}[/]")
121
- except Exception:
122
- logger.debug("startup update result display failed", exc_info=True)
123
-
124
-
125
108
  async def _handle_background_update_on_launch(
126
109
  info: UpdateInfo,
127
110
  *,
@@ -788,8 +771,6 @@ async def run(
788
771
  return
789
772
 
790
773
  if interactive:
791
- _show_startup_update_result(update_target)
792
-
793
774
  _check_update_func, get_pending_update_prompt_info = _import_update_check_core()
794
775
  pending_info = get_pending_update_prompt_info(target=update_target)
795
776
  if pending_info is not None:
@@ -10,7 +10,7 @@ import logging
10
10
  import random
11
11
  import time
12
12
  from collections.abc import Callable
13
- from contextlib import suppress
13
+ from contextlib import nullcontext, suppress
14
14
  from dataclasses import dataclass
15
15
  from pathlib import Path
16
16
  from typing import Any
@@ -48,6 +48,7 @@ from comate_agent_sdk.agent.events import (
48
48
  from comate_agent_sdk.agent.recap import generate_recap
49
49
  from comate_agent_sdk.agent.goal_state import GoalStatus
50
50
  from comate_agent_sdk.agent.queue_types import MessageOrigin
51
+ from comate_agent_sdk.utils.first_turn_profile import FirstTurnProfiler
51
52
 
52
53
  from comate_cli.terminal_agent.animations import (
53
54
  DEFAULT_STATUS_PHRASES,
@@ -232,6 +233,7 @@ class TerminalAgentTUI(
232
233
  self._session = session
233
234
  self._approval_bridge = approval_bridge
234
235
  self._yolo = yolo
236
+ self._first_turn_profiler = FirstTurnProfiler.from_env(logger=logger).child("tui")
235
237
  self._status_bar = status_bar
236
238
  try:
237
239
  self._status_bar.set_mode(self._current_permission_mode())
@@ -275,6 +277,7 @@ class TerminalAgentTUI(
275
277
  self._compact_cancel_requested = False
276
278
  self._pending_exit_after_compact_cancel = False
277
279
  self._queued_display_by_message_id: dict[str, str] = {}
280
+ self._submitted_queue_preview_suppressed_ids: set[str] = set()
278
281
  self._waiting_for_input = False
279
282
  self._pending_questions: list[dict[str, Any]] | None = None
280
283
  self._ui_mode = UIMode.NORMAL
@@ -1351,17 +1354,20 @@ class TerminalAgentTUI(
1351
1354
  submit_text: str,
1352
1355
  display_text: str,
1353
1356
  ) -> None:
1357
+ self._first_turn_mark("enter_staging.start")
1354
1358
  if self._staging_payload is not None:
1355
1359
  if bool(getattr(self, "_staging_submitted", False)):
1356
1360
  self._flush_staging_to_scrollback()
1357
1361
  else:
1358
1362
  self._commit_staging()
1359
1363
 
1364
+ with self._first_turn_span("enter_staging.compute_file_ref_hints"):
1365
+ file_ref_hints = tuple(self._renderer.compute_file_ref_hints(display_text))
1360
1366
  self._staging_payload = _StagedMessagePayload(
1361
1367
  raw_text=raw_text,
1362
1368
  submit_text=submit_text,
1363
1369
  display_text=display_text,
1364
- file_ref_hints=tuple(self._renderer.compute_file_ref_hints(display_text)),
1370
+ file_ref_hints=file_ref_hints,
1365
1371
  )
1366
1372
  self._staging_deadline = None
1367
1373
  self._staging_recallable = True
@@ -1378,6 +1384,7 @@ class TerminalAgentTUI(
1378
1384
  self._schedule_background(self._animation_controller.start())
1379
1385
  self._render_dirty = True
1380
1386
  self._invalidate()
1387
+ self._first_turn_mark("enter_staging.done")
1381
1388
 
1382
1389
  def _recall_latest_turn_after_interrupt(self) -> bool:
1383
1390
  if not bool(getattr(self, "_pending_latest_recall_on_interrupt", False)):
@@ -1456,10 +1463,13 @@ class TerminalAgentTUI(
1456
1463
  return False
1457
1464
 
1458
1465
  def _commit_staging(self) -> bool:
1466
+ self._first_turn_mark("commit_staging.start")
1459
1467
  payload = self._staging_payload
1460
1468
  if payload is None:
1469
+ self._first_turn_mark("commit_staging.no_payload")
1461
1470
  return False
1462
1471
  if bool(getattr(self, "_staging_submitted", False)):
1472
+ self._first_turn_mark("commit_staging.already_submitted")
1463
1473
  return False
1464
1474
 
1465
1475
  # 不在此处清除 staging — 延迟到 _drain_history_async 的 run_in_terminal
@@ -1473,19 +1483,38 @@ class TerminalAgentTUI(
1473
1483
  self._render_dirty = True
1474
1484
  self._invalidate()
1475
1485
  self._schedule_background(self._queue_staged_busy_message(payload))
1486
+ self._first_turn_mark("commit_staging.scheduled_busy_queue")
1476
1487
  else:
1477
1488
  self._staging_deadline = None
1478
1489
  self._staging_recallable = False
1479
1490
  self._staging_submitted = True
1480
1491
  self._schedule_background(
1481
- self._submit_user_message(
1492
+ self._submit_staged_user_message_after_first_repaint(
1482
1493
  payload.submit_text,
1483
1494
  display_text=payload.display_text,
1484
1495
  defer_user_seed=True,
1485
1496
  )
1486
1497
  )
1498
+ self._first_turn_mark("commit_staging.scheduled_submit")
1499
+ self._first_turn_mark("commit_staging.done")
1487
1500
  return True
1488
1501
 
1502
+ async def _submit_staged_user_message_after_first_repaint(
1503
+ self,
1504
+ text: str,
1505
+ *,
1506
+ display_text: str | None,
1507
+ defer_user_seed: bool,
1508
+ ) -> None:
1509
+ self._first_turn_mark("submit_staged.yield_for_first_repaint.start")
1510
+ await asyncio.sleep(0)
1511
+ self._first_turn_mark("submit_staged.yield_for_first_repaint.done")
1512
+ await self._submit_user_message(
1513
+ text,
1514
+ display_text=display_text,
1515
+ defer_user_seed=defer_user_seed,
1516
+ )
1517
+
1489
1518
  async def _queue_staged_busy_message(self, payload: _StagedMessagePayload) -> None:
1490
1519
  try:
1491
1520
  message_id = await self._session.send(payload.submit_text)
@@ -1588,10 +1617,12 @@ class TerminalAgentTUI(
1588
1617
  defer_user_seed: bool = False,
1589
1618
  allow_latest_recall_on_interrupt: bool = True,
1590
1619
  ) -> None:
1620
+ self._first_turn_mark("submit_user_message.start")
1591
1621
  if self._busy:
1592
1622
  self._renderer.append_system_message(
1593
1623
  "A task is currently running. Please wait.", severity="error"
1594
1624
  )
1625
+ self._first_turn_mark("submit_user_message.rejected_busy")
1595
1626
  return
1596
1627
 
1597
1628
  if self._ui_mode == UIMode.QUESTION:
@@ -1601,6 +1632,7 @@ class TerminalAgentTUI(
1601
1632
  self._interrupt_requested_at = None
1602
1633
 
1603
1634
  self._set_busy(True)
1635
+ self._first_turn_mark("submit_user_message.busy_set")
1604
1636
  self._allow_latest_recall_on_interrupt = allow_latest_recall_on_interrupt
1605
1637
  self._run_start_time = time.monotonic()
1606
1638
  self._waiting_for_input = False
@@ -1628,29 +1660,42 @@ class TerminalAgentTUI(
1628
1660
  )
1629
1661
  self._last_turn_user_preview = preview_text
1630
1662
  self._refresh_layers()
1663
+ self._first_turn_mark("submit_user_message.layers_refreshed")
1631
1664
 
1632
1665
  # 启动提交动画
1633
1666
  await self._animation_controller.start()
1667
+ self._first_turn_mark("submit_user_message.animation_started")
1634
1668
 
1635
1669
  # @path context hint injection
1636
- try:
1637
- path_hint_source = (
1638
- text.provider_content
1639
- if isinstance(text, RenderedAuthoredTurnInput)
1640
- else text
1641
- )
1642
- hint = (
1643
- build_path_context_hint(path_hint_source, Path.cwd())
1644
- if isinstance(path_hint_source, str)
1645
- else None
1646
- )
1647
- if hint is not None:
1648
- self._session._agent._context.add_system_reminder_message(hint)
1649
- except Exception:
1650
- logger.debug("path context hint injection failed", exc_info=True)
1670
+ with self._first_turn_span("submit_user_message.path_context_hint"):
1671
+ try:
1672
+ path_hint_source = (
1673
+ text.provider_content
1674
+ if isinstance(text, RenderedAuthoredTurnInput)
1675
+ else text
1676
+ )
1677
+ hint = (
1678
+ build_path_context_hint(path_hint_source, Path.cwd())
1679
+ if isinstance(path_hint_source, str)
1680
+ else None
1681
+ )
1682
+ if hint is not None:
1683
+ self._session._agent._context.add_system_reminder_message(hint)
1684
+ except Exception:
1685
+ logger.debug("path context hint injection failed", exc_info=True)
1651
1686
 
1652
1687
  try:
1653
- await self._session.send(text)
1688
+ with self._first_turn_span("submit_user_message.session_send"):
1689
+ message_id = await self._session.send(text)
1690
+ suppressed_ids = getattr(
1691
+ self,
1692
+ "_submitted_queue_preview_suppressed_ids",
1693
+ None,
1694
+ )
1695
+ if not isinstance(suppressed_ids, set):
1696
+ suppressed_ids = set()
1697
+ self._submitted_queue_preview_suppressed_ids = suppressed_ids
1698
+ suppressed_ids.add(str(message_id))
1654
1699
  except Exception as exc:
1655
1700
  logger.exception("send failed")
1656
1701
  await self._handle_error(exc)
@@ -1674,6 +1719,17 @@ class TerminalAgentTUI(
1674
1719
  QueueDirtyReason.CANCELLED,
1675
1720
  QueueDirtyReason.CLEARED,
1676
1721
  }:
1722
+ suppressed_ids = getattr(
1723
+ self,
1724
+ "_submitted_queue_preview_suppressed_ids",
1725
+ None,
1726
+ )
1727
+ if isinstance(suppressed_ids, set):
1728
+ if event.reason is QueueDirtyReason.CLEARED:
1729
+ suppressed_ids.clear()
1730
+ else:
1731
+ for message_id in event.message_ids:
1732
+ suppressed_ids.discard(str(message_id))
1677
1733
  for message_id in event.message_ids:
1678
1734
  self._queued_display_by_message_id.pop(
1679
1735
  str(message_id),
@@ -1681,8 +1737,15 @@ class TerminalAgentTUI(
1681
1737
  )
1682
1738
  self._clear_queued_admission_busy_if_stale()
1683
1739
  if event.reason is QueueDirtyReason.CONSUMED:
1740
+ suppressed_ids = getattr(
1741
+ self,
1742
+ "_submitted_queue_preview_suppressed_ids",
1743
+ None,
1744
+ )
1684
1745
  consumed_human_displays: list[str] = []
1685
1746
  for message_id, origin in zip(event.message_ids, event.origins):
1747
+ if isinstance(suppressed_ids, set):
1748
+ suppressed_ids.discard(str(message_id))
1686
1749
  if origin is not MessageOrigin.HUMAN:
1687
1750
  continue
1688
1751
  display_text = self._queued_display_by_message_id.pop(
@@ -1919,6 +1982,19 @@ class TerminalAgentTUI(
1919
1982
 
1920
1983
  task.add_done_callback(_done)
1921
1984
 
1985
+ def _first_turn_mark(self, phase: str) -> None:
1986
+ profiler = getattr(self, "_first_turn_profiler", None)
1987
+ mark = getattr(profiler, "mark", None)
1988
+ if callable(mark):
1989
+ mark(phase)
1990
+
1991
+ def _first_turn_span(self, phase: str) -> Any:
1992
+ profiler = getattr(self, "_first_turn_profiler", None)
1993
+ span = getattr(profiler, "span", None)
1994
+ if callable(span):
1995
+ return span(phase)
1996
+ return nullcontext()
1997
+
1922
1998
  def _start_mention_cache_warmup(self) -> None:
1923
1999
  mention_completer = getattr(self, "_mention_completer", None)
1924
2000
  start_warmup = getattr(mention_completer, "start_deep_cache_warmup", None)
@@ -20,6 +20,9 @@ from comate_cli.terminal_agent.tui_parts.ui_mode import UIMode
20
20
 
21
21
 
22
22
  class InputBehaviorMixin:
23
+ def _first_turn_mark(self, phase: str) -> None:
24
+ del phase
25
+
23
26
  def _sync_local_interactive_ui_barrier(self) -> None:
24
27
  return
25
28
 
@@ -454,15 +457,19 @@ class InputBehaviorMixin:
454
457
  return True
455
458
 
456
459
  def _submit_from_input(self) -> None:
460
+ self._first_turn_mark("input.submit_from_input.start")
457
461
  if self._ui_mode != UIMode.NORMAL:
462
+ self._first_turn_mark("input.submit_from_input.non_normal_mode")
458
463
  return
459
464
 
460
465
  raw_text = self._input_area.text
461
466
  display_text, submit_text = self._resolve_submit_texts(raw_text)
462
467
  if not submit_text.strip():
463
468
  if bool(getattr(self, "_staging_submitted", False)):
469
+ self._first_turn_mark("input.submit_from_input.empty_submitted_staging")
464
470
  return
465
471
  self._commit_staging()
472
+ self._first_turn_mark("input.submit_from_input.done")
466
473
  return
467
474
 
468
475
  recall_text = raw_text
@@ -514,6 +521,7 @@ class InputBehaviorMixin:
514
521
 
515
522
  if raw_text.startswith("/"):
516
523
  self._schedule_background(self._execute_command(display_text.strip()))
524
+ self._first_turn_mark("input.submit_from_input.slash_scheduled")
517
525
  return
518
526
 
519
527
  previous_staging_payload = getattr(self, "_staging_payload", None)
@@ -528,3 +536,4 @@ class InputBehaviorMixin:
528
536
  and current_staging_payload is not previous_staging_payload
529
537
  ):
530
538
  self._commit_staging()
539
+ self._first_turn_mark("input.submit_from_input.done")
@@ -28,7 +28,6 @@ from comate_cli.terminal_agent.figures import (
28
28
  DOWN_ARROW,
29
29
  ELLIPSIS,
30
30
  FAST_PLAY_ICON,
31
- PAUSE_ICON,
32
31
  TASK_IN_PROGRESS,
33
32
  TASK_PENDING,
34
33
  TASK_BLOCKED,
@@ -169,10 +168,14 @@ class RenderPanelsMixin:
169
168
  except Exception:
170
169
  logger.debug("failed to read queue preview snapshot", exc_info=True)
171
170
  return []
171
+ suppressed_ids = getattr(self, "_submitted_queue_preview_suppressed_ids", set())
172
+ if not isinstance(suppressed_ids, set):
173
+ suppressed_ids = set()
172
174
  return [
173
175
  message
174
176
  for message in snapshot
175
177
  if getattr(message, "origin", None) == MessageOrigin.HUMAN
178
+ and str(getattr(message, "message_id", "")) not in suppressed_ids
176
179
  ]
177
180
 
178
181
  def _visible_queued_message_ids(self) -> set[str] | None:
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  import asyncio
4
4
  import contextlib
5
5
  import importlib.metadata
6
- import locale
7
6
  import logging
8
7
  import os
9
8
  import ssl
@@ -105,6 +104,25 @@ class UpdateTarget:
105
104
  )
106
105
 
107
106
 
107
+ def windows_update_command(target: UpdateTarget) -> tuple[str, ...]:
108
+ """Windows manual update command with venv repair via --reinstall."""
109
+ return (
110
+ "uv",
111
+ "tool",
112
+ "install",
113
+ f"{target.package}@latest",
114
+ "--force",
115
+ "--reinstall",
116
+ "--refresh-package",
117
+ target.package,
118
+ *target.install_args,
119
+ )
120
+
121
+
122
+ def windows_update_command_text(target: UpdateTarget) -> str:
123
+ return " ".join(windows_update_command(target))
124
+
125
+
108
126
  @dataclass(frozen=True, slots=True)
109
127
  class UpdateInfo:
110
128
  package: str
@@ -154,21 +172,15 @@ def _coerce_update_target(
154
172
 
155
173
 
156
174
  def _is_chinese_locale() -> bool:
157
- """判断当前系统 locale 是否为中文环境。"""
158
- # zh_tw(台湾)和 zh_hk(香港)不走清华镜像源
175
+ """判断当前系统 locale 是否为中国大陆简体环境(决定是否走清华镜像源)。"""
176
+ from comate_cli.terminal_agent.update_messages import system_locale_candidates
177
+
178
+ # zh_tw(台湾)和 zh_hk(香港)不走清华镜像源;OR 语义:任一来源为中文即用镜像。
159
179
  cn_prefixes = ("zh_cn", "zh_sg", "zh_mo", "zh_hans")
160
- for env_var in ("LC_ALL", "LC_MESSAGES", "LANG", "LANGUAGE"):
161
- val = os.environ.get(env_var, "").lower()
162
- if any(val.startswith(prefix) for prefix in cn_prefixes):
180
+ for candidate in system_locale_candidates():
181
+ value = candidate.lower()
182
+ if any(value.startswith(prefix) for prefix in cn_prefixes):
163
183
  return True
164
- try:
165
- lang, _ = locale.getlocale()
166
- if lang:
167
- lang_lower = lang.lower()
168
- if any(lang_lower.startswith(prefix) for prefix in cn_prefixes):
169
- return True
170
- except Exception:
171
- pass
172
184
  return False
173
185
 
174
186
 
@@ -411,8 +423,6 @@ def format_update_hint(info: UpdateInfo, target: UpdateTarget | None = None) ->
411
423
  is_windows = sys.platform == "win32"
412
424
  command = _format_update_command(update_target)
413
425
  if is_windows:
414
- from comate_cli.terminal_agent.windows_updater import windows_update_command_text
415
-
416
426
  command = windows_update_command_text(update_target)
417
427
  hint_template = messages.windows_hint if is_windows else messages.hint
418
428
  return hint_template.format(
@@ -595,34 +605,17 @@ async def run_update_command(
595
605
  command_text = " ".join(command)
596
606
  messages = get_update_messages()
597
607
  if sys.platform == "win32":
598
- from comate_cli.terminal_agent.windows_updater import (
599
- spawn_detached_updater,
600
- windows_update_command_text,
601
- )
602
-
603
- windows_command_text = windows_update_command_text(update_target)
604
-
605
- if spawn_detached_updater(info, target=update_target):
606
- console.out(
607
- messages.windows_update_scheduled.format(
608
- product=update_target.product_label,
609
- latest=info.latest_version,
610
- current=info.current_version,
611
- ),
612
- end="\n",
613
- )
614
- return True
615
608
  console.out(
616
609
  messages.windows_manual_update.format(
617
610
  product=update_target.product_label,
618
611
  package=update_target.package,
619
- command=windows_command_text,
612
+ command=windows_update_command_text(update_target),
620
613
  current=info.current_version,
621
614
  latest=info.latest_version,
622
615
  ),
623
616
  end="\n",
624
617
  )
625
- return False
618
+ return True
626
619
 
627
620
  console.print(f"Updating {update_target.product_label} via `{command_text}`...")
628
621
 
@@ -1,9 +1,13 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import locale
4
+ import logging
4
5
  import os
6
+ import sys
5
7
  from dataclasses import dataclass
6
8
 
9
+ logger = logging.getLogger(__name__)
10
+
7
11
 
8
12
  @dataclass(frozen=True, slots=True)
9
13
  class UpdateMessages:
@@ -16,10 +20,6 @@ class UpdateMessages:
16
20
  skip_until_next_version_label: str
17
21
  continue_label: str
18
22
  windows_manual_update: str
19
- windows_update_scheduled: str
20
- windows_update_result_success: str
21
- windows_update_result_failed: str
22
- windows_update_result_timeout: str
23
23
  success: str
24
24
  failure: str
25
25
 
@@ -35,7 +35,7 @@ _MESSAGES: dict[str, UpdateMessages] = {
35
35
  "Close {product}, then run `{command}` in a new CMD or PowerShell to update."
36
36
  ),
37
37
  title="✨ Update available! {current} -> {latest}",
38
- show_update_command_label="Update now (completes after exit)",
38
+ show_update_command_label="Show update command and exit",
39
39
  update_now_label="Update now (runs `{command}`)",
40
40
  skip_label="Skip",
41
41
  skip_until_next_version_label="Skip until next version",
@@ -48,23 +48,6 @@ _MESSAGES: dict[str, UpdateMessages] = {
48
48
  "uv tool uninstall {package}\n\n"
49
49
  "Then run the install command again."
50
50
  ),
51
- windows_update_scheduled=(
52
- "🚀 Background update scheduled: {product} will update to {latest} "
53
- "automatically once this {product} process exits. "
54
- "The result will be shown on next launch."
55
- ),
56
- windows_update_result_success=(
57
- "🎉 {product} was updated to {latest} in the background (previous: {current})."
58
- ),
59
- windows_update_result_failed=(
60
- "Background update to {latest} failed (exit code {code}). Close all {product} "
61
- "windows and run `{command}` in a new CMD or PowerShell to update manually."
62
- ),
63
- windows_update_result_timeout=(
64
- "Background update to {latest} did not run: {product} did not finish "
65
- 'shutting down before the wait limit. Choose "Update now" again, or run '
66
- "`{command}` manually."
67
- ),
68
51
  success="🎉 Update ran successfully! Please restart {product}.",
69
52
  failure=(
70
53
  "Update failed with exit code {code}. The current installation may still "
@@ -81,7 +64,7 @@ _MESSAGES: dict[str, UpdateMessages] = {
81
64
  "请关闭 {product},然后在新的 CMD 或 PowerShell 中运行 `{command}` 更新。"
82
65
  ),
83
66
  title="✨ 发现新版本!{current} -> {latest}",
84
- show_update_command_label="立即更新(退出后自动完成)",
67
+ show_update_command_label="显示更新命令并退出",
85
68
  update_now_label="立即更新(运行 `{command}`)",
86
69
  skip_label="跳过",
87
70
  skip_until_next_version_label="跳过此版本",
@@ -94,21 +77,6 @@ _MESSAGES: dict[str, UpdateMessages] = {
94
77
  "uv tool uninstall {package}\n\n"
95
78
  "然后再次运行安装命令。"
96
79
  ),
97
- windows_update_scheduled=(
98
- "🚀 已安排后台更新:当前 {product} 进程退出后将自动升级到 {latest},"
99
- "结果将在下次启动时显示。"
100
- ),
101
- windows_update_result_success=(
102
- "🎉 {product} 已在后台自动更新到 {latest}(原 {current})。"
103
- ),
104
- windows_update_result_failed=(
105
- "后台更新到 {latest} 失败(退出码 {code})。请关闭所有 {product} 窗口后,"
106
- "在新的 CMD 或 PowerShell 中运行 `{command}` 手动更新。"
107
- ),
108
- windows_update_result_timeout=(
109
- "后台更新到 {latest} 未执行:{product} 退出未完成,等待超时。"
110
- "可再次选择“立即更新”,或手动运行 `{command}`。"
111
- ),
112
80
  success="🎉 更新命令已成功执行!请重启 {product}。",
113
81
  failure=(
114
82
  "更新失败,退出码:{code}。当前安装可能仍可使用;如果 {product} "
@@ -125,7 +93,7 @@ _MESSAGES: dict[str, UpdateMessages] = {
125
93
  "請關閉 {product},然後在新的 CMD 或 PowerShell 中執行 `{command}` 更新。"
126
94
  ),
127
95
  title="✨ 發現新版本!{current} -> {latest}",
128
- show_update_command_label="立即更新(結束後自動完成)",
96
+ show_update_command_label="顯示更新命令並退出",
129
97
  update_now_label="立即更新(執行 `{command}`)",
130
98
  skip_label="略過",
131
99
  skip_until_next_version_label="略過此版本",
@@ -138,21 +106,6 @@ _MESSAGES: dict[str, UpdateMessages] = {
138
106
  "uv tool uninstall {package}\n\n"
139
107
  "然後再次執行安裝命令。"
140
108
  ),
141
- windows_update_scheduled=(
142
- "🚀 已排定背景更新:目前 {product} 程序結束後將自動升級到 {latest},"
143
- "結果將於下次啟動時顯示。"
144
- ),
145
- windows_update_result_success=(
146
- "🎉 {product} 已在背景自動更新到 {latest}(原 {current})。"
147
- ),
148
- windows_update_result_failed=(
149
- "背景更新到 {latest} 失敗(結束碼 {code})。請關閉所有 {product} 視窗後,"
150
- "在新的 CMD 或 PowerShell 中執行 `{command}` 手動更新。"
151
- ),
152
- windows_update_result_timeout=(
153
- "背景更新到 {latest} 未執行:{product} 結束未完成,等待逾時。"
154
- "可再次選擇「立即更新」,或手動執行 `{command}`。"
155
- ),
156
109
  success="🎉 更新命令已成功執行!請重新啟動 {product}。",
157
110
  failure=(
158
111
  "更新失敗,結束碼:{code}。目前安裝可能仍可使用;如果 {product} "
@@ -169,7 +122,7 @@ _MESSAGES: dict[str, UpdateMessages] = {
169
122
  "{product} を閉じてから、新しい CMD または PowerShell で `{command}` を実行してください。"
170
123
  ),
171
124
  title="✨ 新しいバージョンがあります!{current} -> {latest}",
172
- show_update_command_label="今すぐ更新(終了後に自動実行)",
125
+ show_update_command_label="更新コマンドを表示して終了",
173
126
  update_now_label="今すぐ更新(`{command}` を実行)",
174
127
  skip_label="スキップ",
175
128
  skip_until_next_version_label="このバージョンをスキップ",
@@ -182,23 +135,6 @@ _MESSAGES: dict[str, UpdateMessages] = {
182
135
  "uv tool uninstall {package}\n\n"
183
136
  "その後、インストールコマンドをもう一度実行してください。"
184
137
  ),
185
- windows_update_scheduled=(
186
- "🚀 バックグラウンド更新を予約しました:現在の {product} プロセスが終了すると"
187
- "自動的に {latest} へ更新されます。結果は次回起動時に表示されます。"
188
- ),
189
- windows_update_result_success=(
190
- "🎉 {product} はバックグラウンドで {latest} に更新されました(以前:{current})。"
191
- ),
192
- windows_update_result_failed=(
193
- "{latest} へのバックグラウンド更新に失敗しました(終了コード {code})。"
194
- "すべての {product} ウィンドウを閉じてから、新しい CMD または PowerShell で `{command}` "
195
- "を実行して手動で更新してください。"
196
- ),
197
- windows_update_result_timeout=(
198
- "{latest} へのバックグラウンド更新は実行されませんでした:{product} が"
199
- "待機時間内に終了しませんでした。もう一度「今すぐ更新」を選ぶか、"
200
- "`{command}` を手動で実行してください。"
201
- ),
202
138
  success="🎉 更新コマンドが正常に完了しました。{product} を再起動してください。",
203
139
  failure=(
204
140
  "更新に失敗しました。終了コード:{code}。現在のインストールはまだ使える"
@@ -209,16 +145,45 @@ _MESSAGES: dict[str, UpdateMessages] = {
209
145
  }
210
146
 
211
147
 
212
- def detect_update_locale() -> str:
148
+ def _windows_ui_locale() -> str | None:
149
+ """Return the Windows user UI locale string, or None when unavailable."""
150
+ if sys.platform != "win32":
151
+ return None
152
+ try:
153
+ import ctypes
154
+
155
+ lang_id = ctypes.windll.kernel32.GetUserDefaultUILanguage()
156
+ return locale.windows_locale.get(lang_id)
157
+ except Exception:
158
+ logger.debug("windows UI locale detection failed", exc_info=True)
159
+ return None
160
+
161
+
162
+ def system_locale_candidates() -> list[str]:
163
+ """Return non-empty locale candidates in user-intent priority order."""
164
+ candidates: list[str] = []
213
165
  for env_var in ("LC_ALL", "LC_MESSAGES", "LANG", "LANGUAGE"):
214
- normalized = _normalize_locale(os.environ.get(env_var))
215
- if normalized:
216
- return normalized
166
+ value = os.environ.get(env_var)
167
+ if value:
168
+ candidates.append(value)
169
+ windows_locale = _windows_ui_locale()
170
+ if windows_locale:
171
+ candidates.append(windows_locale)
217
172
  try:
218
173
  lang, _encoding = locale.getlocale()
219
174
  except Exception:
220
- return "en"
221
- return _normalize_locale(lang) or "en"
175
+ lang = None
176
+ if lang:
177
+ candidates.append(lang)
178
+ return candidates
179
+
180
+
181
+ def detect_update_locale() -> str:
182
+ for candidate in system_locale_candidates():
183
+ normalized = _normalize_locale(candidate)
184
+ if normalized:
185
+ return normalized
186
+ return "en"
222
187
 
223
188
 
224
189
  def get_update_messages(locale_key: str | None = None) -> UpdateMessages: