comate-cli 0.10.2__tar.gz → 0.10.4__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.
- {comate_cli-0.10.2 → comate_cli-0.10.4}/PKG-INFO +1 -1
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/markdown_render.py +49 -20
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/theme.py +1 -1
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/update_check.py +15 -4
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/update_messages.py +7 -6
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/windows_updater.py +114 -14
- {comate_cli-0.10.2 → comate_cli-0.10.4}/pyproject.toml +1 -1
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_history_printer.py +29 -8
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_markdown_render.py +48 -28
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_theme.py +1 -1
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_update_check.py +41 -2
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_windows_updater.py +101 -10
- {comate_cli-0.10.2 → comate_cli-0.10.4}/uv.lock +2 -2
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/08b40bf6a68c85059572f3478db27d848acd36a6e8c6b89fa5173927210e7b53.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/0ff4f2f1382d2c19ca8d86e01ee8b6768b2fa925bdcf1e57829cecc590120371.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/1571cd767eb43ae39534d8f53f60bd56a2a537a64ecf8b5d93ee7556ea4cbb54.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/19ac2280798d9988d4bd8e29952989eabf0749b893d4026bf9786169cd50c659.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/24efc545d3f0b694a02cfa8022b8f93be27e57547a4f0661f608c80d9bc78113.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/3d69373ac48a465a06bd30094e4c28921c1201865c27dc0f012768799351c10b.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/46c7def792f8820aff04a0083057d32079d7ccc208e394eb00a440618f4455ba.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/594a10eddaf1ea6344dc62d41af7146f6e52471ccf1ee1fba6e61376c3ba5bce.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/5e4d793a1bc3ae3b2c7fedb39645e04d3bd6a86ceb064ba99746d6164034942d.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/6a28b28d04d8cf003fc6e41560ad05af138aecfdb0f7f9978bf12a1d3b4e353a.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/8e9d29f51d07bd7d9cd02aae2cc12c1bd575f3748f6a2b9065dcad75973c1e90.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/954f324b297d871035343be09391bc7c5e0df38faf3f4a3a92be92685a9ad4e3.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/a58d73b67de68741d8e4e9e7d212a7e98a7db0b864113fbd2b9056b166095c85.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/b44535f54c0d62ce9f9fa3a673ccff0f6d17086dce54787da0f8ab910c2ed1c9.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/b8f6674b359865d1c0880633f552a30210a60d30d2c11370e9ab0457f65f75a3.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/da3d0964cd50a338b3dedc5212ee6d4d045c04629f62a0e948c905c3ec27ab4c.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/dfc071d5c7a17280f23b1875b16a0f38ff61736e5985b2c9e3056f741f17bd5d.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/e12f27ecae32f087ea8696b8061c42facb63a91b2b100568f3602cc2f0b6ce60.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/bash/fe60ed7a2e79c21b81416fa2e77c827ea64df5ba5b6cd343a9b423731dc15b4d.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/glob/dc28800ddef1229e5c0bd125335ab31d85d5f8aba0ff2713d09829671b70f2ec.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/glob/e6fa077dd5e2e19045abf084f97dcfbcbffc1571967a0243ca40ff996d8bc9f2.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/010b7d94484960699c5c28b5d2ea86d53c2d998a78141c75b834409de64bf25c.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/0193f8465b3eaba72bb4f4f78d0376ca89a09d96e87bb9b63c4543023c6b5516.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/03edbaec20870710ae8531b002c837e2c092d53ed8b544d05330cf5fd699dcb4.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/09c695b86ba43584b134ed6ee26cbe023f58551e579158cf94790644ad6aaa53.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/0b96a0a521f9d4c0a88fc75a2e5f69e4c4b7be8ea5d73599eab390c88d4098d8.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/0ba5851c04aaa37f25f6b0a37daa3522754d7865e79b3abf0daf8fca54fc07f7.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/0beb89f407f205d5b2fdb075c98869ffa5db8e2a3687706e06399d3f58a3278f.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/0bf5d9171b6ec0a61962ae22ce8109a26abf764c031ddd5c8dcad25c678020ec.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/0db7a1bd5eb18329885082bc554f4456a5c254b687c25c2b3611a364634badd8.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/0dd1a484cf5b506de9a8e85db9c9156e7623bc633c07d8805d83768edf1d1b68.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/0f48a977857dc6fe0658c5341b8b409205bb6391cc458d19d18f06b1c37e3b8c.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/1194ded949e902bc25be21bfe63952a98381416bed255dc052b6715ebb81f11e.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/134f90a9b26f8bbc6fc602c3a1301623823abec5cb8eb9680ea060bea5d78b07.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/1461fb3572a606968e5d9738ec65dfe0cf4616ead5696f2b47dd36dd12cd8346.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/14f7537d8a7090ad8f6531bd9ecfadd9d727f2bf0c620afde878e8765d596cc8.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/176241ffb6774d19531593769c50349debb431f8c888f8e4fb46178af6f8f9e6.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/17e25775e4ce9b0fcb34b7af659d7d72f53262b1b59c21190f450c4eda8bb6a2.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/1a9cea8b7b788598502df8771b6c03f6b393613e1d911f04959ec59f3b7e9869.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/1b2ee53405771f837aa234d5a8d128c3f1fd6f16306ec5c71e30df1a55f0eab8.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/1c265542a4a6dac9cdc557ba271a9022d5f5bfa044d7ae4201a302ee59517542.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/1dd72f0779d1616cc4683de1565d1cc4242dee18987cfe5c9ead6ec445ab952f.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/1f0f6484841d5396cfb19f060ada806f54d62594a2a6f81af4ed70d379bdb82e.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/1f4854573b520c1a6e0fb4cd8488263f823a61a6867e4c7d92cdce74b4cb4d1b.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/200787ede572c7eee4ff7cd579a936b8ab0ecf6f25bb2f6ac89dbd04fdac1ef7.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/22fb4c5aa3fea197c71b90824449eca45095da4bd1c7bc76dbfb689abcd5cc49.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/29cd9403e9ab3dac5cc3a95fa0ede278decb57cf7183eaad8e29aed9903aba26.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/2aa8195d533da9ee878d5ff7e7c4574ad9dc54c57e85f0be801d9aa5ba7e9d65.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/2df4412a93598e76038f722e112a5519bbca58e31a27a471346aecf3c5d486b8.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/2f04b6777f986f64bbdcdd828eb4a7fa5aa67872fc0d61e891d2af9ec51a6fb8.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/3114f2804efe81842b21a85a4bc9eb2ef9f975c28e9220564e6cd2185fed11f7.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/3240cf436c636223d89029d2859dc8b8bbc059ea3b8b9a3cdcececb6e75d6da9.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/3a03ca37d32ea15316bb77147116bf8eeaa55ea255b7819f1b6350e80cd38481.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/4274f27741d2a37b85ea968754ede69180f59300532f1c8e2c8bcc6cb57d93f8.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/42c75defbb53e48d8521927f945412100cd487ad492ee1a57a57df3f64831096.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/435267ab04edbf55d21c169170faf8eca36f065abb282e9fd731cbf500763757.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/448d3ded3b00200238f3782ed0fb5fbe30166139308cfa6cd3e31867f3cf941e.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/449ac499b090311eb8b5594f7646d84f67e9da1fad4ad968b772d4d8ab404141.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/45f0d5dda63863f163106fbf234ba98c6b2ba88ee63c308b922b6b18b9d6d179.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/48a5ea12ce666954aeb22afab26d199f9ceb7c5db99531077bed0298837a4777.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/4d6a33d9eaeb38ed7558b7e0162b399580b211cedefdd2a4126b6363b0616b9a.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/54822f93bd0f279a2dc67f57f4b49a549938346f606c3ea62f76573ed7c19729.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/5592b8582682415bf399fd16bc4e354a8af6979acc7ee5f7d8161b6a2a090a6e.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/5697b946b47f9c271273606510662d25c579a1c3cd66a3f73f845178626adf8c.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/571cb6737be8d74e05976da2ba022ea1a5e191bdfeafa40b22834b61aca984ec.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/592ea99ad61dc416029a0a68a9ea47c765d706d7ffbae9cd697405da2dd8a9ec.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/5c0df9216c4f53dc1c2d786266a137dbe326ab4363ddc40307fb21a00a9f94ac.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/5ce22f90e1ec6217b95997fad94cc926c12ffdd6f3ef3e278bf0b89ecbcc6d62.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/5dc1de7af87cb4091467bc5f0265745e602853afdc3863c267b6e90a26f412c9.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/5fff0b4efc09b785f1ee5dee2e5d7ad4e247bdb9c93f41b5814c9db1c04cb8d7.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/6249573679ee1a300a25baec32ea72ee34eeffb45f73f676cc0b0f0d11a2d31d.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/6258f866ee46c82b3b4584aafd49625b86793f1324318970124c849013397865.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/640e6e9edd64f8ed1f4928e9af1f9890c17386cdbc86d329cc2256628e7c50bb.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/643717af84fd6f09302e9656f696f853b85dc10bdd144cc4b3ea064c0ee39056.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/65ed38867aa3162db6899d4f1b76907655d6af699cff567e2b776ec997f65b9e.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/67196d9894f03b07594d654caf016388b13842a7b3d11466a7b7532727d11bfa.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/6c6f4e1f9e1d09af3d8a7c10dd243df92781e6ebbbf4f1215c189d74b7a16e01.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/6cfadf5d61982d2bb941416d5fefc22202df0bd4dde584321be50716843f2a4e.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/6dbade43d62180ae1367c70744d985615fe64768efba5c77317ea4c349aa7958.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/6e20e5b86fbf934bbe180ab38a81e259006f0fc43b4d650820994dea3ead8075.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/705ec2d0ab89a76fbc02a18d23d8bf10b26eebd5144911cb398e46e2374524cf.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/73f1fdec89c242b1c28093dcc12e830a4467c5c5197286879a25feda693b3ede.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/745e2b17c9b412d9d89d380626ceb2eb088b2d24e1a4f26be948061a8daaccdd.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/74bf1dc40d9b884a5312567e5bc923389e9bcd10e9efa1eb87a01c50b1e11ef1.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/758f6bd9fa04989fe968fb80567eb4a4d028e9dd6ca9c482c0a919a7c9da6dad.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/762dfb3969ac05cfd8ed58ea34abea8b4e4756ec5c8ef7496e49bb6f824439af.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/7880b26ed67f9abd746b4e5c7ccc009f97a16cc5245b4fb04e9e51faf2e99b43.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/7b530ebb0d7be5cb364886c326ac09fedb208520170ec424c0d66f2a049cd735.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/7d4e0f51f0fa21846dfda5ceebb79cf53d0e8abf1b2f86ecd09ddf06f85cd3bc.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/7d79d72b0ff97ae7703118b1c3edc22a3e9aad968baaeb1210281e1b3e0fdf75.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/81d4cf35489f009f64aba1f01c0a9c73ac256391d5369dbbae2b3f92c912afb0.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/89124ab34d06feebcf91d5fa7fd8d3f36493f0d62ae79b0f339f87a229333a3b.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/8a1456d96d430228501f6c305ba67912312bfdd48b2841e2456160a02498ea5b.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/8bc79492c38d7124f4214f0437350fb1cfadaf6635bc4391c69fe64c6e8f6096.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/8c95072ee427abdb9a07444bf26dc78e72cf93ed9e898d77dd9aa643f6f5b913.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/98060d6195be5fb98d6098eb947853a25a305bce1ebf5a4218ffb791379b9dc6.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/98b2832dd79c7972eb441b3102f1f6aa40ccb867d7771ec238142564a3b4a117.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/98b76a32c3a05f7d91b8b81518f28b613f7ccb373575858fd6aa2711ddbc382e.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/9a5fd2d8be3b1e8ef2343f9a19bd75adba3687b2cb8234ee341d6cdc3ab1f361.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/9c80158f162aadb87f84195c4496a1c24f68ceca3535852835de9cf4e428d028.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/a9594b8f4f25e5b378fcc883960fa7afb2dea9d80851cb5d52f18d856be95219.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/abacaab899684c1677f97720dcfc4a6c1fbf98d2cfa44e25f040959586ccaa20.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/ac65e45db9f2c51a484173eb31b907c1cb007c5cacca21396790f5345968ca72.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/ac8641710e4c96567edad6364d218a08630ff20af9f075f61c20d013f9369648.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/ad798be6fa338bd3ee7fc49048192e39d3b2b78837051208815b817e5ca96793.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/b04c0955b68f788125018525e308e82987ada00d3943e21cb159f577319ccf11.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/b1b9c6d1eefe14c5076aa214fe4f98242f99ed9b146214d0305224539d8e78a1.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/b39bb289db5f9e4f31c67766f5e08333d10f384a2d5f6b71fb44522bc4f17f80.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/b64736bbdd8fe7ca1ff2ef98558f16f145ca437255ccebca44bf1041b0afbd55.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/b898cd80aa00ebdfda4ef314a4e245e62ee96c21935a7f332243a67b0072d1a0.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/c1a4508b9a74b3d1649f25dbd474780e6212ced036bbca6b4aac06d324ff10e9.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/c3c33582bb37fb71235e9d0fd2b8d2cc8c926cfcb014261356ea917db6417ebd.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/c63907ae1cb41e59de75df3d6e0dff27db2ce2434cac5f283a428e4fd9bee301.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/d2402b2d42c975305d4866353935ce285eb67ff7f2a2d74ee9be559d022c86f6.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/d4e8e439058ef24fb0671ee6674a5b854c17e0b93b012d2dbe8ed85928afe560.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/d8c8f51da7a2bc8977320248883adabe9a4d9da131e99f7dfe18a9c826b1c8b1.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/dbd79a71f323da5dc1570d5c8d6b99e73b642128697b6c51ab240379fa74f763.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/de09b36cc3fd06274fcdbfc7d431f170afe40b4fa8ddd5c0a281581ee03eabec.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/dfd45c97a1da7d27da6790c1b24048f584ed4f831e971cf3f4c366b7d8687980.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/e138fb7f4303433003aeeaf67b15d783b253696d3d24fd7dfacc50f619db04fd.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/e1ca31c715894314164641ba9d80dc13f7e8e146e8f77a995bc3650057ee3ba3.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/e6f0fb5f2688faeaa4875724c32f27e79d8a9710bbb91d2a950b84b3481fc374.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/e707578cd4b2132eae2e3bdfa918555c2a8f1f4ac52fd6dbc6fc9a347c44221b.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/ea0fc86903a5bd1f02832cc3eed4446d55e16dc7df0298c5d74afa56a89a8ca7.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/eab81978291f4725b9433192c5b7f4b5409cdcdeb80ffab9884c79ef230bdcdd.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/f04828b2b54922581d7cde5351807a457896b2940fd748e8d706fd5dc4bed971.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/f04b4f70fe5292dc485164699342c03f3cf4715ba0d5efa815cb7a332dd78c0b.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/f2012bd41aa48cd2e3f56611f32b041bd41863b681a79d5ff5f515a97e7e1ddc.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/f35c437708355261ca868cf38ade97384e86f24de9aab20849113dc78eb8564c.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/f638dfe4edbde834bd968f4d479c1c535dff1dfac10f3e003ec8673d5eca5864.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/f916ed291897b4afb5f8a55f5e333a53f11540e2ade24f691a7828885aa77a32.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/fa3b737ee93d45bfff6e78245a5ecad2476dc7010c75c772abc1c272cddae072.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/fd1133b3a420133590ffb1c050a65477a4751902ca9b832db1c23a6fb90200b8.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/fe3df7b68f7041d210336363f5b11faf963427dbcf4027172e19db05f7b24fa1.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/grep_content/ff6b896f93f2ac018a3af519be3001d1e4c8ca6ef9ae3e051aa646b409b6773f.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/index.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/ls/4f2cd109869e06f70f28f7aaaa3163fea4731bbb92dc4da8ac25177d6f122f87.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/ls/768197391db12061fb74d56cad07e9331db0bd832503b5e40be76b49208a111a.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/ls/a560ae7492ac913282b703abd48897905727acc058d0f9346b17d450f32e1a8a.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/01f0c4c39cc01ec7d59077fa8bfca183cbd6c93d0a7083261f228badca115eba.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/03079608ffe5b120094798aababb67671a20f8466c0197044eacaea56fa12d30.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/08e5d1cdde9e2d6dff5435ee87c6710470709d83c271185eaaaa6d652068d80e.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/10f74765725e10bd94d92eb25cea495ea8cb9d9151397b05b200ed44a852d882.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/3faa3ddc36161e84da99e18707d61b7ffbbbeb8217c28a55a027134f8def5d17.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/45cd4ad764e19e3fc0481b8d8649c235ae51634eb41da0806f9f00ab1bdb640d.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/4fdacfc564ff558dd602f672edfbb4a72494d8e3c8937bcf0a3d15e085c4a0b7.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/50eb11fb5aa96e54b2a7e68c0b9278ec3c07d222bad92270f4a51df58ca69e03.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/5a1f18c61191f6b4c1635363748a2aca49ad2183f046035728b5c23ee3df1123.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/72718c187cf24910d3c21d7e719e004efa27b4f5d7315bbe2b9a33e2494cc0f9.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/7fa851f7100b6e3e652604de11be2767b7a679aea40e941b0b1218478e5935ed.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/9d3ace7b725f6aa5809ca4bc298c5ac3d022cb92c29684c7709d63c9c5fd2ad4.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/dbeea3cc8bd22fdb703675e202063e7f4ce21ef00c5c83f74268cd6328ad912d.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/tool_result/ea66ecb02621262c26d0368c108d2f2f94e2d1f75dea6b38bf958c5bdbaa2ee7.txt +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/webfetch/2669c40a92ce6395790ae997503be646bdc3af4a49f799b38d8380e5ecd1e015.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/webfetch/5701edea87e370ce51349413bcba507833f48f2ad7337eef3deccc82c7d45a8d.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/webfetch/5c0eeec3d9ab0a6881d12ebd5a95b6b71b90d47640e38c914232d75704332f54.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/webfetch/80baa6870df61f51b68fadde829aa2ab889fd487f8a8171db36ea3b67ded24db.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/webfetch/915acd44f3846631527a3cd62e81d9908bb7e8769b970208ffa3326c65df8778.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/webfetch/a758c9f6242610e875e36aed11e99ac337359cbe512df15db6544504fa9e68b8.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/artifacts/webfetch/eca7d820f7461f58ee9b2b1e931842de54cd1ec023eca7a27e3bfb387efc6aa2.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/scheduled_prompts.json +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/SKILL.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/html2pptx.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/mce/mc.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2010.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2012.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-2018.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/scripts/pack.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/scripts/unpack.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/scripts/validate.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/scripts/validation/base.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/scripts/validation/docx.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/scripts/validation/pptx.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml/scripts/validation/redlining.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/references/ooxml.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/scripts/html2pptx.js +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/scripts/inventory.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/scripts/rearrange.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/scripts/replace.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.agent/skills/powerpoint/scripts/thumbnail.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/.gitignore +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/CHANGELOG.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/CONTEXT.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/README.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/__main__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/distribution.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/main.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/mcp_cli.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/animations.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/app.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/approval_bridge.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/assistant_render.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/builtin_commands/.keep +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/builtin_commands/implement-plan.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/builtin_commands/learn.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/codenames.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/config/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/config/model.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/config/picker.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/config/picker_state.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/config/store.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/custom_slash_commands.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/env_utils.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/error_display.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/event_renderer.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/figures.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/file_ref_hint.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/fragment_utils.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/goal_edit_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/goal_resume_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/history_printer.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/input_geometry.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/layout_coordinator.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/logging_adapter.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/logo.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/mention_completer.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/message_style.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/models.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/path_context_hint.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/components/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/components/detail_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/components/plugin_list.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/components/search_box.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/components/tab_bar.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/marketplace_install_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/operation_state.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/plugin_picker.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/tabs/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/tabs/discover_tab.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/tabs/errors_tab.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/tabs/installed_tab.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/plugins/tabs/marketplaces_tab.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/preflight.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/preflight_wizard.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/print_mode.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/question_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/recap/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/recap/controller.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/resume_picker.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/resume_preview.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/resume_selector.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/rpc/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/rpc/approval.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/rpc/options.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/rpc/protocol.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/rpc/serde.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/rpc/server.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/rpc/session_host.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/rpc/stdin_reader.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/rpc/stdio.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/rpc_protocol.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/rpc_stdio.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/selection_menu.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/skill_slash_input.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/slash_commands.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/startup.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/startup_profile.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/status_bar.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/statusline/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/statusline/model.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/statusline/picker.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/statusline/picker_state.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/statusline/store.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/text_effects.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tips.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tool_approval_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tool_fold.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tool_result_formatters.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tool_result_store.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tool_result_viewer.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tool_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/transcript_viewer.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tui.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tui_parts/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tui_parts/btw_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tui_parts/commands.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tui_parts/history_sync.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tui_parts/input_behavior.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tui_parts/key_bindings.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tui_parts/mcp_connecting_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tui_parts/render_panels.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tui_parts/slash_command_registry.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/comate_cli/terminal_agent/tui_parts/ui_mode.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/dist-comate/.gitignore +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/dist-comate/comate_cli-0.7.10-py3-none-any.whl +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/dist-comate/comate_cli-0.7.10.tar.gz +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/dist-hico/.gitignore +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/dist-hico/hico_cli-0.7.17-py3-none-any.whl +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/dist-hico/hico_cli-0.7.17.tar.gz +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/docs/cli-rpc-stdio-guide.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/docs/startup-performance.md +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/config/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/config/test_model.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/config/test_picker_state.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/config/test_picker_ui.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/config/test_roundtrip.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/config/test_store_load.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/config/test_store_save.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/conftest.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/fixtures/fake_mcp_misbehaving_stdout.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/recap/test_idle_recap_controller.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/recap/test_recap_history_rendering.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/recap/test_tui_idle_recap_integration.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/statusline/__init__.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/statusline/test_model.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/statusline/test_picker_state.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/statusline/test_store.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_animations_styles.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_animator_shuffle.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_app_mcp_preload.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_app_preflight_gate.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_app_print_mode.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_app_profile_threading.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_app_pty_smoke.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_app_shutdown.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_app_startup_latency.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_app_startup_order.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_app_token_cost_config.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_app_usage_line.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_approval_bridge.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_btw_slash_command.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_busy_slash_gating.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_cli_project_root.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_compact_command_semantics.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_completion_context_activation.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_completion_status_panel.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_context_command.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_custom_slash_commands.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_discover_tab.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_distribution_contract.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_errors_tab.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_event_renderer.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_event_renderer_approval_wait.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_event_renderer_boundary.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_event_renderer_e2e.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_event_renderer_log_boundary.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_event_renderer_log_queue.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_event_renderer_stream_staging.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_event_renderer_streaming.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_event_renderer_tool_args_progress.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_event_renderer_tool_fold.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_file_ref_hint.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_format_error.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_goal_edit_handlers.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_goal_edit_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_goal_resume_tui.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_goal_resume_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_goal_slash_command.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_handle_error.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_history_drain_throttle.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_history_printer_log.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_history_printer_styles.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_history_printer_subtitle_position.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_history_printer_tool_fold.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_history_sync.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_history_sync_tool_fold.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_import_weight.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_input_behavior.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_input_history.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_installed_tab.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_interrupt_exit_semantics.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_layout_coordinator.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_logging_adapter.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_logo.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_main_args.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_main_args_yolo.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_main_profile_entry.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_marketplaces_tab.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_mcp_cli.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_mcp_slash_command.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_mention_completer.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_menu_cursor_unification.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_message_style.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_model_switch_command.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_no_raw_colors.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_path_context_hint.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_permission_mode_cycle.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_plugin_operation_state.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_plugin_slash_commands.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_plugin_tui_components.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_preflight.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_preflight_copilot.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_pty_output_integrity.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_question_key_bindings.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_question_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_resume_picker.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_resume_preview.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_resume_selector.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_rewind_command_semantics.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_rpc_approval.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_rpc_options.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_rpc_protocol.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_rpc_serde.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_rpc_server_methods.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_rpc_session_host.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_rpc_stdin_reader.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_rpc_stdio_transport.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_selection_menu.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_session_query_token_summary.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_shutdown_noise_guard.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_shutdown_noise_integration.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_skill_slash_input.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_skills_slash_command.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_slash_argument_hint.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_slash_clear.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_slash_completer.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_slash_registry.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_startup_import_budget.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_startup_profile.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_status_bar.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_status_bar_transient.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_stream_staging_panel.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_style_class_coverage.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_task_panel_format.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_task_panel_key_bindings.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_task_panel_rendering.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_task_poll.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tips.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tool_approval_key_bindings.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tool_approval_tui.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tool_approval_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tool_fold.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tool_fold_panel.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tool_result_formatters.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tool_result_store.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tool_result_viewer.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tool_result_viewer_key_bindings.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tool_view.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tool_view_styles.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_transcript_viewer.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_transcript_viewer_tool_fold.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_builtin_slash_chain.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_elapsed_status.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_esc_queue.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_llm_retry_panel.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_local_interactive_barrier.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_mcp_init_gate.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_paste_newline_guard.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_paste_placeholder.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_provider_error_shield.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_queue_preview.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_queue_sdk_source.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_scheduled_fire_log.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_send_undo_window.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_split_invariance.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_startup_latency.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_team_messages.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_thinking_display.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_tool_result_registry_lifecycle.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_tui_window_too_small_fallback.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_usage_command.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_wellformed_terminal_input.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tests/test_wrap_user_text.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tools/logo_lab.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tools/nico_preview.py +0 -0
- {comate_cli-0.10.2 → comate_cli-0.10.4}/tools/startup_bench.py +0 -0
|
@@ -6,31 +6,35 @@ from rich.segment import Segment
|
|
|
6
6
|
from rich.style import Style
|
|
7
7
|
from rich.text import Text
|
|
8
8
|
from rich.theme import Theme
|
|
9
|
+
from rich.color import Color, ColorType
|
|
10
|
+
|
|
11
|
+
from prompt_toolkit.styles.base import ANSI_COLOR_NAMES
|
|
9
12
|
|
|
10
13
|
from comate_cli.terminal_agent import theme
|
|
11
14
|
|
|
12
15
|
Fragment = tuple[str, str]
|
|
13
16
|
|
|
14
17
|
_MIN_WIDTH = 40
|
|
15
|
-
_CODE_THEME = "
|
|
18
|
+
_CODE_THEME = "ansi_dark" # Rich 内置 ANSI 主题:无背景,token 映射终端 16 色(对齐 CC cli-highlight)
|
|
16
19
|
|
|
17
20
|
MARKDOWN_RICH_STYLES: dict[str, str] = {
|
|
18
|
-
|
|
19
|
-
"markdown.
|
|
20
|
-
"markdown.
|
|
21
|
-
"markdown.
|
|
22
|
-
"markdown.
|
|
23
|
-
"markdown.
|
|
24
|
-
"markdown.
|
|
25
|
-
"markdown.
|
|
26
|
-
"markdown.
|
|
21
|
+
# CC 模型:正文零前景色,只用属性;颜色仅出现在行内代码与代码块语法高亮。
|
|
22
|
+
"markdown.paragraph": "",
|
|
23
|
+
"markdown.h1": "bold italic underline",
|
|
24
|
+
"markdown.h2": "bold",
|
|
25
|
+
"markdown.h3": "bold",
|
|
26
|
+
"markdown.h4": "bold",
|
|
27
|
+
"markdown.h5": "bold",
|
|
28
|
+
"markdown.h6": "bold",
|
|
29
|
+
"markdown.strong": "bold",
|
|
30
|
+
"markdown.em": "italic",
|
|
27
31
|
"markdown.code": theme.INLINE_CODE,
|
|
28
|
-
"markdown.block_quote":
|
|
29
|
-
"markdown.item":
|
|
30
|
-
"markdown.item.bullet":
|
|
31
|
-
"markdown.item.number":
|
|
32
|
-
"markdown.link":
|
|
33
|
-
"markdown.link_url":
|
|
32
|
+
"markdown.block_quote": "italic",
|
|
33
|
+
"markdown.item": "",
|
|
34
|
+
"markdown.item.bullet": "",
|
|
35
|
+
"markdown.item.number": "",
|
|
36
|
+
"markdown.link": "underline",
|
|
37
|
+
"markdown.link_url": "underline",
|
|
34
38
|
}
|
|
35
39
|
|
|
36
40
|
_MARKDOWN_THEME = Theme(MARKDOWN_RICH_STYLES)
|
|
@@ -132,6 +136,29 @@ def render_markdown_to_rich(content: str, *, width: int) -> Text:
|
|
|
132
136
|
return Text(str(content).strip("\n"))
|
|
133
137
|
|
|
134
138
|
|
|
139
|
+
def _rich_color_to_pt(color: Color | None) -> str | None:
|
|
140
|
+
"""把 Rich Color 映射成 prompt_toolkit 颜色 token。
|
|
141
|
+
|
|
142
|
+
ANSI 标准/8-bit 色(number 0-15)没有 RGB triplet;缺这个分支时
|
|
143
|
+
rich_style_to_prompt_toolkit_style 会把 ansi_dark 的每个语法高亮色
|
|
144
|
+
静默丢弃(transcript viewer 的 pt-fragment 路径)。
|
|
145
|
+
prompt_toolkit 的 ANSI_COLOR_NAMES 首位是 'ansidefault',整体偏移 1,
|
|
146
|
+
故 Rich color number N 对应 ANSI_COLOR_NAMES[N + 1]。
|
|
147
|
+
"""
|
|
148
|
+
if color is None:
|
|
149
|
+
return None
|
|
150
|
+
number = color.number
|
|
151
|
+
if (
|
|
152
|
+
color.type in (ColorType.STANDARD, ColorType.EIGHT_BIT)
|
|
153
|
+
and number is not None
|
|
154
|
+
and number < 16
|
|
155
|
+
):
|
|
156
|
+
return ANSI_COLOR_NAMES[number + 1]
|
|
157
|
+
if color.triplet is not None:
|
|
158
|
+
return color.triplet.hex
|
|
159
|
+
return None
|
|
160
|
+
|
|
161
|
+
|
|
135
162
|
def rich_style_to_prompt_toolkit_style(rich_style: Style) -> str:
|
|
136
163
|
parts: list[str] = []
|
|
137
164
|
if getattr(rich_style, "bold", False):
|
|
@@ -144,10 +171,12 @@ def rich_style_to_prompt_toolkit_style(rich_style: Style) -> str:
|
|
|
144
171
|
parts.append("dim")
|
|
145
172
|
if getattr(rich_style, "reverse", False):
|
|
146
173
|
parts.append("reverse")
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
174
|
+
fg = _rich_color_to_pt(rich_style.color)
|
|
175
|
+
if fg is not None:
|
|
176
|
+
parts.append(f"fg:{fg}")
|
|
177
|
+
bg = _rich_color_to_pt(rich_style.bgcolor)
|
|
178
|
+
if bg is not None:
|
|
179
|
+
parts.append(f"bg:{bg}")
|
|
151
180
|
return " ".join(parts)
|
|
152
181
|
|
|
153
182
|
|
|
@@ -35,7 +35,7 @@ PALETTE: dict[str, str] = {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
# ── 派生色(仅限指定用途,spec 第 3 节)───────────────────────────────
|
|
38
|
-
INLINE_CODE = "
|
|
38
|
+
INLINE_CODE = "cyan" # markdown 行内代码:终端原生 ANSI 青,继承 shell 主题
|
|
39
39
|
SWEEP_BASE_RGB = (78, 134, 166) # #4E86A6 流光基色
|
|
40
40
|
SWEEP_MID_RGB = (103, 213, 255) # #67D5FF 流光峰值=品牌青
|
|
41
41
|
SWEEP_HIGH_RGB = (224, 246, 255) # #E0F6FF 流光高光
|
|
@@ -408,11 +408,17 @@ def format_update_hint(info: UpdateInfo, target: UpdateTarget | None = None) ->
|
|
|
408
408
|
|
|
409
409
|
update_target = _target_for_info(info, target)
|
|
410
410
|
messages = get_update_messages()
|
|
411
|
-
|
|
411
|
+
is_windows = sys.platform == "win32"
|
|
412
|
+
command = _format_update_command(update_target)
|
|
413
|
+
if is_windows:
|
|
414
|
+
from comate_cli.terminal_agent.windows_updater import windows_update_command_text
|
|
415
|
+
|
|
416
|
+
command = windows_update_command_text(update_target)
|
|
417
|
+
hint_template = messages.windows_hint if is_windows else messages.hint
|
|
412
418
|
return hint_template.format(
|
|
413
419
|
product=update_target.product_label,
|
|
414
420
|
package=update_target.package,
|
|
415
|
-
command=
|
|
421
|
+
command=command,
|
|
416
422
|
current=info.current_version,
|
|
417
423
|
latest=info.latest_version,
|
|
418
424
|
)
|
|
@@ -589,7 +595,12 @@ async def run_update_command(
|
|
|
589
595
|
command_text = " ".join(command)
|
|
590
596
|
messages = get_update_messages()
|
|
591
597
|
if sys.platform == "win32":
|
|
592
|
-
from comate_cli.terminal_agent.windows_updater import
|
|
598
|
+
from comate_cli.terminal_agent.windows_updater import (
|
|
599
|
+
spawn_detached_updater,
|
|
600
|
+
windows_update_command_text,
|
|
601
|
+
)
|
|
602
|
+
|
|
603
|
+
windows_command_text = windows_update_command_text(update_target)
|
|
593
604
|
|
|
594
605
|
if spawn_detached_updater(info, target=update_target):
|
|
595
606
|
console.out(
|
|
@@ -605,7 +616,7 @@ async def run_update_command(
|
|
|
605
616
|
messages.windows_manual_update.format(
|
|
606
617
|
product=update_target.product_label,
|
|
607
618
|
package=update_target.package,
|
|
608
|
-
command=
|
|
619
|
+
command=windows_command_text,
|
|
609
620
|
current=info.current_version,
|
|
610
621
|
latest=info.latest_version,
|
|
611
622
|
),
|
|
@@ -61,8 +61,9 @@ _MESSAGES: dict[str, UpdateMessages] = {
|
|
|
61
61
|
"windows and run `{command}` in a new PowerShell to update manually."
|
|
62
62
|
),
|
|
63
63
|
windows_update_result_timeout=(
|
|
64
|
-
"Background update to {latest} did not run: {product}
|
|
65
|
-
'
|
|
64
|
+
"Background update to {latest} did not run: {product} did not finish "
|
|
65
|
+
'shutting down before the wait limit. Choose "Update now" again, or run '
|
|
66
|
+
"`{command}` manually."
|
|
66
67
|
),
|
|
67
68
|
success="🎉 Update ran successfully! Please restart {product}.",
|
|
68
69
|
failure=(
|
|
@@ -105,7 +106,7 @@ _MESSAGES: dict[str, UpdateMessages] = {
|
|
|
105
106
|
"在新的 PowerShell 中运行 `{command}` 手动更新。"
|
|
106
107
|
),
|
|
107
108
|
windows_update_result_timeout=(
|
|
108
|
-
"后台更新到 {latest}
|
|
109
|
+
"后台更新到 {latest} 未执行:{product} 退出未完成,等待超时。"
|
|
109
110
|
"可再次选择“立即更新”,或手动运行 `{command}`。"
|
|
110
111
|
),
|
|
111
112
|
success="🎉 更新命令已成功执行!请重启 {product}。",
|
|
@@ -149,7 +150,7 @@ _MESSAGES: dict[str, UpdateMessages] = {
|
|
|
149
150
|
"在新的 PowerShell 中執行 `{command}` 手動更新。"
|
|
150
151
|
),
|
|
151
152
|
windows_update_result_timeout=(
|
|
152
|
-
"背景更新到 {latest}
|
|
153
|
+
"背景更新到 {latest} 未執行:{product} 結束未完成,等待逾時。"
|
|
153
154
|
"可再次選擇「立即更新」,或手動執行 `{command}`。"
|
|
154
155
|
),
|
|
155
156
|
success="🎉 更新命令已成功執行!請重新啟動 {product}。",
|
|
@@ -194,8 +195,8 @@ _MESSAGES: dict[str, UpdateMessages] = {
|
|
|
194
195
|
"を実行して手動で更新してください。"
|
|
195
196
|
),
|
|
196
197
|
windows_update_result_timeout=(
|
|
197
|
-
"{latest} へのバックグラウンド更新は実行されませんでした:{product}
|
|
198
|
-
"
|
|
198
|
+
"{latest} へのバックグラウンド更新は実行されませんでした:{product} が"
|
|
199
|
+
"待機時間内に終了しませんでした。もう一度「今すぐ更新」を選ぶか、"
|
|
199
200
|
"`{command}` を手動で実行してください。"
|
|
200
201
|
),
|
|
201
202
|
success="🎉 更新コマンドが正常に完了しました。{product} を再起動してください。",
|
|
@@ -10,6 +10,7 @@ from __future__ import annotations
|
|
|
10
10
|
|
|
11
11
|
import json
|
|
12
12
|
import logging
|
|
13
|
+
import os
|
|
13
14
|
import shutil
|
|
14
15
|
import subprocess
|
|
15
16
|
from contextlib import suppress
|
|
@@ -31,14 +32,23 @@ UPDATER_CREATIONFLAGS = (
|
|
|
31
32
|
_DETACHED_PROCESS | _CREATE_NEW_PROCESS_GROUP | _CREATE_NO_WINDOW
|
|
32
33
|
)
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
_PARENT_WAIT_TIMEOUT_SECONDS = 60
|
|
36
|
+
_POST_PARENT_EXIT_GRACE_MS = 800
|
|
36
37
|
_VALID_STATUSES = frozenset({"success", "failed", "timeout"})
|
|
37
38
|
|
|
38
39
|
_SCRIPT_TEMPLATE = """\
|
|
39
40
|
$ErrorActionPreference = 'Stop'
|
|
40
41
|
$resultPath = __RESULT_PATH__
|
|
41
42
|
$logPath = __LOG_PATH__
|
|
43
|
+
$parentPid = __PARENT_PID__
|
|
44
|
+
$commandName = __COMMAND_NAME__
|
|
45
|
+
$processFilter = __PROCESS_FILTER__
|
|
46
|
+
$mutexName = __MUTEX_NAME__
|
|
47
|
+
|
|
48
|
+
function Write-Log {
|
|
49
|
+
param([string]$Message)
|
|
50
|
+
Add-Content -LiteralPath $logPath -Value $Message -Encoding UTF8
|
|
51
|
+
}
|
|
42
52
|
|
|
43
53
|
function Write-UpdateResult {
|
|
44
54
|
param($Status, $ExitCode)
|
|
@@ -53,16 +63,62 @@ function Write-UpdateResult {
|
|
|
53
63
|
$payload | ConvertTo-Json | Set-Content -LiteralPath $resultPath -Encoding UTF8
|
|
54
64
|
}
|
|
55
65
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
$
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
66
|
+
function Write-CommandProcessSnapshot {
|
|
67
|
+
param([string]$Label)
|
|
68
|
+
Write-Log ('[' + $Label + '] remaining processes named ' + $commandName + '.exe')
|
|
69
|
+
try {
|
|
70
|
+
$processes = Get-CimInstance Win32_Process -Filter $processFilter -ErrorAction SilentlyContinue
|
|
71
|
+
if (-not $processes) {
|
|
72
|
+
Write-Log ' none'
|
|
73
|
+
return
|
|
74
|
+
}
|
|
75
|
+
foreach ($proc in $processes) {
|
|
76
|
+
Write-Log (
|
|
77
|
+
' PID=' + $proc.ProcessId +
|
|
78
|
+
' ParentPID=' + $proc.ParentProcessId +
|
|
79
|
+
' Created=' + $proc.CreationDate +
|
|
80
|
+
' Path=' + $proc.ExecutablePath +
|
|
81
|
+
' CommandLine=' + $proc.CommandLine
|
|
82
|
+
)
|
|
63
83
|
}
|
|
64
|
-
|
|
84
|
+
} catch {
|
|
85
|
+
Write-Log (' snapshot failed: ' + ($_ | Out-String))
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
$createdNew = $false
|
|
90
|
+
$mutex = $null
|
|
91
|
+
try {
|
|
92
|
+
Set-Content -LiteralPath $logPath -Value ('updater started ' + (Get-Date) + ' parent_pid=' + $parentPid) -Encoding UTF8
|
|
93
|
+
$mutex = [System.Threading.Mutex]::new($true, $mutexName, [ref]$createdNew)
|
|
94
|
+
if (-not $createdNew) {
|
|
95
|
+
Write-Log ('another updater already owns mutex ' + $mutexName)
|
|
96
|
+
exit 0
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
try {
|
|
100
|
+
Wait-Process -Id $parentPid -Timeout __WAIT_SECONDS__ -ErrorAction SilentlyContinue
|
|
101
|
+
} catch {
|
|
102
|
+
Write-Log ('parent wait raised: ' + ($_ | Out-String))
|
|
65
103
|
}
|
|
104
|
+
|
|
105
|
+
$parent = Get-Process -Id $parentPid -ErrorAction SilentlyContinue
|
|
106
|
+
if ($parent) {
|
|
107
|
+
Write-Log ('parent process still running after timeout: PID=' + $parentPid)
|
|
108
|
+
Write-CommandProcessSnapshot -Label 'timeout'
|
|
109
|
+
Write-UpdateResult -Status 'timeout' -ExitCode $null
|
|
110
|
+
exit 0
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
Start-Sleep -Milliseconds __POST_PARENT_EXIT_GRACE_MS__
|
|
114
|
+
Write-CommandProcessSnapshot -Label 'before-uv'
|
|
115
|
+
|
|
116
|
+
$env:UV_HTTP_TIMEOUT = '30'
|
|
117
|
+
$env:PIP_NO_INPUT = '1'
|
|
118
|
+
$env:GIT_TERMINAL_PROMPT = '0'
|
|
119
|
+
$env:UV_NO_PROGRESS = '1'
|
|
120
|
+
|
|
121
|
+
Write-Log ('running uv: ' + __UV_COMMAND_TEXT__)
|
|
66
122
|
$ErrorActionPreference = 'Continue'
|
|
67
123
|
& __UV_PATH__ __UV_ARGS__ *>> $logPath
|
|
68
124
|
$code = $LASTEXITCODE
|
|
@@ -75,6 +131,13 @@ try {
|
|
|
75
131
|
} catch {
|
|
76
132
|
($_ | Out-String) | Add-Content -LiteralPath $logPath -Encoding UTF8
|
|
77
133
|
Write-UpdateResult -Status 'failed' -ExitCode -1
|
|
134
|
+
} finally {
|
|
135
|
+
if ($createdNew -and $null -ne $mutex) {
|
|
136
|
+
try { $mutex.ReleaseMutex() } catch {}
|
|
137
|
+
}
|
|
138
|
+
if ($null -ne $mutex) {
|
|
139
|
+
$mutex.Dispose()
|
|
140
|
+
}
|
|
78
141
|
}
|
|
79
142
|
"""
|
|
80
143
|
|
|
@@ -114,19 +177,51 @@ def _ps_quote(value: str) -> str:
|
|
|
114
177
|
return "'" + value.replace("'", "''") + "'"
|
|
115
178
|
|
|
116
179
|
|
|
180
|
+
def _ps_double_quote(value: str) -> str:
|
|
181
|
+
return '"' + value.replace("`", "``").replace('"', '`"') + '"'
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def windows_update_command(target: "UpdateTarget") -> tuple[str, ...]:
|
|
185
|
+
"""Windows repair-style uv command.
|
|
186
|
+
|
|
187
|
+
Keep this separate from UpdateTarget.update_command(): Linux/Mac preserve the
|
|
188
|
+
existing command, while Windows uses --reinstall to recover from partial tool
|
|
189
|
+
environment updates after file-lock failures.
|
|
190
|
+
"""
|
|
191
|
+
return (
|
|
192
|
+
"uv",
|
|
193
|
+
"tool",
|
|
194
|
+
"install",
|
|
195
|
+
f"{target.package}@latest",
|
|
196
|
+
"--force",
|
|
197
|
+
"--reinstall",
|
|
198
|
+
"--refresh-package",
|
|
199
|
+
target.package,
|
|
200
|
+
*target.install_args,
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def windows_update_command_text(target: "UpdateTarget") -> str:
|
|
205
|
+
return " ".join(windows_update_command(target))
|
|
206
|
+
|
|
207
|
+
|
|
117
208
|
def build_updater_script(
|
|
118
209
|
*,
|
|
119
210
|
info: "UpdateInfo",
|
|
120
211
|
target: "UpdateTarget",
|
|
121
212
|
uv_path: str,
|
|
122
213
|
updates_dir: Path,
|
|
214
|
+
parent_pid: int,
|
|
123
215
|
) -> str:
|
|
216
|
+
command = windows_update_command(target)
|
|
124
217
|
uv_args = (
|
|
125
|
-
f"tool install {_ps_quote(target.package + '@latest')} --force "
|
|
218
|
+
f"tool install {_ps_quote(target.package + '@latest')} --force --reinstall "
|
|
126
219
|
f"--refresh-package {_ps_quote(target.package)}"
|
|
127
220
|
)
|
|
128
221
|
if target.install_args:
|
|
129
222
|
uv_args += " " + " ".join(_ps_quote(arg) for arg in target.install_args)
|
|
223
|
+
uv_command_text = " ".join(command)
|
|
224
|
+
package_key = _package_key(target.package)
|
|
130
225
|
replacements = {
|
|
131
226
|
"__RESULT_PATH__": _ps_quote(
|
|
132
227
|
str(result_path(target.package, updates_dir=updates_dir))
|
|
@@ -136,10 +231,14 @@ def build_updater_script(
|
|
|
136
231
|
"__FROM_VERSION__": _ps_quote(info.current_version),
|
|
137
232
|
"__TO_VERSION__": _ps_quote(info.latest_version),
|
|
138
233
|
"__COMMAND_NAME__": _ps_quote(target.command_name),
|
|
234
|
+
"__PROCESS_FILTER__": _ps_double_quote(f"Name='{target.command_name}.exe'"),
|
|
235
|
+
"__MUTEX_NAME__": _ps_quote(f"Local\\comate-cli-updater-{package_key}"),
|
|
236
|
+
"__PARENT_PID__": str(int(parent_pid)),
|
|
139
237
|
"__UV_PATH__": _ps_quote(uv_path),
|
|
140
238
|
"__UV_ARGS__": uv_args,
|
|
141
|
-
"
|
|
142
|
-
"
|
|
239
|
+
"__UV_COMMAND_TEXT__": _ps_quote(uv_command_text),
|
|
240
|
+
"__WAIT_SECONDS__": str(_PARENT_WAIT_TIMEOUT_SECONDS),
|
|
241
|
+
"__POST_PARENT_EXIT_GRACE_MS__": str(_POST_PARENT_EXIT_GRACE_MS),
|
|
143
242
|
}
|
|
144
243
|
script = _SCRIPT_TEMPLATE
|
|
145
244
|
for token, value in replacements.items():
|
|
@@ -168,6 +267,7 @@ def spawn_detached_updater(
|
|
|
168
267
|
target=target,
|
|
169
268
|
uv_path=uv_path,
|
|
170
269
|
updates_dir=resolved_dir,
|
|
270
|
+
parent_pid=os.getpid(),
|
|
171
271
|
),
|
|
172
272
|
encoding="utf-8-sig",
|
|
173
273
|
)
|
|
@@ -244,7 +344,7 @@ def format_update_result_message(
|
|
|
244
344
|
"package": target.package,
|
|
245
345
|
"current": result.from_version,
|
|
246
346
|
"latest": result.to_version,
|
|
247
|
-
"command":
|
|
347
|
+
"command": windows_update_command_text(target),
|
|
248
348
|
"code": result.exit_code if result.exit_code is not None else "?",
|
|
249
349
|
}
|
|
250
350
|
if result.status == "success":
|
|
@@ -639,18 +639,15 @@ class TestAssistantMarkdownStyling(unittest.TestCase):
|
|
|
639
639
|
])
|
|
640
640
|
plain = _strip_ansi(output)
|
|
641
641
|
self.assertIn(f"{BULLET} Use foo now", plain)
|
|
642
|
-
#
|
|
643
|
-
self.assertIn("\x1b[
|
|
642
|
+
# 行内代码 = ANSI cyan(标准色 36),继承终端主题、不再是固定 hex
|
|
643
|
+
self.assertIn("\x1b[36mfoo", output)
|
|
644
644
|
|
|
645
|
-
def
|
|
645
|
+
def test_assistant_fenced_code_has_no_background_in_scrollhistory(self) -> None:
|
|
646
646
|
output = self._render_to_str([
|
|
647
647
|
HistoryEntry(entry_type="assistant", text="```json\n{\n }\n```\n")
|
|
648
648
|
])
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
visible = brace_line.rstrip()
|
|
652
|
-
|
|
653
|
-
self.assertGreater(len(brace_line), len(visible), msg=repr(brace_line))
|
|
649
|
+
# ansi_dark 无背景:scrollhistory 里不应出现任何背景填充 SGR(48;...)
|
|
650
|
+
self.assertNotIn("\x1b[48", output)
|
|
654
651
|
|
|
655
652
|
def test_markdown_styling_preserves_assistant_run_collapse(self) -> None:
|
|
656
653
|
output = _strip_ansi(self._render_to_str([
|
|
@@ -668,3 +665,27 @@ class TestAssistantMarkdownStyling(unittest.TestCase):
|
|
|
668
665
|
))
|
|
669
666
|
self.assertNotIn(BULLET, output)
|
|
670
667
|
self.assertRegex(output, r"^ {2}Use foo now")
|
|
668
|
+
|
|
669
|
+
def test_staging_ansi_path_no_background_and_keeps_color(self) -> None:
|
|
670
|
+
# 复刻 render_panels 的 staging 捕获:render_history_group -> Console(force_terminal)
|
|
671
|
+
# -> ANSI() 解析。断言无背景且 ANSI 语法色被保留。
|
|
672
|
+
import io
|
|
673
|
+
from prompt_toolkit.formatted_text import ANSI, to_formatted_text
|
|
674
|
+
from comate_cli.terminal_agent.markdown_render import render_markdown_to_rich
|
|
675
|
+
|
|
676
|
+
buf = io.StringIO()
|
|
677
|
+
console = Console(file=buf, force_terminal=True, width=44)
|
|
678
|
+
group = render_history_group(
|
|
679
|
+
console,
|
|
680
|
+
[HistoryEntry(entry_type="assistant", text="```python\ndef f():\n return 1\n```\n")],
|
|
681
|
+
terminal_width=44,
|
|
682
|
+
render_markdown_to_plain=render_markdown_to_rich,
|
|
683
|
+
assume_run_continues_at_tail=True,
|
|
684
|
+
)
|
|
685
|
+
assert group is not None
|
|
686
|
+
print_history_group_sync(console, group)
|
|
687
|
+
ansi_text = buf.getvalue()
|
|
688
|
+
|
|
689
|
+
self.assertNotIn("\x1b[48", ansi_text) # 无背景填充
|
|
690
|
+
styles = {s for s, _ in to_formatted_text(ANSI(ansi_text)) if s}
|
|
691
|
+
self.assertTrue(any("ansi" in s for s in styles), styles)
|
|
@@ -5,7 +5,6 @@ import unittest
|
|
|
5
5
|
from rich.console import Console
|
|
6
6
|
from rich.style import Style
|
|
7
7
|
|
|
8
|
-
from comate_cli.terminal_agent import theme
|
|
9
8
|
from comate_cli.terminal_agent.markdown_render import (
|
|
10
9
|
MARKDOWN_RICH_STYLES,
|
|
11
10
|
render_markdown_to_plain,
|
|
@@ -65,33 +64,32 @@ class TestSingleLineNoLeadingBlank(unittest.TestCase):
|
|
|
65
64
|
|
|
66
65
|
|
|
67
66
|
class TestClaudeDarkMarkdownTheme(unittest.TestCase):
|
|
68
|
-
def
|
|
69
|
-
"""
|
|
67
|
+
def test_h1_is_bold_italic_underline(self) -> None:
|
|
68
|
+
"""CC 模型:h1 = bold + italic + underline,零前景色。"""
|
|
70
69
|
text = render_markdown_to_rich("# heading\n", width=80)
|
|
71
70
|
spans = list(getattr(text, "spans", []))
|
|
72
71
|
self.assertEqual(text.plain.splitlines(), ["heading"])
|
|
73
72
|
styles = [str(span.style) for span in spans]
|
|
74
|
-
self.assertTrue(any("bold" in
|
|
75
|
-
self.assertTrue(any("
|
|
76
|
-
self.
|
|
73
|
+
self.assertTrue(any("bold" in s for s in styles), styles)
|
|
74
|
+
self.assertTrue(any("italic" in s for s in styles), styles)
|
|
75
|
+
self.assertTrue(any("underline" in s for s in styles), styles)
|
|
77
76
|
|
|
78
|
-
def
|
|
77
|
+
def test_inline_code_uses_ansi_cyan(self) -> None:
|
|
79
78
|
fragments = render_markdown_to_pt_fragments("use `foo` now", width=80)
|
|
80
79
|
code_styles = [style for style, text in fragments if text == "foo"]
|
|
81
80
|
self.assertTrue(code_styles, fragments)
|
|
82
81
|
self.assertTrue(
|
|
83
|
-
any(
|
|
82
|
+
any("fg:ansicyan" in style for style in code_styles),
|
|
84
83
|
code_styles,
|
|
85
84
|
)
|
|
86
85
|
|
|
87
|
-
def
|
|
88
|
-
"""
|
|
89
|
-
self.
|
|
90
|
-
self.assertEqual(MARKDOWN_RICH_STYLES["markdown.paragraph"], theme.TEXT)
|
|
86
|
+
def test_markdown_body_has_no_forced_color(self):
|
|
87
|
+
"""CC 模型:正文零前景色(空样式,继承终端默认色)。"""
|
|
88
|
+
self.assertEqual(MARKDOWN_RICH_STYLES["markdown.paragraph"], "")
|
|
91
89
|
|
|
92
|
-
def
|
|
90
|
+
def test_code_theme_is_ansi_dark(self):
|
|
93
91
|
from comate_cli.terminal_agent.markdown_render import _CODE_THEME
|
|
94
|
-
self.assertEqual(_CODE_THEME, "
|
|
92
|
+
self.assertEqual(_CODE_THEME, "ansi_dark")
|
|
95
93
|
|
|
96
94
|
def test_blockquote_keeps_bar_and_italic_style(self) -> None:
|
|
97
95
|
fragments = render_markdown_to_pt_fragments("> quoted text\n", width=80)
|
|
@@ -104,21 +102,13 @@ class TestClaudeDarkMarkdownTheme(unittest.TestCase):
|
|
|
104
102
|
text = render_markdown_to_rich("```python\nprint(1)\n```\n", width=80)
|
|
105
103
|
self.assertIn("print(1)", text.plain)
|
|
106
104
|
|
|
107
|
-
def
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
closing_line = next(line for line in code_lines if line.plain.strip() == "}")
|
|
111
|
-
visible = closing_line.plain.rstrip()
|
|
112
|
-
|
|
113
|
-
self.assertGreater(len(closing_line.plain), len(visible))
|
|
114
|
-
self.assertTrue(closing_line.plain.endswith(" "))
|
|
115
|
-
|
|
105
|
+
def test_fenced_code_has_no_background(self) -> None:
|
|
106
|
+
"""CC 模型:代码块无背景盒——每个字符位的 bgcolor 都为 None。"""
|
|
107
|
+
text = render_markdown_to_rich("```python\nprint(1)\n```\n", width=40)
|
|
116
108
|
console = Console(color_system="truecolor")
|
|
117
|
-
|
|
118
|
-
console,
|
|
119
|
-
|
|
120
|
-
)
|
|
121
|
-
self.assertIsNotNone(trailing_style.bgcolor)
|
|
109
|
+
for offset in range(len(text.plain)):
|
|
110
|
+
style = text.get_style_at_offset(console, offset)
|
|
111
|
+
self.assertIsNone(style.bgcolor, msg=(offset, text.plain[offset]))
|
|
122
112
|
|
|
123
113
|
def test_prompt_toolkit_fragments_do_not_repeat_hash_for_truecolor(self) -> None:
|
|
124
114
|
style = rich_style_to_prompt_toolkit_style(Style.parse("#b1b9f9 bold"))
|
|
@@ -126,6 +116,36 @@ class TestClaudeDarkMarkdownTheme(unittest.TestCase):
|
|
|
126
116
|
self.assertIn("bold", style)
|
|
127
117
|
self.assertNotIn("##", style)
|
|
128
118
|
|
|
119
|
+
def test_prompt_toolkit_fragments_map_ansi_standard_colors(self) -> None:
|
|
120
|
+
# ANSI 命名色无 RGB triplet;转换器必须映射到 pt 的 ansi* 名,
|
|
121
|
+
# 否则 ansi_dark 语法高亮在 pt-fragment 路径(transcript viewer)丢色。
|
|
122
|
+
self.assertIn(
|
|
123
|
+
"fg:ansicyan",
|
|
124
|
+
rich_style_to_prompt_toolkit_style(Style.parse("cyan")),
|
|
125
|
+
)
|
|
126
|
+
self.assertIn(
|
|
127
|
+
"fg:ansibrightblue",
|
|
128
|
+
rich_style_to_prompt_toolkit_style(Style.parse("bright_blue")),
|
|
129
|
+
)
|
|
130
|
+
# 属性 + ANSI 前景色共存
|
|
131
|
+
combined = rich_style_to_prompt_toolkit_style(Style.parse("bold cyan"))
|
|
132
|
+
self.assertIn("bold", combined)
|
|
133
|
+
self.assertIn("fg:ansicyan", combined)
|
|
134
|
+
|
|
135
|
+
def test_code_block_pt_fragments_carry_ansi_color(self) -> None:
|
|
136
|
+
# transcript viewer 路径:代码块须保留 ANSI 语法色(依赖 pt 转换器 ANSI 分支)。
|
|
137
|
+
fragments = render_markdown_to_pt_fragments(
|
|
138
|
+
"```python\ndef f():\n return 1\n```\n", width=40
|
|
139
|
+
)
|
|
140
|
+
styles = [style for style, _ in fragments]
|
|
141
|
+
self.assertTrue(any("fg:ansi" in s for s in styles), styles)
|
|
142
|
+
|
|
143
|
+
def test_prose_pt_fragments_have_no_foreground_color(self) -> None:
|
|
144
|
+
# 正文零上色:段落/加粗/斜体不得带 fg:
|
|
145
|
+
fragments = render_markdown_to_pt_fragments("A **bold** and *em* line.\n", width=40)
|
|
146
|
+
for style, text in fragments:
|
|
147
|
+
self.assertNotIn("fg:", style, (style, text))
|
|
148
|
+
|
|
129
149
|
|
|
130
150
|
if __name__ == "__main__":
|
|
131
151
|
unittest.main()
|
|
@@ -32,7 +32,7 @@ class TestPaletteTokens(unittest.TestCase):
|
|
|
32
32
|
)
|
|
33
33
|
|
|
34
34
|
def test_derived_colors(self):
|
|
35
|
-
self.assertEqual(theme.INLINE_CODE, "
|
|
35
|
+
self.assertEqual(theme.INLINE_CODE, "cyan")
|
|
36
36
|
self.assertEqual(theme.SWEEP_BASE_RGB, (78, 134, 166)) # 流光基色
|
|
37
37
|
self.assertEqual(theme.SWEEP_MID_RGB, (103, 213, 255)) # 流光峰值=品牌青
|
|
38
38
|
self.assertEqual(theme.SWEEP_HIGH_RGB, (224, 246, 255)) # 流光高光
|