comate-cli 0.12.6b2__tar.gz → 0.12.7__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 (774) hide show
  1. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/CHANGELOG.md +40 -0
  2. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/CONTEXT.md +8 -6
  3. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/PKG-INFO +30 -2
  4. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/README.md +27 -0
  5. comate_cli-0.12.7/bash_settle_diag.log +41 -0
  6. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/distribution.py +2 -0
  7. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/main.py +76 -6
  8. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/app.py +32 -40
  9. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/backend/session_report.py +24 -7
  10. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/event_renderer.py +115 -18
  11. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/i18n/_en.py +10 -0
  12. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/i18n/_ja.py +10 -0
  13. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/i18n/_zh.py +8 -0
  14. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/i18n/message.py +6 -0
  15. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/job_indicator.py +1 -1
  16. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/jobs_menu.py +6 -3
  17. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/logging_adapter.py +16 -0
  18. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/side_install.py +9 -3
  19. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/skills_menu.py +2 -2
  20. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/status_bar.py +9 -9
  21. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/text_effects.py +17 -0
  22. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tool_fold.py +33 -3
  23. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tool_result_formatters.py +29 -20
  24. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tool_view.py +5 -5
  25. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui.py +11 -9
  26. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/commands.py +57 -11
  27. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/history_sync.py +39 -13
  28. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/input_behavior.py +12 -0
  29. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/render_panels.py +2 -2
  30. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/shell_mode.py +50 -4
  31. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/update_check.py +44 -201
  32. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/update_messages.py +54 -77
  33. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/pyproject.toml +3 -2
  34. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/conftest.py +40 -0
  35. comate_cli-0.12.7/tests/fixtures/mcp_stub_stdio_server.py +16 -0
  36. comate_cli-0.12.7/tests/test_app_disallowed_tools.py +163 -0
  37. comate_cli-0.12.7/tests/test_app_pty_live_tail.py +196 -0
  38. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_backend_session_report.py +142 -0
  39. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer.py +2 -2
  40. comate_cli-0.12.7/tests/test_event_renderer_bash_background.py +140 -0
  41. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_mcp_background.py +58 -0
  42. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_streaming.py +137 -6
  43. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_history_sync_tool_fold.py +182 -0
  44. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_job_indicator.py +15 -10
  45. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_job_indicator_host.py +29 -0
  46. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_job_indicator_pty.py +6 -5
  47. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_jobs_state.py +5 -4
  48. comate_cli-0.12.7/tests/test_live_output_tail.py +52 -0
  49. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_logging_adapter.py +97 -1
  50. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_main_args.py +102 -1
  51. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_mcp_cli_auth.py +8 -2
  52. comate_cli-0.12.7/tests/test_mcp_cli_stdout_encoding.py +123 -0
  53. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_mcp_slash_command.py +213 -0
  54. comate_cli-0.12.7/tests/test_plugin_mcp_keeps_disk_servers.py +185 -0
  55. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_plugin_slash_commands.py +1 -1
  56. comate_cli-0.12.7/tests/test_print_mode_stdout_encoding.py +141 -0
  57. comate_cli-0.12.7/tests/test_running_tool_live_tail.py +292 -0
  58. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_selection_menu.py +6 -6
  59. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_shell_mode.py +31 -7
  60. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_side_install.py +40 -7
  61. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_skills_slash_command.py +3 -3
  62. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_status_bar.py +17 -15
  63. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_status_bar_mid_turn_refresh.py +1 -1
  64. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_result_formatters.py +62 -1
  65. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_image_path_upgrade.py +35 -0
  66. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_update_check.py +248 -438
  67. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/uv.lock +5 -3
  68. comate_cli-0.12.6b2/.agent/artifacts/bash/08b40bf6a68c85059572f3478db27d848acd36a6e8c6b89fa5173927210e7b53.json +0 -12
  69. comate_cli-0.12.6b2/.agent/artifacts/bash/0ff4f2f1382d2c19ca8d86e01ee8b6768b2fa925bdcf1e57829cecc590120371.txt +0 -1302
  70. comate_cli-0.12.6b2/.agent/artifacts/bash/1571cd767eb43ae39534d8f53f60bd56a2a537a64ecf8b5d93ee7556ea4cbb54.txt +0 -202
  71. comate_cli-0.12.6b2/.agent/artifacts/bash/19ac2280798d9988d4bd8e29952989eabf0749b893d4026bf9786169cd50c659.txt +0 -710
  72. comate_cli-0.12.6b2/.agent/artifacts/bash/24efc545d3f0b694a02cfa8022b8f93be27e57547a4f0661f608c80d9bc78113.txt +0 -7
  73. comate_cli-0.12.6b2/.agent/artifacts/bash/3d69373ac48a465a06bd30094e4c28921c1201865c27dc0f012768799351c10b.txt +0 -748
  74. comate_cli-0.12.6b2/.agent/artifacts/bash/46c7def792f8820aff04a0083057d32079d7ccc208e394eb00a440618f4455ba.json +0 -18
  75. comate_cli-0.12.6b2/.agent/artifacts/bash/594a10eddaf1ea6344dc62d41af7146f6e52471ccf1ee1fba6e61376c3ba5bce.json +0 -16
  76. comate_cli-0.12.6b2/.agent/artifacts/bash/5e4d793a1bc3ae3b2c7fedb39645e04d3bd6a86ceb064ba99746d6164034942d.json +0 -13
  77. comate_cli-0.12.6b2/.agent/artifacts/bash/6a28b28d04d8cf003fc6e41560ad05af138aecfdb0f7f9978bf12a1d3b4e353a.json +0 -13
  78. comate_cli-0.12.6b2/.agent/artifacts/bash/8e9d29f51d07bd7d9cd02aae2cc12c1bd575f3748f6a2b9065dcad75973c1e90.json +0 -13
  79. comate_cli-0.12.6b2/.agent/artifacts/bash/954f324b297d871035343be09391bc7c5e0df38faf3f4a3a92be92685a9ad4e3.txt +0 -7
  80. comate_cli-0.12.6b2/.agent/artifacts/bash/a58d73b67de68741d8e4e9e7d212a7e98a7db0b864113fbd2b9056b166095c85.txt +0 -1752
  81. comate_cli-0.12.6b2/.agent/artifacts/bash/b44535f54c0d62ce9f9fa3a673ccff0f6d17086dce54787da0f8ab910c2ed1c9.json +0 -13
  82. comate_cli-0.12.6b2/.agent/artifacts/bash/b8f6674b359865d1c0880633f552a30210a60d30d2c11370e9ab0457f65f75a3.txt +0 -708
  83. comate_cli-0.12.6b2/.agent/artifacts/bash/da3d0964cd50a338b3dedc5212ee6d4d045c04629f62a0e948c905c3ec27ab4c.json +0 -14
  84. comate_cli-0.12.6b2/.agent/artifacts/bash/dfc071d5c7a17280f23b1875b16a0f38ff61736e5985b2c9e3056f741f17bd5d.json +0 -13
  85. comate_cli-0.12.6b2/.agent/artifacts/bash/e12f27ecae32f087ea8696b8061c42facb63a91b2b100568f3602cc2f0b6ce60.json +0 -12
  86. comate_cli-0.12.6b2/.agent/artifacts/bash/fe60ed7a2e79c21b81416fa2e77c827ea64df5ba5b6cd343a9b423731dc15b4d.txt +0 -747
  87. comate_cli-0.12.6b2/.agent/artifacts/glob/dc28800ddef1229e5c0bd125335ab31d85d5f8aba0ff2713d09829671b70f2ec.json +0 -107
  88. comate_cli-0.12.6b2/.agent/artifacts/glob/e6fa077dd5e2e19045abf084f97dcfbcbffc1571967a0243ca40ff996d8bc9f2.json +0 -93
  89. comate_cli-0.12.6b2/.agent/artifacts/grep_content/010b7d94484960699c5c28b5d2ea86d53c2d998a78141c75b834409de64bf25c.txt +0 -63
  90. comate_cli-0.12.6b2/.agent/artifacts/grep_content/0193f8465b3eaba72bb4f4f78d0376ca89a09d96e87bb9b63c4543023c6b5516.txt +0 -44
  91. comate_cli-0.12.6b2/.agent/artifacts/grep_content/021a341ef368f43394d1e54f24c5865c84aa9f6cbaeec777d0a09ca5431af82b.txt +0 -131
  92. comate_cli-0.12.6b2/.agent/artifacts/grep_content/03edbaec20870710ae8531b002c837e2c092d53ed8b544d05330cf5fd699dcb4.txt +0 -71
  93. comate_cli-0.12.6b2/.agent/artifacts/grep_content/0499bd5aca13709d7ad1c6ad597adf8ca169359342fec01b6dacb83005854de1.txt +0 -65
  94. comate_cli-0.12.6b2/.agent/artifacts/grep_content/09c695b86ba43584b134ed6ee26cbe023f58551e579158cf94790644ad6aaa53.txt +0 -148
  95. comate_cli-0.12.6b2/.agent/artifacts/grep_content/0b96a0a521f9d4c0a88fc75a2e5f69e4c4b7be8ea5d73599eab390c88d4098d8.txt +0 -234
  96. comate_cli-0.12.6b2/.agent/artifacts/grep_content/0ba5851c04aaa37f25f6b0a37daa3522754d7865e79b3abf0daf8fca54fc07f7.txt +0 -56
  97. comate_cli-0.12.6b2/.agent/artifacts/grep_content/0beb89f407f205d5b2fdb075c98869ffa5db8e2a3687706e06399d3f58a3278f.txt +0 -66
  98. comate_cli-0.12.6b2/.agent/artifacts/grep_content/0bf5d9171b6ec0a61962ae22ce8109a26abf764c031ddd5c8dcad25c678020ec.txt +0 -35
  99. comate_cli-0.12.6b2/.agent/artifacts/grep_content/0db7a1bd5eb18329885082bc554f4456a5c254b687c25c2b3611a364634badd8.txt +0 -79
  100. comate_cli-0.12.6b2/.agent/artifacts/grep_content/0dd1a484cf5b506de9a8e85db9c9156e7623bc633c07d8805d83768edf1d1b68.txt +0 -567
  101. comate_cli-0.12.6b2/.agent/artifacts/grep_content/0f48a977857dc6fe0658c5341b8b409205bb6391cc458d19d18f06b1c37e3b8c.txt +0 -52
  102. comate_cli-0.12.6b2/.agent/artifacts/grep_content/1194ded949e902bc25be21bfe63952a98381416bed255dc052b6715ebb81f11e.txt +0 -52
  103. comate_cli-0.12.6b2/.agent/artifacts/grep_content/134f90a9b26f8bbc6fc602c3a1301623823abec5cb8eb9680ea060bea5d78b07.txt +0 -331
  104. comate_cli-0.12.6b2/.agent/artifacts/grep_content/1461fb3572a606968e5d9738ec65dfe0cf4616ead5696f2b47dd36dd12cd8346.txt +0 -326
  105. comate_cli-0.12.6b2/.agent/artifacts/grep_content/14d7326d6dc701ca7e331efa97cede45e6b53b98c5f1a784d438db4bccb2853a.txt +0 -66
  106. comate_cli-0.12.6b2/.agent/artifacts/grep_content/14f7537d8a7090ad8f6531bd9ecfadd9d727f2bf0c620afde878e8765d596cc8.txt +0 -258
  107. comate_cli-0.12.6b2/.agent/artifacts/grep_content/176241ffb6774d19531593769c50349debb431f8c888f8e4fb46178af6f8f9e6.txt +0 -161
  108. comate_cli-0.12.6b2/.agent/artifacts/grep_content/17e25775e4ce9b0fcb34b7af659d7d72f53262b1b59c21190f450c4eda8bb6a2.txt +0 -198
  109. comate_cli-0.12.6b2/.agent/artifacts/grep_content/1a9cea8b7b788598502df8771b6c03f6b393613e1d911f04959ec59f3b7e9869.txt +0 -40
  110. comate_cli-0.12.6b2/.agent/artifacts/grep_content/1b2ee53405771f837aa234d5a8d128c3f1fd6f16306ec5c71e30df1a55f0eab8.txt +0 -145
  111. comate_cli-0.12.6b2/.agent/artifacts/grep_content/1c265542a4a6dac9cdc557ba271a9022d5f5bfa044d7ae4201a302ee59517542.txt +0 -79
  112. comate_cli-0.12.6b2/.agent/artifacts/grep_content/1cf1dda756728f6ba6712be0349c949ac8487d9515bfd8f8941cd53fd96bea76.txt +0 -268
  113. comate_cli-0.12.6b2/.agent/artifacts/grep_content/1dd72f0779d1616cc4683de1565d1cc4242dee18987cfe5c9ead6ec445ab952f.txt +0 -399
  114. comate_cli-0.12.6b2/.agent/artifacts/grep_content/1f0f6484841d5396cfb19f060ada806f54d62594a2a6f81af4ed70d379bdb82e.txt +0 -188
  115. comate_cli-0.12.6b2/.agent/artifacts/grep_content/1f4854573b520c1a6e0fb4cd8488263f823a61a6867e4c7d92cdce74b4cb4d1b.txt +0 -35
  116. comate_cli-0.12.6b2/.agent/artifacts/grep_content/200787ede572c7eee4ff7cd579a936b8ab0ecf6f25bb2f6ac89dbd04fdac1ef7.txt +0 -97
  117. comate_cli-0.12.6b2/.agent/artifacts/grep_content/212ec2839d46d8d2f64dbbb9e0a4ed8b962178113fe8dfc1f29ccbc02fd46e14.txt +0 -80
  118. comate_cli-0.12.6b2/.agent/artifacts/grep_content/22fb4c5aa3fea197c71b90824449eca45095da4bd1c7bc76dbfb689abcd5cc49.txt +0 -212
  119. comate_cli-0.12.6b2/.agent/artifacts/grep_content/2932089e3759921321ff908eb7998bb849c234380e04f3f7a5171fc9f432ef2f.txt +0 -54
  120. comate_cli-0.12.6b2/.agent/artifacts/grep_content/29cd9403e9ab3dac5cc3a95fa0ede278decb57cf7183eaad8e29aed9903aba26.txt +0 -95
  121. comate_cli-0.12.6b2/.agent/artifacts/grep_content/2aa8195d533da9ee878d5ff7e7c4574ad9dc54c57e85f0be801d9aa5ba7e9d65.txt +0 -61
  122. comate_cli-0.12.6b2/.agent/artifacts/grep_content/2df4412a93598e76038f722e112a5519bbca58e31a27a471346aecf3c5d486b8.txt +0 -647
  123. comate_cli-0.12.6b2/.agent/artifacts/grep_content/2f04b6777f986f64bbdcdd828eb4a7fa5aa67872fc0d61e891d2af9ec51a6fb8.txt +0 -71
  124. comate_cli-0.12.6b2/.agent/artifacts/grep_content/3114f2804efe81842b21a85a4bc9eb2ef9f975c28e9220564e6cd2185fed11f7.txt +0 -440
  125. comate_cli-0.12.6b2/.agent/artifacts/grep_content/3240cf436c636223d89029d2859dc8b8bbc059ea3b8b9a3cdcececb6e75d6da9.txt +0 -57
  126. comate_cli-0.12.6b2/.agent/artifacts/grep_content/3a03ca37d32ea15316bb77147116bf8eeaa55ea255b7819f1b6350e80cd38481.txt +0 -60
  127. comate_cli-0.12.6b2/.agent/artifacts/grep_content/3b2c13e633a6c9633f53342cc76ec87e4863d24fde2312e88b1bd546e194666f.txt +0 -341
  128. comate_cli-0.12.6b2/.agent/artifacts/grep_content/4274f27741d2a37b85ea968754ede69180f59300532f1c8e2c8bcc6cb57d93f8.txt +0 -115
  129. comate_cli-0.12.6b2/.agent/artifacts/grep_content/42c75defbb53e48d8521927f945412100cd487ad492ee1a57a57df3f64831096.txt +0 -24
  130. comate_cli-0.12.6b2/.agent/artifacts/grep_content/435267ab04edbf55d21c169170faf8eca36f065abb282e9fd731cbf500763757.txt +0 -150
  131. comate_cli-0.12.6b2/.agent/artifacts/grep_content/448d3ded3b00200238f3782ed0fb5fbe30166139308cfa6cd3e31867f3cf941e.txt +0 -411
  132. comate_cli-0.12.6b2/.agent/artifacts/grep_content/449ac499b090311eb8b5594f7646d84f67e9da1fad4ad968b772d4d8ab404141.txt +0 -134
  133. comate_cli-0.12.6b2/.agent/artifacts/grep_content/45f0d5dda63863f163106fbf234ba98c6b2ba88ee63c308b922b6b18b9d6d179.txt +0 -77
  134. comate_cli-0.12.6b2/.agent/artifacts/grep_content/48a5ea12ce666954aeb22afab26d199f9ceb7c5db99531077bed0298837a4777.txt +0 -399
  135. comate_cli-0.12.6b2/.agent/artifacts/grep_content/4d6a33d9eaeb38ed7558b7e0162b399580b211cedefdd2a4126b6363b0616b9a.txt +0 -152
  136. comate_cli-0.12.6b2/.agent/artifacts/grep_content/54822f93bd0f279a2dc67f57f4b49a549938346f606c3ea62f76573ed7c19729.txt +0 -218
  137. comate_cli-0.12.6b2/.agent/artifacts/grep_content/5529a626789de692d52c89bc7fc6a60cf8f97522641ca7c20459f76a3107f841.txt +0 -59
  138. comate_cli-0.12.6b2/.agent/artifacts/grep_content/5592b8582682415bf399fd16bc4e354a8af6979acc7ee5f7d8161b6a2a090a6e.txt +0 -66
  139. comate_cli-0.12.6b2/.agent/artifacts/grep_content/5697b946b47f9c271273606510662d25c579a1c3cd66a3f73f845178626adf8c.txt +0 -60
  140. comate_cli-0.12.6b2/.agent/artifacts/grep_content/571cb6737be8d74e05976da2ba022ea1a5e191bdfeafa40b22834b61aca984ec.txt +0 -77
  141. comate_cli-0.12.6b2/.agent/artifacts/grep_content/592ea99ad61dc416029a0a68a9ea47c765d706d7ffbae9cd697405da2dd8a9ec.txt +0 -120
  142. comate_cli-0.12.6b2/.agent/artifacts/grep_content/5c0df9216c4f53dc1c2d786266a137dbe326ab4363ddc40307fb21a00a9f94ac.txt +0 -163
  143. comate_cli-0.12.6b2/.agent/artifacts/grep_content/5ce22f90e1ec6217b95997fad94cc926c12ffdd6f3ef3e278bf0b89ecbcc6d62.txt +0 -57
  144. comate_cli-0.12.6b2/.agent/artifacts/grep_content/5dc1de7af87cb4091467bc5f0265745e602853afdc3863c267b6e90a26f412c9.txt +0 -609
  145. comate_cli-0.12.6b2/.agent/artifacts/grep_content/5e648bf7034fb52a2216f915aa95cfa96f6f5038e27f521266a23f2d800fa5bc.txt +0 -198
  146. comate_cli-0.12.6b2/.agent/artifacts/grep_content/5fff0b4efc09b785f1ee5dee2e5d7ad4e247bdb9c93f41b5814c9db1c04cb8d7.txt +0 -220
  147. comate_cli-0.12.6b2/.agent/artifacts/grep_content/6249573679ee1a300a25baec32ea72ee34eeffb45f73f676cc0b0f0d11a2d31d.txt +0 -258
  148. comate_cli-0.12.6b2/.agent/artifacts/grep_content/6258f866ee46c82b3b4584aafd49625b86793f1324318970124c849013397865.txt +0 -75
  149. comate_cli-0.12.6b2/.agent/artifacts/grep_content/640e6e9edd64f8ed1f4928e9af1f9890c17386cdbc86d329cc2256628e7c50bb.txt +0 -91
  150. comate_cli-0.12.6b2/.agent/artifacts/grep_content/643717af84fd6f09302e9656f696f853b85dc10bdd144cc4b3ea064c0ee39056.txt +0 -94
  151. comate_cli-0.12.6b2/.agent/artifacts/grep_content/65ed38867aa3162db6899d4f1b76907655d6af699cff567e2b776ec997f65b9e.txt +0 -44
  152. comate_cli-0.12.6b2/.agent/artifacts/grep_content/67196d9894f03b07594d654caf016388b13842a7b3d11466a7b7532727d11bfa.txt +0 -58
  153. comate_cli-0.12.6b2/.agent/artifacts/grep_content/6775046194b93d29bf37cb7185f9b808ebd4938f14659e76bfe2daf6dcbbb135.txt +0 -73
  154. comate_cli-0.12.6b2/.agent/artifacts/grep_content/68ac5bf6206064b6d2d7c44f800cc58795c9ea0362132c438fa33c53b9586aa9.txt +0 -149
  155. comate_cli-0.12.6b2/.agent/artifacts/grep_content/6c6f4e1f9e1d09af3d8a7c10dd243df92781e6ebbbf4f1215c189d74b7a16e01.txt +0 -151
  156. comate_cli-0.12.6b2/.agent/artifacts/grep_content/6cfadf5d61982d2bb941416d5fefc22202df0bd4dde584321be50716843f2a4e.txt +0 -90
  157. comate_cli-0.12.6b2/.agent/artifacts/grep_content/6dbade43d62180ae1367c70744d985615fe64768efba5c77317ea4c349aa7958.txt +0 -134
  158. comate_cli-0.12.6b2/.agent/artifacts/grep_content/6e20e5b86fbf934bbe180ab38a81e259006f0fc43b4d650820994dea3ead8075.txt +0 -77
  159. comate_cli-0.12.6b2/.agent/artifacts/grep_content/705ec2d0ab89a76fbc02a18d23d8bf10b26eebd5144911cb398e46e2374524cf.txt +0 -77
  160. comate_cli-0.12.6b2/.agent/artifacts/grep_content/73f1fdec89c242b1c28093dcc12e830a4467c5c5197286879a25feda693b3ede.txt +0 -109
  161. comate_cli-0.12.6b2/.agent/artifacts/grep_content/745e2b17c9b412d9d89d380626ceb2eb088b2d24e1a4f26be948061a8daaccdd.txt +0 -66
  162. comate_cli-0.12.6b2/.agent/artifacts/grep_content/74bf1dc40d9b884a5312567e5bc923389e9bcd10e9efa1eb87a01c50b1e11ef1.txt +0 -152
  163. comate_cli-0.12.6b2/.agent/artifacts/grep_content/758f6bd9fa04989fe968fb80567eb4a4d028e9dd6ca9c482c0a919a7c9da6dad.txt +0 -59
  164. comate_cli-0.12.6b2/.agent/artifacts/grep_content/762dfb3969ac05cfd8ed58ea34abea8b4e4756ec5c8ef7496e49bb6f824439af.txt +0 -61
  165. comate_cli-0.12.6b2/.agent/artifacts/grep_content/7880b26ed67f9abd746b4e5c7ccc009f97a16cc5245b4fb04e9e51faf2e99b43.txt +0 -61
  166. comate_cli-0.12.6b2/.agent/artifacts/grep_content/7b530ebb0d7be5cb364886c326ac09fedb208520170ec424c0d66f2a049cd735.txt +0 -164
  167. comate_cli-0.12.6b2/.agent/artifacts/grep_content/7d4e0f51f0fa21846dfda5ceebb79cf53d0e8abf1b2f86ecd09ddf06f85cd3bc.txt +0 -14
  168. comate_cli-0.12.6b2/.agent/artifacts/grep_content/7d79d72b0ff97ae7703118b1c3edc22a3e9aad968baaeb1210281e1b3e0fdf75.txt +0 -261
  169. comate_cli-0.12.6b2/.agent/artifacts/grep_content/7f6ae5a9bc2404aef026b13c8a360c1c687ea1c1509b65429239928d9f8560bb.txt +0 -91
  170. comate_cli-0.12.6b2/.agent/artifacts/grep_content/81d4cf35489f009f64aba1f01c0a9c73ac256391d5369dbbae2b3f92c912afb0.txt +0 -618
  171. comate_cli-0.12.6b2/.agent/artifacts/grep_content/8261ffc4381d4293b7675eabe7956c75c75890e45387cbfba52dd2f1fdb12939.txt +0 -176
  172. comate_cli-0.12.6b2/.agent/artifacts/grep_content/84edad480d7623c75eb5026afb01a8381f7ed22a15ba43ddb89107821ece3893.txt +0 -667
  173. comate_cli-0.12.6b2/.agent/artifacts/grep_content/89124ab34d06feebcf91d5fa7fd8d3f36493f0d62ae79b0f339f87a229333a3b.txt +0 -147
  174. comate_cli-0.12.6b2/.agent/artifacts/grep_content/8a1456d96d430228501f6c305ba67912312bfdd48b2841e2456160a02498ea5b.txt +0 -77
  175. comate_cli-0.12.6b2/.agent/artifacts/grep_content/8bc79492c38d7124f4214f0437350fb1cfadaf6635bc4391c69fe64c6e8f6096.txt +0 -4
  176. comate_cli-0.12.6b2/.agent/artifacts/grep_content/8c95072ee427abdb9a07444bf26dc78e72cf93ed9e898d77dd9aa643f6f5b913.txt +0 -58
  177. comate_cli-0.12.6b2/.agent/artifacts/grep_content/8df1e210850f75543f8fb545a963ec57b161dca48a8deba2241611dd6b9fd4eb.txt +0 -59
  178. comate_cli-0.12.6b2/.agent/artifacts/grep_content/9388950ba2ced7980db5beb500eec752bdf25fbe59b6a95ed8c3bee218e5fb58.txt +0 -73
  179. comate_cli-0.12.6b2/.agent/artifacts/grep_content/97081bbfef1b6bbdfa1d160d122767a871db324afd40d2f3c625f9cd8b2e23f3.txt +0 -65
  180. comate_cli-0.12.6b2/.agent/artifacts/grep_content/98060d6195be5fb98d6098eb947853a25a305bce1ebf5a4218ffb791379b9dc6.txt +0 -161
  181. comate_cli-0.12.6b2/.agent/artifacts/grep_content/98b2832dd79c7972eb441b3102f1f6aa40ccb867d7771ec238142564a3b4a117.txt +0 -113
  182. comate_cli-0.12.6b2/.agent/artifacts/grep_content/98b76a32c3a05f7d91b8b81518f28b613f7ccb373575858fd6aa2711ddbc382e.txt +0 -85
  183. comate_cli-0.12.6b2/.agent/artifacts/grep_content/9a5fd2d8be3b1e8ef2343f9a19bd75adba3687b2cb8234ee341d6cdc3ab1f361.txt +0 -97
  184. comate_cli-0.12.6b2/.agent/artifacts/grep_content/9c80158f162aadb87f84195c4496a1c24f68ceca3535852835de9cf4e428d028.txt +0 -6
  185. comate_cli-0.12.6b2/.agent/artifacts/grep_content/9d34f05ccc7150bc7a1878d112f08fafbaa4d4e420dbd7f1129dc1046c697e39.txt +0 -166
  186. comate_cli-0.12.6b2/.agent/artifacts/grep_content/a9594b8f4f25e5b378fcc883960fa7afb2dea9d80851cb5d52f18d856be95219.txt +0 -72
  187. comate_cli-0.12.6b2/.agent/artifacts/grep_content/aa8a10a861a188abbbbbe27b7a52f539442bb273a1ad9b1aa1c31910cfad5561.txt +0 -20
  188. comate_cli-0.12.6b2/.agent/artifacts/grep_content/abacaab899684c1677f97720dcfc4a6c1fbf98d2cfa44e25f040959586ccaa20.txt +0 -157
  189. comate_cli-0.12.6b2/.agent/artifacts/grep_content/ac65e45db9f2c51a484173eb31b907c1cb007c5cacca21396790f5345968ca72.txt +0 -145
  190. comate_cli-0.12.6b2/.agent/artifacts/grep_content/ac8641710e4c96567edad6364d218a08630ff20af9f075f61c20d013f9369648.txt +0 -79
  191. comate_cli-0.12.6b2/.agent/artifacts/grep_content/ac94d3b218537471b6ac89a8da0c454d9d25801ffd4c88ea862bf0893c5e0812.txt +0 -206
  192. comate_cli-0.12.6b2/.agent/artifacts/grep_content/ad798be6fa338bd3ee7fc49048192e39d3b2b78837051208815b817e5ca96793.txt +0 -52
  193. comate_cli-0.12.6b2/.agent/artifacts/grep_content/b04c0955b68f788125018525e308e82987ada00d3943e21cb159f577319ccf11.txt +0 -103
  194. comate_cli-0.12.6b2/.agent/artifacts/grep_content/b1b9c6d1eefe14c5076aa214fe4f98242f99ed9b146214d0305224539d8e78a1.txt +0 -558
  195. comate_cli-0.12.6b2/.agent/artifacts/grep_content/b28aa6d5d336c7da99b72949fa0e09580cde07499cb1d7e611f14e2b426fb9fe.txt +0 -184
  196. comate_cli-0.12.6b2/.agent/artifacts/grep_content/b39bb289db5f9e4f31c67766f5e08333d10f384a2d5f6b71fb44522bc4f17f80.txt +0 -175
  197. comate_cli-0.12.6b2/.agent/artifacts/grep_content/b64736bbdd8fe7ca1ff2ef98558f16f145ca437255ccebca44bf1041b0afbd55.txt +0 -141
  198. comate_cli-0.12.6b2/.agent/artifacts/grep_content/b898cd80aa00ebdfda4ef314a4e245e62ee96c21935a7f332243a67b0072d1a0.txt +0 -172
  199. comate_cli-0.12.6b2/.agent/artifacts/grep_content/b9c8c69d370fcd4291d5d1ed72b9f823df340a9d4f904c3965cca93c257294f2.txt +0 -119
  200. comate_cli-0.12.6b2/.agent/artifacts/grep_content/c11eb234db46678fa7ac871e396a067c238bd37414fad52e3be433933ffe7878.txt +0 -852
  201. comate_cli-0.12.6b2/.agent/artifacts/grep_content/c1a4508b9a74b3d1649f25dbd474780e6212ced036bbca6b4aac06d324ff10e9.txt +0 -71
  202. comate_cli-0.12.6b2/.agent/artifacts/grep_content/c3c33582bb37fb71235e9d0fd2b8d2cc8c926cfcb014261356ea917db6417ebd.txt +0 -96
  203. comate_cli-0.12.6b2/.agent/artifacts/grep_content/c42bd0a52664189ec6fafa76458456048c5c73907bbadddd205371b55def9393.txt +0 -104
  204. comate_cli-0.12.6b2/.agent/artifacts/grep_content/c63907ae1cb41e59de75df3d6e0dff27db2ce2434cac5f283a428e4fd9bee301.txt +0 -66
  205. comate_cli-0.12.6b2/.agent/artifacts/grep_content/d2402b2d42c975305d4866353935ce285eb67ff7f2a2d74ee9be559d022c86f6.txt +0 -77
  206. comate_cli-0.12.6b2/.agent/artifacts/grep_content/d4e8e439058ef24fb0671ee6674a5b854c17e0b93b012d2dbe8ed85928afe560.txt +0 -102
  207. comate_cli-0.12.6b2/.agent/artifacts/grep_content/d8c8f51da7a2bc8977320248883adabe9a4d9da131e99f7dfe18a9c826b1c8b1.txt +0 -123
  208. comate_cli-0.12.6b2/.agent/artifacts/grep_content/db71617421ab524615206740825824b73f3c407c93a18e2a01d8c80789c02b3c.txt +0 -409
  209. comate_cli-0.12.6b2/.agent/artifacts/grep_content/dbd79a71f323da5dc1570d5c8d6b99e73b642128697b6c51ab240379fa74f763.txt +0 -71
  210. comate_cli-0.12.6b2/.agent/artifacts/grep_content/de09b36cc3fd06274fcdbfc7d431f170afe40b4fa8ddd5c0a281581ee03eabec.txt +0 -58
  211. comate_cli-0.12.6b2/.agent/artifacts/grep_content/dfd45c97a1da7d27da6790c1b24048f584ed4f831e971cf3f4c366b7d8687980.txt +0 -385
  212. comate_cli-0.12.6b2/.agent/artifacts/grep_content/e138fb7f4303433003aeeaf67b15d783b253696d3d24fd7dfacc50f619db04fd.txt +0 -90
  213. comate_cli-0.12.6b2/.agent/artifacts/grep_content/e1ca31c715894314164641ba9d80dc13f7e8e146e8f77a995bc3650057ee3ba3.txt +0 -44
  214. comate_cli-0.12.6b2/.agent/artifacts/grep_content/e6f0fb5f2688faeaa4875724c32f27e79d8a9710bbb91d2a950b84b3481fc374.txt +0 -90
  215. comate_cli-0.12.6b2/.agent/artifacts/grep_content/e707578cd4b2132eae2e3bdfa918555c2a8f1f4ac52fd6dbc6fc9a347c44221b.txt +0 -183
  216. comate_cli-0.12.6b2/.agent/artifacts/grep_content/e74f8ab779842b213be16f0a58ee7c973c6a4eb4e7c6b56b4087e3016183f8ef.txt +0 -89
  217. comate_cli-0.12.6b2/.agent/artifacts/grep_content/e80bedeb209049fe7a38ade5aa7976dc3fe2ecbeb6cd150a8fa44489172d6e9b.txt +0 -43
  218. comate_cli-0.12.6b2/.agent/artifacts/grep_content/ea0fc86903a5bd1f02832cc3eed4446d55e16dc7df0298c5d74afa56a89a8ca7.txt +0 -199
  219. comate_cli-0.12.6b2/.agent/artifacts/grep_content/eab81978291f4725b9433192c5b7f4b5409cdcdeb80ffab9884c79ef230bdcdd.txt +0 -411
  220. comate_cli-0.12.6b2/.agent/artifacts/grep_content/ef7bd4368558b2b411c410c936554d99ecc0f2fe647a970208f8b0c986e3921c.txt +0 -74
  221. comate_cli-0.12.6b2/.agent/artifacts/grep_content/f04828b2b54922581d7cde5351807a457896b2940fd748e8d706fd5dc4bed971.txt +0 -331
  222. comate_cli-0.12.6b2/.agent/artifacts/grep_content/f04b4f70fe5292dc485164699342c03f3cf4715ba0d5efa815cb7a332dd78c0b.txt +0 -76
  223. comate_cli-0.12.6b2/.agent/artifacts/grep_content/f0b079f5b4d5a0be065ccb03a2471835cab5b3fd4452439bbd3bf46d401d8a3a.txt +0 -24
  224. comate_cli-0.12.6b2/.agent/artifacts/grep_content/f2012bd41aa48cd2e3f56611f32b041bd41863b681a79d5ff5f515a97e7e1ddc.txt +0 -153
  225. comate_cli-0.12.6b2/.agent/artifacts/grep_content/f35c437708355261ca868cf38ade97384e86f24de9aab20849113dc78eb8564c.txt +0 -142
  226. comate_cli-0.12.6b2/.agent/artifacts/grep_content/f638dfe4edbde834bd968f4d479c1c535dff1dfac10f3e003ec8673d5eca5864.txt +0 -94
  227. comate_cli-0.12.6b2/.agent/artifacts/grep_content/f916ed291897b4afb5f8a55f5e333a53f11540e2ade24f691a7828885aa77a32.txt +0 -77
  228. comate_cli-0.12.6b2/.agent/artifacts/grep_content/fa3b737ee93d45bfff6e78245a5ecad2476dc7010c75c772abc1c272cddae072.txt +0 -31
  229. comate_cli-0.12.6b2/.agent/artifacts/grep_content/fd1133b3a420133590ffb1c050a65477a4751902ca9b832db1c23a6fb90200b8.txt +0 -127
  230. comate_cli-0.12.6b2/.agent/artifacts/grep_content/fe3df7b68f7041d210336363f5b11faf963427dbcf4027172e19db05f7b24fa1.txt +0 -127
  231. comate_cli-0.12.6b2/.agent/artifacts/grep_content/ff07c3d10b81977aa6c7769465dbab4754e11bd84225afba1b17eff2824ad28d.txt +0 -70
  232. comate_cli-0.12.6b2/.agent/artifacts/grep_content/ff6b896f93f2ac018a3af519be3001d1e4c8ca6ef9ae3e051aa646b409b6773f.txt +0 -85
  233. comate_cli-0.12.6b2/.agent/artifacts/index.json +0 -1715
  234. comate_cli-0.12.6b2/.agent/artifacts/ls/4f2cd109869e06f70f28f7aaaa3163fea4731bbb92dc4da8ac25177d6f122f87.json +0 -719
  235. comate_cli-0.12.6b2/.agent/artifacts/ls/768197391db12061fb74d56cad07e9331db0bd832503b5e40be76b49208a111a.json +0 -53
  236. comate_cli-0.12.6b2/.agent/artifacts/ls/a560ae7492ac913282b703abd48897905727acc058d0f9346b17d450f32e1a8a.json +0 -755
  237. comate_cli-0.12.6b2/.agent/artifacts/tool_result/01f0c4c39cc01ec7d59077fa8bfca183cbd6c93d0a7083261f228badca115eba.txt +0 -16
  238. comate_cli-0.12.6b2/.agent/artifacts/tool_result/03079608ffe5b120094798aababb67671a20f8466c0197044eacaea56fa12d30.txt +0 -713
  239. comate_cli-0.12.6b2/.agent/artifacts/tool_result/08e5d1cdde9e2d6dff5435ee87c6710470709d83c271185eaaaa6d652068d80e.txt +0 -379
  240. comate_cli-0.12.6b2/.agent/artifacts/tool_result/10f74765725e10bd94d92eb25cea495ea8cb9d9151397b05b200ed44a852d882.txt +0 -16
  241. comate_cli-0.12.6b2/.agent/artifacts/tool_result/3faa3ddc36161e84da99e18707d61b7ffbbbeb8217c28a55a027134f8def5d17.txt +0 -1602
  242. comate_cli-0.12.6b2/.agent/artifacts/tool_result/45cd4ad764e19e3fc0481b8d8649c235ae51634eb41da0806f9f00ab1bdb640d.txt +0 -1833
  243. comate_cli-0.12.6b2/.agent/artifacts/tool_result/4fdacfc564ff558dd602f672edfbb4a72494d8e3c8937bcf0a3d15e085c4a0b7.txt +0 -1745
  244. comate_cli-0.12.6b2/.agent/artifacts/tool_result/50eb11fb5aa96e54b2a7e68c0b9278ec3c07d222bad92270f4a51df58ca69e03.txt +0 -460
  245. comate_cli-0.12.6b2/.agent/artifacts/tool_result/5a1f18c61191f6b4c1635363748a2aca49ad2183f046035728b5c23ee3df1123.txt +0 -379
  246. comate_cli-0.12.6b2/.agent/artifacts/tool_result/72718c187cf24910d3c21d7e719e004efa27b4f5d7315bbe2b9a33e2494cc0f9.txt +0 -433
  247. comate_cli-0.12.6b2/.agent/artifacts/tool_result/7fa851f7100b6e3e652604de11be2767b7a679aea40e941b0b1218478e5935ed.txt +0 -1039
  248. comate_cli-0.12.6b2/.agent/artifacts/tool_result/9d3ace7b725f6aa5809ca4bc298c5ac3d022cb92c29684c7709d63c9c5fd2ad4.txt +0 -1814
  249. comate_cli-0.12.6b2/.agent/artifacts/tool_result/dbeea3cc8bd22fdb703675e202063e7f4ce21ef00c5c83f74268cd6328ad912d.txt +0 -1694
  250. comate_cli-0.12.6b2/.agent/artifacts/tool_result/ea66ecb02621262c26d0368c108d2f2f94e2d1f75dea6b38bf958c5bdbaa2ee7.txt +0 -710
  251. comate_cli-0.12.6b2/.agent/artifacts/webfetch/2669c40a92ce6395790ae997503be646bdc3af4a49f799b38d8380e5ecd1e015.md +0 -1241
  252. comate_cli-0.12.6b2/.agent/artifacts/webfetch/5701edea87e370ce51349413bcba507833f48f2ad7337eef3deccc82c7d45a8d.md +0 -2
  253. comate_cli-0.12.6b2/.agent/artifacts/webfetch/5c0eeec3d9ab0a6881d12ebd5a95b6b71b90d47640e38c914232d75704332f54.md +0 -2
  254. comate_cli-0.12.6b2/.agent/artifacts/webfetch/80baa6870df61f51b68fadde829aa2ab889fd487f8a8171db36ea3b67ded24db.md +0 -3
  255. comate_cli-0.12.6b2/.agent/artifacts/webfetch/915acd44f3846631527a3cd62e81d9908bb7e8769b970208ffa3326c65df8778.md +0 -2072
  256. comate_cli-0.12.6b2/.agent/artifacts/webfetch/a758c9f6242610e875e36aed11e99ac337359cbe512df15db6544504fa9e68b8.md +0 -18
  257. comate_cli-0.12.6b2/.agent/artifacts/webfetch/eca7d820f7461f58ee9b2b1e931842de54cd1ec023eca7a27e3bfb387efc6aa2.md +0 -1
  258. comate_cli-0.12.6b2/.agent/skills/powerpoint/SKILL.md +0 -36
  259. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/html2pptx.md +0 -625
  260. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  261. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  262. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  263. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  264. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  265. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  266. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  267. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  268. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  269. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  270. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  271. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  272. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  273. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  274. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  275. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  276. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  277. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  278. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  279. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  280. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  281. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  282. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  283. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  284. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  285. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  286. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  287. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  288. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  289. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  290. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  291. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/mce/mc.xsd +0 -75
  292. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  293. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  294. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  295. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  296. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  297. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  298. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  299. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/scripts/pack.py +0 -159
  300. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/scripts/unpack.py +0 -29
  301. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/scripts/validate.py +0 -69
  302. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/scripts/validation/base.py +0 -951
  303. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/scripts/validation/docx.py +0 -274
  304. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/scripts/validation/pptx.py +0 -315
  305. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml/scripts/validation/redlining.py +0 -279
  306. comate_cli-0.12.6b2/.agent/skills/powerpoint/references/ooxml.md +0 -427
  307. comate_cli-0.12.6b2/.agent/skills/powerpoint/scripts/html2pptx.js +0 -979
  308. comate_cli-0.12.6b2/.agent/skills/powerpoint/scripts/inventory.py +0 -1020
  309. comate_cli-0.12.6b2/.agent/skills/powerpoint/scripts/rearrange.py +0 -231
  310. comate_cli-0.12.6b2/.agent/skills/powerpoint/scripts/replace.py +0 -385
  311. comate_cli-0.12.6b2/.agent/skills/powerpoint/scripts/thumbnail.py +0 -450
  312. comate_cli-0.12.6b2/dist-comate/.gitignore +0 -1
  313. comate_cli-0.12.6b2/dist-comate/comate_cli-0.7.10-py3-none-any.whl +0 -0
  314. comate_cli-0.12.6b2/dist-comate/comate_cli-0.7.10.tar.gz +0 -0
  315. comate_cli-0.12.6b2/dist-hico/.gitignore +0 -1
  316. comate_cli-0.12.6b2/dist-hico/hico_cli-0.7.17-py3-none-any.whl +0 -0
  317. comate_cli-0.12.6b2/dist-hico/hico_cli-0.7.17.tar.gz +0 -0
  318. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/.agent/scheduled_prompts.json +0 -0
  319. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/.gitignore +0 -0
  320. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/.python-version +0 -0
  321. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/__init__.py +0 -0
  322. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/__main__.py +0 -0
  323. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/device_identity.py +0 -0
  324. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/mcp_cli.py +0 -0
  325. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/__init__.py +0 -0
  326. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/animations.py +0 -0
  327. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/approval_bridge.py +0 -0
  328. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/approval_content_preview.py +0 -0
  329. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/assistant_render.py +0 -0
  330. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/backend/__init__.py +0 -0
  331. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/backend/announcements.py +0 -0
  332. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/backend/client.py +0 -0
  333. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/backend/feedback.py +0 -0
  334. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/backend/provider_snapshot.py +0 -0
  335. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/backend/rating.py +0 -0
  336. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/backend/runtime.py +0 -0
  337. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/backend/session_title.py +0 -0
  338. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/backend/tasks.py +0 -0
  339. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/bash_command_display.py +0 -0
  340. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/browser_open.py +0 -0
  341. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/builtin_commands/.keep +0 -0
  342. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/builtin_commands/commit.md +0 -0
  343. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/builtin_commands/implement-plan.md +0 -0
  344. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/builtin_commands/learn.md +0 -0
  345. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/builtin_commands/open-pr.md +0 -0
  346. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/clipboard_image.py +0 -0
  347. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/clipboard_text.py +0 -0
  348. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/codenames.py +0 -0
  349. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/config/__init__.py +0 -0
  350. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/config/edit_session.py +0 -0
  351. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/config/model.py +0 -0
  352. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/config/picker.py +0 -0
  353. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/config/picker_state.py +0 -0
  354. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/config/store.py +0 -0
  355. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/config_check.py +0 -0
  356. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/console_profile.py +0 -0
  357. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/context_view.py +0 -0
  358. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/custom_slash_commands.py +0 -0
  359. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/effort_menu.py +0 -0
  360. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/effort_ruler.py +0 -0
  361. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/effort_style.py +0 -0
  362. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/env_utils.py +0 -0
  363. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/error_display.py +0 -0
  364. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/exit_confirm_view.py +0 -0
  365. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/exit_watchdog.py +0 -0
  366. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/figures.py +0 -0
  367. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/file_ref_hint.py +0 -0
  368. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/focus_events.py +0 -0
  369. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/fragment_utils.py +0 -0
  370. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/goal_edit_view.py +0 -0
  371. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/goal_resume_view.py +0 -0
  372. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/history_printer.py +0 -0
  373. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/i18n/__init__.py +0 -0
  374. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/image_chips.py +0 -0
  375. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/input_geometry.py +0 -0
  376. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/job_activity.py +0 -0
  377. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/jobs_state.py +0 -0
  378. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/layout_coordinator.py +0 -0
  379. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/locale.py +0 -0
  380. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/logging_file_handler.py +0 -0
  381. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/logo.py +0 -0
  382. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/loop_freeze_watchdog.py +0 -0
  383. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/markdown_render.py +0 -0
  384. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/mcp_serve.py +0 -0
  385. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/mention_completer.py +0 -0
  386. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/menu_panel.py +0 -0
  387. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/message_style.py +0 -0
  388. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/model_tier_style.py +0 -0
  389. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/models.py +0 -0
  390. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/output_style_menu.py +0 -0
  391. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/__init__.py +0 -0
  392. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/auto_update_runner.py +0 -0
  393. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/auto_update_store.py +0 -0
  394. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/components/__init__.py +0 -0
  395. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/components/detail_view.py +0 -0
  396. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/components/plugin_list.py +0 -0
  397. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/components/search_box.py +0 -0
  398. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/components/tab_bar.py +0 -0
  399. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/marketplace_install_view.py +0 -0
  400. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/operation_state.py +0 -0
  401. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/plugin_picker.py +0 -0
  402. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/tabs/__init__.py +0 -0
  403. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/tabs/discover_tab.py +0 -0
  404. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/tabs/errors_tab.py +0 -0
  405. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/tabs/installed_tab.py +0 -0
  406. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/plugins/tabs/marketplaces_tab.py +0 -0
  407. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/preflight.py +0 -0
  408. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/preflight_wizard.py +0 -0
  409. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/preflight_wizard_ui.py +0 -0
  410. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/print_mode.py +0 -0
  411. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/question_broker.py +0 -0
  412. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/question_view.py +0 -0
  413. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/recap/__init__.py +0 -0
  414. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/recap/controller.py +0 -0
  415. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/resume_picker.py +0 -0
  416. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/resume_preview.py +0 -0
  417. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/resume_selector.py +0 -0
  418. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/rpc_commands.py +0 -0
  419. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/rpc_relay.py +0 -0
  420. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/rpc_stdio.py +0 -0
  421. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/rpc_ws.py +0 -0
  422. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/scm_request_status.py +0 -0
  423. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/selection_menu.py +0 -0
  424. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/sigint_guard.py +0 -0
  425. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/skill_slash_input.py +0 -0
  426. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/slash_commands.py +0 -0
  427. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/startup.py +0 -0
  428. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/startup_profile.py +0 -0
  429. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/statusline/__init__.py +0 -0
  430. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/statusline/model.py +0 -0
  431. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/statusline/picker.py +0 -0
  432. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/statusline/picker_state.py +0 -0
  433. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/statusline/store.py +0 -0
  434. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/stream_pacer.py +0 -0
  435. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/suggestion/__init__.py +0 -0
  436. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/suggestion/controller.py +0 -0
  437. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/synchronized_output.py +0 -0
  438. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/theme.py +0 -0
  439. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tip_highlight.py +0 -0
  440. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tips.py +0 -0
  441. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tool_approval_view.py +0 -0
  442. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tool_fold_view.py +0 -0
  443. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tool_result_state.py +0 -0
  444. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tool_result_store.py +0 -0
  445. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tool_result_viewer.py +0 -0
  446. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/transcript_viewer.py +0 -0
  447. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/__init__.py +0 -0
  448. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/approval_queue.py +0 -0
  449. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/btw_view.py +0 -0
  450. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/key_bindings.py +0 -0
  451. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/mcp_auth_view.py +0 -0
  452. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/mcp_connecting_view.py +0 -0
  453. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/resize_guard.py +0 -0
  454. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/run_clock.py +0 -0
  455. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/slash_command_registry.py +0 -0
  456. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/tui_parts/ui_mode.py +0 -0
  457. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/ultracode_keyword.py +0 -0
  458. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/workflows_menu.py +0 -0
  459. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_agent/workflows_panel_model.py +0 -0
  460. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/terminal_title.py +0 -0
  461. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/comate_cli/update_cli.py +0 -0
  462. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/docs/cli-rpc-stdio-guide.md +0 -0
  463. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/docs/release-notes/0.12.3.md +0 -0
  464. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/docs/startup-performance.md +0 -0
  465. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/docs/superpowers/plans/2026-07-07-tui-first-repaint-before-sdk-submit.md +0 -0
  466. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/docs/superpowers/plans/2026-07-07-windows-update-manual-rollback.md +0 -0
  467. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/_fake_anthropic_server.py +0 -0
  468. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/_rpc_ws_client.py +0 -0
  469. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/config/__init__.py +0 -0
  470. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/config/test_config_exit.py +0 -0
  471. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/config/test_edit_session.py +0 -0
  472. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/config/test_model.py +0 -0
  473. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/config/test_picker_state.py +0 -0
  474. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/config/test_picker_ui.py +0 -0
  475. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/config/test_roundtrip.py +0 -0
  476. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/config/test_runtime_settings.py +0 -0
  477. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/config/test_skills_denylist_migration.py +0 -0
  478. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/config/test_store_load.py +0 -0
  479. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/config/test_store_save.py +0 -0
  480. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/fixtures/exit_watchdog_child.py +0 -0
  481. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/fixtures/fake_mcp_misbehaving_stdout.py +0 -0
  482. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/recap/test_idle_recap_controller.py +0 -0
  483. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/recap/test_recap_history_rendering.py +0 -0
  484. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/recap/test_tui_idle_recap_integration.py +0 -0
  485. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/statusline/__init__.py +0 -0
  486. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/statusline/test_model.py +0 -0
  487. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/statusline/test_picker_state.py +0 -0
  488. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/statusline/test_store.py +0 -0
  489. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/suggestion/test_next_step_suggestion_controller.py +0 -0
  490. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/suggestion/test_next_step_suggestion_render.py +0 -0
  491. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/suggestion/test_tab_accepts_next_step_suggestion.py +0 -0
  492. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/suggestion/test_tui_next_step_suggestion_integration.py +0 -0
  493. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_animations_styles.py +0 -0
  494. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_animator_shuffle.py +0 -0
  495. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_config_check_gate.py +0 -0
  496. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_exit_lifecycle.py +0 -0
  497. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_mcp_needs_auth_hint.py +0 -0
  498. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_mcp_preload.py +0 -0
  499. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_mcp_preload_kick.py +0 -0
  500. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_preflight_gate.py +0 -0
  501. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_print_mode.py +0 -0
  502. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_profile_threading.py +0 -0
  503. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_pty_ctrl_b.py +0 -0
  504. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_pty_ctrl_c_exit.py +0 -0
  505. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_pty_shell_mode.py +0 -0
  506. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_pty_smoke.py +0 -0
  507. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_shutdown.py +0 -0
  508. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_startup_latency.py +0 -0
  509. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_startup_order.py +0 -0
  510. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_token_cost_config.py +0 -0
  511. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_app_usage_line.py +0 -0
  512. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_approval_bridge.py +0 -0
  513. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_approval_content_preview.py +0 -0
  514. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_backend_announcements.py +0 -0
  515. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_backend_client.py +0 -0
  516. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_backend_feedback.py +0 -0
  517. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_backend_provider_snapshot.py +0 -0
  518. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_backend_rating.py +0 -0
  519. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_backend_tasks.py +0 -0
  520. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_btw_slash_command.py +0 -0
  521. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_builtin_marketplaces.py +0 -0
  522. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_busy_slash_gating.py +0 -0
  523. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_cli_project_root.py +0 -0
  524. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_clipboard_chip_restore.py +0 -0
  525. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_clipboard_image_reader.py +0 -0
  526. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_clipboard_text.py +0 -0
  527. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_commands_system_messages.py +0 -0
  528. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_compact_command_semantics.py +0 -0
  529. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_completion_context_activation.py +0 -0
  530. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_completion_status_panel.py +0 -0
  531. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_config_check.py +0 -0
  532. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_console_profile.py +0 -0
  533. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_context_command.py +0 -0
  534. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_context_view.py +0 -0
  535. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_context_view_tool_search.py +0 -0
  536. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_ctrl_b_background.py +0 -0
  537. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_ctrl_c_clear_input.py +0 -0
  538. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_custom_slash_commands.py +0 -0
  539. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_device_identity.py +0 -0
  540. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_discover_tab.py +0 -0
  541. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_distribution_contract.py +0 -0
  542. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_drain_frame_atomicity.py +0 -0
  543. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_effort_menu.py +0 -0
  544. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_effort_menu_frame_rate.py +0 -0
  545. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_effort_ruler.py +0 -0
  546. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_effort_slash_command.py +0 -0
  547. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_effort_style.py +0 -0
  548. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_errors_tab.py +0 -0
  549. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_approval_wait.py +0 -0
  550. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_boundary.py +0 -0
  551. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_budget_floor.py +0 -0
  552. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_e2e.py +0 -0
  553. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_fixed_overhead.py +0 -0
  554. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_idle_prune.py +0 -0
  555. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_jobs.py +0 -0
  556. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_log_boundary.py +0 -0
  557. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_log_queue.py +0 -0
  558. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_oversized_tools.py +0 -0
  559. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_provider_overflow.py +0 -0
  560. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_shell.py +0 -0
  561. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_stream_pacing.py +0 -0
  562. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_stream_staging.py +0 -0
  563. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_tool_args_progress.py +0 -0
  564. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_tool_fold.py +0 -0
  565. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_event_renderer_tool_search_notice.py +0 -0
  566. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_exit_confirm_view.py +0 -0
  567. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_exit_guard.py +0 -0
  568. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_exit_watchdog.py +0 -0
  569. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_exit_watchdog_subprocess.py +0 -0
  570. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_file_ref_hint.py +0 -0
  571. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_focus_events.py +0 -0
  572. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_format_error.py +0 -0
  573. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_goal_edit_handlers.py +0 -0
  574. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_goal_edit_view.py +0 -0
  575. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_goal_paused_hint.py +0 -0
  576. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_goal_resume_tui.py +0 -0
  577. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_goal_resume_view.py +0 -0
  578. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_goal_slash_command.py +0 -0
  579. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_handle_error.py +0 -0
  580. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_history_drain_throttle.py +0 -0
  581. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_history_printer.py +0 -0
  582. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_history_printer_log.py +0 -0
  583. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_history_printer_styles.py +0 -0
  584. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_history_printer_subtitle_position.py +0 -0
  585. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_history_printer_tool_fold.py +0 -0
  586. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_history_sync.py +0 -0
  587. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_i18n.py +0 -0
  588. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_image_chip_deletion.py +0 -0
  589. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_image_chips.py +0 -0
  590. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_image_preprocess_offload_lag.py +0 -0
  591. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_import_weight.py +0 -0
  592. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_input_behavior.py +0 -0
  593. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_input_history.py +0 -0
  594. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_input_separator_counter.py +0 -0
  595. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_installed_tab.py +0 -0
  596. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_interrupt_exit_semantics.py +0 -0
  597. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_job_activity.py +0 -0
  598. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_jobs_menu.py +0 -0
  599. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_jobs_menu_host.py +0 -0
  600. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_jobs_menu_pty.py +0 -0
  601. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_key_bindings_system_messages.py +0 -0
  602. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_layout_coordinator.py +0 -0
  603. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_loading_line_fragments.py +0 -0
  604. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_loading_modal_suppression.py +0 -0
  605. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_loading_tip_picker.py +0 -0
  606. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_logging_file_handler.py +0 -0
  607. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_logo.py +0 -0
  608. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_loop_freeze_watchdog.py +0 -0
  609. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_main_args_yolo.py +0 -0
  610. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_main_profile_entry.py +0 -0
  611. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_markdown_render.py +0 -0
  612. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_marketplace_add_commands.py +0 -0
  613. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_marketplace_install_view.py +0 -0
  614. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_marketplaces_tab.py +0 -0
  615. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_mcp_auth_panel_pty.py +0 -0
  616. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_mcp_cli.py +0 -0
  617. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_mcp_cli_scope_defaults.py +0 -0
  618. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_mcp_jobs_pty.py +0 -0
  619. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_mcp_panel_auth.py +0 -0
  620. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_mcp_serve.py +0 -0
  621. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_mention_completer.py +0 -0
  622. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_menu_cursor_unification.py +0 -0
  623. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_menu_panel.py +0 -0
  624. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_menu_panel_pty.py +0 -0
  625. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_message_style.py +0 -0
  626. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_modal_freeze_timing.py +0 -0
  627. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_modal_panel_visibility.py +0 -0
  628. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_model_switch_command.py +0 -0
  629. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_model_tier_style.py +0 -0
  630. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_no_raw_colors.py +0 -0
  631. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_output_style_slash_command.py +0 -0
  632. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_permission_mode_cycle.py +0 -0
  633. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_plugin_auto_update_runner.py +0 -0
  634. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_plugin_auto_update_store.py +0 -0
  635. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_plugin_auto_update_tui.py +0 -0
  636. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_plugin_operation_state.py +0 -0
  637. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_plugin_tui_components.py +0 -0
  638. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_preflight.py +0 -0
  639. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_preflight_copilot.py +0 -0
  640. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_preflight_wizard_ui.py +0 -0
  641. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_print_mode_monitor_cap.py +0 -0
  642. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_pty_output_integrity.py +0 -0
  643. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_question_broker.py +0 -0
  644. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_question_key_bindings.py +0 -0
  645. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_question_view.py +0 -0
  646. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_resize_guard.py +0 -0
  647. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_resume_picker.py +0 -0
  648. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_resume_preview.py +0 -0
  649. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_resume_selector.py +0 -0
  650. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_rewind_command_semantics.py +0 -0
  651. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_rpc_mode_logging.py +0 -0
  652. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_rpc_relay_dial_out.py +0 -0
  653. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_rpc_relay_e2e_smoke.py +0 -0
  654. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_rpc_relay_process_smoke.py +0 -0
  655. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_rpc_v4_stdio_smoke.py +0 -0
  656. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_rpc_v4_ws_smoke.py +0 -0
  657. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_rpc_ws_bind_failure.py +0 -0
  658. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_run_clock.py +0 -0
  659. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_running_tool_status_line.py +0 -0
  660. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_scm_request_status.py +0 -0
  661. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_scrollback_write_encoding.py +0 -0
  662. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_session_auto_title.py +0 -0
  663. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_session_query_token_summary.py +0 -0
  664. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_settings_write_guard.py +0 -0
  665. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_shutdown_noise_guard.py +0 -0
  666. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_shutdown_noise_integration.py +0 -0
  667. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_sigint_guard.py +0 -0
  668. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_sigint_key_binding.py +0 -0
  669. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_skill_slash_input.py +0 -0
  670. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_slash_add_dir.py +0 -0
  671. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_slash_argument_hint.py +0 -0
  672. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_slash_clear.py +0 -0
  673. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_slash_completer.py +0 -0
  674. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_slash_registry.py +0 -0
  675. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_startup_import_budget.py +0 -0
  676. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_startup_profile.py +0 -0
  677. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_status_bar_request_status.py +0 -0
  678. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_status_bar_transient.py +0 -0
  679. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_stream_pacer.py +0 -0
  680. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_stream_pacing_tick.py +0 -0
  681. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_stream_staging_panel.py +0 -0
  682. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_style_class_coverage.py +0 -0
  683. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_synchronized_output.py +0 -0
  684. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tab_title.py +0 -0
  685. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_task_panel_format.py +0 -0
  686. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_task_panel_key_bindings.py +0 -0
  687. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_task_panel_rendering.py +0 -0
  688. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_task_poll.py +0 -0
  689. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_terminal_title.py +0 -0
  690. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_theme.py +0 -0
  691. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tip_highlight.py +0 -0
  692. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tips.py +0 -0
  693. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_todo_panel_busy_gating.py +0 -0
  694. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_approval_key_bindings.py +0 -0
  695. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_approval_tui.py +0 -0
  696. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_approval_view.py +0 -0
  697. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_approval_view_workflow.py +0 -0
  698. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_call_protection.py +0 -0
  699. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_fold.py +0 -0
  700. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_fold_panel.py +0 -0
  701. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_fold_view.py +0 -0
  702. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_result_state.py +0 -0
  703. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_result_store.py +0 -0
  704. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_result_viewer.py +0 -0
  705. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_result_viewer_key_bindings.py +0 -0
  706. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_view.py +0 -0
  707. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tool_view_styles.py +0 -0
  708. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_transcript_viewer.py +0 -0
  709. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_transcript_viewer_record_matching.py +0 -0
  710. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_transcript_viewer_tool_fold.py +0 -0
  711. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_builtin_slash_chain.py +0 -0
  712. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_deferred_prewarm.py +0 -0
  713. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_elapsed_status.py +0 -0
  714. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_esc_queue.py +0 -0
  715. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_exit_idempotence.py +0 -0
  716. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_exit_paced_tail.py +0 -0
  717. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_exit_pending_logs.py +0 -0
  718. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_hot_reload.py +0 -0
  719. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_image_chip_retention.py +0 -0
  720. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_image_chip_seed.py +0 -0
  721. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_image_paste.py +0 -0
  722. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_image_restore.py +0 -0
  723. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_image_submit.py +0 -0
  724. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_interrupt_queue_recall.py +0 -0
  725. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_llm_retry_panel.py +0 -0
  726. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_loading_tip_rotation.py +0 -0
  727. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_local_interactive_barrier.py +0 -0
  728. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_mcp_init_gate.py +0 -0
  729. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_paste_history_persistence.py +0 -0
  730. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_paste_newline_guard.py +0 -0
  731. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_paste_placeholder.py +0 -0
  732. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_plugin_load.py +0 -0
  733. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_provider_error_shield.py +0 -0
  734. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_queue_pop_images.py +0 -0
  735. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_queue_preview.py +0 -0
  736. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_queue_sdk_source.py +0 -0
  737. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_replace_session_resume_hint.py +0 -0
  738. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_scheduled_fire_log.py +0 -0
  739. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_scratchpad_fold_wiring.py +0 -0
  740. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_send_undo_window.py +0 -0
  741. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_session_observers.py +0 -0
  742. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_shutdown_cancel_propagation.py +0 -0
  743. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_split_invariance.py +0 -0
  744. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_startup_latency.py +0 -0
  745. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_surrogate_repair.py +0 -0
  746. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_thinking_display.py +0 -0
  747. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_tool_result_registry_lifecycle.py +0 -0
  748. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_tui_window_too_small_fallback.py +0 -0
  749. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_ui_mode_derivation.py +0 -0
  750. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_ui_tick_exception_isolation.py +0 -0
  751. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_ultracode_keyword.py +0 -0
  752. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_ultracode_keyword_frame_rate.py +0 -0
  753. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_ultracode_keyword_submit.py +0 -0
  754. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_ultracode_shimmer_render.py +0 -0
  755. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_update_cli.py +0 -0
  756. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_upstream_surrogate_merge_characterization.py +0 -0
  757. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_usage_command.py +0 -0
  758. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_wellformed_terminal_input.py +0 -0
  759. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_whitelabel_clear_logo.py +0 -0
  760. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_windows_sigint_console.py +0 -0
  761. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_workflows_menu.py +0 -0
  762. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_workflows_menu_host.py +0 -0
  763. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_workflows_menu_pty.py +0 -0
  764. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_workflows_panel_model.py +0 -0
  765. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_wrap_user_text.py +0 -0
  766. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tests/test_zipapp_launcher_path.py +0 -0
  767. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tools/diagnose_windows_shim_rename.py +0 -0
  768. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tools/logo_lab.py +0 -0
  769. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tools/nico_preview.py +0 -0
  770. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tools/probe_conhost_char_width.py +0 -0
  771. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tools/probe_conhost_render_replay.py +0 -0
  772. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tools/startup_bench.py +0 -0
  773. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tools/transcript_viewer_bench.py +0 -0
  774. {comate_cli-0.12.6b2 → comate_cli-0.12.7}/tools/verify_windows_self_update_semantics.py +0 -0
