comate-cli 0.12.1__tar.gz → 0.12.2__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 (689) hide show
  1. {comate_cli-0.12.1 → comate_cli-0.12.2}/PKG-INFO +2 -2
  2. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/config/picker.py +1 -7
  3. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/effort_menu.py +111 -9
  4. comate_cli-0.12.2/comate_cli/terminal_agent/effort_ruler.py +428 -0
  5. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/effort_style.py +12 -4
  6. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/i18n/_en.py +7 -1
  7. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/i18n/_ja.py +7 -1
  8. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/i18n/_zh.py +7 -1
  9. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/i18n/message.py +6 -0
  10. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/selection_menu.py +0 -2
  11. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/slash_commands.py +2 -2
  12. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/status_bar.py +4 -1
  13. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/statusline/picker.py +1 -7
  14. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/theme.py +10 -0
  15. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui.py +25 -4
  16. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/commands.py +101 -29
  17. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/input_behavior.py +5 -1
  18. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/key_bindings.py +35 -8
  19. {comate_cli-0.12.1 → comate_cli-0.12.2}/pyproject.toml +2 -2
  20. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/config/test_picker_ui.py +4 -2
  21. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_effort_menu.py +84 -0
  22. comate_cli-0.12.2/tests/test_effort_ruler.py +211 -0
  23. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_effort_slash_command.py +202 -16
  24. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_effort_style.py +10 -0
  25. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_modal_panel_visibility.py +25 -0
  26. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_question_key_bindings.py +12 -7
  27. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_status_bar.py +12 -0
  28. {comate_cli-0.12.1 → comate_cli-0.12.2}/uv.lock +2 -2
  29. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/08b40bf6a68c85059572f3478db27d848acd36a6e8c6b89fa5173927210e7b53.json +0 -0
  30. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/0ff4f2f1382d2c19ca8d86e01ee8b6768b2fa925bdcf1e57829cecc590120371.txt +0 -0
  31. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/1571cd767eb43ae39534d8f53f60bd56a2a537a64ecf8b5d93ee7556ea4cbb54.txt +0 -0
  32. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/19ac2280798d9988d4bd8e29952989eabf0749b893d4026bf9786169cd50c659.txt +0 -0
  33. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/24efc545d3f0b694a02cfa8022b8f93be27e57547a4f0661f608c80d9bc78113.txt +0 -0
  34. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/3d69373ac48a465a06bd30094e4c28921c1201865c27dc0f012768799351c10b.txt +0 -0
  35. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/46c7def792f8820aff04a0083057d32079d7ccc208e394eb00a440618f4455ba.json +0 -0
  36. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/594a10eddaf1ea6344dc62d41af7146f6e52471ccf1ee1fba6e61376c3ba5bce.json +0 -0
  37. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/5e4d793a1bc3ae3b2c7fedb39645e04d3bd6a86ceb064ba99746d6164034942d.json +0 -0
  38. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/6a28b28d04d8cf003fc6e41560ad05af138aecfdb0f7f9978bf12a1d3b4e353a.json +0 -0
  39. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/8e9d29f51d07bd7d9cd02aae2cc12c1bd575f3748f6a2b9065dcad75973c1e90.json +0 -0
  40. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/954f324b297d871035343be09391bc7c5e0df38faf3f4a3a92be92685a9ad4e3.txt +0 -0
  41. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/a58d73b67de68741d8e4e9e7d212a7e98a7db0b864113fbd2b9056b166095c85.txt +0 -0
  42. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/b44535f54c0d62ce9f9fa3a673ccff0f6d17086dce54787da0f8ab910c2ed1c9.json +0 -0
  43. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/b8f6674b359865d1c0880633f552a30210a60d30d2c11370e9ab0457f65f75a3.txt +0 -0
  44. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/da3d0964cd50a338b3dedc5212ee6d4d045c04629f62a0e948c905c3ec27ab4c.json +0 -0
  45. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/dfc071d5c7a17280f23b1875b16a0f38ff61736e5985b2c9e3056f741f17bd5d.json +0 -0
  46. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/e12f27ecae32f087ea8696b8061c42facb63a91b2b100568f3602cc2f0b6ce60.json +0 -0
  47. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/bash/fe60ed7a2e79c21b81416fa2e77c827ea64df5ba5b6cd343a9b423731dc15b4d.txt +0 -0
  48. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/glob/dc28800ddef1229e5c0bd125335ab31d85d5f8aba0ff2713d09829671b70f2ec.json +0 -0
  49. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/glob/e6fa077dd5e2e19045abf084f97dcfbcbffc1571967a0243ca40ff996d8bc9f2.json +0 -0
  50. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/010b7d94484960699c5c28b5d2ea86d53c2d998a78141c75b834409de64bf25c.txt +0 -0
  51. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/0193f8465b3eaba72bb4f4f78d0376ca89a09d96e87bb9b63c4543023c6b5516.txt +0 -0
  52. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/021a341ef368f43394d1e54f24c5865c84aa9f6cbaeec777d0a09ca5431af82b.txt +0 -0
  53. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/03edbaec20870710ae8531b002c837e2c092d53ed8b544d05330cf5fd699dcb4.txt +0 -0
  54. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/0499bd5aca13709d7ad1c6ad597adf8ca169359342fec01b6dacb83005854de1.txt +0 -0
  55. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/09c695b86ba43584b134ed6ee26cbe023f58551e579158cf94790644ad6aaa53.txt +0 -0
  56. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/0b96a0a521f9d4c0a88fc75a2e5f69e4c4b7be8ea5d73599eab390c88d4098d8.txt +0 -0
  57. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/0ba5851c04aaa37f25f6b0a37daa3522754d7865e79b3abf0daf8fca54fc07f7.txt +0 -0
  58. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/0beb89f407f205d5b2fdb075c98869ffa5db8e2a3687706e06399d3f58a3278f.txt +0 -0
  59. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/0bf5d9171b6ec0a61962ae22ce8109a26abf764c031ddd5c8dcad25c678020ec.txt +0 -0
  60. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/0db7a1bd5eb18329885082bc554f4456a5c254b687c25c2b3611a364634badd8.txt +0 -0
  61. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/0dd1a484cf5b506de9a8e85db9c9156e7623bc633c07d8805d83768edf1d1b68.txt +0 -0
  62. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/0f48a977857dc6fe0658c5341b8b409205bb6391cc458d19d18f06b1c37e3b8c.txt +0 -0
  63. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/1194ded949e902bc25be21bfe63952a98381416bed255dc052b6715ebb81f11e.txt +0 -0
  64. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/134f90a9b26f8bbc6fc602c3a1301623823abec5cb8eb9680ea060bea5d78b07.txt +0 -0
  65. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/1461fb3572a606968e5d9738ec65dfe0cf4616ead5696f2b47dd36dd12cd8346.txt +0 -0
  66. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/14d7326d6dc701ca7e331efa97cede45e6b53b98c5f1a784d438db4bccb2853a.txt +0 -0
  67. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/14f7537d8a7090ad8f6531bd9ecfadd9d727f2bf0c620afde878e8765d596cc8.txt +0 -0
  68. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/176241ffb6774d19531593769c50349debb431f8c888f8e4fb46178af6f8f9e6.txt +0 -0
  69. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/17e25775e4ce9b0fcb34b7af659d7d72f53262b1b59c21190f450c4eda8bb6a2.txt +0 -0
  70. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/1a9cea8b7b788598502df8771b6c03f6b393613e1d911f04959ec59f3b7e9869.txt +0 -0
  71. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/1b2ee53405771f837aa234d5a8d128c3f1fd6f16306ec5c71e30df1a55f0eab8.txt +0 -0
  72. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/1c265542a4a6dac9cdc557ba271a9022d5f5bfa044d7ae4201a302ee59517542.txt +0 -0
  73. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/1cf1dda756728f6ba6712be0349c949ac8487d9515bfd8f8941cd53fd96bea76.txt +0 -0
  74. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/1dd72f0779d1616cc4683de1565d1cc4242dee18987cfe5c9ead6ec445ab952f.txt +0 -0
  75. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/1f0f6484841d5396cfb19f060ada806f54d62594a2a6f81af4ed70d379bdb82e.txt +0 -0
  76. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/1f4854573b520c1a6e0fb4cd8488263f823a61a6867e4c7d92cdce74b4cb4d1b.txt +0 -0
  77. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/200787ede572c7eee4ff7cd579a936b8ab0ecf6f25bb2f6ac89dbd04fdac1ef7.txt +0 -0
  78. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/212ec2839d46d8d2f64dbbb9e0a4ed8b962178113fe8dfc1f29ccbc02fd46e14.txt +0 -0
  79. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/22fb4c5aa3fea197c71b90824449eca45095da4bd1c7bc76dbfb689abcd5cc49.txt +0 -0
  80. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/2932089e3759921321ff908eb7998bb849c234380e04f3f7a5171fc9f432ef2f.txt +0 -0
  81. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/29cd9403e9ab3dac5cc3a95fa0ede278decb57cf7183eaad8e29aed9903aba26.txt +0 -0
  82. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/2aa8195d533da9ee878d5ff7e7c4574ad9dc54c57e85f0be801d9aa5ba7e9d65.txt +0 -0
  83. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/2df4412a93598e76038f722e112a5519bbca58e31a27a471346aecf3c5d486b8.txt +0 -0
  84. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/2f04b6777f986f64bbdcdd828eb4a7fa5aa67872fc0d61e891d2af9ec51a6fb8.txt +0 -0
  85. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/3114f2804efe81842b21a85a4bc9eb2ef9f975c28e9220564e6cd2185fed11f7.txt +0 -0
  86. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/3240cf436c636223d89029d2859dc8b8bbc059ea3b8b9a3cdcececb6e75d6da9.txt +0 -0
  87. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/3a03ca37d32ea15316bb77147116bf8eeaa55ea255b7819f1b6350e80cd38481.txt +0 -0
  88. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/3b2c13e633a6c9633f53342cc76ec87e4863d24fde2312e88b1bd546e194666f.txt +0 -0
  89. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/4274f27741d2a37b85ea968754ede69180f59300532f1c8e2c8bcc6cb57d93f8.txt +0 -0
  90. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/42c75defbb53e48d8521927f945412100cd487ad492ee1a57a57df3f64831096.txt +0 -0
  91. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/435267ab04edbf55d21c169170faf8eca36f065abb282e9fd731cbf500763757.txt +0 -0
  92. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/448d3ded3b00200238f3782ed0fb5fbe30166139308cfa6cd3e31867f3cf941e.txt +0 -0
  93. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/449ac499b090311eb8b5594f7646d84f67e9da1fad4ad968b772d4d8ab404141.txt +0 -0
  94. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/45f0d5dda63863f163106fbf234ba98c6b2ba88ee63c308b922b6b18b9d6d179.txt +0 -0
  95. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/48a5ea12ce666954aeb22afab26d199f9ceb7c5db99531077bed0298837a4777.txt +0 -0
  96. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/4d6a33d9eaeb38ed7558b7e0162b399580b211cedefdd2a4126b6363b0616b9a.txt +0 -0
  97. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/54822f93bd0f279a2dc67f57f4b49a549938346f606c3ea62f76573ed7c19729.txt +0 -0
  98. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/5529a626789de692d52c89bc7fc6a60cf8f97522641ca7c20459f76a3107f841.txt +0 -0
  99. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/5592b8582682415bf399fd16bc4e354a8af6979acc7ee5f7d8161b6a2a090a6e.txt +0 -0
  100. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/5697b946b47f9c271273606510662d25c579a1c3cd66a3f73f845178626adf8c.txt +0 -0
  101. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/571cb6737be8d74e05976da2ba022ea1a5e191bdfeafa40b22834b61aca984ec.txt +0 -0
  102. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/592ea99ad61dc416029a0a68a9ea47c765d706d7ffbae9cd697405da2dd8a9ec.txt +0 -0
  103. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/5c0df9216c4f53dc1c2d786266a137dbe326ab4363ddc40307fb21a00a9f94ac.txt +0 -0
  104. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/5ce22f90e1ec6217b95997fad94cc926c12ffdd6f3ef3e278bf0b89ecbcc6d62.txt +0 -0
  105. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/5dc1de7af87cb4091467bc5f0265745e602853afdc3863c267b6e90a26f412c9.txt +0 -0
  106. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/5e648bf7034fb52a2216f915aa95cfa96f6f5038e27f521266a23f2d800fa5bc.txt +0 -0
  107. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/5fff0b4efc09b785f1ee5dee2e5d7ad4e247bdb9c93f41b5814c9db1c04cb8d7.txt +0 -0
  108. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/6249573679ee1a300a25baec32ea72ee34eeffb45f73f676cc0b0f0d11a2d31d.txt +0 -0
  109. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/6258f866ee46c82b3b4584aafd49625b86793f1324318970124c849013397865.txt +0 -0
  110. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/640e6e9edd64f8ed1f4928e9af1f9890c17386cdbc86d329cc2256628e7c50bb.txt +0 -0
  111. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/643717af84fd6f09302e9656f696f853b85dc10bdd144cc4b3ea064c0ee39056.txt +0 -0
  112. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/65ed38867aa3162db6899d4f1b76907655d6af699cff567e2b776ec997f65b9e.txt +0 -0
  113. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/67196d9894f03b07594d654caf016388b13842a7b3d11466a7b7532727d11bfa.txt +0 -0
  114. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/6775046194b93d29bf37cb7185f9b808ebd4938f14659e76bfe2daf6dcbbb135.txt +0 -0
  115. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/68ac5bf6206064b6d2d7c44f800cc58795c9ea0362132c438fa33c53b9586aa9.txt +0 -0
  116. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/6c6f4e1f9e1d09af3d8a7c10dd243df92781e6ebbbf4f1215c189d74b7a16e01.txt +0 -0
  117. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/6cfadf5d61982d2bb941416d5fefc22202df0bd4dde584321be50716843f2a4e.txt +0 -0
  118. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/6dbade43d62180ae1367c70744d985615fe64768efba5c77317ea4c349aa7958.txt +0 -0
  119. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/6e20e5b86fbf934bbe180ab38a81e259006f0fc43b4d650820994dea3ead8075.txt +0 -0
  120. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/705ec2d0ab89a76fbc02a18d23d8bf10b26eebd5144911cb398e46e2374524cf.txt +0 -0
  121. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/73f1fdec89c242b1c28093dcc12e830a4467c5c5197286879a25feda693b3ede.txt +0 -0
  122. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/745e2b17c9b412d9d89d380626ceb2eb088b2d24e1a4f26be948061a8daaccdd.txt +0 -0
  123. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/74bf1dc40d9b884a5312567e5bc923389e9bcd10e9efa1eb87a01c50b1e11ef1.txt +0 -0
  124. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/758f6bd9fa04989fe968fb80567eb4a4d028e9dd6ca9c482c0a919a7c9da6dad.txt +0 -0
  125. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/762dfb3969ac05cfd8ed58ea34abea8b4e4756ec5c8ef7496e49bb6f824439af.txt +0 -0
  126. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/7880b26ed67f9abd746b4e5c7ccc009f97a16cc5245b4fb04e9e51faf2e99b43.txt +0 -0
  127. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/7b530ebb0d7be5cb364886c326ac09fedb208520170ec424c0d66f2a049cd735.txt +0 -0
  128. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/7d4e0f51f0fa21846dfda5ceebb79cf53d0e8abf1b2f86ecd09ddf06f85cd3bc.txt +0 -0
  129. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/7d79d72b0ff97ae7703118b1c3edc22a3e9aad968baaeb1210281e1b3e0fdf75.txt +0 -0
  130. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/7f6ae5a9bc2404aef026b13c8a360c1c687ea1c1509b65429239928d9f8560bb.txt +0 -0
  131. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/81d4cf35489f009f64aba1f01c0a9c73ac256391d5369dbbae2b3f92c912afb0.txt +0 -0
  132. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/8261ffc4381d4293b7675eabe7956c75c75890e45387cbfba52dd2f1fdb12939.txt +0 -0
  133. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/84edad480d7623c75eb5026afb01a8381f7ed22a15ba43ddb89107821ece3893.txt +0 -0
  134. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/89124ab34d06feebcf91d5fa7fd8d3f36493f0d62ae79b0f339f87a229333a3b.txt +0 -0
  135. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/8a1456d96d430228501f6c305ba67912312bfdd48b2841e2456160a02498ea5b.txt +0 -0
  136. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/8bc79492c38d7124f4214f0437350fb1cfadaf6635bc4391c69fe64c6e8f6096.txt +0 -0
  137. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/8c95072ee427abdb9a07444bf26dc78e72cf93ed9e898d77dd9aa643f6f5b913.txt +0 -0
  138. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/8df1e210850f75543f8fb545a963ec57b161dca48a8deba2241611dd6b9fd4eb.txt +0 -0
  139. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/9388950ba2ced7980db5beb500eec752bdf25fbe59b6a95ed8c3bee218e5fb58.txt +0 -0
  140. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/97081bbfef1b6bbdfa1d160d122767a871db324afd40d2f3c625f9cd8b2e23f3.txt +0 -0
  141. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/98060d6195be5fb98d6098eb947853a25a305bce1ebf5a4218ffb791379b9dc6.txt +0 -0
  142. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/98b2832dd79c7972eb441b3102f1f6aa40ccb867d7771ec238142564a3b4a117.txt +0 -0
  143. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/98b76a32c3a05f7d91b8b81518f28b613f7ccb373575858fd6aa2711ddbc382e.txt +0 -0
  144. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/9a5fd2d8be3b1e8ef2343f9a19bd75adba3687b2cb8234ee341d6cdc3ab1f361.txt +0 -0
  145. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/9c80158f162aadb87f84195c4496a1c24f68ceca3535852835de9cf4e428d028.txt +0 -0
  146. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/9d34f05ccc7150bc7a1878d112f08fafbaa4d4e420dbd7f1129dc1046c697e39.txt +0 -0
  147. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/a9594b8f4f25e5b378fcc883960fa7afb2dea9d80851cb5d52f18d856be95219.txt +0 -0
  148. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/aa8a10a861a188abbbbbe27b7a52f539442bb273a1ad9b1aa1c31910cfad5561.txt +0 -0
  149. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/abacaab899684c1677f97720dcfc4a6c1fbf98d2cfa44e25f040959586ccaa20.txt +0 -0
  150. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/ac65e45db9f2c51a484173eb31b907c1cb007c5cacca21396790f5345968ca72.txt +0 -0
  151. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/ac8641710e4c96567edad6364d218a08630ff20af9f075f61c20d013f9369648.txt +0 -0
  152. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/ac94d3b218537471b6ac89a8da0c454d9d25801ffd4c88ea862bf0893c5e0812.txt +0 -0
  153. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/ad798be6fa338bd3ee7fc49048192e39d3b2b78837051208815b817e5ca96793.txt +0 -0
  154. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/b04c0955b68f788125018525e308e82987ada00d3943e21cb159f577319ccf11.txt +0 -0
  155. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/b1b9c6d1eefe14c5076aa214fe4f98242f99ed9b146214d0305224539d8e78a1.txt +0 -0
  156. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/b28aa6d5d336c7da99b72949fa0e09580cde07499cb1d7e611f14e2b426fb9fe.txt +0 -0
  157. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/b39bb289db5f9e4f31c67766f5e08333d10f384a2d5f6b71fb44522bc4f17f80.txt +0 -0
  158. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/b64736bbdd8fe7ca1ff2ef98558f16f145ca437255ccebca44bf1041b0afbd55.txt +0 -0
  159. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/b898cd80aa00ebdfda4ef314a4e245e62ee96c21935a7f332243a67b0072d1a0.txt +0 -0
  160. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/b9c8c69d370fcd4291d5d1ed72b9f823df340a9d4f904c3965cca93c257294f2.txt +0 -0
  161. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/c11eb234db46678fa7ac871e396a067c238bd37414fad52e3be433933ffe7878.txt +0 -0
  162. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/c1a4508b9a74b3d1649f25dbd474780e6212ced036bbca6b4aac06d324ff10e9.txt +0 -0
  163. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/c3c33582bb37fb71235e9d0fd2b8d2cc8c926cfcb014261356ea917db6417ebd.txt +0 -0
  164. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/c42bd0a52664189ec6fafa76458456048c5c73907bbadddd205371b55def9393.txt +0 -0
  165. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/c63907ae1cb41e59de75df3d6e0dff27db2ce2434cac5f283a428e4fd9bee301.txt +0 -0
  166. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/d2402b2d42c975305d4866353935ce285eb67ff7f2a2d74ee9be559d022c86f6.txt +0 -0
  167. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/d4e8e439058ef24fb0671ee6674a5b854c17e0b93b012d2dbe8ed85928afe560.txt +0 -0
  168. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/d8c8f51da7a2bc8977320248883adabe9a4d9da131e99f7dfe18a9c826b1c8b1.txt +0 -0
  169. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/db71617421ab524615206740825824b73f3c407c93a18e2a01d8c80789c02b3c.txt +0 -0
  170. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/dbd79a71f323da5dc1570d5c8d6b99e73b642128697b6c51ab240379fa74f763.txt +0 -0
  171. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/de09b36cc3fd06274fcdbfc7d431f170afe40b4fa8ddd5c0a281581ee03eabec.txt +0 -0
  172. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/dfd45c97a1da7d27da6790c1b24048f584ed4f831e971cf3f4c366b7d8687980.txt +0 -0
  173. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/e138fb7f4303433003aeeaf67b15d783b253696d3d24fd7dfacc50f619db04fd.txt +0 -0
  174. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/e1ca31c715894314164641ba9d80dc13f7e8e146e8f77a995bc3650057ee3ba3.txt +0 -0
  175. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/e6f0fb5f2688faeaa4875724c32f27e79d8a9710bbb91d2a950b84b3481fc374.txt +0 -0
  176. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/e707578cd4b2132eae2e3bdfa918555c2a8f1f4ac52fd6dbc6fc9a347c44221b.txt +0 -0
  177. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/e74f8ab779842b213be16f0a58ee7c973c6a4eb4e7c6b56b4087e3016183f8ef.txt +0 -0
  178. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/e80bedeb209049fe7a38ade5aa7976dc3fe2ecbeb6cd150a8fa44489172d6e9b.txt +0 -0
  179. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/ea0fc86903a5bd1f02832cc3eed4446d55e16dc7df0298c5d74afa56a89a8ca7.txt +0 -0
  180. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/eab81978291f4725b9433192c5b7f4b5409cdcdeb80ffab9884c79ef230bdcdd.txt +0 -0
  181. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/ef7bd4368558b2b411c410c936554d99ecc0f2fe647a970208f8b0c986e3921c.txt +0 -0
  182. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/f04828b2b54922581d7cde5351807a457896b2940fd748e8d706fd5dc4bed971.txt +0 -0
  183. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/f04b4f70fe5292dc485164699342c03f3cf4715ba0d5efa815cb7a332dd78c0b.txt +0 -0
  184. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/f0b079f5b4d5a0be065ccb03a2471835cab5b3fd4452439bbd3bf46d401d8a3a.txt +0 -0
  185. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/f2012bd41aa48cd2e3f56611f32b041bd41863b681a79d5ff5f515a97e7e1ddc.txt +0 -0
  186. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/f35c437708355261ca868cf38ade97384e86f24de9aab20849113dc78eb8564c.txt +0 -0
  187. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/f638dfe4edbde834bd968f4d479c1c535dff1dfac10f3e003ec8673d5eca5864.txt +0 -0
  188. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/f916ed291897b4afb5f8a55f5e333a53f11540e2ade24f691a7828885aa77a32.txt +0 -0
  189. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/fa3b737ee93d45bfff6e78245a5ecad2476dc7010c75c772abc1c272cddae072.txt +0 -0
  190. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/fd1133b3a420133590ffb1c050a65477a4751902ca9b832db1c23a6fb90200b8.txt +0 -0
  191. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/fe3df7b68f7041d210336363f5b11faf963427dbcf4027172e19db05f7b24fa1.txt +0 -0
  192. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/ff07c3d10b81977aa6c7769465dbab4754e11bd84225afba1b17eff2824ad28d.txt +0 -0
  193. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/grep_content/ff6b896f93f2ac018a3af519be3001d1e4c8ca6ef9ae3e051aa646b409b6773f.txt +0 -0
  194. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/index.json +0 -0
  195. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/ls/4f2cd109869e06f70f28f7aaaa3163fea4731bbb92dc4da8ac25177d6f122f87.json +0 -0
  196. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/ls/768197391db12061fb74d56cad07e9331db0bd832503b5e40be76b49208a111a.json +0 -0
  197. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/ls/a560ae7492ac913282b703abd48897905727acc058d0f9346b17d450f32e1a8a.json +0 -0
  198. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/01f0c4c39cc01ec7d59077fa8bfca183cbd6c93d0a7083261f228badca115eba.txt +0 -0
  199. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/03079608ffe5b120094798aababb67671a20f8466c0197044eacaea56fa12d30.txt +0 -0
  200. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/08e5d1cdde9e2d6dff5435ee87c6710470709d83c271185eaaaa6d652068d80e.txt +0 -0
  201. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/10f74765725e10bd94d92eb25cea495ea8cb9d9151397b05b200ed44a852d882.txt +0 -0
  202. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/3faa3ddc36161e84da99e18707d61b7ffbbbeb8217c28a55a027134f8def5d17.txt +0 -0
  203. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/45cd4ad764e19e3fc0481b8d8649c235ae51634eb41da0806f9f00ab1bdb640d.txt +0 -0
  204. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/4fdacfc564ff558dd602f672edfbb4a72494d8e3c8937bcf0a3d15e085c4a0b7.txt +0 -0
  205. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/50eb11fb5aa96e54b2a7e68c0b9278ec3c07d222bad92270f4a51df58ca69e03.txt +0 -0
  206. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/5a1f18c61191f6b4c1635363748a2aca49ad2183f046035728b5c23ee3df1123.txt +0 -0
  207. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/72718c187cf24910d3c21d7e719e004efa27b4f5d7315bbe2b9a33e2494cc0f9.txt +0 -0
  208. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/7fa851f7100b6e3e652604de11be2767b7a679aea40e941b0b1218478e5935ed.txt +0 -0
  209. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/9d3ace7b725f6aa5809ca4bc298c5ac3d022cb92c29684c7709d63c9c5fd2ad4.txt +0 -0
  210. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/dbeea3cc8bd22fdb703675e202063e7f4ce21ef00c5c83f74268cd6328ad912d.txt +0 -0
  211. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/tool_result/ea66ecb02621262c26d0368c108d2f2f94e2d1f75dea6b38bf958c5bdbaa2ee7.txt +0 -0
  212. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/webfetch/2669c40a92ce6395790ae997503be646bdc3af4a49f799b38d8380e5ecd1e015.md +0 -0
  213. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/webfetch/5701edea87e370ce51349413bcba507833f48f2ad7337eef3deccc82c7d45a8d.md +0 -0
  214. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/webfetch/5c0eeec3d9ab0a6881d12ebd5a95b6b71b90d47640e38c914232d75704332f54.md +0 -0
  215. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/webfetch/80baa6870df61f51b68fadde829aa2ab889fd487f8a8171db36ea3b67ded24db.md +0 -0
  216. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/webfetch/915acd44f3846631527a3cd62e81d9908bb7e8769b970208ffa3326c65df8778.md +0 -0
  217. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/webfetch/a758c9f6242610e875e36aed11e99ac337359cbe512df15db6544504fa9e68b8.md +0 -0
  218. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/artifacts/webfetch/eca7d820f7461f58ee9b2b1e931842de54cd1ec023eca7a27e3bfb387efc6aa2.md +0 -0
  219. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/scheduled_prompts.json +0 -0
  220. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/SKILL.md +0 -0
  221. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/html2pptx.md +0 -0
  222. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
  223. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
  224. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
  225. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
  226. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
  227. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
  228. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
  229. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
  230. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
  231. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
  232. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
  233. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
  234. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
  235. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
  236. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
  237. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
  238. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
  239. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
  240. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
  241. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
  242. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
  243. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
  244. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
  245. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
  246. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
  247. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
  248. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
  249. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
  250. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
  251. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
  252. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
  253. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/mce/mc.xsd +0 -0
  254. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2010.xsd +0 -0
  255. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2012.xsd +0 -0
  256. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2018.xsd +0 -0
  257. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -0
  258. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -0
  259. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
  260. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -0
  261. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/scripts/pack.py +0 -0
  262. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/scripts/unpack.py +0 -0
  263. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/scripts/validate.py +0 -0
  264. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/scripts/validation/base.py +0 -0
  265. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/scripts/validation/docx.py +0 -0
  266. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/scripts/validation/pptx.py +0 -0
  267. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml/scripts/validation/redlining.py +0 -0
  268. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/references/ooxml.md +0 -0
  269. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/scripts/html2pptx.js +0 -0
  270. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/scripts/inventory.py +0 -0
  271. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/scripts/rearrange.py +0 -0
  272. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/scripts/replace.py +0 -0
  273. {comate_cli-0.12.1 → comate_cli-0.12.2}/.agent/skills/powerpoint/scripts/thumbnail.py +0 -0
  274. {comate_cli-0.12.1 → comate_cli-0.12.2}/.gitignore +0 -0
  275. {comate_cli-0.12.1 → comate_cli-0.12.2}/CHANGELOG.md +0 -0
  276. {comate_cli-0.12.1 → comate_cli-0.12.2}/CONTEXT.md +0 -0
  277. {comate_cli-0.12.1 → comate_cli-0.12.2}/README.md +0 -0
  278. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/__init__.py +0 -0
  279. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/__main__.py +0 -0
  280. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/device_identity.py +0 -0
  281. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/distribution.py +0 -0
  282. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/main.py +0 -0
  283. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/mcp_cli.py +0 -0
  284. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/__init__.py +0 -0
  285. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/animations.py +0 -0
  286. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/app.py +0 -0
  287. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/approval_bridge.py +0 -0
  288. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/approval_content_preview.py +0 -0
  289. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/assistant_render.py +0 -0
  290. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/backend/__init__.py +0 -0
  291. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/backend/announcements.py +0 -0
  292. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/backend/client.py +0 -0
  293. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/backend/feedback.py +0 -0
  294. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/backend/provider_snapshot.py +0 -0
  295. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/backend/rating.py +0 -0
  296. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/backend/runtime.py +0 -0
  297. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/backend/session_report.py +0 -0
  298. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/backend/session_title.py +0 -0
  299. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/backend/tasks.py +0 -0
  300. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/builtin_commands/.keep +0 -0
  301. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/builtin_commands/implement-plan.md +0 -0
  302. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/builtin_commands/learn.md +0 -0
  303. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/clipboard_image.py +0 -0
  304. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/codenames.py +0 -0
  305. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/config/__init__.py +0 -0
  306. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/config/model.py +0 -0
  307. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/config/picker_state.py +0 -0
  308. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/config/store.py +0 -0
  309. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/config_check.py +0 -0
  310. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/console_profile.py +0 -0
  311. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/context_view.py +0 -0
  312. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/custom_slash_commands.py +0 -0
  313. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/env_utils.py +0 -0
  314. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/error_display.py +0 -0
  315. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/event_renderer.py +0 -0
  316. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/exit_confirm_view.py +0 -0
  317. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/exit_watchdog.py +0 -0
  318. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/figures.py +0 -0
  319. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/file_ref_hint.py +0 -0
  320. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/fragment_utils.py +0 -0
  321. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/goal_edit_view.py +0 -0
  322. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/goal_resume_view.py +0 -0
  323. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/history_printer.py +0 -0
  324. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/i18n/__init__.py +0 -0
  325. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/image_chips.py +0 -0
  326. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/input_geometry.py +0 -0
  327. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/jobs_picker.py +0 -0
  328. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/jobs_state.py +0 -0
  329. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/layout_coordinator.py +0 -0
  330. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/locale.py +0 -0
  331. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/logging_adapter.py +0 -0
  332. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/logging_file_handler.py +0 -0
  333. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/logo.py +0 -0
  334. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/markdown_render.py +0 -0
  335. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/mcp_serve.py +0 -0
  336. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/mention_completer.py +0 -0
  337. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/message_style.py +0 -0
  338. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/models.py +0 -0
  339. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/output_style_menu.py +0 -0
  340. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/__init__.py +0 -0
  341. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/auto_update_runner.py +0 -0
  342. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/auto_update_store.py +0 -0
  343. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/components/__init__.py +0 -0
  344. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/components/detail_view.py +0 -0
  345. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/components/plugin_list.py +0 -0
  346. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/components/search_box.py +0 -0
  347. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/components/tab_bar.py +0 -0
  348. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/marketplace_install_view.py +0 -0
  349. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/operation_state.py +0 -0
  350. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/plugin_picker.py +0 -0
  351. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/tabs/__init__.py +0 -0
  352. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/tabs/discover_tab.py +0 -0
  353. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/tabs/errors_tab.py +0 -0
  354. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/tabs/installed_tab.py +0 -0
  355. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/plugins/tabs/marketplaces_tab.py +0 -0
  356. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/preflight.py +0 -0
  357. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/preflight_wizard.py +0 -0
  358. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/print_mode.py +0 -0
  359. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/question_broker.py +0 -0
  360. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/question_view.py +0 -0
  361. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/recap/__init__.py +0 -0
  362. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/recap/controller.py +0 -0
  363. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/resume_picker.py +0 -0
  364. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/resume_preview.py +0 -0
  365. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/resume_selector.py +0 -0
  366. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc/__init__.py +0 -0
  367. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc/approval.py +0 -0
  368. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc/options.py +0 -0
  369. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc/protocol.py +0 -0
  370. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc/question.py +0 -0
  371. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc/serde.py +0 -0
  372. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc/server.py +0 -0
  373. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc/session_host.py +0 -0
  374. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc/stdin_reader.py +0 -0
  375. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc/stdio.py +0 -0
  376. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc_protocol.py +0 -0
  377. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/rpc_stdio.py +0 -0
  378. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/side_install.py +0 -0
  379. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/sigint_guard.py +0 -0
  380. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/skill_slash_input.py +0 -0
  381. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/skills_menu.py +0 -0
  382. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/startup.py +0 -0
  383. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/startup_profile.py +0 -0
  384. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/statusline/__init__.py +0 -0
  385. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/statusline/model.py +0 -0
  386. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/statusline/picker_state.py +0 -0
  387. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/statusline/store.py +0 -0
  388. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/stream_pacer.py +0 -0
  389. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/synchronized_output.py +0 -0
  390. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/text_effects.py +0 -0
  391. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tips.py +0 -0
  392. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tool_approval_view.py +0 -0
  393. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tool_fold.py +0 -0
  394. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tool_fold_view.py +0 -0
  395. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tool_result_formatters.py +0 -0
  396. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tool_result_state.py +0 -0
  397. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tool_result_store.py +0 -0
  398. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tool_result_viewer.py +0 -0
  399. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tool_view.py +0 -0
  400. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/transcript_viewer.py +0 -0
  401. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/__init__.py +0 -0
  402. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/approval_queue.py +0 -0
  403. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/btw_view.py +0 -0
  404. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/history_sync.py +0 -0
  405. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/mcp_connecting_view.py +0 -0
  406. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/render_panels.py +0 -0
  407. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/resize_guard.py +0 -0
  408. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/run_clock.py +0 -0
  409. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/slash_command_registry.py +0 -0
  410. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/tui_parts/ui_mode.py +0 -0
  411. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/update_check.py +0 -0
  412. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/update_messages.py +0 -0
  413. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/workflows_panel.py +0 -0
  414. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_agent/workflows_panel_model.py +0 -0
  415. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/terminal_title.py +0 -0
  416. {comate_cli-0.12.1 → comate_cli-0.12.2}/comate_cli/update_cli.py +0 -0
  417. {comate_cli-0.12.1 → comate_cli-0.12.2}/dist-comate/.gitignore +0 -0
  418. {comate_cli-0.12.1 → comate_cli-0.12.2}/dist-comate/comate_cli-0.7.10-py3-none-any.whl +0 -0
  419. {comate_cli-0.12.1 → comate_cli-0.12.2}/dist-comate/comate_cli-0.7.10.tar.gz +0 -0
  420. {comate_cli-0.12.1 → comate_cli-0.12.2}/dist-hico/.gitignore +0 -0
  421. {comate_cli-0.12.1 → comate_cli-0.12.2}/dist-hico/hico_cli-0.7.17-py3-none-any.whl +0 -0
  422. {comate_cli-0.12.1 → comate_cli-0.12.2}/dist-hico/hico_cli-0.7.17.tar.gz +0 -0
  423. {comate_cli-0.12.1 → comate_cli-0.12.2}/docs/cli-rpc-stdio-guide.md +0 -0
  424. {comate_cli-0.12.1 → comate_cli-0.12.2}/docs/startup-performance.md +0 -0
  425. {comate_cli-0.12.1 → comate_cli-0.12.2}/docs/superpowers/plans/2026-07-07-tui-first-repaint-before-sdk-submit.md +0 -0
  426. {comate_cli-0.12.1 → comate_cli-0.12.2}/docs/superpowers/plans/2026-07-07-windows-update-manual-rollback.md +0 -0
  427. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/config/__init__.py +0 -0
  428. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/config/test_model.py +0 -0
  429. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/config/test_picker_state.py +0 -0
  430. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/config/test_roundtrip.py +0 -0
  431. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/config/test_skills_denylist_migration.py +0 -0
  432. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/config/test_store_load.py +0 -0
  433. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/config/test_store_save.py +0 -0
  434. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/conftest.py +0 -0
  435. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/fixtures/exit_watchdog_child.py +0 -0
  436. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/fixtures/fake_mcp_misbehaving_stdout.py +0 -0
  437. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/recap/test_idle_recap_controller.py +0 -0
  438. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/recap/test_recap_history_rendering.py +0 -0
  439. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/recap/test_tui_idle_recap_integration.py +0 -0
  440. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/statusline/__init__.py +0 -0
  441. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/statusline/test_model.py +0 -0
  442. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/statusline/test_picker_state.py +0 -0
  443. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/statusline/test_store.py +0 -0
  444. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_animations_styles.py +0 -0
  445. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_animator_shuffle.py +0 -0
  446. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_config_check_gate.py +0 -0
  447. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_exit_lifecycle.py +0 -0
  448. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_mcp_preload.py +0 -0
  449. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_mcp_preload_kick.py +0 -0
  450. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_preflight_gate.py +0 -0
  451. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_print_mode.py +0 -0
  452. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_profile_threading.py +0 -0
  453. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_pty_ctrl_c_exit.py +0 -0
  454. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_pty_smoke.py +0 -0
  455. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_shutdown.py +0 -0
  456. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_startup_latency.py +0 -0
  457. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_startup_order.py +0 -0
  458. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_token_cost_config.py +0 -0
  459. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_app_usage_line.py +0 -0
  460. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_approval_bridge.py +0 -0
  461. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_approval_content_preview.py +0 -0
  462. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_backend_announcements.py +0 -0
  463. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_backend_client.py +0 -0
  464. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_backend_feedback.py +0 -0
  465. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_backend_provider_snapshot.py +0 -0
  466. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_backend_rating.py +0 -0
  467. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_backend_session_report.py +0 -0
  468. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_backend_tasks.py +0 -0
  469. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_btw_slash_command.py +0 -0
  470. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_busy_slash_gating.py +0 -0
  471. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_cli_project_root.py +0 -0
  472. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_clipboard_image_reader.py +0 -0
  473. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_commands_system_messages.py +0 -0
  474. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_compact_command_semantics.py +0 -0
  475. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_completion_context_activation.py +0 -0
  476. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_completion_status_panel.py +0 -0
  477. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_config_check.py +0 -0
  478. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_console_profile.py +0 -0
  479. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_context_command.py +0 -0
  480. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_context_view.py +0 -0
  481. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_ctrl_c_clear_input.py +0 -0
  482. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_custom_slash_commands.py +0 -0
  483. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_device_identity.py +0 -0
  484. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_discover_tab.py +0 -0
  485. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_distribution_contract.py +0 -0
  486. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_drain_frame_atomicity.py +0 -0
  487. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_effort_menu_frame_rate.py +0 -0
  488. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_errors_tab.py +0 -0
  489. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer.py +0 -0
  490. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer_approval_wait.py +0 -0
  491. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer_boundary.py +0 -0
  492. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer_e2e.py +0 -0
  493. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer_jobs.py +0 -0
  494. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer_log_boundary.py +0 -0
  495. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer_log_queue.py +0 -0
  496. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer_stream_pacing.py +0 -0
  497. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer_stream_staging.py +0 -0
  498. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer_streaming.py +0 -0
  499. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer_tool_args_progress.py +0 -0
  500. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_event_renderer_tool_fold.py +0 -0
  501. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_exit_confirm_view.py +0 -0
  502. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_exit_guard.py +0 -0
  503. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_exit_watchdog.py +0 -0
  504. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_exit_watchdog_subprocess.py +0 -0
  505. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_file_ref_hint.py +0 -0
  506. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_format_error.py +0 -0
  507. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_goal_edit_handlers.py +0 -0
  508. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_goal_edit_view.py +0 -0
  509. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_goal_paused_hint.py +0 -0
  510. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_goal_resume_tui.py +0 -0
  511. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_goal_resume_view.py +0 -0
  512. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_goal_slash_command.py +0 -0
  513. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_handle_error.py +0 -0
  514. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_history_drain_throttle.py +0 -0
  515. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_history_printer.py +0 -0
  516. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_history_printer_log.py +0 -0
  517. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_history_printer_styles.py +0 -0
  518. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_history_printer_subtitle_position.py +0 -0
  519. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_history_printer_tool_fold.py +0 -0
  520. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_history_sync.py +0 -0
  521. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_history_sync_tool_fold.py +0 -0
  522. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_i18n.py +0 -0
  523. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_image_chips.py +0 -0
  524. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_image_preprocess_offload_lag.py +0 -0
  525. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_import_weight.py +0 -0
  526. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_input_behavior.py +0 -0
  527. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_input_history.py +0 -0
  528. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_input_separator_counter.py +0 -0
  529. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_installed_tab.py +0 -0
  530. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_interrupt_exit_semantics.py +0 -0
  531. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_jobs_panel.py +0 -0
  532. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_jobs_picker.py +0 -0
  533. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_key_bindings_system_messages.py +0 -0
  534. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_layout_coordinator.py +0 -0
  535. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_loading_modal_suppression.py +0 -0
  536. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_loading_tip_picker.py +0 -0
  537. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_logging_adapter.py +0 -0
  538. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_logging_file_handler.py +0 -0
  539. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_logo.py +0 -0
  540. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_main_args.py +0 -0
  541. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_main_args_yolo.py +0 -0
  542. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_main_profile_entry.py +0 -0
  543. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_markdown_render.py +0 -0
  544. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_marketplaces_tab.py +0 -0
  545. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_mcp_cli.py +0 -0
  546. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_mcp_cli_scope_defaults.py +0 -0
  547. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_mcp_serve.py +0 -0
  548. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_mcp_slash_command.py +0 -0
  549. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_mention_completer.py +0 -0
  550. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_menu_cursor_unification.py +0 -0
  551. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_message_style.py +0 -0
  552. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_modal_freeze_timing.py +0 -0
  553. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_model_switch_command.py +0 -0
  554. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_no_raw_colors.py +0 -0
  555. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_output_style_slash_command.py +0 -0
  556. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_permission_mode_cycle.py +0 -0
  557. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_plugin_auto_update_runner.py +0 -0
  558. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_plugin_auto_update_store.py +0 -0
  559. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_plugin_auto_update_tui.py +0 -0
  560. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_plugin_operation_state.py +0 -0
  561. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_plugin_slash_commands.py +0 -0
  562. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_plugin_tui_components.py +0 -0
  563. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_preflight.py +0 -0
  564. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_preflight_copilot.py +0 -0
  565. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_pty_output_integrity.py +0 -0
  566. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_question_broker.py +0 -0
  567. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_question_view.py +0 -0
  568. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_resize_guard.py +0 -0
  569. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_resume_picker.py +0 -0
  570. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_resume_picker_exit_safety.py +0 -0
  571. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_resume_preview.py +0 -0
  572. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_resume_selector.py +0 -0
  573. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_rewind_command_semantics.py +0 -0
  574. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_rpc_approval.py +0 -0
  575. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_rpc_options.py +0 -0
  576. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_rpc_protocol.py +0 -0
  577. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_rpc_question.py +0 -0
  578. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_rpc_serde.py +0 -0
  579. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_rpc_server_methods.py +0 -0
  580. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_rpc_session_host.py +0 -0
  581. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_rpc_stdin_reader.py +0 -0
  582. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_rpc_stdio_transport.py +0 -0
  583. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_run_clock.py +0 -0
  584. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_running_tool_status_line.py +0 -0
  585. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_scrollback_write_encoding.py +0 -0
  586. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_selection_menu.py +0 -0
  587. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_session_auto_title.py +0 -0
  588. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_session_query_token_summary.py +0 -0
  589. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_settings_write_guard.py +0 -0
  590. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_shutdown_noise_guard.py +0 -0
  591. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_shutdown_noise_integration.py +0 -0
  592. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_side_install.py +0 -0
  593. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_sigint_guard.py +0 -0
  594. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_sigint_key_binding.py +0 -0
  595. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_skill_slash_input.py +0 -0
  596. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_skills_slash_command.py +0 -0
  597. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_slash_add_dir.py +0 -0
  598. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_slash_argument_hint.py +0 -0
  599. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_slash_clear.py +0 -0
  600. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_slash_completer.py +0 -0
  601. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_slash_registry.py +0 -0
  602. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_startup_import_budget.py +0 -0
  603. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_startup_profile.py +0 -0
  604. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_status_bar_transient.py +0 -0
  605. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_stream_pacer.py +0 -0
  606. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_stream_pacing_tick.py +0 -0
  607. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_stream_staging_panel.py +0 -0
  608. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_style_class_coverage.py +0 -0
  609. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_synchronized_output.py +0 -0
  610. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tab_title.py +0 -0
  611. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_task_panel_format.py +0 -0
  612. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_task_panel_key_bindings.py +0 -0
  613. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_task_panel_rendering.py +0 -0
  614. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_task_poll.py +0 -0
  615. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_terminal_title.py +0 -0
  616. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_theme.py +0 -0
  617. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tips.py +0 -0
  618. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_todo_panel_busy_gating.py +0 -0
  619. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_approval_key_bindings.py +0 -0
  620. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_approval_tui.py +0 -0
  621. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_approval_view.py +0 -0
  622. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_approval_view_workflow.py +0 -0
  623. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_fold.py +0 -0
  624. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_fold_panel.py +0 -0
  625. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_fold_view.py +0 -0
  626. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_result_formatters.py +0 -0
  627. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_result_state.py +0 -0
  628. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_result_store.py +0 -0
  629. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_result_viewer.py +0 -0
  630. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_result_viewer_key_bindings.py +0 -0
  631. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_view.py +0 -0
  632. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tool_view_styles.py +0 -0
  633. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_transcript_viewer.py +0 -0
  634. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_transcript_viewer_tool_fold.py +0 -0
  635. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_builtin_slash_chain.py +0 -0
  636. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_elapsed_status.py +0 -0
  637. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_esc_queue.py +0 -0
  638. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_exit_idempotence.py +0 -0
  639. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_hot_reload.py +0 -0
  640. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_image_chip_seed.py +0 -0
  641. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_image_paste.py +0 -0
  642. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_image_path_upgrade.py +0 -0
  643. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_image_restore.py +0 -0
  644. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_image_submit.py +0 -0
  645. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_interrupt_queue_recall.py +0 -0
  646. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_llm_retry_panel.py +0 -0
  647. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_loading_tip_rotation.py +0 -0
  648. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_local_interactive_barrier.py +0 -0
  649. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_mcp_init_gate.py +0 -0
  650. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_paste_history_persistence.py +0 -0
  651. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_paste_newline_guard.py +0 -0
  652. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_paste_placeholder.py +0 -0
  653. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_plugin_load.py +0 -0
  654. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_provider_error_shield.py +0 -0
  655. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_queue_pop_images.py +0 -0
  656. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_queue_preview.py +0 -0
  657. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_queue_sdk_source.py +0 -0
  658. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_replace_session_resume_hint.py +0 -0
  659. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_scheduled_fire_log.py +0 -0
  660. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_scratchpad_fold_wiring.py +0 -0
  661. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_send_undo_window.py +0 -0
  662. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_session_observers.py +0 -0
  663. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_shutdown_cancel_propagation.py +0 -0
  664. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_split_invariance.py +0 -0
  665. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_startup_latency.py +0 -0
  666. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_surrogate_repair.py +0 -0
  667. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_thinking_display.py +0 -0
  668. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_tool_result_registry_lifecycle.py +0 -0
  669. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_tui_window_too_small_fallback.py +0 -0
  670. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_ui_mode_derivation.py +0 -0
  671. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_ui_tick_exception_isolation.py +0 -0
  672. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_update_check.py +0 -0
  673. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_update_cli.py +0 -0
  674. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_upstream_surrogate_merge_characterization.py +0 -0
  675. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_usage_command.py +0 -0
  676. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_wellformed_terminal_input.py +0 -0
  677. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_whitelabel_clear_logo.py +0 -0
  678. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_windows_sigint_console.py +0 -0
  679. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_workflows_panel.py +0 -0
  680. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_workflows_panel_model.py +0 -0
  681. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_wrap_user_text.py +0 -0
  682. {comate_cli-0.12.1 → comate_cli-0.12.2}/tests/test_zipapp_launcher_path.py +0 -0
  683. {comate_cli-0.12.1 → comate_cli-0.12.2}/tools/diagnose_windows_shim_rename.py +0 -0
  684. {comate_cli-0.12.1 → comate_cli-0.12.2}/tools/logo_lab.py +0 -0
  685. {comate_cli-0.12.1 → comate_cli-0.12.2}/tools/nico_preview.py +0 -0
  686. {comate_cli-0.12.1 → comate_cli-0.12.2}/tools/probe_conhost_char_width.py +0 -0
  687. {comate_cli-0.12.1 → comate_cli-0.12.2}/tools/probe_conhost_render_replay.py +0 -0
  688. {comate_cli-0.12.1 → comate_cli-0.12.2}/tools/startup_bench.py +0 -0
  689. {comate_cli-0.12.1 → comate_cli-0.12.2}/tools/verify_windows_self_update_semantics.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: comate-cli
