{"_id":"i-am-cooking","_rev":"11-e16e75562e1a4301be49e04ffa3dc77a","name":"i-am-cooking","dist-tags":{"latest":"0.9.1"},"versions":{"0.1.0":{"name":"i-am-cooking","version":"0.1.0","keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"license":"MIT","_id":"i-am-cooking@0.1.0","maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"pi":{"extensions":["./extensions"]},"dist":{"shasum":"19c7378cc3b2cc98ad78e9b4b8607b97a6d39faf","tarball":"https://registry.npmjs.org/i-am-cooking/-/i-am-cooking-0.1.0.tgz","fileCount":16,"integrity":"sha512-WoyqY3aEqpnTkEmJcZa6S3UdDUtlt99qBpTpDD0BY46fCavIrTxCRbpNowd62+Ek0vKkV1BtNv1ns1PeOJFYDg==","signatures":[{"sig":"MEUCIQDb1hX1p2Or6gmKusWNdDOhG646S7MVYTF9j2/i+skHtgIgcWIuSe3zzDeBr/eov58iS2ntn59vcbTJhXHz3S5jKN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175240},"type":"module","gitHead":"69e893cf80526140596f6bc058c520d363c4da45","scripts":{"test":"node --test \"tests/*.test.ts\""},"_npmUser":{"name":"nita121388","email":"1581096163@qq.com"},"_npmVersion":"11.16.0","description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/i-am-cooking_0.1.0_1786723874209_0.5221854870687848","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"i-am-cooking","version":"0.2.0","keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"license":"MIT","_id":"i-am-cooking@0.2.0","maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"pi":{"extensions":["./extensions"]},"dist":{"shasum":"33b6823340a48823f25e5b13f8b09073594e4d2c","tarball":"https://registry.npmjs.org/i-am-cooking/-/i-am-cooking-0.2.0.tgz","fileCount":16,"integrity":"sha512-OCDd2hD8AVK632yb702eRov4+yM9yZx2NsPnZEFws5RRVSPLn11mFrWb/0s/GZTGlgWT9lzIBzGG/DqE8Igo0w==","signatures":[{"sig":"MEQCIFstnr7eTp8tFO0NdHr5YHHmdyhPWYZArow+NajJ+qsTAiA2gUE0pbQcSAsGtzfGQLW4NE+1E8xl1Ce1WxLgMCX+RQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177994},"type":"module","gitHead":"3c656761e96cf86d1d14f1fa34f520501485894f","scripts":{"test":"node --test \"tests/*.test.ts\""},"_npmUser":{"name":"nita121388","email":"1581096163@qq.com"},"_npmVersion":"11.16.0","description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/i-am-cooking_0.2.0_1786778489643_0.45003917116923886","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"i-am-cooking","version":"0.3.0","keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"license":"MIT","_id":"i-am-cooking@0.3.0","maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"pi":{"extensions":["./extensions"]},"dist":{"shasum":"12b6ba17da23c14af5a0287daf873a203e4a21a5","tarball":"https://registry.npmjs.org/i-am-cooking/-/i-am-cooking-0.3.0.tgz","fileCount":15,"integrity":"sha512-OsFtm9lrjNDLBEyGaKFpxKKXagPcBpR+HLXe+12PcNnbB+otJm81DdAM0xZKnkoC4fnsa7oPAhRBZN7jxyLiuQ==","signatures":[{"sig":"MEUCIGVehMTdk5GsT35EIba5V89ZT0rEvr4OPxDfVvMrb+CXAiEAziWuhMZTs7830cl6mbmOQUHTaPE7RV+O5fW/NLOscro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182153},"type":"module","gitHead":"2e3ddd182d6f9474cd9320ae90c49770268db519","scripts":{"test":"node --test \"tests/*.test.ts\""},"_npmUser":{"name":"nita121388","email":"1581096163@qq.com"},"_npmVersion":"11.16.0","description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/i-am-cooking_0.3.0_1786797720763_0.21871783162037528","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"i-am-cooking","version":"0.4.0","keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"license":"MIT","_id":"i-am-cooking@0.4.0","maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"pi":{"extensions":["./extensions"]},"dist":{"shasum":"ae47e93ead17465baad1b35e8db960dc78cc52a4","tarball":"https://registry.npmjs.org/i-am-cooking/-/i-am-cooking-0.4.0.tgz","fileCount":22,"integrity":"sha512-hiMhEtn5np3OP9xiSFZCH8lD/OeAewnnQ132LTspzWizChGxuCYfXd05PU8j8wPe3api0reNdy/8SllaNOKq3Q==","signatures":[{"sig":"MEQCIEU8/e+Tlk91UbaNphJEjfux4XoaJfVN4Ah0V6FPC+BIAiA5PVIay5IS6/DFWbtzk69nHpoDErP2EIuSP1geuuV1Og==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":196960},"type":"module","gitHead":"10f1d79fd14e6d35d261f2f1e53bca74f9cd7ea7","scripts":{"test":"node --test \"tests/*.test.ts\"","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nita121388","email":"1581096163@qq.com"},"_npmVersion":"11.16.0","description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"typescript":"^7.0.2"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.3.14","typescript":"^6.0.0","@types/node":"^26.2.0"},"peerDependencies":{"typebox":"^1.3.14","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/i-am-cooking_0.4.0_1786867015088_0.45028275621292746","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"i-am-cooking","version":"0.5.0","keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"license":"MIT","_id":"i-am-cooking@0.5.0","maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"pi":{"extensions":["./extensions"]},"dist":{"shasum":"746744287861c6906216c0c12b42ccf4a29535fc","tarball":"https://registry.npmjs.org/i-am-cooking/-/i-am-cooking-0.5.0.tgz","fileCount":22,"integrity":"sha512-mDHO5LokydxKhBvltChlBmnrNkmdIFt2KW0nk8parY9R7IToVgZN/m3E0ksHOHow4u89v4t305oio5bK+SnN+Q==","signatures":[{"sig":"MEUCIEgEbbEQFVNtfXGVo4YZCHgLf+JA7CiYGdfu+pvelP6ZAiEAh8z9nbmVGuIbukrevQjjT80/QmBwyqtnwfgZbRDk/1c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202061},"type":"module","gitHead":"67f63ee465d772e28a5c88a57321e60e35214208","scripts":{"test":"node --test \"tests/*.test.ts\"","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nita121388","email":"1581096163@qq.com"},"_npmVersion":"11.16.0","description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"typescript":"^7.0.2"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.3.14","typescript":"^6.0.0","@types/node":"^26.2.0"},"peerDependencies":{"typebox":"^1.3.14","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/i-am-cooking_0.5.0_1786872214950_0.9736575249728341","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"i-am-cooking","version":"0.5.1","keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"license":"MIT","_id":"i-am-cooking@0.5.1","maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"pi":{"extensions":["./extensions"]},"dist":{"shasum":"659cbd31e580dd2ae4b9256f482dfb9045979c19","tarball":"https://registry.npmjs.org/i-am-cooking/-/i-am-cooking-0.5.1.tgz","fileCount":22,"integrity":"sha512-PlWninjVuKhlq6LCHpfhZ6QOTigjjIUfu/m3+vy7kp13GmnCOEaG4/GckV+mYKyJ1Fi6+LLsutiWj+fdojklNQ==","signatures":[{"sig":"MEYCIQDVgK/x14xlb5hQvgrnEsn4T/+/SOkiMyFB6XaqA2brMAIhAMRJslXvhwxpY9klAMtA0S0Q7iNhyNT56jBkvAQOvLt8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203956},"type":"module","gitHead":"1a7db3da1405ccfe6133935e040a8dcaacad951b","scripts":{"test":"node --test \"tests/*.test.ts\"","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nita121388","email":"1581096163@qq.com"},"_npmVersion":"11.16.0","description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"typescript":"^7.0.2"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.3.14","typescript":"^6.0.0","@types/node":"^26.2.0"},"peerDependencies":{"typebox":"^1.3.14","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/i-am-cooking_0.5.1_1786889119383_0.029072026849278787","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"i-am-cooking","version":"0.5.2","keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"license":"MIT","_id":"i-am-cooking@0.5.2","maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"pi":{"extensions":["./extensions"]},"dist":{"shasum":"618336ec9154d91e1179c286288577ff84373b50","tarball":"https://registry.npmjs.org/i-am-cooking/-/i-am-cooking-0.5.2.tgz","fileCount":22,"integrity":"sha512-Mt3LqAD7n+sP7qvz1SOluB1fDO6tgdvkV9lOzpHwToS9wcFt048MeL4q2Oe6HTR3fVsYMop16ZHjx7YBnxEtIw==","signatures":[{"sig":"MEUCIQCv4nRQiC6PoMNOUQDxKYfsW76/z/M8ybVxi/ekveuZcwIgPxCRVJVDy8Fi2jHZ9uwR4YLtRLWnS8rIGpSgVUjYeZ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210714},"type":"module","gitHead":"c2949062f18eb471f209136050aabcf2c2068879","scripts":{"test":"node --test \"tests/*.test.ts\"","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nita121388","email":"1581096163@qq.com"},"_npmVersion":"11.3.0","description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"typescript":"^7.0.2"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.3.14","typescript":"^6.0.0","@types/node":"^26.2.0"},"peerDependencies":{"typebox":"^1.3.14","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/i-am-cooking_0.5.2_1786928461146_0.6999852295148634","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"i-am-cooking","version":"0.7.0","keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"license":"MIT","_id":"i-am-cooking@0.7.0","maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"pi":{"extensions":["./extensions"]},"dist":{"shasum":"606b6aef61987627540bd8b46f22d82311c411d1","tarball":"https://registry.npmjs.org/i-am-cooking/-/i-am-cooking-0.7.0.tgz","fileCount":22,"integrity":"sha512-VR3hivtvv9GofKPtVpNBuiDjCG+LTJP/PKxSeDZ2gHW+bhiTZCOUHN7cOd2KIzJylL0hZvTeA+LiKL8/D6uB8A==","signatures":[{"sig":"MEYCIQCsIhnowZUSkGkJ648dtHSJwkjHOdL9qm9gHxvjth6ZSgIhAMI+pf55PdfZngh29dHOcrR3d7gmQ9VapC4m+Vwl9gba","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210536},"type":"module","gitHead":"1f9c014951d4e37c584f58902dafc585f7d99a42","scripts":{"test":"node --test \"tests/*.test.ts\"","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nita121388","email":"1581096163@qq.com"},"_npmVersion":"11.16.0","description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"typescript":"^7.0.2"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.3.14","typescript":"^6.0.0","@types/node":"^26.2.0"},"peerDependencies":{"typebox":"^1.3.14","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/i-am-cooking_0.7.0_1786966326557_0.9751398345372984","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"i-am-cooking","version":"0.8.0","keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"license":"MIT","_id":"i-am-cooking@0.8.0","maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"pi":{"extensions":["./extensions"]},"dist":{"shasum":"0449757a1a533b3cedec6e80106f28e00abfb86a","tarball":"https://registry.npmjs.org/i-am-cooking/-/i-am-cooking-0.8.0.tgz","fileCount":22,"integrity":"sha512-av4rGpgmP7sPrtCQVR/pA8SpzIO1EADKmvYgcUmCQ+LE8V2suWqeDhNxRsNHlUH4iYfH3Hq90zmWO2PRmnyZTg==","signatures":[{"sig":"MEUCIQCEoxLPUC/20bVShEiJ5FND4lUr16bo743U+lqz8lAArwIgZ3mpk3wjWJssh1H4Wwd8iydX4v1ih2Dm9lx8UFvhgwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217130},"type":"module","gitHead":"890901d74c2af4c1d5b8ce20933e3d76c589c5ac","scripts":{"test":"node --test \"tests/*.test.ts\"","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nita121388","email":"1581096163@qq.com"},"_npmVersion":"11.16.0","description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"typescript":"^7.0.2"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.3.14","typescript":"^6.0.0","@types/node":"^26.2.0"},"peerDependencies":{"typebox":"^1.3.14","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/i-am-cooking_0.8.0_1787377150425_0.7083481968446654","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"i-am-cooking","version":"0.9.0","keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"license":"MIT","_id":"i-am-cooking@0.9.0","maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"pi":{"extensions":["./extensions"]},"dist":{"shasum":"6bd774db9be84707cafd61d71319feb7c3ffec9c","tarball":"https://registry.npmjs.org/i-am-cooking/-/i-am-cooking-0.9.0.tgz","fileCount":23,"integrity":"sha512-iV7rpUWvvwqnHP/jP63ScSnPqnDHcEBAp1iI5vjiRSmMw3HS0jQr5r6HCRSmdH/J2QeSO4x0YZRIy4XdktwbZw==","signatures":[{"sig":"MEQCICZhwgOUsAuG06NlYFHtTtKEIu8mo8wUy35sLkEprz9rAiAdKAuoZuf/xhfbUWxOKM9N5PAW8q57kjAMxUfGgUBNTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225186},"type":"module","gitHead":"bd40d66d323c172e71d0a3c345d99d54f6378de4","scripts":{"test":"node --test \"tests/*.test.ts\"","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nita121388","email":"1581096163@qq.com"},"_npmVersion":"11.16.0","description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"typescript":"^7.0.2"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.3.14","typescript":"^6.0.0","@types/node":"^26.2.0"},"peerDependencies":{"typebox":"^1.3.14","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/i-am-cooking_0.9.0_1787393455507_0.9312473587945616","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"i-am-cooking","version":"0.9.1","description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","license":"MIT","type":"module","scripts":{"test":"node --test \"tests/*.test.ts\"","typecheck":"tsc -p tsconfig.json --noEmit"},"keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"pi":{"extensions":["./extensions"]},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*","typebox":"^1.3.14"},"dependencies":{"typescript":"^7.0.2"},"devDependencies":{"@types/node":"^26.2.0","typescript":"^6.0.0","typebox":"^1.3.14"},"gitHead":"b1bd5527d6eea74fa2346a7a35b579bfc8a14f1b","_id":"i-am-cooking@0.9.1","_nodeVersion":"26.3.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-nQKCSUddNqDYkT9WRVR0W0lRQG5ghP9WatSI0Ns3MRvYu0vVj/+iKvppkTQH2kMF4QDZpJFsvD+/du9ydA2wqA==","shasum":"27c4fd0d12060dec8ec21c9219662c39d15ac169","tarball":"https://registry.npmjs.org/i-am-cooking/-/i-am-cooking-0.9.1.tgz","fileCount":23,"unpackedSize":226207,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDji80lozIh8guQ4DyrlcajYoXIJnvOTDDjFuLFlybF/AIhAPrLIb8+OxgVRsEtwLedbZA6JXd3RL65joTdxHZwT969"}]},"_npmUser":{"name":"nita121388","email":"1581096163@qq.com"},"directories":{},"maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/i-am-cooking_0.9.1_1787401892185_0.26286834651123026"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-14T16:11:14.156Z","modified":"2026-08-22T12:31:32.461Z","0.1.0":"2026-08-14T16:11:14.415Z","0.2.0":"2026-08-15T07:21:29.792Z","0.3.0":"2026-08-15T12:42:00.973Z","0.4.0":"2026-08-16T07:56:55.245Z","0.5.0":"2026-08-16T09:23:35.089Z","0.5.1":"2026-08-16T14:05:19.549Z","0.5.2":"2026-08-17T01:01:01.311Z","0.7.0":"2026-08-17T11:32:06.739Z","0.8.0":"2026-08-22T05:39:10.583Z","0.9.0":"2026-08-22T10:10:55.644Z","0.9.1":"2026-08-22T12:31:32.330Z"},"license":"MIT","keywords":["pi-package","notification","cooking","tui","agent","autonomy"],"description":"Pi extension: when the user is away cooking, the agent works autonomously. When blocked or when work is done, it shouts loudly — through sound, TTS, desktop toast, and phone push — so the user can come back from the kitchen.","maintainers":[{"name":"nita121388","email":"1581096163@qq.com"}],"readme":"# 🍳 I am cooking\n\n> 你离开电脑时（比如去做饭🍳了），pi 继续自主干活。当它真正卡住、需要你时——或任务完成时——会**大声呼喊你**：声音、中文 TTS、桌面弹窗、**手机推送**，厨房里的你也能听到。\n\n呼喊时 agent 说：**\"Agent需要你！\"**\n\n[English version](docs/README.en.md)\n\n## ✨ 功能\n\n| 功能 | 说明 |\n|---|---|\n| 🧠 自主模式 | 离开时注入\"自主推进，别干等\"规则，agent 继续干活而不是停下来等你 |\n| 🤖 Agent 自主开启 | 说\"我去做饭了\"\"我离开一下\"\"I'm cooking\"，agent 理解后自动开启（无需记命令） |\n| 📣 多路呼喊 | 声音 + 中文 TTS + 桌面弹窗 + **手机推送** + TUI 横幅，总有一路能传到你 |\n| 📣 状态栏动态指示 | 喊话时状态栏/横幅变 `📢 正在广播中...`，喊完自动恢复 `🍳 离开中 · ⚠N`；不想听了按 `Ctrl+Alt+M` 停止本次（下次照常） |\n| 🎵 自定义铃声 | 三段式播放：短铃声 → Agent 语音 → 你自己的歌（`/i-am-cooking sound`），到点自动停 |\n| 🗣️ Agent 自由语音 | 呼喊时 agent 可原样说出想说的话（`ttsText`），不限于默认模板 |\n| 📱 手机推送 | ntfy.sh（免费，零配置）— 厨房场景的关键通道 |\n| 🔔 完成通知 | agent 完成任务时喊：“叮咚！好消息！任务完成了！” |\n| 🗣️ 自定义呼喊短语 | 默认\"agent 需要你\"，可改成你喜欢的话（支持占位符） |\n| 🎭 可爱 Topic | 编程/算法风自动生成（如\"幻觉的提示词-483726\"），保证唯一 |\n| 🎛️ 动态偏好 | 从你的话里自动切换：别喊了→静音 / 完成后喊我→完成才喊 / 随时汇报→积极模式 |\n| 🚀 自主等级 | 该不该喊你的阈值：谨慎(遇墙就喊) / 平衡(默认) / 放手(能不喊就不喊) |\n| 🤝 多 Agent 独立 | 多个 pi 同时离开时互不干扰：同一时刻只放一个声音；关闭某个 Agent 不影响其他 |\n| 🛡️ 安全网 | agent 以\"？\"结尾等你回复时自动喊（放手等级下仅报错才喊） |\n| 🔙 语义退出 | 说\"我不离开了/保持在线\"→ agent 理解后关闭；或手动 `/i-am-cooking off`（关闭即告知 agent 回到在线状态，停止离开模式行为） |\n| 🔊 音量控制 | 可选：离开时自动拉高音量（含解除静音），回来恢复原值 |\n| 🗣️ 交互式配置 | `/i-am-cooking setup` — 向导式，含 ntfy 引导 + 预览确认 + 配错可重填 |\n| 🔐 Token 安全 | 配置值支持 `${ENV_VAR}`，token 不落盘明文 |\n| 🧠 用户可编辑规则 | 行为规则是 `rules.md` 单一文件，随改随生效 |\n| 💻 跨平台 | Windows / macOS / Linux |\n\n## 🎯 工作流程\n\n```mermaid\nflowchart TD\n    A[🏠 在岗] --> B{用户要离开?}\n    B -->|手动| C[\"/i-am-cooking on 备注\"]\n    B -->|自然语言| D[\"说：我去做饭了，你继续\"]\n    C --> E[🍳 离开模式开启]\n    D --> E\n    E --> F[Agent 自主推进任务<br/>按自主等级决定要不要喊你]\n    F --> G{遇到什么?}\n    G -->|人类墙 / 需要决策| H[\"shout_for_user 喊你\"]\n    G -->|任务完成| I[\"完成通知 info 级\"]\n    G -->|可自主解决| F\n    G -->|进度节点/定时| P[\"📈 进度汇报（可选）<br/>小阶段或定时\"]\n    H --> J[📣 多路呼喊<br/>短铃声/语音/歌曲 + 弹窗/手机推送]\n    I --> J\n    P --> J\n    J --> K[\"⌨️ 回来打字：补充/问问题，agent 继续\"]\n    K --> F\n    E --> M{用户明确结束?}\n    M -->|说 我不离开了／保持在线| N[\"agent 调 exit_cooking_mode 关闭本会话\"]\n    M -->|手动 /off| N\n    N --> A\n```\n\n**一句话版本**：你说要走（或直接说\"我去做饭了\"）→ 离开模式开启 → agent 自主干活，该喊时多路呼喊你；你回来打字补充不关闭（agent 继续），明确说\"我不离开了\"或 `/off` 才关闭本会话（不影响其他 Agent）。\n\n## 📦 安装\n\n```bash\n# GitHub 安装（推荐）\npi install git:github.com/Nita121388/i-am-cooking\n\n# npm 已发布\npi install npm:i-am-cooking\n\n# 本地开发路径（从源码调试时用）\npi install /path/to/your/local/checkout\n```\n\n安装后 `/reload` 或重启 pi 生效。\n\n## 🚀 快速开始\n\n```bash\n/i-am-cooking setup                     # ① 配置手机推送（交互式向导）\n/i-am-cooking test                      # ② 测试所有通道（声音/TTS/弹窗/手机）\n/i-am-cooking on 继续做登录模块          # ③ 开启离开模式，走人\n/i-am-cooking off                       # ④ 结束离开模式（关闭即告知 agent 回到在线状态）\n/i-am-cooking status                    # 查看状态\n```\n\n> 💡 **开启方式有两种**：\n> - **自动**：直接说\"我去做饭了，你继续\"、\"我离开一下，有事喊我\"、\"I'm cooking\"，agent 会**理解你的意思并自主开启**（`enter_cooking_mode`）。仅在表达非常明确时才开启，不会误开。\n> - **手动**：`/i-am-cooking on [备注]`（备注可带偏好，如 `on 完成后喊我`）。\n\n> ⚠️ **离开状态不跨会话**：任何会话启动都从\"在岗\"开始。上次会话开启的离开模式不会自动恢复——需要时再次开启即可。\n\n## 📖 命令\n\n| 命令 | 说明 | 示例 |\n|---|---|---|\n| `/i-am-cooking on [备注]` | 开启离开模式。备注可带偏好和自主等级 | `on 完成后喊我` / `on 谨慎点继续调研` |\n| `/i-am-cooking off` | 关闭离开模式（立即告知 agent 回到在线状态、停止离开模式行为；agent 结束时会自行总结） | `off` |\n| `/i-am-cooking status` | 查看模式/待处理呼喊/通道/音量/偏好/等级/防打扰参数 | `status` |\n| `/i-am-cooking setup` | 交互式配置向导（手机推送 + 音量 + 自主等级） | `setup` |\n| `/i-am-cooking test` | 测试所有通道，逐通道汇报真实结果 | `test` |\n| `/i-am-cooking stop-sound` | 停止本次播放（只停当前，下次照常；同 `Ctrl+Alt+M`） | `stop-sound` |\n| `/i-am-cooking rules` | 查看当前生效的规则 | `rules` |\n| `/i-am-cooking edit-rules` | 编辑规则文件（保存即生效） | `edit-rules` |\n| `/i-am-cooking reset-rules` | 规则恢复出厂默认 | `reset-rules` |\n| `/i-am-cooking level [档位]` | 自主等级：`conservative`/`balanced`/`autonomous`，不填则查看 | `level autonomous` |\n| `/i-am-cooking limits` | 查看/调整防打扰参数（交互式中文菜单） | `limits` |\n| `/i-am-cooking sound` | 自定义呼喊铃声（交互式中文菜单） | `sound` |\n| `/i-am-cooking volume` | 音量控制：查看/手动调整/离开自动拉高（交互式中文菜单） | `volume` |\n\n子命令支持 Tab 补全：输入 `/i-am-cooking ` 后按 Tab 弹出选项。\n\n## 🤖 Agent 工具\n\n除了你手动敲命令，**agent 自己也会调用 4 个工具**来理解你、喊你、调整行为。这些是\"人机协作\"的接口：\n\n| 工具 | 作用 | Agent 何时调用 |\n|---|---|---|\n| `enter_cooking_mode` | 开启离开模式 | 你说\"我去做饭了/我离开一下/I'm cooking\"等**非常明确**的离开表达时；不确定不调用 |\n| `set_shout_sound` | 设置呼喊铃声的自定义歌曲 | 你说\"帮我换个铃声\"\"用 xxx.mp3 当提醒音\"并给了具体路径时 |\n| `set_volume` | 调整系统音量 | 你说\"音量调大点/小点声/静音\"，或呼喊前发现系统静音需解除 |\n| `shout_for_user` | 大声呼喊你 | 遇到必须你处理的事（决策/凭据/审批/澄清），**先准备好交接内容（刚好够用）再喊**，或任务完成时 |\n| `set_calling_preference` | 调整呼喊偏好（响不响） | 你说\"别喊了\"→silence、\"完成后喊我\"→completion_only 等 |\n| `set_autonomy_level` | 调整自主等级（该不该喊） | 你说\"遇墙就喊\"→conservative、\"能不喊就不喊\"→autonomous 等 |\n| `exit_cooking_mode` | 关闭离开模式 | 你说\"我不离开了/保持在线/先停一下\"等**明确结束**表达时；临时补充/问问题不调用 |\n\n**`shout_for_user` 参数说明**：\n\n| 参数 | 必填 | 说明 |\n|---|---|---|\n| `message` | ✅ | **交接说明（一次性最终版）**：需你做什么 + 必需的材料/凭据/步骤（仅列必要的） |\n| `urgency` | ✅ | `info`（完成通知）/ `normal` / `urgent`（紧急） |\n| `category` | ❌ | 分类：decision / credential / approval / clarification / help |\n| `ttsText` | ❌ | **自由语音**：TTS 原样念这段，不走默认模板 |\n\n> 这些工具在离开模式关闭时会安全降级（如 `shout_for_user` 会提示\"用户就在电脑前\"），不会误发呼喊。\n\n### Agent 不能设置什么（安全边界）\n\n| 配置 | 设置方式 | 为什么不交给 agent |\n|---|---|---|\n| 📱 手机推送（ntfy/webhook + token） | `/i-am-cooking setup` 向导 / 手动改 config.json | 敏感凭据，只应人工配置 |\n| 🔊 音量提升开关 | `/i-am-cooking setup` 向导 | 系统级改动，需用户明确允许 |\n| 🛡️ 防打扰参数 | `/i-am-cooking limits` | 护栏参数，默认值已合理，避免被误改 |\n| 🧠 规则文件 rules.md | `/i-am-cooking edit-rules` / 手动编辑 | 规则是用户的意志，agent 不应自我修改 |\n| 🔘 开关（sound/tts/toast） | `/i-am-cooking sound` 菜单「开关」 | 可选开关，命令已支持 |\n| 🔙 离开模式退出 | `exit_cooking_mode` 工具（agent 语义判断）或 `/off` 命令 | 需用户明确结束表达才关闭，不误关 |\n\n## 🧠 用户可编辑规则\n\nagent 离开模式的行为规则不是写死的，你可以自己改：\n\n```\n/i-am-cooking edit-rules    # 打开编辑器改规则（保存即生效）\n/i-am-cooking rules         # 查看当前生效规则\n/i-am-cooking reset-rules   # 恢复出厂默认（从 rules.default.md 拷贝）\n```\n\n规则文件在 `~/.pi/i-am-cooking/rules.md`（Markdown），**首次启动插件时自动创建**（从出厂默认模板拷贝）——直接去这个文件夹改就行，任何编辑器都能编辑，它就是唯一生效的规则。\n\n**出厂默认模板**在仓库里：`extensions/i-am-cooking/rules.default.md`（进 git，随插件版本更新）。开发时直接看/改这份文件；用户首次运行时会自动拷贝一份到 `~/.pi/i-am-cooking/rules.md`，之后完全由用户接管。\n\n### ⏰ 什么时候生效？\n\n规则**每回合实时读取、零缓存**——`before_agent_start` 时插件重新读文件并注入 system prompt。所以：\n\n```\n你在任何编辑器里改 rules.md → 保存\n  ↓ 无需重启 / 无需 /reload / 无需重新 on\n下一次 agent 回合开始 → 新规则生效\n```\n\n| 你改的内容 | 效果 |\n|---|---|\n| 加一条\"不修改生产代码\" | 下次离开回合起 agent 遵守（取决于 LLM 理解） |\n| 删掉\"什么时候需要喊我\"段落 | 喊我时机交给自主等级指南（等级是机制层，不受影响） |\n| 清空整个文件 | 只剩底线规则 + 等级指南，agent 仍不会干等 |\n| 改文件但不在离开模式 | **不生效**（规则只在离开模式下注入） |\n| 改仓库 `rules.default.md` | 不影响已生成的用户 rules.md；只影响未来首次安装 / `reset-rules` |\n\n> ⚠️ 规则**只在离开模式下注入**（`before_agent_start` 会检查 `config.cooking`），普通对话中改规则不会影响 agent。\n\n> ⚠️ 有一条**底线规则**永远追加、无法删除：*\"绝不要默默结束回合等用户回复\"*——防止规则被删空导致 agent 干等。\n\n## 🧠 动态呼喊偏好\n\n呼喊偏好管\"**喊得响不响**\"。agent 从你的话里自动判断，**两种方式并行**：\n\n1. **文字匹配**（扩展代码，毫秒级）：你说\"别喊了\" → 立即静音，不依赖 agent\n2. **语义理解**（agent）：你说\"我睡会儿\" → 理解为静音，调用 `set_calling_preference`\n\n| 你说 | 模式 | 效果 |\n|---|---|---|\n| （不说） | `normal`（默认） | 需要你 + 完成都喊 |\n| \"别喊了\" / \"安静\" / \"静音\" | `silence` | 全静音，只剩横幅 |\n| \"完成后喊我\" / \"干完通知我\" | `completion_only` | 只有完成才响铃 |\n| \"只有紧急才找我\" | `urgent_only` | 只有 urgent 才响铃 |\n| \"随时汇报\" / \"每步告诉我\" | `eager` | 需要你 / 完成 / 进度都喊 |\n\n## 🚀 自主等级（autonomy level）\n\n自主等级管\"**该不该喊你**\"——遇到阻塞（比如**人类墙**：验证码 / 登录 / 手动点击等必须你手动处理的事）时，agent 自己解决还是喊你。**与呼喊偏好正交**：等级决定\"要不要喊\"，偏好决定\"喊多响\"，自由组合。\n\n```\n/i-am-cooking level                   # 查看当前等级\n/i-am-cooking level conservative      # 谨慎：遇墙就喊\n/i-am-cooking level balanced          # 平衡（默认）：有点难度才喊\n/i-am-cooking level autonomous        # 放手：能不喊就不喊\n```\n\n| 等级 | 行为 |\n|---|---|\n| `conservative` 谨慎 | 遇到任何人类墙（验证码 / 登录 / 手动点击等）立即喊你；需要决策 / 审批 / 凭据 / 澄清先喊你确认；需求模糊先问清楚；只自主做完全确定无风险的部分 |\n| `balanced` 平衡（默认） | 人类墙才喊你；普通决策 / 模糊处用最合理默认方案自主推进并注明假设；只有\"自主尝试后仍无法推进\"或\"选错代价很大\"才喊 |\n| `autonomous` 放手 | 尽量不喊你；所有决策、假设自己定并记录；只有任务彻底无法继续（无权限 / 外部服务故障 / 违反硬性约束）才喊 |\n\n> 三个等级都内置**保证质量**要求（自主 ≠ 降低标准，拿不准选最稳妥方案）。\n\n**切换方式**（与偏好相同，4 种）：\n- 命令：`/i-am-cooking level autonomous`\n- `on` 备注：`on 谨慎点继续`\n- 直接说：\"遇墙就喊我\" / \"能不喊就不喊\"（文字匹配保险丝）\n- agent 语义理解：`set_autonomy_level`\n\n等级**持久化**（存在 config.json，跨离开会话保留），不同于偏好（偏好是会话级的）。\n\n## 🔊 自定义呼喊铃声（高级设置）\n\n呼喊声音按 **短铃声 → Agent 语音 → 自定义歌曲** 顺序播放，总时长到点自动停止：\n\n```\n/i-am-cooking sound\n```\n\n中文菜单支持：查看当前设置 / 设置自定义歌曲 / 试听 / 设置总时长上限（默认 60 秒）/ 清除歌曲。\n\n**设置歌曲两种方式**：\n- **文件浏览**：从 `~/Music` 开始逐级浏览（📁 文件夹 / 🔊 音频文件），选中的文件即为铃声，不用记路径\n- **手动输入**：直接输入完整路径（如 `~/Music/闹铃.mp3`）\n\n也可以直接对 agent 说\"帮我换个铃声\"并给出路径，agent 会调用 `set_shout_sound` 工具帮你设置。\n\n| 环节 | 说明 |\n|---|---|\n| ① 短铃声 | 系统哔哔（默认 4 声） |\n| ② Agent 语音 | 中文 TTS。Agent 调用 `shout_for_user` 时可带 `ttsText` **原样念自己想说的话**（如“叮咚！方案 A 和 B 我拿不准，快回来看看！”）；不填则用默认模板 |\n| ③ 自定义歌曲 | 你指定的音频文件（macOS 支持 mp3/wav/m4a；Linux wav/ogg；Windows 建议 wav） |\n| ⏱ 总时长 | 默认 60 秒，到点强制停止，可调（1-300 秒） |\n\n> 格式建议：**wav 全平台通用**，mp3 在 macOS/Linux 最佳。\n\n**三种消息，三种通道**：\n\n| 消息 | 通道 | 例子 |\n|---|---|---|\n| 🚨 需要你 | 完整三段式响铃：哔哔 4 声 + 语音 + 你的歌曲（最醒目）+ 弹窗/横幅/手机 | \"需要你决定方案 A 还是 B\" |\n| ✅ 整个完成 | 哔哔 2 声 + 完成语音（不播歌曲，安静报喜）+ 弹窗/横幅/手机 | \"所有任务都完成了！\" |\n| 📈 进度（小阶段/定时） | **只推手机**（不响铃/不弹窗/不进横幅），本地仅一条轻提示 | \"已下载 3/10 个文件\" |\n\n> 📈 **进度汇报模式（三选一）**：每次手动开启离开模式时会问\"进度汇报\"——① 小阶段完成时（默认）/ ② 定时（每 15 分钟，即使无进展也汇报）/ ③ 不汇报。**进度类只推送手机**（锁屏可见，不打扰）；紧急/完成通知不受影响。**任务完成（收到 ✅ 完成通知）后，定时汇报自动停止**，不再继续催进度。\n\n### 🗣️ 自定义呼喊短语\n\n所有呼喊文案里的\"agent 需要你\"（TTS / 弹窗 / 手机推送 / 横幅）可以改成任何你想听的话。改 `config.json` 里的 `shoutPhrase`：\n\n```json\n{ \"shoutPhrase\": \"快来救我\" }\n```\n\nTTS 模板里用 `{shoutPhrase}` 占位（默认 `叮咚！{shoutPhrase}！{message}`），改一处全生效。\n\n### 📣 状态栏动态指示 & 停止本次播放\n\n离开模式下状态栏（底部）和编辑区上方横幅保持极简，只做“信号灯”：\n\n| 状态 | 状态栏 | 横幅 |\n|---|---|---|\n| 离开中、安静 | `🍳 离开中 · ⚠N 待处理` | `🍳 离开中 · ⚠N 待处理 · /status 看全部` |\n| **正在喊话（响铃中）** | `📢 正在广播中...（Ctrl+Alt+M 静音）`（高亮） | 同上加一行 `📢 正在广播中...` |\n| 喊完 / 被停止 | 自动恢复 `🍳 离开中 · ⚠N 待处理` | 同步恢复 |\n\n**设计原则**：横幅只显示“计数 + 状态”，不塞具体内容——方案、进度、任务总结等详情都在对话历史里（agent 完成任务后会有总结），看 `/i-am-cooking status` 也能查全部待处理明细。所以横幅正常 1 行、响铃时最多 2 行，不占屏幕。\n\n**你打字补充信息 = 已响应**：离开模式下你打字（回复呼喊 / 给新指示 / 补充要求），正在响的铃声会立即停止，之前的呼喊自动标记“已处理”并从横幅清掉（agent 继续自主干活；之后的呼喊是新信号，照常显示/响铃）。\n\n**停止本次播放**（不想听这次响铃，但保留待处理呼喊）：\n\n- 快捷键：`Ctrl+Alt+M`（M = Mute；可在 `~/.pi/agent/keybindings.json` 自定义绑定）\n- 命令：`/i-am-cooking stop-sound`\n\n停止**只掐断当前正在播放的声音**——不改任何配置、不关声音开关、不清除待处理呼喊，所以**下次呼喊照常响铃**。\n\n> ⚠️ 说明：pi 的终端状态栏不支持鼠标点击，所以用快捷键替代“点击关闭”；按键只影响当前这个终端里正在播的声音（多 Agent 各停各的）。\n\n**人在厨房也能远程静音（手机点按钮）**：开启离开模式后，插件会在本机启动一个小型停止端点（随机端口 + 随机 token），呼喊推送上自动带一个 **「🔕 停止响铃」按钮**——手机和电脑在同一局域网时，点一下即静音（旧呼喊同时标记已处理），agent 继续干活。仅 ntfy 推送通道支持；`off` / 会话关闭即停服并作废 token。不想用可把 `config.json` 里的 `remoteStop` 改为 `false`。\n\n## 📱 手机推送配置\n\n### 交互式向导（推荐）\n\n```\n/i-am-cooking setup\n```\n\n会引导你：了解 ntfy 是什么 → 装 app → 填 topic → 自动随机 topic 建议 → 预览确认（填错了可重填）→ 测试推送。\n\n> 🎭 **Topic 自动生成**：随机组合编程/算法风可爱名字 + 6 位数字（如 `i-am-cooking-幻觉的提示词-483726`），共 5.28 亿种组合，全局唯一。不想用可以手动改。\n\n### 手动配置\n\n`~/.pi/i-am-cooking/config.json`：\n\n```json\n{\n  \"phonePush\": true,\n  \"pushProvider\": \"ntfy\",\n  \"ntfyTopic\": \"i-am-cooking-你的随机topic\",\n  \"ntfyToken\": \"${NTFY_TOKEN}\",\n  \"autonomyLevel\": \"balanced\",\n  \"soundSeconds\": 60\n}\n```\n\n> 其余字段（beeps / soundPath / repeatIntervalMinutes 等）都有默认值，一般无需手改——用对应命令调整即可：`/i-am-cooking level`、`/i-am-cooking sound`、`/i-am-cooking limits`。\n\n**ntfy 安装**：Android/iOS 搜 \"ntfy\" 安装 → Subscribe → 填入 topic 名即可。\n\n也支持 Webhook（Bark / 企业微信机器人 / Server酱），见 [完整文档](docs/README.en.md)。\n\n## 🔊 音量控制（可选）\n\n### 手动调整 & 查看\n\n```\n/i-am-cooking volume\n```\n\n交互式中文菜单：查看当前系统音量 / 立即把音量调到指定值（0-100）/ 设置\"离开时拉高到多少\" / 开关\"离开自动拉高\"。\n\n**Agent 也会调整音量**（`set_volume` 工具）：你说\"音量调大点\"\"小点声\"\"静音\"时，agent 帮你调；呼喊前发现系统静音也会先解除静音保证你能听到。\n\n### 离开自动拉高（可选）\n\n离开时自动拉高音量（防止静音听不到呼喊），回来恢复。\n\nsetup 向导里会明确问你\"允许吗\"，默认关闭。允许后每次 `on` 自动拉高，`off` 恢复原值。\n\n| 平台 | 实现 |\n|---|---|\n| Windows | Core Audio API（PowerShell，零依赖） |\n| macOS | `osascript`（系统自带，同时还原音量+静音状态） |\n| Linux | `pactl`（PulseAudio） |\n\n> macOS 细节：静音状态下（含 Mute 键触发的 muted=true），`on` 会自动解除静音并拉高音量，`off` 恢复原来的音量和静音状态。\n\n## 🛡️ 防打扰机制（默认护栏，可调）\n\n> 需要你 / 整个完成 / 进度（小阶段·定时）是**三种不同消息**，各自走各自的通道与限制，互不影响。\n\n| 限制 | 作用于 | 默认值 | 调整方式 |\n|---|---|---|---|\n| 同一任务完成只通知一次 | ✅ 整个完成 | 不重复喊 | 固定 |\n| 每次离开最多通知几次完成 | ✅ 整个完成（不同任务累计） | 3 次 | `/i-am-cooking limits` |\n| 小阶段完成提醒 | 📈 小阶段完成 | ① 小阶段完成时（默认，开启时询问）；只推手机 | 开启时询问 |\n| 定时汇报进度 | ⏰ 进度 | 关闭（选②时每 15 分钟）；只推手机；完成后自动停止 | 开启时询问 |\n| 普通呼喊重复 | ⚠️ 普通呼喊 | **3 分钟**一次（只重复一次） | `/i-am-cooking limits` |\n| 紧急呼喊反复喊 | 🚨 紧急呼喊 | **1 分钟**一次，直到你回来 | `/i-am-cooking limits` |\n| 10 分钟内不重复同内容 | 所有消息 | 自动去重 | 固定 |\n\n运行 `/i-am-cooking limits` 弹中文菜单即可调整（无需记英文参数）。\n\n## 🤝 多 Agent 场景（多个 pi 同时离开）\n\n同时开多个 pi（比如两个终端 / 一个终端一个 RPC）并都进入离开模式时，**各 Agent 完全独立、互不干扰**：\n\n| 能力 | 行为 |\n|---|---|\n| 🔊 音频互斥 | 多个 Agent 同时喊时，同一时刻**只放一个声音**——后到的跳过声音（只留弹窗/推送/横幅），避免重叠听不清；用户主动 `/i-am-cooking test` 或试听可**抢占** |\n| 🔙 独立关闭 | 关闭某个 Agent（说\"我不离开了\"或 `/i-am-cooking off`）**只影响它自己**，其他 Agent 继续工作，无需重新开启 |\n\n> 崩溃恢复：Agent 进程崩溃留下的音频锁会被自动检测（进程存活检查）并抢占；超时（75 秒）兜底防误判。\n\n## 🖥️ 平台支持\n\n| 平台 | 声音 | 中文 TTS | 自定义歌曲 | 桌面通知 | 手机推送 | 音量控制 |\n|---|---|---|---|---|---|---|\n| Windows | ✅ | ✅ | ✅ wav | ✅ Toast | ✅ | ✅ |\n| macOS | ✅ | ✅ say Tingting | ✅ mp3/wav/m4a | ✅ osascript | ✅ | ✅ |\n| Linux | ✅¹ | ✅¹ espeak-ng | ✅¹ wav/ogg | ✅¹ notify-send | ✅ | ✅¹ |\n\n¹ Linux：需安装对应包（canberra-gtk-play / espeak-ng / paplay / notify-send / pactl）。\n\n## ✅ 验证清单\n\n发布前请通过 [docs/VERIFICATION.md](docs/VERIFICATION.md)。\n\n## 📄 许可\n\nMIT — 详见 [LICENSE](LICENSE)。\n\n---\n\n**English users**: see [docs/README.en.md](docs/README.en.md) for the full English documentation.\n","readmeFilename":"README.md"}