@@ -4,7 +4,10 @@
4
4
 
5
5
  ### Added
6
6
 
7
+ - `--disallowed-tools <names>` 启动参数:本次会话不把这些 tool 发给模型,子 agent 也拿不到(进入 SDK 的 `AgentConfig.disallowed_tools`)。名字逗号分隔,参数可重复,结果按出现顺序合并去重;只认精确名字,MCP tool 写 `mcp__<server>__<tool>`。TUI、`resume`、`--rpc-stdio`、`--rpc-ws`、`--rpc-relay` 都生效(RPC 下对整个进程生效);`-p` 下与它自带的 `SendMessage` 取并集。以下情况都在启动前报错退出:值为空、含 `*`、写了 `Agent` 或 `Skill`(这两个去掉后会话无法创建)、内置名拼错或大小写不对(`mcp__` 开头的名字不检查,MCP 在启动后才连接)。`comate mcp serve` 不支持。
8
+ - 运行中的 Bash 显示 Live Output Tail:模型调用的 Bash 运行时,底部 running-tool 面板每秒读取一次最近输出,在签名行与 Running 状态行之间显示最多 3 个非空行(第一行带 `⎿`),`\r` 覆写的进度条只显示最后一段;`!` 命令活动区从 5 行改为 3 行。两处共用同一套行处理:丢空行、长行按显示宽度截断加 `…` 不折行(中文 / emoji 占 2 列)。命令结束、ctrl+b 转后台或中断后尾部立即消失,不进滚动区;折叠的 Bash 与子 agent 的 Bash 不受影响。
7
9
  - Interpreter Migration(macOS/Linux):CLI 不在 Python 3.12 上、并且没有待更新的新版本时,第一次启动在界面之前显示一行提示,之后的启动显示全屏提示,只有「立即迁移」和「跳过」。「立即迁移」把**当前版本**(`<包名>==<当前版本>`,带发行版的安装参数)用 `--python 3.12` 重装,成功后提示重启,本次启动停止;失败只显示一行原因(uv 输出的最后一行),继续在当前 Python 上进入界面。「跳过」不记住,下次启动再问。已经在 3.12、editable 安装、PATH 里没有 uv、Windows 都不提示;有待更新的新版本时只显示更新提示(接受更新会顺带迁移到 3.12)。文案四种语言齐全。