3
- Version: 0.12.1
3
+ Version: 0.12.2
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
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
16
  Requires-Python: <3.14,>=3.11
17
17
  Requires-Dist: charset-normalizer==3.4.7
18
- Requires-Dist: comate-agent-sdk<0.13,>=0.12.7
18
+ Requires-Dist: comate-agent-sdk<0.13,>=0.12.8
19
19
  Requires-Dist: concurrent-log-handler>=0.9.25
20
20
  Requires-Dist: curl-cffi==0.13.0
21
21
  Requires-Dist: httpx<0.29.0,>=0.28.1
@@ -15,7 +15,6 @@ from prompt_toolkit.layout.controls import FormattedTextControl
15
15
  from comate_cli.terminal_agent.figures import (
16
16
  EFFORT_HIGH,
17
17
  EFFORT_LOW,
18
- HEAVY_HORIZONTAL,
19
18
  PLAY_ICON,
20
19
  )
21
20
 
@@ -217,11 +216,6 @@ class ConfigPickerUI:
217
216
  dont_extend_height=True,
218
217
  style="class:selection.title",
219
218
  )
220
- divider = Window(
221
- height=1,
222
- char=HEAVY_HORIZONTAL,
223
- style="class:selection.divider",
224
- )
225
219
  self._content_window = Window(
226
220
  content=FormattedTextControl(self._content_fragments, focusable=True),
227
221
  wrap_lines=True,
@@ -234,4 +228,4 @@ class ConfigPickerUI:
234
228
  dont_extend_height=True,
235
229
  style="class:selection.body",
236
230
  )