10
+ - 白牌 Python 下载镜像:发行版 profile 的 `UpdateSource` 新增可选字段 `python_install_mirror`。设置后,CLI 运行的 uv 安装命令(macOS/Linux 的 Self-Update 与 Interpreter Migration、Windows 旁装)在子进程环境里设 `UV_PYTHON_INSTALL_MIRROR` 为这个值,不看 locale,并且盖过简中用户的 npmmirror;用户自己设置的 `UV_PYTHON_INSTALL_MIRROR` 仍然优先。Windows 降级给出手动命令时,命令上方多出 PowerShell 与 CMD 两种设置镜像的写法,命令本身不变;文案四种语言齐全。公网 comate 不设置这个字段,行为不变(ADR 0056)。
8
11
  - Event loop 冻结看门狗:界面动画 / 计时停住超过 2 秒时,独立线程把主线程当时的调用栈连同最近的首轮阶段名、busy / staging / 动画状态写进 `~/.comate/logs/agent.log`(WARNING),同一次冻结在 2 秒、5 秒、15 秒各记一次;默认开启,设 `COMATE_TUI_LOOP_WATCHDOG=0` 关闭。原有的「TUI event loop lag detected」日志现在带阶段名,且空闲态(无请求、无动画)的停顿超过 2 秒也记一条 INFO,不再静默(阈值 `AGENT_SDK_TUI_EVENT_LOOP_IDLE_LAG_THRESHOLD_S`)。此前冻结日志只能说明停了多久,说不出停在哪,多次 3–37 秒冻结因此无法归因。
9
12
  - 思考时长:隐藏 thinking 时,一段思考正常结束后,loading 行括号里的呼吸黄 badge 换成静态暗灰的时长短语,显示 3 秒后消失。短语与 badge 逐档对应:`thought for 8s with high effort`(max / xhigh / high 同句式)、`ultra thought for 8s`、`thought for 8s`(medium / 无生效档)、`thought briefly for 8s`(low);60 秒及以上显示 `1m 5s`。不足 1 秒、中断、stream 重试、思考中途打开 thinking 显示、turn 结束时都不显示。固定英文,不随界面语言变化;不写 scrollback。
10
13
  - MCP 工具搜索(SDK):MCP 工具很多时,工具 schema 改为按需加载——模型先只看到工具名清单,需要时调用内置 `ToolSearch` 加载,下一步才能调用该工具。默认 `auto`(延迟候选 schema ≥ 生效窗口 10% 且数量 ≥ 30 时启用),可用环境变量 `COMATE_AGENT_SDK_TOOL_SEARCH`(`auto` / `auto:P` / `auto:P:C` / `on` / `off`)调整。首次启用时终端提示一次;`/context` 拆分显示 MCP 工具与已加载 / 延迟候选数;单个 MCP 工具定义超过窗口 5% 时启动后警告。comate-cli 与 comate-rpc 的 `comate-agent-sdk` 下限抬到 0.12.20(SDK 同步升版,新事件 `ToolSearchEnabledEvent`)。