237
- return HSplit([header, divider, self._content_window, footer])
231
+ return HSplit([header, self._content_window, footer])
@@ -10,7 +10,7 @@ from typing import Any, Callable
10
10
 
11
11
  from comate_agent_sdk.agent.events import EffortSwitchedEvent
12
12
  from comate_agent_sdk.llm.effort import EFFORT_LADDER, EffortResolution, fold_down
13
- from comate_cli.terminal_agent.effort_style import effort_glyph, effort_style_str
13
+ from comate_cli.terminal_agent.effort_style import ULTRACODE, effort_glyph, effort_style_str
14
14
  from comate_cli.terminal_agent.i18n import i18n, message
15
15
  from comate_cli.terminal_agent.output_style_menu import SCOPE_TAGS
16
16
 
@@ -21,8 +21,13 @@ _OPTION_TEXT = {
21
21
  "high": message.effort_option_high,
22
22
  "xhigh": message.effort_option_xhigh,
23
23
  "max": message.effort_option_max,
24
+ ULTRACODE: message.effort_option_ultracode,
24
25
  }
25
26
 
27
+ # 刻度尺上的 7 格(左→右);auto 不占格,用 `a` 键。ultracode 不是档位(rules/effort.md),
28
+ # 在 CLI 层拆成 xhigh + 会话开关,只在这里当作第 7 格展示。
29
+ RULER_VALUES: tuple[str, ...] = ("off", *EFFORT_LADDER, ULTRACODE)
30
+
26
31
 