@@ -72,6 +75,8 @@
72
75
 
73
76
  ### Changed
74
77
 
78
+ - Self-Update 不再把用户换到 Python 3.12:`comate update`、启动时的「立即更新」、Windows 旁装,以及 Windows 手动修复命令,uv 命令里的 `--python` 改为当前解释器的 `主版本.次版本`(例如在 3.13 上运行就带 `--python 3.13`),更新后留在原来的 Python 上。命令仍然带 `--python`,否则 `--force` 重装会漂到 uv 默认找到的解释器上。不在 `requires-python` 范围内的解释器(例如 3.14)也照样保持。白牌发行版在 `install_args` 里自己指定了 `--python` 时仍以白牌为准,可以用它固定版本(例如 `"--python", "3.13.12"`)。决策见 ADR 0064。
79
+ - 状态栏的 Job Indicator 只统计正在运行的后台 job:后台 subagent 跑完一轮进入待命(idle)后,不再显示 `x agent`;1 个运行中、2 个待命时显示 `1 agent`。待命的 agent 仍可在 `/ps` 里查看和停止,退出确认仍会提示它们(ADR 0050 补充)。
75
80
  - Self-Update 固定到 Python 3.12:`comate update`、启动时的「立即更新」、Windows 旁装,以及 Windows 自动路径不可用时显示的手动修复命令,都让新版本装在 Python 3.12 上(uv 命令带 `--python 3.12`;机器上没有 3.12 时 uv 会自动下载)。原因:uv 在读包之前就选好解释器,并且忽略 `requires-python` 的上限,所以以前用户会跑在 3.11 / 3.13 / 3.14 等不同版本上,而且不带 `--python` 的重装会把已经在 3.12 上的环境换成别的版本。白牌发行版在 `install_args` 里自己指定了 `--python` 时,以白牌的为准。`requires-python` 不变,3.11–3.13 继续支持。决策见 ADR 0055。