27
32
  @dataclass(frozen=True, slots=True)
28
33
  class EffortMenuSpec:
@@ -31,8 +36,10 @@ class EffortMenuSpec:
31
36
  options: list[dict[str, Any]] = field(default_factory=list)
32
37
 
33
38
 
34
- def effort_level_label(level: str | None) -> str:
35
- """档位名(None = auto);auto 这个词整句跟随界面语言。"""
39
+ def effort_level_label(level: str | None, *, ultracode: bool = False) -> str:
40
+ """档位名(None = auto);auto 这个词整句跟随界面语言。开关开着时显示 ultracode。"""
41
+ if ultracode:
42
+ return i18n(message.effort_value_ultracode)
36
43
  return i18n(message.effort_value_auto) if level is None else level
37
44
 
38
45
 
@@ -109,6 +116,81 @@ def build_effort_menu(
109
116
  )
110
117
 
111
118
 
119
+ @dataclass(frozen=True, slots=True)
120
+ class EffortRulerSpec:
121
+ """横排刻度尺的纯数据:7 格 + 光标初始格 + 文案。渲染归 EffortRulerUI。"""
122
+
123
+ title: str
124
+ levels: list[dict[str, Any]] = field(default_factory=list)
125
+ current_value: str = "auto"
126
+ """光标初始格:档位名 / "ultracode";auto 时落在模型默认档(没有就落 medium)。"""
127
+ faster_label: str = ""
128
+ smarter_label: str = ""
129
+ hint: str = ""
130
+
131
+
132
+ def _level_note(level: str, resolution: EffortResolution) -> str:
133
+ """某一格的附注:不可关 / 会降级 / 不支持;正常时空串。ultracode 按 xhigh 判。"""
134
+ if level == "off":
135
+ return "" if resolution.can_disable_thinking else i18n(message.effort_option_cannot_disable)
136
+ probe = "xhigh" if level == ULTRACODE else level
137
+ if probe in resolution.available_levels:
138
+ return ""
139
+ target = fold_down(probe, resolution.available_levels) # type: ignore[arg-type]
140
+ return (
141
+ i18n(message.effort_option_downgrade, applied=target)
142
+ if target
143
+ else i18n(message.effort_option_unsupported)
144
+ )
145
+
146
+
147
+ def build_effort_ruler(
148
+ resolution: EffortResolution,
149
+ *,
150
+ model_name: str,
151
+ ultracode_enabled: bool,
152
+ ) -> EffortRulerSpec:
153
+ """`/effort` 刻度尺:off · low · medium · high · xhigh · max ┆ ultracode。
154
+
155
+ 与竖排菜单同一套附注规则:不可用的格不隐藏不禁用,居中的备注行说清楚会降级成什么。
156
+ """
157
+ levels: list[dict[str, Any]] = []
158
+ for level in RULER_VALUES:
159
+ description = i18n(_OPTION_TEXT[level])
160
+ note = _level_note(level, resolution)
161
+ if note:
162
+ description = f"{description} ({note})"
163
+ is_current = (
164
+ ultracode_enabled if level == ULTRACODE
165
+ else (not ultracode_enabled and resolution.requested == level)
166
+ )
167
+ levels.append(
168
+ {
169
+ "value": level,
170
+ "label": level,
171
+ "description": description,
172
+ "current": is_current,
173
+ }
174
+ )
175
+ if ultracode_enabled:
176
+ current_value = ULTRACODE
177
+ elif resolution.requested is not None:
178
+ current_value = resolution.requested
179
+ else:
180
+ # auto 没有格:光标落在模型默认档上,让"直接回车"等于"把 auto 固化成默认档"之前
181
+ # 用户能看见自己选了什么;没有默认档的开关型模型落 medium。
182
+ current_value = resolution.model_default or "medium"
183
+ del model_name # 刻度尺不显示模型 / 默认档行(克制);参数保留与竖排菜单签名对齐
184
+ return EffortRulerSpec(
185
+ title=i18n(message.effort_menu_title),
186
+ levels=levels,
187
+ current_value=current_value,
188
+ faster_label=i18n(message.effort_ruler_faster),
189
+ smarter_label=i18n(message.effort_ruler_smarter),
190
+ hint=i18n(message.effort_ruler_hint),
191
+ )
192
+
193
+
112
194
  def build_effort_confirm(
113
195
  *, previous: str | None, new: str | None, turn_count: int
114
196
  ) -> tuple[str, list[str], list[dict[str, Any]]]:
@@ -123,9 +205,19 @@ def build_effort_confirm(
123
205
  return title, context, options
124
206
 
125
207
 
126
- def effort_result_line(event: EffortSwitchedEvent, resolution: EffortResolution) -> str:
208
+ def effort_result_line(
209
+ event: EffortSwitchedEvent,
210
+ resolution: EffortResolution,
211
+ *,
212
+ ultracode_before: bool = False,
213
+ ultracode_after: bool = False,
214
+ workflow_available: bool = True,
215
+ ) -> str:
127
216
  """切换结果行。
128
217
 
218
+ ultracode 两个布尔只改**措辞**(前后档位名显示成 ultracode),判据仍是 effort 解析结果;
219
+ 开着 ultracode 但会话没有 Workflow 工具时补一行提示(Q24)。
220
+
129
221
  **以切换后的解析结果为准,不照抄 event.new。**用户要的和实际生效的会分叉:
130
222
  - **请求落空**:`applied=None` 且 `downgraded=False`(downgraded 要求 applied 非空)。
131
223
  判据是 `applied is None`,不是"用户选了 off"——`off` 只是其中一种措辞。
@@ -135,13 +227,17 @@ def effort_result_line(event: EffortSwitchedEvent, resolution: EffortResolution)
135
227
  - 环境变量设了 effort 时切 auto:会话层清了,env 层仍然赢,
136
228
  照抄 event.new 会说 "high → auto",而菜单和 statusline 还显示 high。
137
229
  """
138
- head, tail = _result_head_and_tail(event, resolution)
230
+ head, tail = _result_head_and_tail(
231
+ event, resolution, ultracode_before=ultracode_before, ultracode_after=ultracode_after
232
+ )
139
233
  tag = SCOPE_TAGS.get(event.persisted_scope or "")
140
234
  if tag:
141
235
  head = f"{head} {tag}"
142
236
  lines = [head]
143
237
  if tail is not None:
144
238
  lines.append(f" {tail}")
239
+ if ultracode_after and not workflow_available:
240
+ lines.append(f" {i18n(message.effort_ultracode_no_workflow_tool)}")
145
241
  if event.local_override is not None:
146
242
  lines.append(
147
243
  f" {i18n(message.output_style_local_override_hint, name=event.local_override)}"
@@ -150,12 +246,18 @@ def effort_result_line(event: EffortSwitchedEvent, resolution: EffortResolution)
150
246
 
151
247
 
152
248
  def _result_head_and_tail(
153
- event: EffortSwitchedEvent, resolution: EffortResolution
249
+ event: EffortSwitchedEvent,
250
+ resolution: EffortResolution,
251
+ *,
252
+ ultracode_before: bool = False,
253
+ ultracode_after: bool = False,
154
254
  ) -> tuple[str, str | None]:
155
255
  """结果主行 + 可选的第二行提示。落点标签由调用方挂在主行末尾。"""
156
- prev = _label(event.previous)
157
- asked = _label(event.new)
158
- actual_requested = _label(resolution.requested)
256
+ prev = _label(event.previous, ultracode=ultracode_before)
257
+ asked = _label(event.new, ultracode=ultracode_after)
258
+ # "谁压着"这一判据比较的是**档位**:ultracode 开着时请求档就是 xhigh,
259
+ # 显示成 ultracode 只是措辞,不能让 "xhigh" != "ultracode" 触发 kept 分支。
260
+ actual_requested = _label(resolution.requested, ultracode=ultracode_after)
159
261
 
160
262
  if not resolution.supported:
161
263
  return (
@@ -0,0 +1,428 @@
1
+ """`/effort` 横排刻度尺组件:←/→ 沿刻度移动,▲ 骑线指示当前格。
2
+
3
+ 与 SelectionMenuUI 平级、复用 UIMode.SELECTION 的进出 / 按键通道(key_bindings 按
4
+ `active` 分发)。内容是 9 行固定高度的单个 Window:
5
+
6
+ 标题 / 空 / Faster‥Smarter / 刻度线 / 7 格 / 空 / 居中备注 / 空 / 提示
7
+
8
+ 档位 → 颜色 / 图标只经 effort_style;格子数据(附注、初始光标)只经
9
+ effort_menu.build_effort_ruler,这里只管画。
10
+
11
+ 动效(全部由外部 frame_provider 驱动,本组件不起 task):
12
+ - max 选中:逐字彩虹流动(effort_style.rainbow_fragments)。
13
+ - ultracode 选中:文字乱码解码 + 副标题右侧二进制流 + 彩色水波从格子中心向外铺满
14
+ 整个组件区域。水波用 **背景色**——这是 rules/tui.md 的第二条具名例外
15
+ (2026-09-18,用户拍板),仅限本组件、仅限光标停在 ultracode 期间。
16
+ 性能:整块区域逐字符着色,单帧渲染耗时以 tests/test_effort_ruler.py 实测钉住上限。
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ import math
22
+ from dataclasses import dataclass, field
23
+ from typing import Any, Callable
24
+
25
+ from prompt_toolkit.application.current import get_app_or_none
26
+ from prompt_toolkit.layout.containers import Window
27
+ from prompt_toolkit.layout.controls import FormattedTextControl
28
+ from prompt_toolkit.utils import get_cwidth
29
+
30
+ from comate_cli.terminal_agent import theme
31
+ from comate_cli.terminal_agent.effort_menu import EffortRulerSpec
32
+ from comate_cli.terminal_agent.effort_style import (
33
+ ULTRACODE,
34
+ effort_color,
35
+ effort_style_str,
36
+ rainbow_fragments,
37
+ )
38
+ from comate_cli.terminal_agent.selection_menu import SelectionResult
39
+
40
+ AREA_ROWS = 9
41
+ _MENU_ROW = 4 # 7 格所在行(波源行,0 起算)
42
+ _SPACING = 6 # 相邻格间距(列)
43
+ _MARKER = "▲"
44
+ _DIVIDER = "┆" # Faster 段 / Smarter 段分界
45
+ _TRACK = "─"
46
+ _SCRAMBLE_CHARS = "!<>-_\\/[]{}=+*^?#01" # 全窄字符,宽度安全
47
+ _GREEN_BRIGHT = theme.EFFORT_RULER_DECODE_GREEN
48
+ _GREEN_DIM = theme.EFFORT_RULER_STREAM_GREEN
49
+ _DECODE_FRAMES = 6 # 6fps 下约 1 秒
50
+ _BIN_STREAM_COLS = 20
51
+ _RIPPLE_SPEED = 3.0 # 波前每帧推进列数(6fps)
52
+ _TRACK_COLOR = theme.EFFORT_RULER_TRACK
53
+ _LABEL_COLOR = theme.TEXT_FAINT
54
+ _FALLBACK_COLUMNS = 80
55
+ _MIN_COLUMNS = 40
56
+
57
+
58
+ def _option_text(label: str) -> str:
59
+ return f" {label} "
60
+
61
+
62
+ def _hash01(a: int, b: int) -> float:
63
+ """帧驱动的确定性伪随机(0~1):可测试,不依赖 random。"""
64
+ h = (a * 2654435761 + b * 97531) & 0xFFFFFFFF
65
+ return ((h ^ (h >> 13)) % 10007) / 10007
66
+
67
+
68
+ @dataclass(slots=True)
69
+ class _RulerState:
70
+ spec: EffortRulerSpec | None = None
71
+ index: int = 0
72
+ cols: dict[int, int] = field(default_factory=dict)
73
+ scale_width: int = 0
74
+ divider_col: int = 0
75
+ ultra_index: int = -1
76
+ ultra_enter_frame: int | None = None
77
+ """光标最近一次落到 ultracode 格时的帧号;None = 不在 ultracode 上。"""
78
+
79
+
80
+ class EffortRulerUI:
81
+ def __init__(self, *, size_provider: Callable[[], tuple[int, int]] | None = None) -> None:
82
+ self._size_provider = size_provider
83
+ self._state = _RulerState()
84
+ self._on_confirm: Callable[[str, bool], None] | None = None
85
+ self._on_cancel: Callable[[], None] | None = None
86
+ self._frame_provider: Callable[[], int] | None = None
87
+ self._control = FormattedTextControl(
88
+ text=self._area_fragments, focusable=True, show_cursor=False
89
+ )
90
+ self._window = Window(
91
+ content=self._control,
92
+ height=AREA_ROWS,
93
+ dont_extend_height=True,
94
+ style="class:selection.body",
95
+ always_hide_cursor=True,
96
+ )
97
+
98
+ # ── 生命周期 ────────────────────────────────────────────────────────
99
+
100
+ @property
101
+ def container(self) -> Window:
102
+ return self._window
103
+
104
+ def focus_target(self) -> Window:
105
+ return self._window
106
+
107
+ @property
108
+ def active(self) -> bool:
109
+ return self._state.spec is not None
110
+
111
+ @property
112
+ def numbered(self) -> bool:
113
+ """数字键 1..7 直跳(与 SelectionMenuUI.numbered 同名,key_bindings 统一判)。"""
114
+ return self.active
115
+
116
+ @property
117
+ def animates(self) -> bool:
118
+ """需要按帧重绘:光标停在 max(彩虹)或 ultracode(水波)上。"""
119
+ if not self.active or self._frame_provider is None:
120
+ return False
121
+ return self._selected_value() in ("max", ULTRACODE)
122
+
123
+ def can_toggle(self) -> bool:
124
+ return False
125
+
126
+ def set_levels(
127
+ self,
128
+ spec: EffortRulerSpec,
129
+ *,
130
+ on_confirm: Callable[[str, bool], None] | None = None,
131
+ on_cancel: Callable[[], None] | None = None,
132
+ frame_provider: Callable[[], int] | None = None,
133
+ ) -> bool:
134
+ if not spec.levels:
135
+ return False
136
+ cols: dict[int, int] = {}
137
+ col = 0
138
+ for i, level in enumerate(spec.levels):
139
+ cols[i] = col
140
+ col += get_cwidth(_option_text(str(level["label"]))) + _SPACING
141
+ ultra_index = next(
142
+ (i for i, level in enumerate(spec.levels) if level["value"] == ULTRACODE), -1
143
+ )
144
+ last = len(spec.levels) - 1
145
+ scale_width = cols[last] + get_cwidth(_option_text(str(spec.levels[last]["label"])))
146
+ divider_col = (cols[ultra_index] - _SPACING // 2) if ultra_index > 0 else -1
147
+ self._state = _RulerState(
148
+ spec=spec,
149
+ index=0,
150
+ cols=cols,
151
+ scale_width=scale_width,
152
+ divider_col=divider_col,
153
+ ultra_index=ultra_index,
154
+ )
155
+ self._on_confirm = on_confirm
156
+ self._on_cancel = on_cancel
157
+ self._frame_provider = frame_provider
158
+ self.select_value(spec.current_value)
159
+ return True
160
+
161
+ def clear(self) -> None:
162
+ self._state = _RulerState()
163
+ self._on_confirm = None
164
+ self._on_cancel = None
165
+ self._frame_provider = None
166
+
167
+ def refresh(self) -> None:
168
+ self._control.text = self._area_fragments
169
+
170
+ # ── 光标 ────────────────────────────────────────────────────────────
171
+
172
+ def _frame(self) -> int:
173
+ return int(self._frame_provider()) if self._frame_provider is not None else 0
174
+
175
+ def _selected_value(self) -> str | None:
176
+ spec = self._state.spec
177
+ if spec is None:
178
+ return None
179
+ return str(spec.levels[self._state.index]["value"])
180
+
181
+ def get_selected(self) -> dict[str, Any] | None:
182
+ spec = self._state.spec
183
+ return None if spec is None else spec.levels[self._state.index]
184
+
185
+ def _set_index(self, index: int) -> None:
186
+ old = self._state.index
187
+ self._state.index = index
188
+ if index == self._state.ultra_index and old != index:
189
+ # 重新落到 ultracode:石头再次落下(水波 / 解码从头来)
190
+ self._state.ultra_enter_frame = self._frame()
191
+ elif index != self._state.ultra_index:
192
+ self._state.ultra_enter_frame = None
193
+
194
+ def move_selection(self, delta: int) -> None:
195
+ spec = self._state.spec
196
+ if spec is None:
197
+ return
198
+ self._set_index((self._state.index + delta) % len(spec.levels))
199
+
200
+ def select_number(self, number: int) -> bool:
201
+ spec = self._state.spec
202
+ if spec is None or number < 1 or number > len(spec.levels):
203
+ return False
204
+ self._set_index(number - 1)
205
+ return True
206
+
207
+ def select_value(self, value: str) -> bool:
208
+ spec = self._state.spec
209
+ if spec is None:
210
+ return False
211
+ for i, level in enumerate(spec.levels):
212
+ if level["value"] == value:
213
+ self._set_index(i)
214
+ return True
215
+ return False
216
+
217
+ # ── 结果 ────────────────────────────────────────────────────────────
218
+
219
+ def confirm(self, *, session_only: bool = False) -> SelectionResult | None:
220
+ """Enter(落盘)/ s(仅本会话)确认光标所在格。"""
221
+ value = self._selected_value()
222
+ if value is None:
223
+ return None
224
+ return self._emit(value, session_only)
225
+
226
+ def confirm_auto(self, *, session_only: bool = False) -> SelectionResult | None:
227
+ """`a` 键:auto 不占格,直接交卷。"""
228
+ if not self.active:
229
+ return None
230
+ return self._emit("auto", session_only)
231
+
232
+ def _emit(self, value: str, session_only: bool) -> SelectionResult:
233
+ if self._on_confirm is not None:
234
+ self._on_confirm(value, session_only)
235
+ return SelectionResult(confirmed=True, value=value, label=value)
236
+
237
+ def cancel(self) -> SelectionResult:
238
+ if self._on_cancel is not None:
239
+ self._on_cancel()
240
+ return SelectionResult(confirmed=False)
241
+
242
+ # ── 渲染 ────────────────────────────────────────────────────────────
243
+
244
+ def _columns(self) -> int:
245
+ if self._size_provider is not None:
246
+ _rows, cols = self._size_provider()
247
+ return max(_MIN_COLUMNS, int(cols))
248
+ app = get_app_or_none()
249
+ if app is None:
250
+ return _FALLBACK_COLUMNS
251
+ try:
252
+ return max(_MIN_COLUMNS, int(app.output.get_size().columns))
253
+ except Exception:
254
+ return _FALLBACK_COLUMNS
255
+
256
+ def _decode_clock(self) -> int:
257
+ enter = self._state.ultra_enter_frame
258
+ if enter is None:
259
+ return _DECODE_FRAMES
260
+ return min(_DECODE_FRAMES, self._frame() - enter)
261
+
262
+ def _decode_frags(self, text: str, solved_color: str, col_base: int) -> list[tuple[str, str]]:
263
+ """scramble 逐字解码:左到右按时钟解出真字符,未解出的位置滚动亮绿乱码。"""
264
+ clock = self._decode_clock()
265
+ if clock >= _DECODE_FRAMES:
266
+ return [(f"fg:{solved_color} bold", text)]
267
+ solved = math.ceil(len(text) * clock / _DECODE_FRAMES)
268
+ frame = self._frame()
269
+ frags: list[tuple[str, str]] = []
270
+ for k, ch in enumerate(text):
271
+ if k < solved:
272
+ frags.append((f"fg:{solved_color} bold", ch))
273
+ else:
274
+ idx = int(_hash01(col_base + k, frame) * len(_SCRAMBLE_CHARS))
275
+ frags.append((f"fg:{_GREEN_BRIGHT}", _SCRAMBLE_CHARS[idx]))
276
+ return frags
277
+
278
+ def _menu_fragments(self) -> list[tuple[str, str]]:
279
+ st = self._state
280
+ spec = st.spec
281
+ assert spec is not None
282
+ frags: list[tuple[str, str]] = []
283
+ col = 0
284
+ frame = self._frame()
285
+ for i, level in enumerate(spec.levels):
286
+ gap = st.cols[i] - col
287
+ if gap > 0:
288
+ frags.append(("", " " * gap))
289
+ col = st.cols[i]
290
+ value = str(level["value"])
291
+ text = _option_text(str(level["label"]))
292
+ if i == st.index:
293
+ if value == "max":
294
+ frags.extend(rainbow_fragments(text, frame=frame))
295
+ elif value == ULTRACODE:
296
+ frags.extend(self._decode_frags(text, effort_color(value), st.cols[i]))
297
+ else:
298
+ frags.append((f"{effort_style_str(value)} bold", text))
299
+ else:
300
+ frags.append((effort_style_str(value), text))
301
+ col += get_cwidth(text)
302
+ return frags
303
+
304
+ def _scale_fragments(self) -> list[tuple[str, str]]:
305
+ st = self._state
306
+ spec = st.spec
307
+ assert spec is not None
308
+ sel_label = str(spec.levels[st.index]["label"])
309
+ sel_center = st.cols[st.index] + (get_cwidth(_option_text(sel_label)) - 1) // 2
310
+ chars = [_TRACK] * st.scale_width
311
+ if 0 <= st.divider_col < st.scale_width:
312
+ chars[st.divider_col] = _DIVIDER
313
+ chars[sel_center] = _MARKER
314
+ # ┆ 右侧是 Smarter 段(ultracode 专属),刻度线跟 ultracode 同色,让"这一段不一样"
315
+ # 在没选中它时也看得出来。
316
+ ultra_color = effort_color(ULTRACODE)
317
+ frags: list[tuple[str, str]] = []
318
+ i = 0
319
+ while i < st.scale_width:
320
+ ch = chars[i]
321
+ j = i
322
+ while j < st.scale_width and chars[j] == ch:
323
+ j += 1
324
+ if ch == _MARKER:
325
+ frags.append((f"fg:{effort_color(self._selected_value() or 'low')} bold", _MARKER))
326
+ elif ch == _DIVIDER:
327
+ frags.append((f"fg:{_LABEL_COLOR}", _DIVIDER))
328
+ elif st.divider_col >= 0 and i > st.divider_col:
329
+ frags.append((f"fg:{ultra_color}", _TRACK * (j - i)))
330
+ else:
331
+ frags.append((f"fg:{_TRACK_COLOR}", _TRACK * (j - i)))
332
+ i = j
333
+ return frags
334
+
335
+ def _subtitle_fragments(self, sub_col: int, term_w: int) -> list[tuple[str, str]]:
336
+ """备注 = 光标所在格的说明(含降级附注),独占一行、居中;
337
+ ultracode 同步解码 + 二进制流。"""
338
+ st = self._state
339
+ spec = st.spec
340
+ assert spec is not None
341
+ text = str(spec.levels[st.index]["description"])
342
+ if self._selected_value() != ULTRACODE:
343
+ return [(f"fg:{_LABEL_COLOR}", text)]
344
+ frags = self._decode_frags(text, _LABEL_COLOR, st.cols[st.ultra_index])
345
+ if self._decode_clock() >= _DECODE_FRAMES:
346
+ stream_start = sub_col + get_cwidth(text) + 2
347
+ avail = min(_BIN_STREAM_COLS, term_w - stream_start)
348
+ if avail > 0:
349
+ frame = self._frame()
350
+ stream = "".join(
351
+ "01"[int(_hash01(stream_start + k, frame) * 2)] for k in range(avail)
352
+ )
353
+ frags.append((f"fg:{_GREEN_DIM}", " " + stream))
354
+ return frags
355
+
356
+ def _fill_frames(self, term_w: int, src_col: int) -> int:
357
+ max_dist = math.hypot(max(src_col, term_w - 1 - src_col), AREA_ROWS)
358
+ return math.ceil(max_dist / _RIPPLE_SPEED)
359
+
360
+ def _ripple_style(self, row: int, col: int, ctx: tuple[int, float, bool]) -> str | None:
361
+ """ultracode 选中时的彩色水波(背景色,rules/tui.md 具名例外)。"""
362
+ src_col, front, spreading = ctx
363
+ dist = math.hypot(col - src_col, row - _MENU_ROW)
364
+ if dist > front:
365
+ return None
366
+ if spreading and front - dist <= 1.5:
367
+ return theme.EFFORT_RULER_RIPPLE_FRONT
368
+ wob = math.sin(dist * 0.8 - self._frame() * 0.7) * 1.5
369
+ band = int(dist + wob)
370
+ palette = theme.EFFORT_RAINBOW_COLORS
371
+ return f"bg:{palette[band % len(palette)]} fg:{theme.EFFORT_RULER_RIPPLE_TEXT} bold"
372
+
373
+ def _area_fragments(self) -> list[tuple[str, str]]:
374
+ st = self._state
375
+ spec = st.spec
376
+ if spec is None:
377
+ return []
378
+ term_w = self._columns()
379
+ pad = max(0, (term_w - st.scale_width) // 2)
380
+ label_gap = max(
381
+ 1, st.scale_width - get_cwidth(spec.faster_label) - get_cwidth(spec.smarter_label)
382
+ )
383
+ sel_desc = str(spec.levels[st.index]["description"])
384
+ # 备注独占一行、整行居中,不跟光标左右跳(跟着跳会让眼睛同时追两处)。
385
+ # 标题行不再带"当前档"、也没有模型/默认档行:克制,刻度上的 ▲ 已经说明一切。
386
+ sub_col = max(0, (term_w - get_cwidth(sel_desc)) // 2)
387
+ rows: list[list[tuple[str, str]]] = [
388
+ [("class:selection.title", " " + spec.title)],
389
+ [("", "")],
390
+ [
391
+ ("", " " * pad),
392
+ (f"fg:{_LABEL_COLOR}", spec.faster_label),
393
+ ("", " " * label_gap),
394
+ (f"fg:{_LABEL_COLOR}", spec.smarter_label),
395
+ ],
396
+ [("", " " * pad), *self._scale_fragments()],
397
+ [("", " " * pad), *self._menu_fragments()],
398
+ [("", "")],
399
+ [("", " " * sub_col), *self._subtitle_fragments(sub_col, term_w)],
400
+ [("", "")],
401
+ [(f"fg:{_LABEL_COLOR}", " " + spec.hint)],
402
+ ]
403
+ on_ultra = self._selected_value() == ULTRACODE and st.ultra_enter_frame is not None
404
+ if on_ultra:
405
+ # 每行右侧补齐到终端宽(水波才有字符可染),再逐字符按距离着色
406
+ padded: list[list[tuple[str, str]]] = []
407
+ for row in rows:
408
+ width = sum(get_cwidth(t) for _, t in row)
409
+ padded.append(row if width >= term_w else [*row, ("", " " * (term_w - width))])
410
+ rows = padded
411
+ src_col = pad + st.cols[st.ultra_index] + get_cwidth(_option_text(ULTRACODE)) // 2
412
+ spread = self._frame() - st.ultra_enter_frame # type: ignore[operator]
413
+ spreading = spread < self._fill_frames(term_w, src_col)
414
+ ctx = (src_col, spread * _RIPPLE_SPEED, spreading)
415
+ frags: list[tuple[str, str]] = []
416
+ for r, row_frags in enumerate(rows):
417
+ if on_ultra:
418
+ col = 0
419
+ for style, text in row_frags:
420
+ for ch in text:
421
+ ripple = self._ripple_style(r, col, ctx)
422
+ frags.append((ripple or style, ch))
423
+ col += get_cwidth(ch)
424
+ else:
425
+ frags.extend(row_frags)
426
+ if r < AREA_ROWS - 1:
427
+ frags.append(("", "\n"))
428
+ return frags