76
81
  - 简中用户更新时,uv 需要下载的 Python 改走国内镜像(npmmirror 的 python-build-standalone),不再依赖 GitHub;进程内重装和 Windows 旁装都生效。你自己设置了 `UV_PYTHON_INSTALL_MIRROR` 时以你的为准;其他语言环境不变。
77
82
  - resume 选择器的预览键由 Ctrl+V 改为 Ctrl+A:VS Code、Windows Terminal 等终端把 Ctrl+V 截成粘贴,按下后剪贴板文本会落进搜索框,进不了预览。搜索模式下也可以按 Ctrl+A 预览,Esc 或再按 Ctrl+A 关闭后回到搜索框,搜索词保持不变;代价是搜索框内 Ctrl+A 不再移到行首。
@@ -96,8 +101,43 @@
96
101
  以及设计稿 docs/superpowers/specs/2026-05-18-auto-compact-awareness-design.md
97
102
  已写的写法对齐,少占两列宽。
98
103
 
104
+ ### Removed
105
+
106
+ - Interpreter Migration(macOS/Linux):启动时不再提示把当前版本迁移到 Python 3.12。不在 3.12 上的用户继续在当前 Python 上运行,下一次 Self-Update 时装到 3.12(Self-Update 仍然带 `--python 3.12`,ADR 0055)。以前写进设置的 `migration_hinted_python` 不再读取,留在文件里不影响任何行为。
107
+
99
108
  ### Fixed
100
109
 
110
+ - 输入框里 `@` 一个图片文件后不再变成 `[Pasted image #N: 文件名]`:路径落在 `@` 引用里时(补全、手打、
111
+ 粘贴都算)保持 `@path` 文本,和其他 `@文件` 一样只给模型路径提示,模型需要时自己用 Read 看图。
112
+ 前面没有 `@` 的粘贴 / 拖入图片路径仍然变成图片 chip;`@a.png /tmp/b.png` 这样的混合粘贴整段保持文本。
113
+ - `@path` 路径提示(SDK)按 Read 工具的分类输出:图片显示 `image (.png, 120 KB)`,PDF 显示
114
+ `pdf (.pdf, 2.1 MB)`,二进制文件显示 `binary (.zip, 3.2 MB)`,不再给这些文件数「行数」
115
+ (此前 png 会显示成 `file (.png, 464 lines)`)。二进制判断和 Read 用同一份规则(后缀黑名单 + 前 8 KB
116
+ 内容扫描,带文本 BOM 的不算),规则从 Read 工具内部移到 `system_tools/text_codec.py`,Read 行为不变。
117
+ - 模型回复的正文末尾带多个换行时(常见于调用工具之前),scrollback 中正文和下一行之间不再出现长空白:
118
+ 显示层丢掉正文段末尾的空行,正文中间连续的多个空行只显示 1 个;代码块内的空行原样保留。
119
+ 只改显示,transcript 与发给模型的上下文中的原文不变。
120
+ - git 不在 PATH 时,SDK 采集 GIT_ENV 发出的 WARNING「未找到 git 可执行文件,无法采集 GIT_ENV」不再刷进
121
+ TUI scrollhistory:终端用户看到也无法在会话里行动(装 git / 修 PATH 都在会话外)。文件日志
122
+ (`~/.comate/logs/agent.log`)与其它宿主不受影响;同一来源的「执行 git 命令失败」ERROR 是未预期异常,
123
+ 仍然显示。
124
+ - 装了带 `.mcp.json` 的插件后,TUI 会话丢失全部用户 MCP server:启动注入插件时,插件 server 被写进
125
+ `AgentConfig.mcp_servers`,legacy 解析模式下这等于「只用这些 server」,user / project / local 三层
126
+ `.mcp.json` 全部失效;随后的重新加载关闭了已连上的 server,移除了它们的工具,`/mcp` 里显示
127
+ `Not initialized`。`-p` 与 `comate mcp list` 不加载插件,不受影响。现在 CLI 使用 merge 解析模式,
128
+ 插件 server 写进 plugin 层,叠加在磁盘三层之下(同名时磁盘优先);`/reload-plugins` 只移除插件 server。
129
+ 没有插件时解析结果不变(ADR 0057)。
130
+ - 插件 `.mcp.json` 用 Claude Code 生态的 `{"mcpServers": {...}}` 包装格式时(例如 Anthropic 的 `data`
131
+ 插件),解析出一个假 server `<插件名>:mcpServers`(`stdio server 缺少 command`),里面的 server 一个也连不上。
132
+ 现在顶层 `mcpServers` 是对象时读它里面的内容,平铺格式不变,两种都加 `<插件名>:` 前缀。`/mcp` 列表现在
133
+ 也显示插件 server:状态、工具,详情页显示来源插件和插件的 `.mcp.json` 路径。插件 server 可以在 `/mcp`
134
+ 里 Disable:在 `~/.agent/.mcp.json` 写一条同名 `{"enabled": false}`,重启后仍然禁用,插件本身和其他
135
+ server 不受影响;Enable 删除这一条(插件已卸载后留下的这一条也能在 `/mcp` 里 Enable 清掉)。插件 server 的单个工具开关仍为只读。新文案三语齐全。
136
+ - 插件 `plugin.json` 里写的 `mcpServers` 以前被悄悄忽略,现在生效:可以是内联对象,也可以是相对插件根目录的
137
+ JSON 文件路径(字符串或字符串数组,文件格式同 `.mcp.json`),和插件的 `.mcp.json` 合并,都加 `<插件名>:`
138
+ 前缀;同名时 `.mcp.json` 优先并在日志里打 WARNING。路径超出插件根目录、文件读不了、值类型不对时打 WARNING
139
+ 跳过这一项,插件其他内容照常加载;插件 MCP 配置文件顶层不是 JSON 对象时也改为跳过,不再让整个插件加载失败。
140
+ `/mcp` 详情页对这些 server 仍显示插件 `.mcp.json` 路径(待修)。
101
141
  - 切换窗口后运行中的任务被中断、输入框多出 `[O[I`:终端开着焦点上报(DECSET 1004,
102
142
  例如 Windows PowerShell 经 ssh 连到远程服务器)时,窗口失焦 / 得焦会发 `ESC[O` / `ESC[I`。
103
143
  prompt_toolkit 不认识这两条序列,把它们拆成 Esc 加两个普通字符,Esc 就中断了本轮。
@@ -13,7 +13,7 @@ _Avoid_: menu output(菜单输出), history block(历史块), 全屏 pic
13
13
  _Avoid_: footer(Menu Panel 自己有页脚), bottom toolbar(prompt_toolkit 的术语,本项目不使用), 补全状态行(与 Status Bar 共用同一个位置,但是另一个东西)
14
14
 
15
15
  **Job Indicator(后台任务指示)**:
16
- Status Bar 左列里按类别显示的后台 job 数量,例如 `2 agents`、`1 shell`、`1 workflow`、`1 MCP call`。类别:agents(agent job)、shells(bash 与 monitor job)、workflows(workflow job)、mcp(MCP 后台调用)。只统计仍在运行或待命的 job;数量为 0 的类别不显示。选中一个 Job Indicator 并确认,会打开该类别的菜单。它取代了输入框上方常驻的 jobs 面板。
16
+ Status Bar 左列里按类别显示的后台 job 数量,例如 `2 agents`、`1 shell`、`1 workflow`、`1 MCP call`。类别:agents(agent job)、shells(bash 与 monitor job)、workflows(workflow job)、mcp(MCP 后台调用)。只统计仍在运行的 job,待命(idle)的 job 不计(它们仍在 Jobs Menu 里);数量为 0 的类别不显示。选中一个 Job Indicator 并确认,会打开该类别的菜单。它取代了输入框上方常驻的 jobs 面板。
17
17
  _Avoid_: pill(口头说法), jobs 面板(已删除的旧区域), 后台任务栏
18
18
 
19
19
  **Jobs Menu(后台任务菜单)**:
@@ -224,10 +224,6 @@ _Avoid_: symlink swap, shim update, rename dance
224
224
  The rule that a completed Self-Update takes effect only for processes started afterwards. Running sessions keep their version until they exit.
225
225
  _Avoid_: hot upgrade, live upgrade
226
226
 
227
- **Interpreter Migration**:
228
- Reinstalling the *same* installed CLI version onto the target Python runtime (3.12, ADR 0055), offered at launch on macOS/Linux when the CLI runs on another interpreter and no newer version is pending. It is not a Self-Update (the version does not change), but it obeys Restart-to-Apply and reuses the in-process reinstall path. It always needs the user's confirmation in the launch prompt, because rebuilding the tool environment can break other running sessions.
229
- _Avoid_: runtime upgrade, Python update, re-pin
230
-
231
227
  ## Tool Result Display Language
232
228
 
233
229
  **Tool Result Preview**:
@@ -334,6 +330,10 @@ _Avoid_: todo panel, tasklist (spoken shorthand only)
334
330
  A state in which the run is alive but does not advance any task: context compaction in progress, or an LLM retry backoff countdown. Only the countdown counts as Stall Status; the retried request itself does not.
335
331
  _Avoid_: blocking status ("blocking" in this repo means blocking the event loop), waiting state
336
332
 
333
+ **Live Output Tail**:
334
+ The last 3 non-empty lines of a running foreground shell command's output, shown under that command in the bottom interaction band and refreshed once per second. It applies to the user's `!` commands and to the main agent's Bash calls that show a `Running…` line; folded Bash calls and subagent Bash calls have none. It is transient: it never enters scrollback, the transcript, or the model's context, and it disappears when the command ends or moves to the background.
335
+ _Avoid_: staging (that is the stream staging window), live log, output streaming
336
+
337
337
  ## Event Loop Health Language
338
338
 
339
339
  **Event Loop Lag**:
@@ -389,7 +389,7 @@ _Avoid_: lag log, profiler output (the profiler records phase durations, not a s
389
389
  - **Self-Update** and **Plugin Auto Update** are separate concepts with separate vocabularies: a **Version Check** orders versions, plugin **Update Detection** only compares for equality. Neither triggers the other.
390
390
  - A **Side-Install** followed by an **Entrypoint Flip** is one Self-Update strategy; an in-process reinstall of the current installation is another. Which one applies is a property of the platform, not of the user's choice.
391
391
  - **Restart-to-Apply** holds for every Self-Update strategy and mirrors the plugin **Update Effectiveness Boundary**: on-disk state changes, the running process does not.
392
- - **Interpreter Migration** and **Self-Update** both rebuild the installation on the target Python, but only a Self-Update changes the version. A pending Self-Update takes priority: accepting it completes the migration as a side effect, so the launch never offers both before the TUI starts. (The background Version Check can still add an update hint inside the TUI after a migration hint or prompt; the next launch then offers only the update.) Windows has no Interpreter Migration (a Side-Install of the same version is treated as already staged); Windows users reach the target Python through their next Self-Update.
392
+ - **Self-Update** keeps the installation on the interpreter it runs on: every uv install command requests the running `major.minor` (ADR 0064), unless the distribution profile's `install_args` already pins `--python`. There is no target Python; a CLI moves to another interpreter only when a whitelabel pin asks for it.
393
393
 
394
394
  - A **Session Title** is a fact of the session, not of the **Session Report**: it exists whether or not a report backend is configured, and the report only mirrors it. **Durable Title Completion** is therefore judged from the session's own metadata.
395
395
  - A **Session Title** is generated from the session's earliest **Committed Title Input**, never from the latest one. A resumed session without a title is titled from its original first input, so the title does not change to whatever was typed after resume.
@@ -416,6 +416,8 @@ _Avoid_: lag log, profiler output (the profiler records phase durations, not a s
416
416
 
417
417
  ## Flagged ambiguities
418
418
 
419
+ - "staging" 只指 stream staging window(模型正文提交到 scrollback 之前的暂存区)。运行中工具下面的 `Running…` 区域不叫 staging;那里显示的 shell 输出尾部叫 **Live Output Tail**。
420
+
419
421
  - 代码里的 `_menu_panel_active()` 实际含义是“使用共享 `MenuPanel` 外壳”,不含 `/statusline`、marketplace 安装、`/goal edit`,因此与本术语表的 **Menu Panel**(slash 命令打开的暂态操作界面)并不等价。判断 **Status Bar** 是否隐藏另用独立集合,不复用它。
420
422
 
421
423
  - OpenWorker still shows `HIGH` as **Max** (ADR-0017/0019); the agreed family-wide name is **Elite** (ADR-0023). Until OpenWorker is updated, the same Provider-Pool Level has two display names across products.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: comate-cli
3
- Version: 0.12.6b2
3
+ Version: 0.12.7
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.23
18
+ Requires-Dist: comate-agent-sdk<0.13,>=0.12.24
19
19
  Requires-Dist: comate-rpc<0.2,>=0.1.4
20
20
  Requires-Dist: concurrent-log-handler>=0.9.25
21
21
  Requires-Dist: curl-cffi==0.13.0
@@ -23,6 +23,7 @@ Requires-Dist: httpx<0.29.0,>=0.28.1
23
23
  Requires-Dist: packaging>=21.0
24
24
  Requires-Dist: pillow==12.2.0
25
25
  Requires-Dist: prompt-toolkit>=3.0
26
+ Requires-Dist: pygments>=2.19
26
27
  Requires-Dist: requests==2.32.5
27
28
  Requires-Dist: rich>=14.0
28
29
  Requires-Dist: setproctitle>=1.3.7
@@ -45,6 +46,33 @@ uv tool install comate-cli
45
46
  comate
46
47
  ```
47
48
 
49
+ ### 简体中文用户
50
+
51
+ Python 解释器从 npmmirror 下载,包从清华 PyPI 镜像下载,运行时固定为 Python 3.12(ADR 0055)。
52
+
53
+ macOS / Linux(bash、zsh):
54
+
55
+ ```bash
56
+ UV_PYTHON_INSTALL_MIRROR=https://registry.npmmirror.com/-/binary/python-build-standalone \
57
+ uv tool install comate-cli --python 3.12 --default-index https://pypi.tuna.tsinghua.edu.cn/simple
58
+ ```
59
+
60
+ Windows PowerShell(两行在同一个窗口里运行):
61
+
62
+ ```powershell
63
+ $env:UV_PYTHON_INSTALL_MIRROR="https://registry.npmmirror.com/-/binary/python-build-standalone"
64
+ uv tool install comate-cli --python 3.12 --default-index https://pypi.tuna.tsinghua.edu.cn/simple
65
+ ```
66
+
67
+ Windows CMD(两行在同一个窗口里运行):
68
+
69
+ ```bat
70
+ set "UV_PYTHON_INSTALL_MIRROR=https://registry.npmmirror.com/-/binary/python-build-standalone"
71
+ uv tool install comate-cli --python 3.12 --default-index https://pypi.tuna.tsinghua.edu.cn/simple
72
+ ```
73
+
74
+ 清华镜像同步 PyPI 有延迟。新版本刚发布时,如果清华上还没有,去掉 `--default-index ...` 直接从官方 PyPI 安装即可,Python 仍走 npmmirror。
75
+
48
76
  ## 内置 Marketplace 扩展
49
77
 
50
78
  发行版可通过 `DistributionProfile.builtin_marketplaces` 提供
@@ -15,6 +15,33 @@ uv tool install comate-cli
15
15
  comate
16
16
  ```
17
17
 
18
+ ### 简体中文用户
19
+
20
+ Python 解释器从 npmmirror 下载,包从清华 PyPI 镜像下载,运行时固定为 Python 3.12(ADR 0055)。
21
+
22
+ macOS / Linux(bash、zsh):
23
+
24
+ ```bash
25
+ UV_PYTHON_INSTALL_MIRROR=https://registry.npmmirror.com/-/binary/python-build-standalone \
26
+ uv tool install comate-cli --python 3.12 --default-index https://pypi.tuna.tsinghua.edu.cn/simple
27
+ ```
28
+
29
+ Windows PowerShell(两行在同一个窗口里运行):
30
+
31
+ ```powershell
32
+ $env:UV_PYTHON_INSTALL_MIRROR="https://registry.npmmirror.com/-/binary/python-build-standalone"
33
+ uv tool install comate-cli --python 3.12 --default-index https://pypi.tuna.tsinghua.edu.cn/simple
34
+ ```
35
+
36
+ Windows CMD(两行在同一个窗口里运行):
37
+
38
+ ```bat
39
+ set "UV_PYTHON_INSTALL_MIRROR=https://registry.npmmirror.com/-/binary/python-build-standalone"
40
+ uv tool install comate-cli --python 3.12 --default-index https://pypi.tuna.tsinghua.edu.cn/simple
41
+ ```
42
+
43
+ 清华镜像同步 PyPI 有延迟。新版本刚发布时,如果清华上还没有,去掉 `--default-index ...` 直接从官方 PyPI 安装即可,Python 仍走 npmmirror。
44
+
18
45
  ## 内置 Marketplace 扩展
19
46
 
20
47
  发行版可通过 `DistributionProfile.builtin_marketplaces` 提供
@@ -0,0 +1,41 @@
1
+ 2026-11-02 12:52:02,880 platform=Linux-7.0.0-30-generic-x86_64-with-glibc2.43 python=3.13.18 psutil=7.2.2
2
+ 2026-11-02 12:52:02,880 bash=/bin/bash cwd=/tmp/claude-1000/-home-andy-works-agent-sdk/81e18132-c517-4c2e-a0a5-45ee51dd802e/scratchpad output_dir=/tmp/claude-1000/-home-andy-works-agent-sdk/81e18132-c517-4c2e-a0a5-45ee51dd802e/scratchpad/.agent/artifacts/bash runs=1
3
+ 2026-11-02 12:52:02,881 process count=393
4
+ 2026-11-02 12:52:02,881 step 列:loop = 在 event loop 线程同步执行(生产现状);thread = 在 daemon 线程执行(候选修法)
5
+ 2026-11-02 12:52:02,911 run=1 loop script mkstemp+write+close duration_ms= 0.1 loop_max_gap_ms= 10.3 result=.tmp_bash_script_s89rx0gd.sh
6
+ 2026-11-02 12:52:02,943 run=1 loop output mkstemp duration_ms= 0.1 loop_max_gap_ms= 10.3 result=.tmp_bash_pt593nyv.txt
7
+ 2026-11-02 12:52:02,973 run=1 loop cwd mkstemp duration_ms= 0.1 loop_max_gap_ms= 10.2 result=.tmp_bash_cwd_zr16nfyp.txt
8
+ 2026-11-02 12:52:02,996 run=1 thread command run (spawn+exit, thread) duration_ms= 21.9 loop_max_gap_ms= 11.6 result=exit=0 pump_alive=False
9
+ 2026-11-02 12:52:03,027 run=1 loop exited root: psutil.Process(pid) duration_ms= 0.3 loop_max_gap_ms= 10.3 NoSuchProcess: process PID not found (pid=96922)
10
+ 2026-11-02 12:52:03,059 run=1 loop exited root: children(recursive=True) duration_ms= 0.0 loop_max_gap_ms= 10.4 result=skipped: root process already gone
11
+ 2026-11-02 12:52:03,090 run=1 loop exited root: kill() duration_ms= 0.0 loop_max_gap_ms= 10.4 result=skipped: root process already gone
12
+ 2026-11-02 12:52:03,141 run=1 loop exited root: _ppid_map() duration_ms= 19.3 loop_max_gap_ms= 19.3 result=dict[393]
13
+ 2026-11-02 12:52:03,195 run=1 thread exited root: psutil.Process(pid) duration_ms= 0.3 loop_max_gap_ms= 10.3 NoSuchProcess: process PID not found (pid=96927)
14
+ 2026-11-02 12:52:03,227 run=1 thread exited root: children(recursive=True) duration_ms= 0.4 loop_max_gap_ms= 10.6 result=skipped: root process already gone
15
+ 2026-11-02 12:52:03,259 run=1 thread exited root: kill() duration_ms= 0.8 loop_max_gap_ms= 10.6 result=skipped: root process already gone
16
+ 2026-11-02 12:52:03,310 run=1 thread exited root: _ppid_map() duration_ms= 19.9 loop_max_gap_ms= 10.5 result=dict[393]
17
+ 2026-11-02 12:52:03,645 run=1 loop live root: psutil.Process(pid) duration_ms= 0.3 loop_max_gap_ms= 10.4 result=96936
18
+ 2026-11-02 12:52:03,684 run=1 loop live root: children(recursive=True) duration_ms= 7.5 loop_max_gap_ms= 10.4 result=list[0]
19
+ 2026-11-02 12:52:03,715 run=1 loop live root: kill() duration_ms= 0.1 loop_max_gap_ms= 10.3 result=1
20
+ 2026-11-02 12:52:03,756 run=1 loop live root: _ppid_map() duration_ms= 9.1 loop_max_gap_ms= 10.5 result=dict[394]
21
+ 2026-11-02 12:52:03,788 run=1 loop unlink x3 duration_ms= 0.1 loop_max_gap_ms= 10.3 result=3
22
+ 2026-11-02 12:52:03,788 ---- summary (max over 1 runs) ----
23
+ 2026-11-02 12:52:03,789 loop exited root: _ppid_map() median_ms= 19.3 max_ms= 19.3 loop_max_gap_ms= 19.3
24
+ 2026-11-02 12:52:03,789 thread command run (spawn+exit, thread) median_ms= 21.9 max_ms= 21.9 loop_max_gap_ms= 11.6
25
+ 2026-11-02 12:52:03,789 thread exited root: children(recursive=True) median_ms= 0.4 max_ms= 0.4 loop_max_gap_ms= 10.6
26
+ 2026-11-02 12:52:03,789 thread exited root: kill() median_ms= 0.8 max_ms= 0.8 loop_max_gap_ms= 10.6
27
+ 2026-11-02 12:52:03,789 thread exited root: _ppid_map() median_ms= 19.9 max_ms= 19.9 loop_max_gap_ms= 10.5
28
+ 2026-11-02 12:52:03,789 loop live root: _ppid_map() median_ms= 9.1 max_ms= 9.1 loop_max_gap_ms= 10.5
29
+ 2026-11-02 12:52:03,790 loop exited root: children(recursive=True) median_ms= 0.0 max_ms= 0.0 loop_max_gap_ms= 10.4
30
+ 2026-11-02 12:52:03,790 loop exited root: kill() median_ms= 0.0 max_ms= 0.0 loop_max_gap_ms= 10.4
31
+ 2026-11-02 12:52:03,790 loop live root: psutil.Process(pid) median_ms= 0.3 max_ms= 0.3 loop_max_gap_ms= 10.4
32
+ 2026-11-02 12:52:03,790 loop live root: children(recursive=True) median_ms= 7.5 max_ms= 7.5 loop_max_gap_ms= 10.4
33
+ 2026-11-02 12:52:03,790 loop script mkstemp+write+close median_ms= 0.1 max_ms= 0.1 loop_max_gap_ms= 10.3
34
+ 2026-11-02 12:52:03,790 loop output mkstemp median_ms= 0.1 max_ms= 0.1 loop_max_gap_ms= 10.3
35
+ 2026-11-02 12:52:03,790 loop exited root: psutil.Process(pid) median_ms= 0.3 max_ms= 0.3 loop_max_gap_ms= 10.3
36
+ 2026-11-02 12:52:03,790 thread exited root: psutil.Process(pid) median_ms= 0.3 max_ms= 0.3 loop_max_gap_ms= 10.3
37
+ 2026-11-02 12:52:03,791 loop live root: kill() median_ms= 0.1 max_ms= 0.1 loop_max_gap_ms= 10.3
38
+ 2026-11-02 12:52:03,791 loop unlink x3 median_ms= 0.1 max_ms= 0.1 loop_max_gap_ms= 10.3
39
+ 2026-11-02 12:52:03,791 loop cwd mkstemp median_ms= 0.1 max_ms= 0.1 loop_max_gap_ms= 10.2
40
+ 2026-11-02 12:52:03,794 log: /home/andy/works/agent-sdk/packages/comate_cli/bash_settle_diag.log
41
+ 2026-11-02 12:52:03,794 json: /home/andy/works/agent-sdk/packages/comate_cli/bash_settle_diag.json
@@ -38,6 +38,8 @@ class UpdateSource:
38
38
  fetch_latest: LatestVersionFetcher
39
39
  install_args: tuple[str, ...] = ()
40
40
  release_notes_url: str | None = None
41
+ # Python 下载镜像(UV_PYTHON_INSTALL_MIRROR),盖过简中 locale 的 npmmirror(ADR 0056)。
42
+ python_install_mirror: str | None = None
41
43
 
42
44
  def __post_init__(self) -> None:
43
45
  if not callable(self.fetch_latest):
@@ -94,9 +94,10 @@ _SYSTEM_PROMPT_OPTIONS: dict[str, str] = {
94
94
  }
95
95
 
96
96
  # (rpc_stdio, resume_session_id, resume_select, print_prompt, output_format, prompt_flags, rpc_relay,
97
- # add_dirs, rpc_ws_port, yolo);rpc_ws_port 为 None 表示不是 --rpc-ws,0 表示由系统挑空闲端口;
97
+ # disallowed_tools, add_dirs, rpc_ws_port, yolo);rpc_ws_port 为 None 表示不是 --rpc-ws,0 表示由系统挑空闲端口;
98
98
  # rpc_relay 为 None 表示不是 --rpc-relay,否则是(中转地址, Agent 令牌, 是否允许远程切到 bypassPermissions);
99
- # prompt_flags 是 system prompt 四个参数的原始值,没给时各字段为 None。
99
+ # prompt_flags 是 system prompt 四个参数的原始值,没给时各字段为 None;
100
+ # disallowed_tools 是 --disallowed-tools 的名字,按出现顺序去重,没给时为空。
100
101
  ParsedArgs = tuple[
101
102
  bool,
102
103
  str | None,
@@ -106,6 +107,7 @@ ParsedArgs = tuple[
106
107
  SystemPromptFlags,
107
108
  tuple[str, str, bool] | None,
108
109
  tuple[str, ...],
110
+ tuple[str, ...],
109
111
  int | None,
110
112
  bool,
111
113
  ]
@@ -339,6 +341,10 @@ def _usage_text(command_name: str = "comate") -> str:
339
341
  " --add-dir <path> Grant tool read/write access to an extra directory\n"
340
342
  " (repeatable). Applies to subagents too."
341
343
  "\n"
344
+ " --disallowed-tools <names>\n"
345
+ " Remove tools from this session (comma-separated, repeatable).\n"
346
+ " Applies to subagents too. Exact names only, no wildcards;\n"
347
+ " MCP tools are written mcp__<server>__<tool>\n"
342
348
  " --system-prompt <text>\n"
343
349
  " Replace the opening of the system prompt (who the agent is and\n"
344
350
  " how it works); guardrail sections always stay\n"
@@ -396,6 +402,35 @@ def _parse_rpc_relay(relay_url: str | None, token_arg: str | None) -> tuple[str,
396
402
  return relay_url, token
397
403
 
398
404
 
405
+ # 不能用 --disallowed-tools 去掉的 tool:SDK 在会话创建时才因它们抛 ValueError
406
+ # (Agent 一定触发,Skill 只要还有模型可调用的 skill 就触发),RPC 模式下要到
407
+ # session.open 才暴露,所以在解析期就拦住。
408
+ _UNREMOVABLE_TOOLS = ("Agent", "Skill")
409
+
410
+
411
+ def _split_disallowed_tools(value: str) -> list[str]:
412
+ """--disallowed-tools 的一个值 → 名字列表:逗号分隔,去首尾空白,丢空项。
413
+
414
+ 只认精确名字:SDK 对通配符静默不生效,放过去用户会以为已经去掉了。
415
+ 内置名是否存在留给 app._build_agent 检查(那时 SDK 已导入,解析期不多导入)。
416
+ """
417
+ names = [name for name in (part.strip() for part in value.split(",")) if name]
418
+ if not names:
419
+ from comate_cli.terminal_agent.i18n import i18n, message
420
+
421
+ raise _ArgumentError(i18n(message.disallowed_tools_requires_value))
422
+ for name in names:
423
+ if "*" in name:
424
+ from comate_cli.terminal_agent.i18n import i18n, message
425
+
426
+ raise _ArgumentError(i18n(message.disallowed_tools_wildcard, name=name))
427
+ if name in _UNREMOVABLE_TOOLS:
428
+ from comate_cli.terminal_agent.i18n import i18n, message
429
+
430
+ raise _ArgumentError(i18n(message.disallowed_tools_unsupported, name=name))
431
+ return names
432
+
433
+
399
434
  def _parse_args(argv: list[str]) -> ParsedArgs:
400
435
  rpc_stdio = False
401
436
  rpc_ws = False
@@ -411,6 +446,7 @@ def _parse_args(argv: list[str]) -> ParsedArgs:
411
446
  output_format_explicit = False
412
447
  positionals: list[str] = []
413
448
  add_dirs: list[str] = []
449
+ disallowed_tools: list[str] = []
414
450
  prompt_flags: dict[str, PromptFlag] = {}
415
451
  yolo = False
416
452
 
@@ -493,6 +529,17 @@ def _parse_args(argv: list[str]) -> ParsedArgs:
493
529
  add_dirs.append(value)
494
530
  index += 1
495
531
  continue
532
+ if arg == "--disallowed-tools" or arg.startswith("--disallowed-tools="):
533
+ if arg == "--disallowed-tools":
534
+ index += 1
535
+ value = argv[index] if index < len(argv) else ""
536
+ else:
537
+ value = arg.partition("=")[2]
538
+ for name in _split_disallowed_tools(value):
539
+ if name not in disallowed_tools:
540
+ disallowed_tools.append(name)
541
+ index += 1
542
+ continue
496
543
  name, has_value, value = arg.partition("=")
497
544
  if name in _SYSTEM_PROMPT_OPTIONS:
498
545
  if not has_value:
@@ -567,12 +614,13 @@ def _parse_args(argv: list[str]) -> ParsedArgs:
567
614
 
568
615
  raise _ArgumentError(i18n(message.rpc_mode_print_conflict, flag=rpc_flag))
569
616
  print_prompt = " ".join(positionals) if positionals else ""
570
- return rpc_stdio, None, False, print_prompt, output_format, system_prompt_flags, None, tuple(add_dirs), None, yolo
617
+ return rpc_stdio, None, False, print_prompt, output_format, system_prompt_flags, None, tuple(disallowed_tools), tuple(add_dirs), None, yolo
571
618
 
572
619
  # Non -p mode: original logic
573
620
  if not positionals:
574
621
  return (
575
- rpc_stdio, None, False, None, output_format, system_prompt_flags, rpc_relay, tuple(add_dirs), rpc_ws_port, yolo
622
+ rpc_stdio, None, False, None, output_format, system_prompt_flags, rpc_relay, tuple(disallowed_tools),
623
+ tuple(add_dirs), rpc_ws_port, yolo
576
624
  )
577
625
 
578
626
  command = positionals[0]
@@ -585,10 +633,10 @@ def _parse_args(argv: list[str]) -> ParsedArgs:
585
633
  raise _ArgumentError(i18n(message.rpc_mode_resume_unsupported, flag=rpc_flag))
586
634
 
587
635
  if len(positionals) == 1:
588
- return rpc_stdio, None, True, None, output_format, system_prompt_flags, None, tuple(add_dirs), None, yolo
636
+ return rpc_stdio, None, True, None, output_format, system_prompt_flags, None, tuple(disallowed_tools), tuple(add_dirs), None, yolo
589
637
 
590
638
  if len(positionals) == 2:
591
- return rpc_stdio, positionals[1], False, None, output_format, system_prompt_flags, None, tuple(add_dirs), None, yolo
639
+ return rpc_stdio, positionals[1], False, None, output_format, system_prompt_flags, None, tuple(disallowed_tools), tuple(add_dirs), None, yolo
592
640
 
593
641
  raise _ArgumentError("resume accepts at most one <session_id>")
594
642
 
@@ -776,6 +824,23 @@ def _build_wellformed_input():
776
824
  return inp
777
825
 
778
826
 
827
+ def _use_utf8_stdout_when_redirected() -> None:
828
+ """stdout 不是 TTY 时改用 UTF-8 输出(票 tui-plugin-mcp-override/05、07)。
829
+
830
+ Windows 上重定向的 stdout 取 locale 编码 cp936/GBK,`mcp list` 的 `✓`/`✗`、
831
+ `-p` 模式结果里的 emoji 编不出来会崩。调用方:`mcp` 子命令分支、`-p` 分支。
832
+ agent 的 Bash 工具按 UTF-8 解码子进程输出,所以改 UTF-8 而不只是 errors="replace"。
833
+ TTY 不动:Windows 控制台本来就走 Unicode 控制台 API(PEP 528)。
834
+ """
835
+ stdout = sys.stdout
836
+ if stdout is None or not hasattr(stdout, "reconfigure"):
837
+ return
838
+ isatty = getattr(stdout, "isatty", None)
839
+ if callable(isatty) and isatty():
840
+ return
841
+ stdout.reconfigure(encoding="utf-8", errors="replace")
842
+
843
+
779
844
  def main(argv: list[str] | None = None, *, profile=None) -> None:
780
845
  from comate_cli.distribution import DEFAULT_PROFILE
781
846
  from comate_cli.terminal_title import (
@@ -834,6 +899,7 @@ def main(argv: list[str] | None = None, *, profile=None) -> None:
834
899
  if run_argv and run_argv[0] == "mcp":
835
900
  from comate_cli.mcp_cli import McpCliError, run_mcp_command
836
901
 
902
+ _use_utf8_stdout_when_redirected()
837
903
  try:
838
904
  run_mcp_command(run_argv[1:], command_name=command_name)
839
905
  return
@@ -866,6 +932,7 @@ def main(argv: list[str] | None = None, *, profile=None) -> None:
866
932
  print_output_format,
867
933
  system_prompt_flags,
868
934
  rpc_relay,
935
+ disallowed_tools,
869
936
  add_dirs_raw,
870
937
  rpc_ws_port,
871
938
  yolo,
@@ -881,6 +948,8 @@ def main(argv: list[str] | None = None, *, profile=None) -> None:
881
948
  # Assemble print mode message
882
949
  print_message: str | None = None
883
950
  if print_prompt is not None:
951
+ # 票 tui-plugin-mcp-override/07:结果在最后一步才写 stdout,GBK 编不出 emoji 会丢掉整个结果。
952
+ _use_utf8_stdout_when_redirected()
884
953
  stdin_text = _read_stdin_if_ready(sys.stdin)
885
954
  parts = [p for p in (stdin_text.strip(), print_prompt.strip()) if p]
886
955
  if not parts:
@@ -920,6 +989,7 @@ def main(argv: list[str] | None = None, *, profile=None) -> None:
920
989
  print_message=print_message,
921
990
  print_output_format=print_output_format,
922
991
  add_dirs=add_dirs,
992
+ disallowed_tools=disallowed_tools,
923
993
  yolo=yolo,
924
994
  system_prompt_flags=system_prompt_flags,
925
995
  process_start_perf=_PROCESS_START_PERF,
@@ -106,41 +106,6 @@ async def _handle_update_on_launch(
106
106
  return False
107
107
 
108
108
 
109
- async def _handle_migration_on_launch(
110
- *,
111
- target: UpdateTarget,
112
- python_version: tuple[int, int] | None = None,
113
- ) -> bool:
114
- """Interpreter Migration 的启动前提示(macOS/Linux,纯本地判断)。
115
-
116
- python_version 默认取当前解释器,测试注入。返回 True 表示迁移成功、启动应停止
117
- (Restart-to-Apply)。迁移一定要用户在全屏提示里确认:重建 tool 环境可能破坏
118
- 其他正在运行的会话,所以不做后台静默迁移。
119
- """
120
- from comate_cli.terminal_agent import update_check
121
-
122
- try:
123
- info = update_check.get_pending_migration_info(
124
- target=target, python_version=python_version
125
- )
126
- if info is None:
127
- return False
128
- if update_check.decide_migration_prompt(info) == update_check.UpdatePromptDecision.SHOW_HINT:
129
- console.print(
130
- update_check.format_migration_hint(info, target),
131
- style="dim",
132
- markup=False,
133
- )
134
- update_check.mark_migration_hinted(info)
135
- return False
136
- choice = await update_check.show_migration_prompt(info, target)
137
- if choice == update_check.MigrationPromptChoice.MIGRATE_NOW:
138
- return await update_check.run_migration_command(console, info, target)
139
- except Exception:
140
- logger.debug("startup interpreter migration prompt failed", exc_info=True)
141
- return False
142
-
143
-
144
109
  async def _handle_background_update_on_launch(
145
110
  info: UpdateInfo,
146
111
  *,
@@ -773,6 +738,29 @@ def _resolve_prompt_flag(prompt_flag: "PromptFlag | None") -> str | None:
773
738
  return content
774
739
 
775
740
 
741
+ def _exit_on_unknown_disallowed_tools(names: tuple[str, ...] | None) -> None:
742
+ """--disallowed-tools 的内置名必须精确(区分大小写)匹配 SDK 系统 tool,否则报错退出。
743
+
744
+ 去掉 tool 是一道限制,拼错就等于没去掉(SDK 对不认识的名字静默不生效),所以 fail fast。
745
+ 按全部系统 tool 比对,不管当前模式下是否可见。mcp__ 开头的不查:MCP 启动后才连接,
746
+ server 不再提供的名字也是合法状态(ADR 0032)。报错方式同 _resolve_prompt_flag:
747
+ stderr 按界面语言写一行 + 退出码 2,不出 traceback。
748
+ """
749
+ if not names:
750
+ return
751
+ # 只在给了名字时导入;Agent 构造本来也会导入它,这里只是提前。
752
+ from comate_agent_sdk.system_tools.tools import SYSTEM_TOOLS
753
+
754
+ known = {tool.name for tool in SYSTEM_TOOLS}
755
+ unknown = [name for name in names if not name.startswith("mcp__") and name not in known]
756
+ if not unknown:
757
+ return
758
+ from comate_cli.terminal_agent.i18n import i18n, message
759
+
760
+ sys.stderr.write(f"{i18n(message.disallowed_tools_unknown, names=', '.join(unknown))}\n")
761
+ raise SystemExit(2)
762
+
763
+
776
764
  def _build_agent(
777
765
  *,
778
766
  project_root: Path | None = None,
@@ -802,6 +790,7 @@ def _build_agent(
802
790
  if profiler is not None:
803
791
  profiler.mark("agent.config.load.done")
804
792
  disallowed_tools = _merge_disallowed_tools(extra_disallowed_tools)
793
+ _exit_on_unknown_disallowed_tools(disallowed_tools)
805
794
 
806
795
  if add_dirs:
807
796
  logger.info(
@@ -840,6 +829,9 @@ def _build_agent(
840
829
  tool_approval_callback=approval_bridge,
841
830
  prewarm=prewarm, # type: ignore[arg-type]
842
831
  attribution=attribution,
832
+ # ADR 0057:插件 MCP server 走 plugin 层叠加在磁盘三层之下。legacy 下任何非空
833
+ # mcp_servers 都会让磁盘三层整体失效;mcp_servers 保持 None 时 merge 与 legacy 磁盘结果相同。
834
+ mcp_resolution_mode="merge",
843
835
  )
844
836
  if profiler is not None:
845
837
  profiler.mark("agent.construct.start")
@@ -1297,6 +1289,7 @@ async def run(
1297
1289
  print_message: str | None = None,
1298
1290
  print_output_format: str = "text",
1299
1291
  add_dirs: tuple[Path, ...] = (),
1292
+ disallowed_tools: tuple[str, ...] = (),
1300
1293
  yolo: bool = False,
1301
1294
  system_prompt_flags: "SystemPromptFlags | None" = None,
1302
1295
  process_start_perf: float | None = None,
@@ -1412,9 +1405,6 @@ async def run(
1412
1405
  )
1413
1406
  if should_stop:
1414
1407
  return
1415
- # 有待更新版本时它自己不提示(优先级规则在 get_pending_migration_info 里)。
1416
- if await _handle_migration_on_launch(target=update_target):
1417
- return
1418
1408
 
1419
1409
  _run_startup_hooks(profile)
1420
1410
  profiler.mark("agent.build.start")
@@ -1449,8 +1439,10 @@ async def run(
1449
1439
  agent = _build_agent(
1450
1440
  project_root=project_root,
1451
1441
  profiler=profiler,
1452
- extra_disallowed_tools=(
1453
- PRINT_MODE_DISALLOWED_TOOLS if print_message is not None else None
1442
+ # --disallowed-tools 与 -p 自带的限制取并集,用户参数不能把后者冲掉。
1443
+ extra_disallowed_tools=_merge_disallowed_tools(
1444
+ disallowed_tools,
1445
+ PRINT_MODE_DISALLOWED_TOOLS if print_message is not None else None,
1454
1446
  ),
1455
1447
  add_dirs=add_dirs,
1456
1448
  system_role=profile.system_role,
@@ -386,16 +386,33 @@ async def upload_spool_file(
386
386
  payload_bytes = await asyncio.to_thread( # to_thread: bounded-local, one capped report JSON file
387
387
  path.read_bytes
388
388
  )
389
+ except FileNotFoundError:
390
+ # 并发上传方 ack 删除后,drain 可能仍持有这条路径;正常竞争,不是损坏。
391
+ logger.debug("session report spool already removed by another uploader: %s", path)
392
+ return True
393
+ except OSError:
394
+ # Windows 杀毒/索引/同步盘会短暂锁文件;内容未损坏,留给下次启动的 drain 重试、prune 兜底。
395
+ logger.warning(
396
+ "session report spool read failed, will retry on next startup: %s", path
397
+ )
398
+ return False
399
+ try:
389
400
  payload = json.loads(payload_bytes)
390
401
  if not isinstance(payload, dict):
391
- raise ValueError("session report payload must be an object")
402
+ raise ValueError("payload is not an object")
392
403
  session_id = validate_session_id(str(payload.get("session_id", "")))
393
- except Exception:
394
- logger.warning("discarding invalid session report spool: %s", path)
395
- await asyncio.to_thread( # to_thread: bounded-local, one invalid spool unlink
396
- path.unlink,
397
- missing_ok=True,
398
- )
404
+ except Exception as exc:
405
+ logger.warning("discarding invalid session report spool: %s (%s)", path, exc)
406
+ try:
407
+ await asyncio.to_thread( # to_thread: bounded-local, one invalid spool unlink
408
+ path.unlink,
409
+ missing_ok=True,
410
+ )
411
+ except OSError:
412
+ # unlink 也可能被文件锁挡住;内容已判无效,留给 prune 兜底删除,不向调用方抛出。
413
+ logger.warning(
414
+ "session report spool discard unlink failed, left for prune: %s", path
415
+ )
399
416
  return True
400
417
  disposition = await client.put_session_report(
401
418
  session_id=session_id,