@auto-ai/agent 2.1.213 → 2.1.214
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.
- package/dist/safe-a/404/index.html +1 -1
- package/dist/safe-a/404.html +1 -1
- package/dist/safe-a/_next/static/{ydg1pWMUiUWUhsV4OnPd9 → 8K8MheZHG-fXZxruG2Nc8}/_buildManifest.js +1 -1
- package/dist/safe-a/_next/static/chunks/{ab522ef4566e28db.js → 01766c1e2fdff227.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{aa34ec2d74f7775c.js → 04c9439163b67552.js} +1 -1
- package/dist/safe-a/_next/static/chunks/05e1926dc5c477b7.js +1 -0
- package/dist/safe-a/_next/static/chunks/{e7d6284971d07422.js → 06b923aa1177f43f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9924bd3807982f9c.js → 092c97532613af2a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/0b5e5b964346a287.js +1 -0
- package/dist/safe-a/_next/static/chunks/0b639ff4f1971d14.js +1 -0
- package/dist/safe-a/_next/static/chunks/{7cd0d9159e722599.js → 0b69dba7f1e63f30.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{af07509fa7bac8c4.js → 0ce6504fc10ce408.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{e07906d264057e7b.js → 0e1e7d5f7a375308.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{00b0744649a5e608.js → 0e8139882ad093d2.js} +1 -1
- package/dist/safe-a/_next/static/chunks/0ea5a62c3f30dc56.js +1 -0
- package/dist/safe-a/_next/static/chunks/0f1810e4c6b0dd0c.js +1 -0
- package/dist/safe-a/_next/static/chunks/{70b95d96e33a5d63.js → 0fa097a572705cfa.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{faf267ae8eaabb78.js → 0fb0d030e8dee231.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{ed4322c3137a7cbf.js → 0fd3876e0d9e8acc.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{c43009f5a3f83289.js → 106955e3cc6a6843.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{3f18c3fa64301e74.js → 1078bc1642db53ad.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{a0256e00bbdc334c.js → 108a0b77418f1d31.js} +1 -1
- package/dist/safe-a/_next/static/chunks/1289fc2bb1119e18.js +1 -0
- package/dist/safe-a/_next/static/chunks/{967dfe61a543e533.js → 13b54d70a1ee1de7.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{54a2df4508a1c311.js → 13f94fc3dda88c90.js} +1 -1
- package/dist/safe-a/_next/static/chunks/155374df9f6b4b9a.js +1 -0
- package/dist/safe-a/_next/static/chunks/{12932eb7d288b09b.js → 16ea1d3cf6db8a53.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{23f50ba74d421ab3.js → 170f7361bd4d33e2.js} +1 -1
- package/dist/safe-a/_next/static/chunks/17722e3ac4e00587.js +1 -0
- package/dist/safe-a/_next/static/chunks/{c0960892f67b4256.js → 179a5dac78ab2cb9.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{966730983f55a7c6.js → 1818d7a661948f6b.js} +1 -1
- package/dist/safe-a/_next/static/chunks/18977fe8f51209aa.js +1 -0
- package/dist/safe-a/_next/static/chunks/{57e13ec897ff78d6.js → 19584f955475ce91.js} +1 -1
- package/dist/safe-a/_next/static/chunks/1974f51c298bce94.js +1 -0
- package/dist/safe-a/_next/static/chunks/{948dc342d4746ffc.js → 19c1491e85e22b3b.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{a8696c4a576878ae.js → 19ca17e5015c42a3.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{03039556684e9812.js → 1a4b553856a8ffdf.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{93588b2335ca95de.js → 1b55c29b8cad4a50.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{878dd96f8fcd6bd4.js → 1bb28f71c19fa824.js} +1 -1
- package/dist/safe-a/_next/static/chunks/1bfa645704d9149a.js +1 -0
- package/dist/safe-a/_next/static/chunks/{fd3f75ac79c1d04e.js → 1c9321874fea5f0d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{8b1990cf2eb41663.js → 1d3e7886be9f671c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{d2bba4dbd6e24f7e.js → 1e17456ccebc9cd2.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{2bd512c6acf9ee9b.js → 1e43922998a0ed2f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{d653880800910810.js → 1fec17d16aff9eed.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{a39dba23f5098cde.js → 2046937bffedf074.js} +1 -1
- package/dist/safe-a/_next/static/chunks/219a3413675ba6f1.js +1 -0
- package/dist/safe-a/_next/static/chunks/{8cee526b3846c40b.js → 2326118ef1328bc5.js} +1 -1
- package/dist/safe-a/_next/static/chunks/236775e4ec4f8a94.js +1 -0
- package/dist/safe-a/_next/static/chunks/{afab34a5bb437673.js → 242529c986baeb00.js} +1 -1
- package/dist/safe-a/_next/static/chunks/27069b3f310e0a86.js +1 -0
- package/dist/safe-a/_next/static/chunks/{dfd8167d74bbaa3a.js → 270d7571d2eea071.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{591fe54d06e0a33e.js → 27c407347ce26b78.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{03af20498d43b518.js → 27ff2e69b2fd19e5.js} +1 -1
- package/dist/safe-a/_next/static/chunks/291c07da1c127dc1.js +1 -0
- package/dist/safe-a/_next/static/chunks/29676075a0390867.js +1 -0
- package/dist/safe-a/_next/static/chunks/{2be2d49054d4606c.js → 2c6d585a97629311.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{1409701c73ffe517.js → 2df3e464b6247e75.js} +1 -1
- package/dist/safe-a/_next/static/chunks/2e574acbf68e77ff.js +1 -0
- package/dist/safe-a/_next/static/chunks/2e57b45e52bb735e.js +1 -0
- package/dist/safe-a/_next/static/chunks/{c537d051140acc61.js → 2ec6d7ddb4c04987.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{dee1daaeed29e5a2.js → 2f7d30e66e995b02.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{66247e9b3cf471f5.js → 2fab2306850ac97b.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9721e6d173bcda17.js → 2fcc6298b6dd7a82.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{ccbe0fe39b523768.js → 303d9c2a2c956f25.js} +1 -1
- package/dist/safe-a/_next/static/chunks/32a7ca0a75a897da.js +1 -0
- package/dist/safe-a/_next/static/chunks/{06e2cd3fae94aae8.js → 32b4d63e10d31351.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{4f55f5dfceddc1fe.js → 32b9bdd82a961878.js} +1 -1
- package/dist/safe-a/_next/static/chunks/3509a66e019ceae3.js +1 -0
- package/dist/safe-a/_next/static/chunks/{ae7e9c73a1d653fd.js → 3520f1af0a1b7f66.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{7b6898a7f9df6495.js → 354aaa2e36b75b81.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{e4776ea06fa1720a.js → 3590c4a4f40cdb5d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{2ccdfcf9ecfa2ea8.js → 35f1637c2feb232d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{94d40dcd515ca4ad.js → 37bbbf907196a5bf.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{7ed753f2db91bc38.js → 37cfaa4963ac51f3.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{29a317486c4ab7d7.js → 3934bd57f459566e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{a3af4dcdb725b47f.js → 3a947667fddbdd53.js} +1 -1
- package/dist/safe-a/_next/static/chunks/3aac5736e5781b46.js +1 -0
- package/dist/safe-a/_next/static/chunks/{f7d33f46dfbddf65.js → 3ae23df392f9bed8.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{65ee07c4b6209141.js → 3ae4e2529aa621fb.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{30f37e8e02339538.js → 3b2bb9f17546ee3e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{02339beb679bec8d.js → 3bcd531d40d6c019.js} +1 -1
- package/dist/safe-a/_next/static/chunks/3c695d1c2efbc749.js +1 -0
- package/dist/safe-a/_next/static/chunks/3d8e9a96a69193d4.js +1 -0
- package/dist/safe-a/_next/static/chunks/3dcb1dcf23e7ab9c.js +1 -0
- package/dist/safe-a/_next/static/chunks/3e2ea3a7fe64826d.js +1 -0
- package/dist/safe-a/_next/static/chunks/{472047ea96adfca5.js → 3e9c98df7d56e9b2.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{3da255bcf22e013d.js → 3ec05a61e93547d3.js} +1 -1
- package/dist/safe-a/_next/static/chunks/3f6fe8a1903009ea.js +1 -0
- package/dist/safe-a/_next/static/chunks/3fb4674edcb2d726.js +1 -0
- package/dist/safe-a/_next/static/chunks/{c013a3a3b1574b7d.js → 3fd03b9ed21b30fc.js} +1 -1
- package/dist/safe-a/_next/static/chunks/40268f8e3ff0314e.js +1 -0
- package/dist/safe-a/_next/static/chunks/40a2fb9cf3a7e6fd.js +1 -0
- package/dist/safe-a/_next/static/chunks/{dabd2cc5e900d556.js → 40cc0252b2f1d855.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{19a47cfc8ca4c0a7.js → 413a7be096275d7f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{e6c441f81a8ea81c.js → 44cbf68ad086a6a3.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{435e18828af1d066.js → 459d401d9f9e5b9f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/45ab9a1f693d609c.js +1 -0
- package/dist/safe-a/_next/static/chunks/{9db0d8129d6b7b5e.js → 481a2858f7df907d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{de208f3610c12b2c.js → 49df9708d6328c4a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{ad22e1613386ba8d.js → 4a340ea4ac145216.js} +1 -1
- package/dist/safe-a/_next/static/chunks/4a426c156537f974.js +1 -0
- package/dist/safe-a/_next/static/chunks/4be4ca8f1ec9c171.js +1 -0
- package/dist/safe-a/_next/static/chunks/4be779bcbd94352d.js +1 -0
- package/dist/safe-a/_next/static/chunks/4c33a1cc6db74105.js +1 -0
- package/dist/safe-a/_next/static/chunks/4d129d4e15c8c424.js +1 -0
- package/dist/safe-a/_next/static/chunks/{c84ea2dc8d3281e6.js → 4df298f5b420f474.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{dfe4d8ffc37b96da.js → 4dfbfdff43b8479b.js} +1 -1
- package/dist/safe-a/_next/static/chunks/5069ee4aa806b0ea.js +1 -0
- package/dist/safe-a/_next/static/chunks/519049cd74a40910.js +1 -0
- package/dist/safe-a/_next/static/chunks/522518d740397639.js +1 -0
- package/dist/safe-a/_next/static/chunks/52e2164e45febae6.js +1 -0
- package/dist/safe-a/_next/static/chunks/{f8757d2c1a969081.js → 534b5acf573aa491.js} +1 -1
- package/dist/safe-a/_next/static/chunks/538cc02e54714b23.js +1 -0
- package/dist/safe-a/_next/static/chunks/{97d506a00590396c.js → 53be52c43a14557c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/54c43751bf4c4da2.js +1 -0
- package/dist/safe-a/_next/static/chunks/{0c19efa935cdd816.js → 55087cc98e6237f1.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{5c2a7e118fa66960.js → 55f8de91b4803778.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{569dda34679bca70.js → 560ca23f77c0e819.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{7c2d68248d759f50.js → 5798600d2ea8a3e8.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{6e145bea7acc82b4.js → 57bb853857f3de83.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{65963496d7fa49bc.js → 588e6975a7bd6671.js} +1 -1
- package/dist/safe-a/_next/static/chunks/58dfdb6e018c4a57.js +1 -0
- package/dist/safe-a/_next/static/chunks/{648649ebbc7565b9.js → 5a0b630678282d4f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{1f90e84b5a4dad81.js → 5a3e355216280144.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{63f33483697b26ca.js → 5a4c198fd41e8ec4.js} +1 -1
- package/dist/safe-a/_next/static/chunks/5b916c9dc09e323c.js +1 -0
- package/dist/safe-a/_next/static/chunks/5ccd5a6ac9c2f980.js +1 -0
- package/dist/safe-a/_next/static/chunks/{eb248f97f593a288.js → 5d5333084191fb10.js} +1 -1
- package/dist/safe-a/_next/static/chunks/5d79b7f202080232.js +1 -0
- package/dist/safe-a/_next/static/chunks/{a367a4ab4b91ce6b.js → 5ea79c109cbe8a86.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{daaffc256846db90.js → 5ee72092303043ef.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9583c5cc3861200c.js → 5fc8a5235ddfa787.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{8c97e3b556b32001.js → 61ce261738313b8a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{503bbec2e3179a3c.js → 62d925bcc8518b6f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/63ec034afca4b5d6.js +1 -0
- package/dist/safe-a/_next/static/chunks/{547eb82208058c71.js → 644aa76620718c98.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{6d0bf0ac1fdb7eab.js → 648b653b36802fdc.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{1d737ed6e08d2466.js → 6522643341a0921c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{829196dbf7eddb51.js → 65fb49c8a7f59842.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{e878ffaf394e2c30.js → 65fe0975412ff703.js} +1 -1
- package/dist/safe-a/_next/static/chunks/6677c64fd587e78c.js +1 -0
- package/dist/safe-a/_next/static/chunks/{ea136b1a439307e8.js → 66b30159915524db.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{cf99b249b986e2bd.js → 66ed07a735eac6e3.js} +1 -1
- package/dist/safe-a/_next/static/chunks/6785757cc05fec19.js +1 -0
- package/dist/safe-a/_next/static/chunks/{8aafb8ec5208a445.js → 67c9db5577080125.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{ada2807c297fe674.js → 68bd2bd64624e20d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{774e554c11c8759a.js → 692e7ee14236fefb.js} +1 -1
- package/dist/safe-a/_next/static/chunks/696e3ddd135b85b4.js +1 -0
- package/dist/safe-a/_next/static/chunks/{dcdc329f64f1a7a8.js → 69cfdbc51cf2d3c3.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{1aaf9fb00fb53ef9.js → 6ae709c575c74979.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{dfbd9d8a4137edd6.js → 6b652524b5ffdd9e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{645741ee91707763.js → 6b7c3c962a14dc29.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{ec24f7a0593636d9.js → 6bc7c57f119ad4f6.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{2c0b2fd9fb2fea66.js → 6c3b2d0be1c633b6.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{29cf9e89be8a7f75.js → 6cc2f7f962cdd082.js} +1 -1
- package/dist/safe-a/_next/static/chunks/6d1f15f3eb86ea37.js +1 -0
- package/dist/safe-a/_next/static/chunks/{3e45de4a81d1f7a6.js → 6d4209e94b1aafe6.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{c43f94053172eb84.js → 6f3afa83656eab67.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{b4d570502774dffb.js → 6f4460bd0b8a57af.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{ec048ffab26ebcd6.js → 6fe835d41fdbd638.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{6349c7cf3b394b81.js → 70459a2a4c45653e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{c5fd875d1d9fd6c4.js → 7137c7537c459c31.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{740732a162598c49.js → 715c085d7c10eeda.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{42d0ae4192d72f8e.js → 71668b2d16d048d8.js} +1 -1
- package/dist/safe-a/_next/static/chunks/71d3a80bc9d53b07.js +1 -0
- package/dist/safe-a/_next/static/chunks/{5c076874caf0532e.js → 71e3a90489469c28.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{d0d06ea64246c2e0.js → 72a56bd75075fd83.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{957b35b92a00be9d.js → 72ef1696f44fcf61.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{5076e29ddf662e81.js → 736441266ceb14e2.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{0f93a62e5e2db48b.js → 73cbf0064096e28c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/7491dc26b3b05de9.js +1 -0
- package/dist/safe-a/_next/static/chunks/{ae1404fdd6ec935a.js → 751de74a23cc9036.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{e632e1b120215697.js → 756b6c2e620386ff.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{5ca0c9bb26daf732.js → 75a396e1752cd59d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/764c541428e1c6eb.js +1 -0
- package/dist/safe-a/_next/static/chunks/{e7f1683dcd85bf06.js → 79128afded6e01d9.js} +1 -1
- package/dist/safe-a/_next/static/chunks/7988d5ea63356e10.js +1 -0
- package/dist/safe-a/_next/static/chunks/{cd733da27bed8af2.js → 7aa69fd5d97b7146.js} +1 -1
- package/dist/safe-a/_next/static/chunks/7b9c09d0ce43f1c2.js +1 -0
- package/dist/safe-a/_next/static/chunks/{9ae8f05f80dedfa4.js → 7d3bf918bccde738.js} +1 -1
- package/dist/safe-a/_next/static/chunks/7dbb8abebf50d816.js +1 -0
- package/dist/safe-a/_next/static/chunks/{fd9b8164ea743aa0.js → 7dd32128bdee61f7.js} +1 -1
- package/dist/safe-a/_next/static/chunks/7ef348801eff6590.js +1 -0
- package/dist/safe-a/_next/static/chunks/{2f35f32799fb08ac.js → 7f6e82ac63db5eff.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{738c808ddc82ea44.js → 7fd45fb9cf0995f3.js} +1 -1
- package/dist/safe-a/_next/static/chunks/82614b5de9f78114.js +1 -0
- package/dist/safe-a/_next/static/chunks/{a12eeb7c77a7506f.js → 84185f4bb07ccbd7.js} +1 -1
- package/dist/safe-a/_next/static/chunks/85fc05549f7f100c.js +1 -0
- package/dist/safe-a/_next/static/chunks/{b0638abf4a6eb85f.js → 87e12ecbe9521f9b.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{86c0a63bf95598a3.js → 88a999988f915988.js} +1 -1
- package/dist/safe-a/_next/static/chunks/88bc97899d2ce4e5.js +1 -0
- package/dist/safe-a/_next/static/chunks/8989a60219113c80.js +1 -0
- package/dist/safe-a/_next/static/chunks/{8e33e395e6224908.js → 8bdc142fad5847ed.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{6818b9385873d081.js → 8deb0392842e5a01.js} +1 -1
- package/dist/safe-a/_next/static/chunks/8e5b2f279f1a9975.js +1 -0
- package/dist/safe-a/_next/static/chunks/{99ce8e2a747001a9.js → 8f038ff914c4b0df.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{eaa820432740042a.js → 8f5be275907dd98c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{0518cc63903bebac.js → 9037530b0f1d5783.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{b4db35dceb9577e1.js → 9078ad91aa20dca0.js} +1 -1
- package/dist/safe-a/_next/static/chunks/91e0df5a4c9d0bcd.js +1 -0
- package/dist/safe-a/_next/static/chunks/92c3617a4e22a464.js +1 -0
- package/dist/safe-a/_next/static/chunks/{eb34cdf40f4c4d62.js → 932d3fcc2596e8d5.js} +1 -1
- package/dist/safe-a/_next/static/chunks/937e26e6e01d9ec9.js +1 -0
- package/dist/safe-a/_next/static/chunks/93bfaf233e66b48c.js +1 -0
- package/dist/safe-a/_next/static/chunks/{3422b2c2f9bdf0e0.js → 94029062f236cadc.js} +1 -1
- package/dist/safe-a/_next/static/chunks/94e88cfda11697d2.js +1 -0
- package/dist/safe-a/_next/static/chunks/{55e32e78e4db3889.js → 95c4d26e469d1d8f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{b717d3610f87602f.js → 96026b5eb5d2566b.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{ede1765e6899133a.js → 962a27e9c634b823.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{093669121f3b7aa1.js → 966fb5830ce1029c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{aa8c7d3d99a14fdb.js → 9724567275720686.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{aff6654f4fbc26b0.js → 98e243fb5992a71c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{fddfcced721d9669.js → 9a7b2a483b109c0a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/9b3df6b20a9625d5.js +1 -0
- package/dist/safe-a/_next/static/chunks/9c6c00fa68012026.js +1 -0
- package/dist/safe-a/_next/static/chunks/{46568a8bad984d09.js → 9cb28a1dacb7ea6d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/9ccf7a8bca1730bf.js +1 -0
- package/dist/safe-a/_next/static/chunks/{c2e5be103cef6113.js → 9e96c84b86d1bbf3.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{38dcdbfb8c6966a9.js → 9f0ee4783140adf1.js} +1 -1
- package/dist/safe-a/_next/static/chunks/9fefea69ec034a63.js +1 -0
- package/dist/safe-a/_next/static/chunks/{d9bf3f0f6088ac8c.js → a1b9abf15c0f7655.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{65159d9aa3ecc0c9.js → a37aa474433d29e3.js} +1 -1
- package/dist/safe-a/_next/static/chunks/a437ab944fe911da.js +1 -0
- package/dist/safe-a/_next/static/chunks/a4776dc3e00e5ab0.js +1 -0
- package/dist/safe-a/_next/static/chunks/{2331e2a388a9bd50.js → a5df6158856685f1.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{8d76667bd2633e46.js → a6737fc58619eae5.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{217c50478c5ea4d7.js → a6a98f9278704b6a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{6ecccb36549d3028.js → a7277c96f3669bea.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9b0ac8da8e1c0d7e.js → a9fed5c43d754a96.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{6e663a2e3562125c.js → aa0a4c596151b22b.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{f7ad257814e6e947.js → aa867a1fa8b105e1.js} +1 -1
- package/dist/safe-a/_next/static/chunks/abdf99ba76e0f571.js +1 -0
- package/dist/safe-a/_next/static/chunks/ad4ba491cf12423f.js +5 -0
- package/dist/safe-a/_next/static/chunks/{f40b91cb7cc58cf2.js → ad50a7d15cd9d9d8.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{0708a65cc3ecf56b.js → af7b0bd1b40ad066.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9e9339584dbc8172.js → b24e3802454a5567.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{e1416a0b2152bdbf.js → b29a85c3dae2bb9c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/b30ee3cb6af32088.js +1 -0
- package/dist/safe-a/_next/static/chunks/b30f1da4e57f459a.js +1 -0
- package/dist/safe-a/_next/static/chunks/{129875fd1b096964.js → b360c9fc22dbf831.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{ddc8a591c8943264.js → b3e79c76be269ccc.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{82aea21a16d00076.js → b429be4e16fa1e00.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{e66819cb4afcfe87.js → b61ec36c9bbca3e0.js} +1 -1
- package/dist/safe-a/_next/static/chunks/b62abd0d2ca9f56f.js +1 -0
- package/dist/safe-a/_next/static/chunks/{405cd8dd7faa6eaf.js → b65565677c3e8c0a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{37f3ea0b3cf40bca.js → b66afb4b0be97af8.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{d53ff6336a32e4c5.js → b69f987a60b05db3.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9d65a2db77bf6c63.js → b78822282754a47c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/b92c67520afabac2.js +1 -0
- package/dist/safe-a/_next/static/chunks/baed816b83bbd5b5.js +1 -0
- package/dist/safe-a/_next/static/chunks/{38e76abda882c1a8.js → bbaef90b0ce43019.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{43392297dd43555d.js → bbcf9daa108b22fb.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{f05af2c706c87fb5.js → bc7bda699a7ccda1.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{f0a3b313fc0fcace.js → bd1f33816fa01c16.js} +1 -1
- package/dist/safe-a/_next/static/chunks/bd2dcf98c9b362f6.js +1 -0
- package/dist/safe-a/_next/static/chunks/{cb8a82631d87b798.js → bd984c5404403e7d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{6fc97877fbcf3403.js → bf2262100cea8c64.js} +1 -1
- package/dist/safe-a/_next/static/chunks/bf2c1c402dbcccdf.js +1 -0
- package/dist/safe-a/_next/static/chunks/bfc6ee42cec583d5.js +1 -0
- package/dist/safe-a/_next/static/chunks/{c5932397b84e3c27.js → c15069059c9d1f53.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9de7a5feb6be8bc3.js → c1615032cbbf5b56.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{4c87634b39751c56.js → c2546d2b493dd907.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{82cdf7e6dbe7070d.js → c3669d468d3f2b3a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/c3b49937059d3d70.js +1 -0
- package/dist/safe-a/_next/static/chunks/{5a43f7cd89a42167.js → c5b5aba98d38ef23.js} +1 -1
- package/dist/safe-a/_next/static/chunks/c5be27a596acfa18.js +1 -0
- package/dist/safe-a/_next/static/chunks/{6e4e92cbcf961542.js → c6cc32860b96278f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{997894582876b3bb.js → c725524ea13a50ab.js} +1 -1
- package/dist/safe-a/_next/static/chunks/c8942bee3aebddae.js +1 -0
- package/dist/safe-a/_next/static/chunks/{fc3c1b765cc5906d.js → c8e45be36912e439.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{5e4225518ccc365e.js → c933951b3113492f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/c9813626ba898586.js +1 -0
- package/dist/safe-a/_next/static/chunks/ca2725c2b45709c1.js +1 -0
- package/dist/safe-a/_next/static/chunks/{47098fcba8e98974.js → caf4049dc563940e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/cafadd69e03e6c4b.js +1 -0
- package/dist/safe-a/_next/static/chunks/{57bc9169370081d7.js → cba2741f84ef36ed.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{47d485f30e419da8.js → cccecf726769787f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{261bf96e2331ea0a.js → cd0e7e3cc303b4e4.js} +1 -1
- package/dist/safe-a/_next/static/chunks/cd4556cbed1f8957.js +1 -0
- package/dist/safe-a/_next/static/chunks/{2f104b4be1990722.js → cd5eec7d305aa041.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{3f74431cdf49e5e1.js → cfd9aff2dcf3adb9.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{564507763428bfb0.js → d09636e7bcf60ad1.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{dd59d0e313916320.js → d2d432a9facf4278.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{fdf535baa39c0e26.js → d2e37b6d5ff62bcb.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{fe840e6cda1c115e.js → d33a24782888b869.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{7f611b9b215dfcef.js → d33e49aabd798892.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{7d7ef3758ed7347b.js → d3990c1e87ef3e23.js} +1 -1
- package/dist/safe-a/_next/static/chunks/d433c87b0bc69cda.js +1 -0
- package/dist/safe-a/_next/static/chunks/{9a63abc493c1c840.js → d47cd27ac08f5429.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{0e68cace7cf0464c.js → d599ef4d0f84a93d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{18570009118a0e76.js → d5e3d29f769997cc.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{7e5b28d162f1ea9d.js → d69b21102305d19e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{b92da682bccc569b.js → d715e874b8ee8540.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{1a91a01fbaf01e7e.js → d729414ff836cd53.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{333630802bd6f1a6.js → d82740475fc07e98.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9bedfcbe8f9ff43f.js → d842d30dcb0f50a9.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{502779251884e330.js → d8af8dadd0889c71.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{50c602f1b79d61a7.js → d9b92ed2d544fca5.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{d147ab3cf51edc42.js → da346aeed70dd39a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/da9d2b7d381c1953.js +1 -0
- package/dist/safe-a/_next/static/chunks/dbbd673619a7f82f.js +1 -0
- package/dist/safe-a/_next/static/chunks/dc0bc471de951daf.js +1 -0
- package/dist/safe-a/_next/static/chunks/{9d8fff267f5576eb.js → dc2186b66132ca97.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{d3fc1847f85d724b.js → de0ee516f6a1aa07.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{473249ae7830085a.js → e04bace22e04d63c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9b94620a86d2a1c2.js → e0c76ff7114dc8dc.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{dc7f280eee64d574.js → e11d4fd8de65621d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{ec7ee73b22712e55.js → e1999bcadd3448e5.js} +1 -1
- package/dist/safe-a/_next/static/chunks/e2833182a81cd867.js +1 -0
- package/dist/safe-a/_next/static/chunks/{232cc01daaf29e5d.js → e3fe320ec1b8f889.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{50cbc92b0512838a.js → e4973ad5c183f17a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{c8b301b059ee1946.js → e5275dcacbabc3e3.js} +1 -1
- package/dist/safe-a/_next/static/chunks/e60ef129113f6e24.js +1 -0
- package/dist/safe-a/_next/static/chunks/{8ebfebffa66b3ca7.js → e61019aedfdf554e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/e6324292aef80338.js +1 -0
- package/dist/safe-a/_next/static/chunks/{e89655c05e6b5b1f.js → e7003dbd5d8cb2d1.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{0d7d0d2beb29f175.js → e7bcbeb465fa49cf.js} +1 -1
- package/dist/safe-a/_next/static/chunks/e7f1a043618e43cf.js +1 -0
- package/dist/safe-a/_next/static/chunks/e8105dbb23b8e514.js +1 -0
- package/dist/safe-a/_next/static/chunks/{06a64fef342a5832.js → e96518d9cb5cbe1e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{e7731336476789d7.js → ea12d36cdfbaafa9.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{05ac495e860ba7c2.js → ea2a84258a02d5c5.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{b9b23fa418eacd67.js → ea36a5ae7c6ce34f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{fbb5b0d1f5b25465.js → eb2d81df9fe374a8.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{30c0274cb379ab0d.js → eb9ae8e95cac1197.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{abf043c7dd51a07b.js → ebb0ee69f6a7883e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{d84ed83f568f41c6.js → ebcbb5070eb8e29f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/ebcd85ff4a1db0dc.js +5 -0
- package/dist/safe-a/_next/static/chunks/{5ad5a5ee1cc648ae.js → ee79511740d19885.js} +1 -1
- package/dist/safe-a/_next/static/chunks/eed0c3ef6a5c3706.js +1 -0
- package/dist/safe-a/_next/static/chunks/{404f44571be80b78.js → ef51763a796dde8b.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{025f9752d60b79ce.js → f0cb9b2226c53ef9.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{c5b0f8f27c2db9f1.js → f0d9f0621f8ec46d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/f12f45a558c3fed2.js +1 -0
- package/dist/safe-a/_next/static/chunks/{868f60fa1a2ff26b.js → f1e5e295d4db5c0f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{3b0acee8a8035ee7.js → f1f911d553a62027.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{36897fabf62bf445.js → f235a8df2f905e6a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{27b3d30516d46fc8.js → f36595b9995a49a9.js} +1 -1
- package/dist/safe-a/_next/static/chunks/f42a71992d139302.js +1 -0
- package/dist/safe-a/_next/static/chunks/{dd03bb14e8e590f0.js → f42d74f288f2229c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{f39ec71d70b31fe1.js → f461a75ec3b0e4e9.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9f7b593a28b4dbe4.js → f50fd84e477dbaeb.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{4c19e1ee54dac526.js → f659a364f48244ea.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{7c4b1ab5c0f1b167.js → f813c3d77459119f.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{cac08e0e891f58d2.js → f9cb4b70f67c86d8.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{2854919e0953bd0d.js → fa39b9f8bced4bcd.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{4df5dd4e3c591164.js → fa5b61b8e7219fe6.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{1386362cdfd92116.js → facb82117d49a6e1.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{e1626e173f56ae31.js → fb05f79f5e4b514e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{18e062f9f23f27c0.js → fb0f4d868b87961b.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{3d9ee9c4bc8e29b2.js → fb2f1266493dd820.js} +1 -1
- package/dist/safe-a/_next/static/chunks/fc2efa33a196ee45.js +1 -0
- package/dist/safe-a/_next/static/chunks/{a4ab363af889263f.js → fd3d43eb8557ee49.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{8ead3da37182ce4c.js → fdfce6fa0b958336.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{04ed04c00511a337.js → ff12eca45020947a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/ff6860dcd793aa23.js +1 -0
- package/dist/safe-a/_next/static/chunks/{turbopack-25307b1915d537a0.js → turbopack-3d84668fefd38b4b.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{turbopack-fd95f1c0ef78a441.js → turbopack-63952675b1d69124.js} +1 -1
- package/dist/safe-a/_next/static/chunks/turbopack-8b41433c9a94981f.js +3 -0
- package/dist/safe-a/index.html +2 -2
- package/dist/safe-a/index.txt +18 -18
- package/dist/safe-a/manage/about/index.html +2 -2
- package/dist/safe-a/manage/about/index.txt +15 -15
- package/dist/safe-a/manage/env/index.html +2 -2
- package/dist/safe-a/manage/env/index.txt +17 -17
- package/dist/safe-a/manage/geelib/index.html +2 -2
- package/dist/safe-a/manage/geelib/index.txt +17 -17
- package/dist/safe-a/manage/general/index.html +2 -2
- package/dist/safe-a/manage/general/index.txt +15 -15
- package/dist/safe-a/manage/git/index.html +2 -2
- package/dist/safe-a/manage/git/index.txt +17 -17
- package/dist/safe-a/manage/im/index.html +2 -2
- package/dist/safe-a/manage/im/index.txt +17 -17
- package/dist/safe-a/manage/index.html +2 -2
- package/dist/safe-a/manage/index.txt +12 -12
- package/dist/safe-a/manage/library/index.html +2 -2
- package/dist/safe-a/manage/library/index.txt +15 -15
- package/dist/safe-a/manage/mcp/index.html +2 -2
- package/dist/safe-a/manage/mcp/index.txt +15 -15
- package/dist/safe-a/manage/permissions/index.html +2 -2
- package/dist/safe-a/manage/permissions/index.txt +15 -15
- package/dist/safe-a/manage/skills/index.html +2 -2
- package/dist/safe-a/manage/skills/index.txt +15 -15
- package/dist/safe-a/manage/task/index.html +2 -2
- package/dist/safe-a/manage/task/index.txt +15 -15
- package/dist/safe-a/manage/teams/index.html +2 -2
- package/dist/safe-a/manage/teams/index.txt +15 -15
- package/dist/safe-a/manage/tools/index.html +2 -2
- package/dist/safe-a/manage/tools/index.txt +15 -15
- package/dist/ws-test/ws-test.css +0 -47
- package/dist/ws-test/ws-test.html +0 -38
- package/dist/ws-test/ws-test.js +72 -541
- package/mcps-runtime/claude-geelib-channel/server/index.mjs +0 -5
- package/mcps-runtime/claude-tuitui-channel/server/index.mjs +6 -0
- package/mcps-runtime/claude-ws-channel/server/gateway.bundle.mjs +1145 -4782
- package/package.json +6 -6
- package/.env.example +0 -7
- package/dist/safe-a/_next/static/chunks/00f91b7d88f62204.js +0 -1
- package/dist/safe-a/_next/static/chunks/03d9139a7df67167.js +0 -1
- package/dist/safe-a/_next/static/chunks/0699439b4e026cf9.js +0 -5
- package/dist/safe-a/_next/static/chunks/0d0a0fd8bc7c5154.js +0 -1
- package/dist/safe-a/_next/static/chunks/1116b1064a071974.js +0 -1
- package/dist/safe-a/_next/static/chunks/16ee3f2be4586638.js +0 -1
- package/dist/safe-a/_next/static/chunks/19023abd5e1bf1d1.js +0 -1
- package/dist/safe-a/_next/static/chunks/1a900b3c5a00d59b.js +0 -1
- package/dist/safe-a/_next/static/chunks/1b739dfdbcce05bd.js +0 -1
- package/dist/safe-a/_next/static/chunks/1d0273aae0bc102c.js +0 -1
- package/dist/safe-a/_next/static/chunks/1df41f8d439107ef.js +0 -1
- package/dist/safe-a/_next/static/chunks/1faaa282be969b14.js +0 -1
- package/dist/safe-a/_next/static/chunks/27d9a47efb23fd17.js +0 -1
- package/dist/safe-a/_next/static/chunks/29105a13d179d5b2.js +0 -1
- package/dist/safe-a/_next/static/chunks/29403b19d94e37bb.js +0 -1
- package/dist/safe-a/_next/static/chunks/29f39316c32518a2.js +0 -1
- package/dist/safe-a/_next/static/chunks/2a07e0d1ef712b41.js +0 -1
- package/dist/safe-a/_next/static/chunks/2b38c2b26760e4cb.js +0 -1
- package/dist/safe-a/_next/static/chunks/2bb180b50bafe979.js +0 -1
- package/dist/safe-a/_next/static/chunks/2ce249001ad95013.js +0 -1
- package/dist/safe-a/_next/static/chunks/33e878df066811db.js +0 -1
- package/dist/safe-a/_next/static/chunks/37615c61dd14fc8d.js +0 -1
- package/dist/safe-a/_next/static/chunks/37e4ac5f3654a688.js +0 -1
- package/dist/safe-a/_next/static/chunks/38d88de54642e44e.js +0 -1
- package/dist/safe-a/_next/static/chunks/38decd5cd3fe2525.js +0 -1
- package/dist/safe-a/_next/static/chunks/39fc6ad79e44f4df.js +0 -1
- package/dist/safe-a/_next/static/chunks/3ecc6705303560ea.js +0 -1
- package/dist/safe-a/_next/static/chunks/3fe95be4b92470e2.js +0 -1
- package/dist/safe-a/_next/static/chunks/4064e59727cba9b0.js +0 -1
- package/dist/safe-a/_next/static/chunks/44e9e0394b7b6f31.js +0 -1
- package/dist/safe-a/_next/static/chunks/4ae2c56fab8c060d.js +0 -1
- package/dist/safe-a/_next/static/chunks/4ca36e3fb45c2e71.js +0 -1
- package/dist/safe-a/_next/static/chunks/4cd41b402679f77d.js +0 -1
- package/dist/safe-a/_next/static/chunks/50f270f87470ca73.js +0 -1
- package/dist/safe-a/_next/static/chunks/5385bf74559eeabd.js +0 -1
- package/dist/safe-a/_next/static/chunks/54169c1554845574.js +0 -1
- package/dist/safe-a/_next/static/chunks/592e7a6b713dc645.js +0 -1
- package/dist/safe-a/_next/static/chunks/599abea9ac64aaf1.js +0 -1
- package/dist/safe-a/_next/static/chunks/5ae21c9105c6abb4.js +0 -1
- package/dist/safe-a/_next/static/chunks/5b4c1faefda9575b.js +0 -1
- package/dist/safe-a/_next/static/chunks/68255bcd6345edfd.js +0 -1
- package/dist/safe-a/_next/static/chunks/68f27d4f860d8f88.js +0 -1
- package/dist/safe-a/_next/static/chunks/6960a33147147a27.js +0 -1
- package/dist/safe-a/_next/static/chunks/6a199e5f9da2ec4e.js +0 -1
- package/dist/safe-a/_next/static/chunks/6f6140cbad7cdeea.js +0 -1
- package/dist/safe-a/_next/static/chunks/6faa53698dc67904.js +0 -1
- package/dist/safe-a/_next/static/chunks/727dc45d24782155.js +0 -1
- package/dist/safe-a/_next/static/chunks/74d8d2b653f61b70.js +0 -1
- package/dist/safe-a/_next/static/chunks/7562ab6463e9fc3f.js +0 -1
- package/dist/safe-a/_next/static/chunks/784ee151431c6634.js +0 -1
- package/dist/safe-a/_next/static/chunks/7afa34c1dc058648.js +0 -1
- package/dist/safe-a/_next/static/chunks/7b34873e2b22211d.js +0 -1
- package/dist/safe-a/_next/static/chunks/7bd04dff1e0d3a01.js +0 -1
- package/dist/safe-a/_next/static/chunks/7cadf95d4932deec.js +0 -1
- package/dist/safe-a/_next/static/chunks/7ccd9e31b61da21f.js +0 -1
- package/dist/safe-a/_next/static/chunks/7e2887a3269dfc01.js +0 -1
- package/dist/safe-a/_next/static/chunks/7f167fb0dbc03180.js +0 -1
- package/dist/safe-a/_next/static/chunks/80bd106b26a076af.js +0 -1
- package/dist/safe-a/_next/static/chunks/826c64c8601264b1.js +0 -1
- package/dist/safe-a/_next/static/chunks/8465e859bae24fbd.js +0 -1
- package/dist/safe-a/_next/static/chunks/846fd48826ed3d89.js +0 -1
- package/dist/safe-a/_next/static/chunks/84e8e1e50a6b3ab7.js +0 -1
- package/dist/safe-a/_next/static/chunks/87b0002602934525.js +0 -1
- package/dist/safe-a/_next/static/chunks/882686dd3b63f9d1.js +0 -1
- package/dist/safe-a/_next/static/chunks/88e4cdcdeff36154.js +0 -1
- package/dist/safe-a/_next/static/chunks/8c8b1e40b00409f5.js +0 -1
- package/dist/safe-a/_next/static/chunks/913de10eeb8a88d9.js +0 -1
- package/dist/safe-a/_next/static/chunks/92c1de3b7b8ff353.js +0 -1
- package/dist/safe-a/_next/static/chunks/996147dc11d8e745.js +0 -1
- package/dist/safe-a/_next/static/chunks/9971428081f87b2e.js +0 -1
- package/dist/safe-a/_next/static/chunks/9a5e8d11c09774ed.js +0 -1
- package/dist/safe-a/_next/static/chunks/9f8b67e210121299.js +0 -1
- package/dist/safe-a/_next/static/chunks/a333240ca95e9cf9.js +0 -1
- package/dist/safe-a/_next/static/chunks/a4b35c64097aeb05.js +0 -1
- package/dist/safe-a/_next/static/chunks/a6fda6a41633eb93.js +0 -1
- package/dist/safe-a/_next/static/chunks/a86fedb173944e90.js +0 -1
- package/dist/safe-a/_next/static/chunks/a9a12415c8875ad5.js +0 -1
- package/dist/safe-a/_next/static/chunks/ab91b57996557cd5.js +0 -1
- package/dist/safe-a/_next/static/chunks/ac0062f74360e8a1.js +0 -1
- package/dist/safe-a/_next/static/chunks/b0f0f19c125de544.js +0 -1
- package/dist/safe-a/_next/static/chunks/b31fde4b83862330.js +0 -1
- package/dist/safe-a/_next/static/chunks/b594aa86704b6429.js +0 -1
- package/dist/safe-a/_next/static/chunks/b744b1f1595cffb6.js +0 -1
- package/dist/safe-a/_next/static/chunks/b882523826ac1c83.js +0 -1
- package/dist/safe-a/_next/static/chunks/c2a354d059dc2745.js +0 -1
- package/dist/safe-a/_next/static/chunks/c3bcc6eb84ed7d30.js +0 -1
- package/dist/safe-a/_next/static/chunks/c6bad34be1aacd05.js +0 -5
- package/dist/safe-a/_next/static/chunks/c7ce2c0e40c62b6b.js +0 -1
- package/dist/safe-a/_next/static/chunks/c9527036b1a95d19.js +0 -1
- package/dist/safe-a/_next/static/chunks/ca31fc9ca02421c7.js +0 -1
- package/dist/safe-a/_next/static/chunks/d2644966a8736893.js +0 -1
- package/dist/safe-a/_next/static/chunks/d2b5664aa6eb613c.js +0 -1
- package/dist/safe-a/_next/static/chunks/d3072ff0f4d0f613.js +0 -1
- package/dist/safe-a/_next/static/chunks/d78975cda9119543.js +0 -1
- package/dist/safe-a/_next/static/chunks/dbf36b536a6c59ef.js +0 -1
- package/dist/safe-a/_next/static/chunks/e0b6375c01566831.js +0 -1
- package/dist/safe-a/_next/static/chunks/e79d1db952916e66.js +0 -1
- package/dist/safe-a/_next/static/chunks/e814d6bb4f565a59.js +0 -1
- package/dist/safe-a/_next/static/chunks/ece085cc915ab5e5.js +0 -1
- package/dist/safe-a/_next/static/chunks/f15c8b2639bebe0f.js +0 -1
- package/dist/safe-a/_next/static/chunks/f42445d9866f6b16.js +0 -1
- package/dist/safe-a/_next/static/chunks/fa0cb747819a4b88.js +0 -1
- package/dist/safe-a/_next/static/chunks/fb7bf2e8cee9c72f.js +0 -1
- package/dist/safe-a/_next/static/chunks/fe4fddbf85e1554b.js +0 -1
- package/dist/safe-a/_next/static/chunks/ff9ec21502a3b775.js +0 -1
- package/dist/safe-a/_next/static/chunks/turbopack-c8295da8707d94de.js +0 -3
- package/dist/ws-test/vendor/xterm-addon-fit.js +0 -2
- package/dist/ws-test/vendor/xterm.css +0 -285
- package/dist/ws-test/vendor/xterm.js +0 -2
- /package/dist/safe-a/_next/static/{ydg1pWMUiUWUhsV4OnPd9 → 8K8MheZHG-fXZxruG2Nc8}/_clientMiddlewareManifest.json +0 -0
- /package/dist/safe-a/_next/static/{ydg1pWMUiUWUhsV4OnPd9 → 8K8MheZHG-fXZxruG2Nc8}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,13014,e=>{"use strict";e.s(["AppTable",()=>u],13014);var t=e.i(59992),a=e.i(26162),l=e.i(65765),s=e.i(96745);let r=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:a,className:(0,s.cn)("w-full caption-bottom border-collapse",l),...r})})});r.displayName="Table";let n=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("thead",{ref:a,className:(0,s.cn)("[&_tr]:table [&_tr]:w-full [&_tr]:table-fixed [&_tr]:border-b",l),...r})});n.displayName="TableHeader";let i=l.forwardRef((e,a)=>{let{className:r,viewportFit:n=!0,viewportReserveBottom:i=16,viewportPaginationReserve:o=0,style:c,...d}=e,u=l.useRef(null),m=l.useCallback(e=>{u.current=e,"function"==typeof a?a(e):a&&(a.current=e)},[a]),[p,x]=l.useState(void 0);return l.useLayoutEffect(()=>{var e,t;if(!n)return void x(void 0);let a=()=>{var e,t;let a=u.current;if(!a)return;let l=a.getBoundingClientRect().top;x(Math.max(80,Math.floor((null!=(t=null==(e=window.visualViewport)?void 0:e.height)?t:window.innerHeight)-l-(i+o))))};a();let l=new ResizeObserver(()=>{a()});try{l.observe(document.body)}catch(e){}return window.addEventListener("resize",a),null==(e=window.visualViewport)||e.addEventListener("resize",a),null==(t=window.visualViewport)||t.addEventListener("scroll",a),window.addEventListener("scroll",a,!0),()=>{var e,t;l.disconnect(),window.removeEventListener("resize",a),null==(e=window.visualViewport)||e.removeEventListener("resize",a),null==(t=window.visualViewport)||t.removeEventListener("scroll",a),window.removeEventListener("scroll",a,!0)}},[n,i,o]),(0,t.jsx)("tbody",{ref:m,className:(0,s.cn)("block overflow-y-auto [&_tr:last-child]:border-b-0 [&_tr:last-child_td]:border-b-0 [&_tr]:table [&_tr]:w-full [&_tr]:table-fixed",r),style:n&&void 0!==p?{...c,maxHeight:p}:c,...d})});i.displayName="TableBody";let o=l.forwardRef((e,a)=>{let{className:l,hoverable:r=!0,...n}=e;return(0,t.jsx)("tr",{ref:a,className:(0,s.cn)("border-b transition-colors [&>td]:transition-colors data-[state=selected]:[&>td]:!bg-[var(--ds-color-surface-item-active)]",r&&"group/table-row",l),...n})});o.displayName="TableRow";let c=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("th",{ref:a,className:(0,s.cn)("h-10 border-b border-[var(--ds-color-border-subtle)] bg-[var(--surface-2)] px-3 text-left align-middle text-[14px] font-medium !text-[var(--ds-text)] text-muted-foreground",l),...r})});c.displayName="TableHead";let d=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("td",{ref:a,className:(0,s.cn)("border-x-0 border-b border-t-0 border-solid border-[var(--ds-color-border-subtle)] p-3 align-middle transition-colors group-has-[td:hover]/table-row:!bg-[var(--ds-color-surface-item-hover)]",l),...r})});function u(e){let{rows:l,columns:u,getRowKey:m,className:p,rowClassName:x,headerRowClassName:f,emptyText:g,emptyNode:b,bodyProps:h}=e;return(0,t.jsx)("div",{className:(0,s.cn)("overflow-hidden border border-[var(--ds-color-border-default)]",p),children:(0,t.jsxs)(r,{children:[(0,t.jsx)(n,{children:(0,t.jsx)(o,{className:(0,s.cn)("bg-[var(--ds-color-surface-main-tint)] hover:bg-[var(--ds-color-surface-main-tint)]",f),children:u.map(e=>(0,t.jsx)(c,{className:e.headerClassName,children:e.title},e.key))})}),(0,t.jsx)(i,{...h,children:l.length?l.map(e=>(0,t.jsx)(o,{className:"function"==typeof x?x(e):x,children:u.map(a=>(0,t.jsx)(d,{className:a.cellClassName,children:a.render(e)},a.key))},m(e))):(0,t.jsx)(o,{hoverable:!1,children:(0,t.jsx)(d,{colSpan:u.length,className:"py-6",children:null!=b?b:(0,t.jsx)(a.Empty,{text:g})})})})]})})}d.displayName="TableCell"},40751,e=>{"use strict";e.s(["AppDialog",()=>r]);var t=e.i(59992),a=e.i(65765),l=e.i(65486),s=e.i(96745);function r(e){let{open:r,onOpenChange:n,title:i,children:o,footer:c,width:d="max-w-3xl",minHeight:u}=e,m=(0,a.useId)();return(0,t.jsx)(l.Dialog,{open:r,onOpenChange:n,children:(0,t.jsxs)(l.DialogContent,{"aria-labelledby":m,className:(0,s.cn)(d,u?"!min-h-[--min-h]":""),style:u?{"--min-h":u}:void 0,children:[(0,t.jsxs)(l.DialogHeader,{children:[(0,t.jsx)(l.DialogTitle,{id:m,children:i}),(0,t.jsx)(l.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(l.DialogBody,{className:"!px-4 !py-3",children:o}),c?(0,t.jsx)("div",{className:"flex flex-shrink-0 justify-end gap-2 border-t border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-sidebar)] px-4 py-3",children:c}):null]})})}},99329,e=>{"use strict";e.s(["clearRuntimeMcpItemConfig",()=>y,"deleteRuntimeMcp",()=>m,"deleteRuntimeSkill",()=>w,"deleteRuntimeTool",()=>u,"exportRuntimeMcpUrl",()=>x,"exportRuntimeSkillUrl",()=>N,"exportRuntimeToolUrl",()=>p,"importRuntimeMcp",()=>g,"importRuntimeTool",()=>f,"installCloudSkill",()=>C,"listBaseSkills",()=>r,"listCloudSkillCatalog",()=>k,"listInstalledSkills",()=>n,"listInstalledTools",()=>s,"listMcpServers",()=>l,"listRuntimeMcpPackages",()=>d,"listRuntimeTools",()=>c,"loadBaseSkillMd",()=>i,"loadRemoteMcpJson",()=>b,"loadRuntimeMcpItemConfig",()=>v,"saveBaseSkillMd",()=>o,"saveRemoteMcpJson",()=>h,"saveRuntimeMcpItemConfig",()=>j]);var t=e.i(61293),a=e.i(10602);async function l(e,l,s){let r=await (0,t.get)((0,a.buildMcpServersListUrl)(e,l,s));return{servers:Array.isArray(r.servers)?r.servers:[]}}async function s(e,l,s){let r=await (0,t.get)((0,a.buildToolInstalledListUrl)(e,l,s));return{tools:Array.isArray(r.tools)?r.tools:[]}}async function r(e,l,s){let r=await (0,t.get)((0,a.buildSkillBaseListUrl)(e,l,s));return{skills:Array.isArray(r.skills)?r.skills:[]}}async function n(e,l,s){let r=await (0,t.get)((0,a.buildSkillInstalledListUrl)(e,l,s));return{skills:Array.isArray(r.skills)?r.skills:[]}}async function i(e,l,s,r){return(0,t.get)((0,a.buildBaseSkillMdUrl)(e,l,s,r))}async function o(e,l,s,r,n){await (0,t.put)((0,a.buildBaseSkillMdUrl)(e,l,s,r),{content:n})}async function c(e,l,s){let r=await (0,t.get)((0,a.buildToolsRuntimeFilesUrl)(e,l,s));return{runtimeToolsDir:"string"==typeof r.runtimeToolsDir?r.runtimeToolsDir:"",items:Array.isArray(r.items)?r.items.filter(e=>!!(e&&e.id)):[]}}async function d(e,l,s){let r=await (0,t.get)((0,a.buildMcpRuntimeFilesUrl)(e,l,s));return{mcpRuntimeDir:"string"==typeof r.mcpRuntimeDir?r.mcpRuntimeDir:"",items:Array.isArray(r.items)?r.items.filter(e=>!!(e&&e.id)):[]}}async function u(e,l,s,r){return(0,t.del)((0,a.buildToolsRuntimeDeleteUrl)(e,l,s,r))}async function m(e,l,s,r){return(0,t.del)((0,a.buildMcpRuntimeDeleteUrl)(e,l,s,r))}function p(e,t,l,s){return(0,a.buildToolsRuntimeExportUrl)(e,t,l,s)}function x(e,t,l,s){return(0,a.buildMcpRuntimeExportUrl)(e,t,l,s)}async function f(e,l,s,r){let n=new FormData;return n.append("file",r),(0,t.post)((0,a.buildToolsRuntimeImportUrl)(e,l,s),n,{type:"file"})}async function g(e,l,s,r){let n=new FormData;return n.append("file",r),(0,t.post)((0,a.buildMcpRuntimeImportUrl)(e,l,s),n,{type:"file"})}async function b(e,l,s){return(0,t.get)((0,a.buildRemoteMcpJsonUrl)(e,l,s))}async function h(e,l,s,r){await (0,t.post)((0,a.buildRemoteMcpJsonUrl)(e,l,s),{content:r})}async function v(e,l,s,r,n){return(0,t.get)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,s,r,n))}async function j(e,l,s,r,n,i){await (0,t.put)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,s,r,n),{server:i})}async function y(e,l,s,r,n){await (0,t.del)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,s,r,n))}async function w(e,l,s,r){return(0,t.del)((0,a.buildSkillsRuntimeDeleteUrl)(e,l,s,r))}function N(e,t,l,s){return(0,a.buildSkillsRuntimeExportUrl)(e,t,l,s)}async function k(e,l,s,r,n,i){let o=await (0,t.get)((0,a.buildCloudSkillCatalogUrl)(e,l,s,r,n,i));return{items:Array.isArray(o.items)?o.items:[],totalPages:Number(o.totalPages||0)}}async function C(e,l,s,r){await (0,t.post)((0,a.buildCloudSkillInstallUrl)(e,l,s),{id:r})}},84919,e=>{"use strict";e.s(["ResourceImportDialog",()=>u],84919);var t=e.i(59992),a=e.i(65765),l=e.i(87655),s=e.i(96745),r=e.i(92369);function n(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(1)," KB"):"".concat((e/1048576).toFixed(1)," MB")}function i(e){let{uploadUrl:i,accept:o,disabled:c=!1,multiple:d=!1,maxFileSize:u=0x3200000,autoUpload:m=!1,method:p="POST",transport:x="xhr",fieldName:f="file",headers:g,extraFormData:b,autoRetryTimes:h=0,autoRetryDelayMs:v=800,selectionOnly:j=!1,className:y,emptyTitle:w="点击或拖拽文件到此处",emptyHint:N="支持上传文件",onFilesChange:k,onUploadSuccess:C,onUploadError:T,onValidationError:R}=e,S=a.useId(),U=a.useRef(null),M=a.useRef(new Map),D=a.useRef(new Map),A=a.useRef([]),[E,L]=a.useState(!1),[z,I]=a.useState([]),B=a.useMemo(()=>o?o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean):[],[o]);a.useEffect(()=>{A.current=z,null==k||k(z)},[z,k]),a.useEffect(()=>()=>{for(let e of M.current.values())e.abort();for(let e of D.current.values())e.abort();for(let e of A.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl)},[]);let O=a.useCallback((e,t)=>{I(a=>a.map(a=>a.id===e?{...a,...t}:a))},[]),_=a.useCallback(async(e,t)=>{let a=A.current.find(t=>t.id===e);if(!a||c)return;O(e,{status:t>0?"retrying":"uploading",progress:0,error:"",retryCount:t});let l=new FormData;if(b)for(let[e,t]of Object.entries(b))l.append(e,t);l.append(f,a.file);try{let t="";if("fetch"===x){let a=new AbortController;D.current.set(e,a);let s=await fetch(i,{method:p,headers:g,body:l,signal:a.signal}),r=await s.text();try{t=r?JSON.parse(r):""}catch(e){t=r}if(!s.ok)throw Error("上传失败:".concat(s.status," ").concat(s.statusText))}else t=await new Promise((t,a)=>{let s=new XMLHttpRequest;if(M.current.set(e,s),s.open(p,i,!0),g)for(let[e,t]of Object.entries(g))s.setRequestHeader(e,t);s.upload.onprogress=t=>{if(!t.lengthComputable)return;let a=Math.min(100,Math.round(t.loaded/t.total*100));O(e,{progress:a})},s.onerror=()=>a(Error("网络异常,上传失败")),s.onabort=()=>a(Error("__ABORTED__")),s.onload=()=>{s.status>=200&&s.status<300?t(function(e){let t=e.responseText||"";try{return JSON.parse(t)}catch(e){return t}}(s)):a(Error("上传失败:".concat(s.status," ").concat(s.statusText)))},s.send(l)});O(e,{status:"success",progress:100,error:""});let a=A.current.find(t=>t.id===e);a&&(null==C||C(a,t))}catch(s){let a=s instanceof Error?s.message:String(s);if("__ABORTED__"===a)return void O(e,{status:"selected",progress:0,error:""});if(t<h){O(e,{status:"retrying",error:"重试中(".concat(t+1,"/").concat(h,")")}),await new Promise(e=>window.setTimeout(e,v)),await _(e,t+1);return}O(e,{status:"error",error:a});let l=A.current.find(t=>t.id===e);l&&(null==T||T(l,a))}finally{M.current.delete(e),D.current.delete(e)}},[v,h,c,b,f,g,p,T,C,x,O,i]),P=a.useCallback(e=>{_(e,0)},[_]),F=a.useCallback(e=>{var t,a;null==(t=M.current.get(e))||t.abort(),null==(a=D.current.get(e))||a.abort()},[]),W=a.useCallback(()=>{for(let e of A.current)("selected"===e.status||"error"===e.status)&&P(e.id)},[P]),H=a.useCallback(e=>{if(c||!e.length)return;let t=new Set(A.current.map(e=>"".concat(e.file.name,"::").concat(e.file.size))),a=[];for(let l of e){let e="".concat(l.name,"::").concat(l.size);if(!t.has(e)){if(!function(e,t){if(!t.length)return!0;let a=e.name.toLowerCase(),l=(e.type||"").toLowerCase();return t.some(e=>e.startsWith(".")?a.endsWith(e):e.endsWith("/*")?l.startsWith("".concat(e.slice(0,-1))):l===e)}(l,B)){null==R||R("文件类型不支持:".concat(l.name));continue}if(l.size>u){null==R||R("文件过大(最大 ".concat(n(u),"):").concat(l.name));continue}t.add(e),a.push({id:"".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),file:l,status:"selected",progress:0,error:"",retryCount:0,previewUrl:l.type.startsWith("image/")?URL.createObjectURL(l):""})}}if(!a.length)return;let l=d?[...A.current,...a]:[a[a.length-1]];if(!d)for(let e of A.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);if(I(l),m&&!j)for(let e of a)P(e.id)},[B,m,c,u,d,R,j,P]),J=a.useCallback(e=>{let t=e.target.files;t&&(H(Array.from(t)),e.target.value="")},[H]),V=a.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation(),L(!1),c||H(Array.from(null!=(t=e.dataTransfer.files)?t:[]))},[H,c]);return(0,t.jsxs)("div",{className:(0,s.cn)("flex min-h-0 w-full flex-col gap-3",y),children:[(0,t.jsx)("input",{ref:U,id:S,type:"file",hidden:!0,accept:o,multiple:d,disabled:c,onChange:J}),(0,t.jsxs)("label",{htmlFor:S,onDragOver:e=>{e.preventDefault(),c||L(!0)},onDragLeave:e=>{e.preventDefault(),L(!1)},onDrop:V,className:(0,s.cn)("flex min-h-[124px] cursor-pointer flex-col items-center justify-center gap-1 rounded-lg border border-dashed border-[var(--ds-color-border-default)] px-4 py-6 text-center transition-colors hover:border-[var(--ds-color-border-hover)] hover:bg-[var(--ds-color-surface-main-tint)]",E&&"bg-[var(--ds-color-accent)]/5 border-[var(--ds-color-accent)]",c&&"cursor-not-allowed opacity-60"),children:[(0,t.jsx)(l.default,{name:"Upload",size:20,className:"text-[var(--ds-muted)]"}),(0,t.jsx)("div",{className:"text-[var(--ds-text)]",children:w}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:N})]}),z.length?(0,t.jsx)("div",{className:"space-y-2",children:z.map(e=>(0,t.jsx)("div",{className:"rounded-md border border-[var(--ds-color-border-default)] p-2.5",children:(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[var(--ds-text)]",children:e.file.name}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:n(e.file.size)}),e.previewUrl?(0,t.jsx)("img",{src:e.previewUrl,alt:e.file.name,className:"mt-2 h-14 w-14 rounded object-cover"}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsx)("div",{className:"mt-2 h-1.5 w-full overflow-hidden rounded bg-[var(--ds-color-surface-main-tint)]",children:(0,t.jsx)("div",{className:"h-full bg-[var(--ds-color-accent)] transition-all",style:{width:"".concat(e.progress,"%")}})}):null,"error"===e.status?(0,t.jsx)("div",{className:"mt-1 text-[var(--ds-danger)]",children:e.error||"上传失败"}):null]}),j?null:(0,t.jsxs)("div",{className:"flex items-center gap-1",children:["success"===e.status?(0,t.jsx)(l.default,{name:"CheckCircle2",size:16,className:"text-[var(--ds-color-accent)]"}):null,"selected"===e.status||"error"===e.status?(0,t.jsxs)(r.Button,{type:"button",size:"sm",variant:"outline",disabled:c,onClick:()=>P(e.id),children:["error"===e.status?(0,t.jsx)(l.default,{name:"RefreshCw",size:14,className:"mr-1"}):null,"error"===e.status?"重试":"上传"]}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsxs)(r.Button,{type:"button",size:"sm",variant:"outline",onClick:()=>F(e.id),children:[(0,t.jsx)(l.default,{name:"XCircle",size:14,className:"mr-1"}),"取消"]}):null]})]})},e.id))}):null,!j&&!m&&z.some(e=>"selected"===e.status||"error"===e.status)?(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(r.Button,{type:"button",size:"sm",onClick:W,disabled:c,children:"上传"})}):null]})}var o=e.i(65486),c=e.i(18805),d=e.i(61293);function u(e){let{open:l,onOpenChange:s,title:n,description:u,uploadUrl:m,resetKey:p}=e,[x,f]=(0,a.useState)(!1),[g,b]=(0,a.useState)(null),h=(0,a.useCallback)(()=>{s(!1),b(null)},[s]),v=(0,a.useCallback)(async()=>{if(!g)return void c.appToast.info("请先选择 zip 文件");let e=new FormData;e.append("file",g),f(!0);try{let t=await (0,d.bridgeFetch)(m,{method:"POST",body:e}),a=Number(t.imported||0),l=Number(t.overwritten||0),s=Array.isArray(t.rejected)?t.rejected.length:0;c.appToast.success("导入完成:导入 ".concat(a,",覆盖 ").concat(l)+(s>0?",拒绝 ".concat(s):"")),h()}catch(e){c.appToast.error("导入失败:".concat(e instanceof Error?e.message:String(e)))}finally{f(!1)}},[h,g,m]);return(0,t.jsx)(o.Dialog,{open:l,onOpenChange:e=>{s(e),e||b(null)},children:(0,t.jsxs)(o.DialogContent,{className:"flex min-h-[320px] max-w-[560px] flex-col",children:[(0,t.jsxs)(o.DialogHeader,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(o.DialogTitle,{children:n}),(0,t.jsx)(o.DialogDescription,{children:u})]}),(0,t.jsx)(o.DialogClose,{className:"sidebar-icon-btn","aria-label":"关闭",onClick:h,children:"✕"})]}),(0,t.jsxs)("div",{className:"m-3 flex flex-1 flex-col gap-3",children:[(0,t.jsx)(i,{uploadUrl:m,accept:".zip,application/zip",maxFileSize:0x3200000,multiple:!1,disabled:x,selectionOnly:!0,emptyTitle:"点击或拖拽 zip 文件到此处",emptyHint:"支持 .zip 格式,最大 50MB",onFilesChange:e=>{var t,a;b(null!=(a=null==(t=e[0])?void 0:t.file)?a:null)},onValidationError:e=>{c.appToast.info(e)}},"".concat(l?"open":"closed","-").concat(null!=p?p:m)),(0,t.jsxs)("div",{className:"mt-auto flex justify-end pt-2",children:[(0,t.jsx)(r.Button,{className:"mr-[12px]",type:"button",variant:"plain-outline",size:"lg",onClick:h,children:"取消"}),(0,t.jsx)(r.Button,{type:"button",size:"lg",variant:"default",disabled:x||null==g,onClick:()=>void v(),children:x?"导入中…":"确定"})]})]})]})})}},47284,e=>{"use strict";e.s(["ToolsManageView",()=>U],47284);var t=e.i(59992),a=e.i(65765),l=e.i(49377),s=e.i(36763),r=e.i(18805),n=e.i(41995),i=e.i(92369),o=e.i(84081),c=e.i(96214),d=e.i(85941),u=e.i(13014),m=e.i(78678),p=e.i(87655),x=e.i(55105);function f(e){let{items:l,saveBusy:s,onToggle:r,onExport:n,onRemove:i,className:o}=e,[f,g]=(0,a.useState)(""),b=(0,a.useMemo)(()=>l.filter(e=>(function(e,t){var a,l;let s=t.trim().toLowerCase();if(!s)return!0;let r="system"===e.layer?"系统":"agent"===e.layer?"Agent":"";return"".concat(e.name," ").concat(null!=(a=e.label)?a:""," ").concat(null!=(l=e.description)?l:""," ").concat(r).toLowerCase().includes(s)})(e,f)),[l,f]),h=[{key:"name",title:"名称",headerClassName:"",cellClassName:"",render:e=>{let a=e.label||e.name;return(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{children:a}),(0,t.jsx)(m.StatusBadge,{tone:e.enabled?"success":"default",children:e.enabled?"启用":"未启用"})]})}},{key:"layer",title:"层级",headerClassName:"w-[88px]",cellClassName:"w-[88px] whitespace-nowrap text-[var(--ds-text)]",render:e=>"system"===e.layer?"系统":"agent"===e.layer?"Agent":"-"},{key:"description",title:"详情",headerClassName:"",cellClassName:"",render:e=>e.description||"-"},{key:"enabled",title:"启用/未启用",headerClassName:"",cellClassName:"whitespace-nowrap text-[var(--ds-text)]",render:e=>(0,t.jsx)("span",{className:"inline-flex items-center gap-2",children:(0,t.jsx)(c.AccentSwitch,{checked:!!e.enabled,disabled:s,onCheckedChange:t=>r(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] ",cellClassName:"w-[128px]",render:e=>{let a=!0===e.canManage;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(d.IconTooltipButton,{icon:"Download",label:a?"导出":"系统内置工具不可导出",ariaLabel:"导出 ".concat(e.label||e.name),disabled:s||!a,onClick:()=>n(e.name)}),(0,t.jsx)(d.IconTooltipButton,{icon:"Trash2",label:a?"删除":"系统内置工具不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.label||e.name),disabled:s||!a,onClick:()=>{i(e.name)}})]})}}],v=f.trim();return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(x.Input,{type:"search",value:f,onChange:e=>g(e.target.value),placeholder:"搜索名称 / 详情 / 层级",className:"h-8 pl-8","aria-label":"搜索工具"}),(0,t.jsx)(p.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)(u.AppTable,{rows:b,columns:h,getRowKey:e=>"tools:".concat(e.name),className:o,emptyText:v?"未找到匹配工具":void 0})]})}var g=e.i(10602),b=e.i(84919);function h(e){let{open:a,onOpenChange:l,wsUrl:s,apiBase:r,agent:n}=e;return(0,t.jsx)(b.ResourceImportDialog,{open:a,onOpenChange:l,title:"导入工具 zip",description:"选择一个 zip 文件并导入到 tools-runtime。",uploadUrl:(0,g.buildToolsRuntimeImportUrl)(s,r,n),resetKey:n})}var v=e.i(40751);let j=[["name","稳定工具名,与 agent.json.tools 白名单对应"],["call","工具执行入口"],["inputSchema","Zod schema,定义 LLM 入参"],["description","工具描述,可为 async 函数"],["prompt","返回给模型的使用说明,可为 async 函数"],["mapToolResultToToolResultBlockParam","将执行结果映射为 API tool_result 块"]],y=["包目录位于 tools-runtime/<package-name>/,包名使用 kebab-case","包根目录存在 index.js / index.cjs / index.mjs 之一,宿主不会加载源码 TS","入口导出 Tool 对象,工具 name 稳定且唯一","initWsSession 正确处理 ready / skipped / failed",'agent.json.tools 包含工具名或 "*",且未被 disallowedTools 禁用',"GET /api/tools?agent=<id> 中工具 enabled: true 且 readiness: ready"];function w(e){let{index:a,title:l,children:s,className:r}=e;return(0,t.jsxs)("section",{className:"rounded-xl border border-[var(--ds-color-border-default)] bg-[var(--surface-1)] p-4 ".concat(null!=r?r:""),children:[(0,t.jsxs)("div",{className:"mb-3 flex items-center gap-3",children:[(0,t.jsx)("span",{className:"flex size-7 shrink-0 items-center justify-center rounded-full bg-[var(--ds-color-accent)] text-base font-semibold text-[var(--surface-1)]",children:a}),(0,t.jsx)("h3",{className:"text-base font-semibold text-[var(--ds-text)]",children:l})]}),s]})}function N(e){let{open:a,onOpenChange:l}=e;return(0,t.jsx)(v.AppDialog,{open:a,onOpenChange:l,title:"工具接入说明",width:"max-w-4xl",footer:(0,t.jsx)(i.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:()=>l(!1),children:"我知道了"}),children:(0,t.jsxs)("div",{className:"flex max-h-[72vh] flex-col gap-4 overflow-y-auto pr-1 text-sm text-[var(--ds-text)]",children:[(0,t.jsx)(w,{index:1,title:"概念",children:(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)("span",{className:"bg-[var(--ds-color-accent)]/10 mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg text-[var(--ds-color-accent)]",children:(0,t.jsx)(p.default,{name:"Wrench",size:18})}),(0,t.jsxs)("p",{className:"min-w-0 leading-6 text-[var(--ds-muted)]",children:["Runtime Tool 是磁盘上的独立工具包,放在",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"tools-runtime/<package-name>/"}),"下。宿主与工具包只通过编译入口的导出契约通信,互不 import 对方源码。"]})]})}),(0,t.jsxs)(w,{index:2,title:"存放路径",children:[(0,t.jsx)("pre",{className:"overflow-x-auto rounded-lg bg-[var(--ds-color-surface-sidebar)] p-3 text-xs leading-5 text-[var(--ds-text)]",children:"<WS_AGENTS_ROOT>/tools-runtime/<package-name>/\n index.cjs # 必选:编译后的单文件入口\n package.json # 可选\n build.ts # 可选\n src/ # 可选,宿主不加载"}),(0,t.jsxs)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:["默认 WS_AGENTS_ROOT 为项目下的",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:".ws-agents"}),",宿主按",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:".js > .cjs > .mjs"}),"优先级加载入口。agent 层同名包会覆盖 system 层包。"]})]}),(0,t.jsx)(w,{index:3,title:"接入方式",children:(0,t.jsxs)("div",{className:"space-y-3 text-[var(--ds-muted)]",children:[(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"手工放置:"}),"在 .ws-agents/tools-runtime/ 下创建包目录并完成构建,重启会话或触发 reloadDynamicTools。"]}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"Zip 导入:"}),"zip 内必须是单根目录结构,例如 my-tool/index.cjs。"]}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"内置 system 包:"}),"发布到 packages/agent/tools-runtime,用户可用 agent 层同名包覆盖。"]})]})}),(0,t.jsxs)(w,{index:4,title:"包内必须实现的契约",children:[(0,t.jsx)("p",{className:"mt-2 leading-6 text-[var(--ds-muted)]",children:"入口模块需导出至少一个 Tool 对象,可使用 default、tools 数组或命名导出。"}),(0,t.jsx)("div",{className:"mt-3 grid gap-2",children:j.map(e=>{let[a,l]=e;return(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--ds-color-border-default)] bg-[var(--surface-1)] px-3 py-2",children:[(0,t.jsx)("code",{className:"text-base font-semibold text-[var(--ds-color-accent)]",children:a}),(0,t.jsx)("p",{className:"mt-1 text-base leading-5 text-[var(--ds-muted)]",children:l})]},a)})}),(0,t.jsx)("div",{className:"mt-4 rounded-lg border border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-sidebar)] p-3",children:(0,t.jsxs)("p",{className:"leading-6 text-[var(--ds-muted)]",children:["生产包推荐实现",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--surface-1)] px-1.5 py-0.5",children:"initWsSession"}),",返回 ready 才会进入 LLM 工具列表;skipped 或 failed 不会暴露。未实现时默认 ready。"]})})]}),(0,t.jsx)(w,{index:5,title:"最小示例",children:(0,t.jsxs)("p",{className:"leading-6 text-[var(--ds-muted)]",children:["最小包通常包含 package.json、build.ts 和 src/index.ts,构建后在包根目录产出",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"index.cjs"}),"。若 package.json 使用",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"type: module"}),",优先产出 index.cjs,避免 ESM/CJS 冲突。"]})}),(0,t.jsxs)(w,{index:6,title:"在 agent 中启用",children:[(0,t.jsx)("pre",{className:"overflow-x-auto rounded-lg bg-[var(--ds-color-surface-sidebar)] p-3 text-base leading-5 text-[var(--ds-text)]",children:'{\n "tools": ["HelloTool"]\n}'}),(0,t.jsxs)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:'"*"'}),"暴露全部已加载且 ready 的 runtime 工具;",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"[]"}),"不暴露任何 runtime 工具。MCP 工具由 mcpServers 单独控制。"]})]}),(0,t.jsxs)(w,{index:7,title:"宿主加载流程",children:[(0,t.jsx)("div",{className:"rounded-lg bg-[var(--ds-color-surface-sidebar)] p-3 text-base leading-6 text-[var(--ds-muted)]",children:"discoverRuntimePackages → dynamic import index.* → initWsSession → extractToolsFromModule → agent.json.tools 白名单过滤 → LLM 可见工具列表"}),(0,t.jsx)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:"触发时机包括 WS 会话 init、reloadDynamicTools,以及带 agent 参数的 GET /api/tools。 可通过 CLAUDE_CODE_RUNTIME_TOOLS_ENABLED=0 关闭 runtime 工具。"})]}),(0,t.jsx)(w,{index:8,title:"参考实现",children:(0,t.jsxs)("div",{className:"space-y-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("p",{children:"schedule-tool:会话级 init、agent 白名单、文件持久化。"}),(0,t.jsx)("p",{children:"git-tool:环境变量驱动、ready / skipped / failed 状态。"}),(0,t.jsx)("p",{children:"code-tool:通过 buildSessionAppend 追加会话上下文。"})]})}),(0,t.jsx)(w,{index:9,title:"验收清单",children:(0,t.jsx)("ul",{className:"grid gap-2",children:y.map(e=>(0,t.jsxs)("li",{className:"flex gap-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)(p.default,{name:"CheckCircle2",size:16,className:"mt-1 shrink-0 text-[var(--ds-color-accent)]"}),(0,t.jsx)("span",{children:e})]},e))})}),(0,t.jsx)(w,{index:10,title:"常见问题",children:(0,t.jsxs)("div",{className:"space-y-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("p",{children:"放了包但工具不可见:确认已构建 index.*、initWsSession 返回 ready、白名单包含工具名。"}),(0,t.jsx)("p",{children:"installed-list 有但会话 disabled:通常是 init 返回 skipped/failed,或未通过 agent 白名单。"}),(0,t.jsx)("p",{children:"同名工具冲突:agent 层覆盖 system 层;同一层内工具 name 重复时后者会被去重丢弃。"})]})})]})})}var k=e.i(28661),C=e.i(15692),T=e.i(99329);function R(e){return(null!=e.packageId?String(e.packageId).trim():"")||e.name}function S(e){let t=null!=e.packageId?String(e.packageId).trim():"";return!0===e.deletable&&t.length>0}function U(){let e=(0,l.useAppStore)(e=>e.wsUrl),c=(0,l.useAppStore)(e=>e.apiBase),d=(0,l.useAppStore)(e=>e.agentConfig),u=(0,l.useAppStore)(e=>e.patchAgentConfig),{currentAgent:m,loadAgentConfig:x}=(0,s.useSession)(),g=(0,n.usePersistAgentConfigField)("tools"),b=d.tools,[v,j]=(0,a.useState)([]),[y,w]=(0,a.useState)(!1),[U,M]=(0,a.useState)(!1),[D,A]=(0,a.useState)(!1),[E,L]=(0,a.useState)(!1);(0,a.useEffect)(()=>{x()},[x]);let z=(0,a.useCallback)(async(e,t)=>{M(!0);try{await g(e,{silent:t})}finally{M(!1)}},[g]),I=(0,a.useCallback)(async()=>{j([]),w(!0);try{var t;let a=await (0,T.listInstalledTools)(e,c,m());j(null!=(t=a.tools)?t:[])}catch(e){j([]),r.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{w(!1)}},[e,c,m]);(0,a.useEffect)(()=>{I()},[I]);let B=(0,a.useCallback)(e=>v.find(t=>t.name===e),[v]),O=(0,a.useMemo)(()=>v.slice().sort((e,t)=>e.name.localeCompare(t.name)).map(e=>(function(e,t){var a;let l=null!=e.packageName?String(e.packageName).trim():"";return{name:e.name,label:(e.displayName&&e.displayName!==e.name?"".concat(e.displayName," · "):"")+e.name,description:null!=(a=e.searchHint)?a:"",enabled:t,packageId:l,canManage:S({deletable:e.deletable,packageId:l}),layer:e.layer}})(e,b.includes(e.name))),[v,b]),_=(0,a.useCallback)(async t=>{let a=B(t);if(!a||!S({deletable:a.deletable,packageId:a.packageName}))return void r.appToast.error("系统内置工具不可删除");if(await (0,k.confirmAlertDialog)({title:"确认删除工具包?",description:"工具名:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,T.deleteRuntimeTool)(e,c,m(),R({packageId:a.packageName,name:a.name}));let l=b.filter(e=>e!==t);u({tools:l}),await z(l,!0),await I()}catch(e){r.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[B,e,c,m,b,u,z,I]),P=(0,a.useCallback)(t=>{let a=B(t);if(!a||!S({deletable:a.deletable,packageId:a.packageName}))return void r.appToast.error("系统内置工具不可导出");window.open((0,T.exportRuntimeToolUrl)(e,c,m(),R({packageId:a.packageName,name:a.name})),"_blank","noopener")},[B,e,c,m]),F=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...b,e])].sort():b.filter(t=>t!==e).sort();u({tools:a}),z(a,!0)},[b,u,z]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(C.ManageChromeHeaderActions,{children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsxs)(i.Button,{type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>A(!0),children:[(0,t.jsx)(p.default,{name:"Info",size:16,className:"align-middle"}),"工具说明"]}),(0,t.jsxs)(i.Button,{id:"btnAgentPickerToolImport",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>L(!0),children:[(0,t.jsx)(p.default,{name:"Import",size:16,className:"align-middle"}),"导入自定义工具"]})]})}),y?(0,t.jsx)(o.Loading,{text:"加载中…",className:"min-h-[200px]"}):(0,t.jsx)(f,{items:O,saveBusy:U,onToggle:F,onExport:P,onRemove:_}),(0,t.jsx)(h,{open:E,onOpenChange:e=>{L(e),e||I()},wsUrl:e,apiBase:c,agent:m()}),(0,t.jsx)(N,{open:D,onOpenChange:A})]})}}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,92715,e=>{"use strict";e.s(["AppTable",()=>u],92715);var t=e.i(18050),a=e.i(85413),l=e.i(71645),s=e.i(75157);let r=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:a,className:(0,s.cn)("w-full caption-bottom border-collapse",l),...r})})});r.displayName="Table";let n=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("thead",{ref:a,className:(0,s.cn)("[&_tr]:table [&_tr]:w-full [&_tr]:table-fixed [&_tr]:border-b",l),...r})});n.displayName="TableHeader";let i=l.forwardRef((e,a)=>{let{className:r,viewportFit:n=!0,viewportReserveBottom:i=16,viewportPaginationReserve:o=0,style:c,...d}=e,u=l.useRef(null),m=l.useCallback(e=>{u.current=e,"function"==typeof a?a(e):a&&(a.current=e)},[a]),[p,x]=l.useState(void 0);return l.useLayoutEffect(()=>{var e,t;if(!n)return void x(void 0);let a=()=>{var e,t;let a=u.current;if(!a)return;let l=a.getBoundingClientRect().top;x(Math.max(80,Math.floor((null!=(t=null==(e=window.visualViewport)?void 0:e.height)?t:window.innerHeight)-l-(i+o))))};a();let l=new ResizeObserver(()=>{a()});try{l.observe(document.body)}catch(e){}return window.addEventListener("resize",a),null==(e=window.visualViewport)||e.addEventListener("resize",a),null==(t=window.visualViewport)||t.addEventListener("scroll",a),window.addEventListener("scroll",a,!0),()=>{var e,t;l.disconnect(),window.removeEventListener("resize",a),null==(e=window.visualViewport)||e.removeEventListener("resize",a),null==(t=window.visualViewport)||t.removeEventListener("scroll",a),window.removeEventListener("scroll",a,!0)}},[n,i,o]),(0,t.jsx)("tbody",{ref:m,className:(0,s.cn)("block overflow-y-auto [&_tr:last-child]:border-b-0 [&_tr:last-child_td]:border-b-0 [&_tr]:table [&_tr]:w-full [&_tr]:table-fixed",r),style:n&&void 0!==p?{...c,maxHeight:p}:c,...d})});i.displayName="TableBody";let o=l.forwardRef((e,a)=>{let{className:l,hoverable:r=!0,...n}=e;return(0,t.jsx)("tr",{ref:a,className:(0,s.cn)("border-b transition-colors [&>td]:transition-colors data-[state=selected]:[&>td]:!bg-[var(--ds-color-surface-item-active)]",r&&"group/table-row",l),...n})});o.displayName="TableRow";let c=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("th",{ref:a,className:(0,s.cn)("h-10 border-b border-[var(--ds-color-border-subtle)] bg-[var(--surface-2)] px-3 text-left align-middle text-[14px] font-medium !text-[var(--ds-text)] text-muted-foreground",l),...r})});c.displayName="TableHead";let d=l.forwardRef((e,a)=>{let{className:l,...r}=e;return(0,t.jsx)("td",{ref:a,className:(0,s.cn)("border-x-0 border-b border-t-0 border-solid border-[var(--ds-color-border-subtle)] p-3 align-middle transition-colors group-has-[td:hover]/table-row:!bg-[var(--ds-color-surface-item-hover)]",l),...r})});function u(e){let{rows:l,columns:u,getRowKey:m,className:p,rowClassName:x,headerRowClassName:f,emptyText:g,emptyNode:b,bodyProps:h}=e;return(0,t.jsx)("div",{className:(0,s.cn)("overflow-hidden border border-[var(--ds-color-border-default)]",p),children:(0,t.jsxs)(r,{children:[(0,t.jsx)(n,{children:(0,t.jsx)(o,{className:(0,s.cn)("bg-[var(--ds-color-surface-main-tint)] hover:bg-[var(--ds-color-surface-main-tint)]",f),children:u.map(e=>(0,t.jsx)(c,{className:e.headerClassName,children:e.title},e.key))})}),(0,t.jsx)(i,{...h,children:l.length?l.map(e=>(0,t.jsx)(o,{className:"function"==typeof x?x(e):x,children:u.map(a=>(0,t.jsx)(d,{className:a.cellClassName,children:a.render(e)},a.key))},m(e))):(0,t.jsx)(o,{hoverable:!1,children:(0,t.jsx)(d,{colSpan:u.length,className:"py-6",children:null!=b?b:(0,t.jsx)(a.Empty,{text:g})})})})]})})}d.displayName="TableCell"},55242,e=>{"use strict";e.s(["AppDialog",()=>r]);var t=e.i(18050),a=e.i(71645),l=e.i(76639),s=e.i(75157);function r(e){let{open:r,onOpenChange:n,title:i,children:o,footer:c,width:d="max-w-3xl",minHeight:u}=e,m=(0,a.useId)();return(0,t.jsx)(l.Dialog,{open:r,onOpenChange:n,children:(0,t.jsxs)(l.DialogContent,{"aria-labelledby":m,className:(0,s.cn)(d,u?"!min-h-[--min-h]":""),style:u?{"--min-h":u}:void 0,children:[(0,t.jsxs)(l.DialogHeader,{children:[(0,t.jsx)(l.DialogTitle,{id:m,children:i}),(0,t.jsx)(l.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(l.DialogBody,{className:"!px-4 !py-3",children:o}),c?(0,t.jsx)("div",{className:"flex flex-shrink-0 justify-end gap-2 border-t border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-sidebar)] px-4 py-3",children:c}):null]})})}},62427,e=>{"use strict";e.s(["clearRuntimeMcpItemConfig",()=>y,"deleteRuntimeMcp",()=>m,"deleteRuntimeSkill",()=>w,"deleteRuntimeTool",()=>u,"exportRuntimeMcpUrl",()=>x,"exportRuntimeSkillUrl",()=>N,"exportRuntimeToolUrl",()=>p,"importRuntimeMcp",()=>g,"importRuntimeTool",()=>f,"installCloudSkill",()=>C,"listBaseSkills",()=>r,"listCloudSkillCatalog",()=>k,"listInstalledSkills",()=>n,"listInstalledTools",()=>s,"listMcpServers",()=>l,"listRuntimeMcpPackages",()=>d,"listRuntimeTools",()=>c,"loadBaseSkillMd",()=>i,"loadRemoteMcpJson",()=>b,"loadRuntimeMcpItemConfig",()=>v,"saveBaseSkillMd",()=>o,"saveRemoteMcpJson",()=>h,"saveRuntimeMcpItemConfig",()=>j]);var t=e.i(29250),a=e.i(36845);async function l(e,l,s){let r=await (0,t.get)((0,a.buildMcpServersListUrl)(e,l,s));return{servers:Array.isArray(r.servers)?r.servers:[]}}async function s(e,l,s){let r=await (0,t.get)((0,a.buildToolInstalledListUrl)(e,l,s));return{tools:Array.isArray(r.tools)?r.tools:[]}}async function r(e,l,s){let r=await (0,t.get)((0,a.buildSkillBaseListUrl)(e,l,s));return{skills:Array.isArray(r.skills)?r.skills:[]}}async function n(e,l,s){let r=await (0,t.get)((0,a.buildSkillInstalledListUrl)(e,l,s));return{skills:Array.isArray(r.skills)?r.skills:[]}}async function i(e,l,s,r){return(0,t.get)((0,a.buildBaseSkillMdUrl)(e,l,s,r))}async function o(e,l,s,r,n){await (0,t.put)((0,a.buildBaseSkillMdUrl)(e,l,s,r),{content:n})}async function c(e,l,s){let r=await (0,t.get)((0,a.buildToolsRuntimeFilesUrl)(e,l,s));return{runtimeToolsDir:"string"==typeof r.runtimeToolsDir?r.runtimeToolsDir:"",items:Array.isArray(r.items)?r.items.filter(e=>!!(e&&e.id)):[]}}async function d(e,l,s){let r=await (0,t.get)((0,a.buildMcpRuntimeFilesUrl)(e,l,s));return{mcpRuntimeDir:"string"==typeof r.mcpRuntimeDir?r.mcpRuntimeDir:"",items:Array.isArray(r.items)?r.items.filter(e=>!!(e&&e.id)):[]}}async function u(e,l,s,r){return(0,t.del)((0,a.buildToolsRuntimeDeleteUrl)(e,l,s,r))}async function m(e,l,s,r){return(0,t.del)((0,a.buildMcpRuntimeDeleteUrl)(e,l,s,r))}function p(e,t,l,s){return(0,a.buildToolsRuntimeExportUrl)(e,t,l,s)}function x(e,t,l,s){return(0,a.buildMcpRuntimeExportUrl)(e,t,l,s)}async function f(e,l,s,r){let n=new FormData;return n.append("file",r),(0,t.post)((0,a.buildToolsRuntimeImportUrl)(e,l,s),n,{type:"file"})}async function g(e,l,s,r){let n=new FormData;return n.append("file",r),(0,t.post)((0,a.buildMcpRuntimeImportUrl)(e,l,s),n,{type:"file"})}async function b(e,l,s){return(0,t.get)((0,a.buildRemoteMcpJsonUrl)(e,l,s))}async function h(e,l,s,r){await (0,t.post)((0,a.buildRemoteMcpJsonUrl)(e,l,s),{content:r})}async function v(e,l,s,r,n){return(0,t.get)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,s,r,n))}async function j(e,l,s,r,n,i){await (0,t.put)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,s,r,n),{server:i})}async function y(e,l,s,r,n){await (0,t.del)((0,a.buildRuntimeMcpItemConfigUrl)(e,l,s,r,n))}async function w(e,l,s,r){return(0,t.del)((0,a.buildSkillsRuntimeDeleteUrl)(e,l,s,r))}function N(e,t,l,s){return(0,a.buildSkillsRuntimeExportUrl)(e,t,l,s)}async function k(e,l,s,r,n,i){let o=await (0,t.get)((0,a.buildCloudSkillCatalogUrl)(e,l,s,r,n,i));return{items:Array.isArray(o.items)?o.items:[],totalPages:Number(o.totalPages||0)}}async function C(e,l,s,r){await (0,t.post)((0,a.buildCloudSkillInstallUrl)(e,l,s),{id:r})}},53925,e=>{"use strict";e.s(["ResourceImportDialog",()=>u],53925);var t=e.i(18050),a=e.i(71645),l=e.i(72064),s=e.i(75157),r=e.i(19455);function n(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(1)," KB"):"".concat((e/1048576).toFixed(1)," MB")}function i(e){let{uploadUrl:i,accept:o,disabled:c=!1,multiple:d=!1,maxFileSize:u=0x3200000,autoUpload:m=!1,method:p="POST",transport:x="xhr",fieldName:f="file",headers:g,extraFormData:b,autoRetryTimes:h=0,autoRetryDelayMs:v=800,selectionOnly:j=!1,className:y,emptyTitle:w="点击或拖拽文件到此处",emptyHint:N="支持上传文件",onFilesChange:k,onUploadSuccess:C,onUploadError:T,onValidationError:R}=e,S=a.useId(),U=a.useRef(null),M=a.useRef(new Map),D=a.useRef(new Map),A=a.useRef([]),[E,L]=a.useState(!1),[z,I]=a.useState([]),B=a.useMemo(()=>o?o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean):[],[o]);a.useEffect(()=>{A.current=z,null==k||k(z)},[z,k]),a.useEffect(()=>()=>{for(let e of M.current.values())e.abort();for(let e of D.current.values())e.abort();for(let e of A.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl)},[]);let O=a.useCallback((e,t)=>{I(a=>a.map(a=>a.id===e?{...a,...t}:a))},[]),_=a.useCallback(async(e,t)=>{let a=A.current.find(t=>t.id===e);if(!a||c)return;O(e,{status:t>0?"retrying":"uploading",progress:0,error:"",retryCount:t});let l=new FormData;if(b)for(let[e,t]of Object.entries(b))l.append(e,t);l.append(f,a.file);try{let t="";if("fetch"===x){let a=new AbortController;D.current.set(e,a);let s=await fetch(i,{method:p,headers:g,body:l,signal:a.signal}),r=await s.text();try{t=r?JSON.parse(r):""}catch(e){t=r}if(!s.ok)throw Error("上传失败:".concat(s.status," ").concat(s.statusText))}else t=await new Promise((t,a)=>{let s=new XMLHttpRequest;if(M.current.set(e,s),s.open(p,i,!0),g)for(let[e,t]of Object.entries(g))s.setRequestHeader(e,t);s.upload.onprogress=t=>{if(!t.lengthComputable)return;let a=Math.min(100,Math.round(t.loaded/t.total*100));O(e,{progress:a})},s.onerror=()=>a(Error("网络异常,上传失败")),s.onabort=()=>a(Error("__ABORTED__")),s.onload=()=>{s.status>=200&&s.status<300?t(function(e){let t=e.responseText||"";try{return JSON.parse(t)}catch(e){return t}}(s)):a(Error("上传失败:".concat(s.status," ").concat(s.statusText)))},s.send(l)});O(e,{status:"success",progress:100,error:""});let a=A.current.find(t=>t.id===e);a&&(null==C||C(a,t))}catch(s){let a=s instanceof Error?s.message:String(s);if("__ABORTED__"===a)return void O(e,{status:"selected",progress:0,error:""});if(t<h){O(e,{status:"retrying",error:"重试中(".concat(t+1,"/").concat(h,")")}),await new Promise(e=>window.setTimeout(e,v)),await _(e,t+1);return}O(e,{status:"error",error:a});let l=A.current.find(t=>t.id===e);l&&(null==T||T(l,a))}finally{M.current.delete(e),D.current.delete(e)}},[v,h,c,b,f,g,p,T,C,x,O,i]),P=a.useCallback(e=>{_(e,0)},[_]),F=a.useCallback(e=>{var t,a;null==(t=M.current.get(e))||t.abort(),null==(a=D.current.get(e))||a.abort()},[]),W=a.useCallback(()=>{for(let e of A.current)("selected"===e.status||"error"===e.status)&&P(e.id)},[P]),H=a.useCallback(e=>{if(c||!e.length)return;let t=new Set(A.current.map(e=>"".concat(e.file.name,"::").concat(e.file.size))),a=[];for(let l of e){let e="".concat(l.name,"::").concat(l.size);if(!t.has(e)){if(!function(e,t){if(!t.length)return!0;let a=e.name.toLowerCase(),l=(e.type||"").toLowerCase();return t.some(e=>e.startsWith(".")?a.endsWith(e):e.endsWith("/*")?l.startsWith("".concat(e.slice(0,-1))):l===e)}(l,B)){null==R||R("文件类型不支持:".concat(l.name));continue}if(l.size>u){null==R||R("文件过大(最大 ".concat(n(u),"):").concat(l.name));continue}t.add(e),a.push({id:"".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),file:l,status:"selected",progress:0,error:"",retryCount:0,previewUrl:l.type.startsWith("image/")?URL.createObjectURL(l):""})}}if(!a.length)return;let l=d?[...A.current,...a]:[a[a.length-1]];if(!d)for(let e of A.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);if(I(l),m&&!j)for(let e of a)P(e.id)},[B,m,c,u,d,R,j,P]),J=a.useCallback(e=>{let t=e.target.files;t&&(H(Array.from(t)),e.target.value="")},[H]),V=a.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation(),L(!1),c||H(Array.from(null!=(t=e.dataTransfer.files)?t:[]))},[H,c]);return(0,t.jsxs)("div",{className:(0,s.cn)("flex min-h-0 w-full flex-col gap-3",y),children:[(0,t.jsx)("input",{ref:U,id:S,type:"file",hidden:!0,accept:o,multiple:d,disabled:c,onChange:J}),(0,t.jsxs)("label",{htmlFor:S,onDragOver:e=>{e.preventDefault(),c||L(!0)},onDragLeave:e=>{e.preventDefault(),L(!1)},onDrop:V,className:(0,s.cn)("flex min-h-[124px] cursor-pointer flex-col items-center justify-center gap-1 rounded-lg border border-dashed border-[var(--ds-color-border-default)] px-4 py-6 text-center transition-colors hover:border-[var(--ds-color-border-hover)] hover:bg-[var(--ds-color-surface-main-tint)]",E&&"bg-[var(--ds-color-accent)]/5 border-[var(--ds-color-accent)]",c&&"cursor-not-allowed opacity-60"),children:[(0,t.jsx)(l.default,{name:"Upload",size:20,className:"text-[var(--ds-muted)]"}),(0,t.jsx)("div",{className:"text-[var(--ds-text)]",children:w}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:N})]}),z.length?(0,t.jsx)("div",{className:"space-y-2",children:z.map(e=>(0,t.jsx)("div",{className:"rounded-md border border-[var(--ds-color-border-default)] p-2.5",children:(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[var(--ds-text)]",children:e.file.name}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:n(e.file.size)}),e.previewUrl?(0,t.jsx)("img",{src:e.previewUrl,alt:e.file.name,className:"mt-2 h-14 w-14 rounded object-cover"}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsx)("div",{className:"mt-2 h-1.5 w-full overflow-hidden rounded bg-[var(--ds-color-surface-main-tint)]",children:(0,t.jsx)("div",{className:"h-full bg-[var(--ds-color-accent)] transition-all",style:{width:"".concat(e.progress,"%")}})}):null,"error"===e.status?(0,t.jsx)("div",{className:"mt-1 text-[var(--ds-danger)]",children:e.error||"上传失败"}):null]}),j?null:(0,t.jsxs)("div",{className:"flex items-center gap-1",children:["success"===e.status?(0,t.jsx)(l.default,{name:"CheckCircle2",size:16,className:"text-[var(--ds-color-accent)]"}):null,"selected"===e.status||"error"===e.status?(0,t.jsxs)(r.Button,{type:"button",size:"sm",variant:"outline",disabled:c,onClick:()=>P(e.id),children:["error"===e.status?(0,t.jsx)(l.default,{name:"RefreshCw",size:14,className:"mr-1"}):null,"error"===e.status?"重试":"上传"]}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsxs)(r.Button,{type:"button",size:"sm",variant:"outline",onClick:()=>F(e.id),children:[(0,t.jsx)(l.default,{name:"XCircle",size:14,className:"mr-1"}),"取消"]}):null]})]})},e.id))}):null,!j&&!m&&z.some(e=>"selected"===e.status||"error"===e.status)?(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(r.Button,{type:"button",size:"sm",onClick:W,disabled:c,children:"上传"})}):null]})}var o=e.i(76639),c=e.i(13354),d=e.i(29250);function u(e){let{open:l,onOpenChange:s,title:n,description:u,uploadUrl:m,resetKey:p}=e,[x,f]=(0,a.useState)(!1),[g,b]=(0,a.useState)(null),h=(0,a.useCallback)(()=>{s(!1),b(null)},[s]),v=(0,a.useCallback)(async()=>{if(!g)return void c.appToast.info("请先选择 zip 文件");let e=new FormData;e.append("file",g),f(!0);try{let t=await (0,d.bridgeFetch)(m,{method:"POST",body:e}),a=Number(t.imported||0),l=Number(t.overwritten||0),s=Array.isArray(t.rejected)?t.rejected.length:0;c.appToast.success("导入完成:导入 ".concat(a,",覆盖 ").concat(l)+(s>0?",拒绝 ".concat(s):"")),h()}catch(e){c.appToast.error("导入失败:".concat(e instanceof Error?e.message:String(e)))}finally{f(!1)}},[h,g,m]);return(0,t.jsx)(o.Dialog,{open:l,onOpenChange:e=>{s(e),e||b(null)},children:(0,t.jsxs)(o.DialogContent,{className:"flex min-h-[320px] max-w-[560px] flex-col",children:[(0,t.jsxs)(o.DialogHeader,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(o.DialogTitle,{children:n}),(0,t.jsx)(o.DialogDescription,{children:u})]}),(0,t.jsx)(o.DialogClose,{className:"sidebar-icon-btn","aria-label":"关闭",onClick:h,children:"✕"})]}),(0,t.jsxs)("div",{className:"m-3 flex flex-1 flex-col gap-3",children:[(0,t.jsx)(i,{uploadUrl:m,accept:".zip,application/zip",maxFileSize:0x3200000,multiple:!1,disabled:x,selectionOnly:!0,emptyTitle:"点击或拖拽 zip 文件到此处",emptyHint:"支持 .zip 格式,最大 50MB",onFilesChange:e=>{var t,a;b(null!=(a=null==(t=e[0])?void 0:t.file)?a:null)},onValidationError:e=>{c.appToast.info(e)}},"".concat(l?"open":"closed","-").concat(null!=p?p:m)),(0,t.jsxs)("div",{className:"mt-auto flex justify-end pt-2",children:[(0,t.jsx)(r.Button,{className:"mr-[12px]",type:"button",variant:"plain-outline",size:"lg",onClick:h,children:"取消"}),(0,t.jsx)(r.Button,{type:"button",size:"lg",variant:"default",disabled:x||null==g,onClick:()=>void v(),children:x?"导入中…":"确定"})]})]})]})})}},19573,e=>{"use strict";e.s(["ToolsManageView",()=>U],19573);var t=e.i(18050),a=e.i(71645),l=e.i(65934),s=e.i(87243),r=e.i(13354),n=e.i(50711),i=e.i(19455),o=e.i(2839),c=e.i(94055),d=e.i(94197),u=e.i(92715),m=e.i(36413),p=e.i(72064),x=e.i(93479);function f(e){let{items:l,saveBusy:s,onToggle:r,onExport:n,onRemove:i,className:o}=e,[f,g]=(0,a.useState)(""),b=(0,a.useMemo)(()=>l.filter(e=>(function(e,t){var a,l;let s=t.trim().toLowerCase();if(!s)return!0;let r="system"===e.layer?"系统":"agent"===e.layer?"Agent":"";return"".concat(e.name," ").concat(null!=(a=e.label)?a:""," ").concat(null!=(l=e.description)?l:""," ").concat(r).toLowerCase().includes(s)})(e,f)),[l,f]),h=[{key:"name",title:"名称",headerClassName:"",cellClassName:"",render:e=>{let a=e.label||e.name;return(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{children:a}),(0,t.jsx)(m.StatusBadge,{tone:e.enabled?"success":"default",children:e.enabled?"启用":"未启用"})]})}},{key:"layer",title:"层级",headerClassName:"w-[88px]",cellClassName:"w-[88px] whitespace-nowrap text-[var(--ds-text)]",render:e=>"system"===e.layer?"系统":"agent"===e.layer?"Agent":"-"},{key:"description",title:"详情",headerClassName:"",cellClassName:"",render:e=>e.description||"-"},{key:"enabled",title:"启用/未启用",headerClassName:"",cellClassName:"whitespace-nowrap text-[var(--ds-text)]",render:e=>(0,t.jsx)("span",{className:"inline-flex items-center gap-2",children:(0,t.jsx)(c.AccentSwitch,{checked:!!e.enabled,disabled:s,onCheckedChange:t=>r(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] ",cellClassName:"w-[128px]",render:e=>{let a=!0===e.canManage;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(d.IconTooltipButton,{icon:"Download",label:a?"导出":"系统内置工具不可导出",ariaLabel:"导出 ".concat(e.label||e.name),disabled:s||!a,onClick:()=>n(e.name)}),(0,t.jsx)(d.IconTooltipButton,{icon:"Trash2",label:a?"删除":"系统内置工具不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.label||e.name),disabled:s||!a,onClick:()=>{i(e.name)}})]})}}],v=f.trim();return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(x.Input,{type:"search",value:f,onChange:e=>g(e.target.value),placeholder:"搜索名称 / 详情 / 层级",className:"h-8 pl-8","aria-label":"搜索工具"}),(0,t.jsx)(p.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)(u.AppTable,{rows:b,columns:h,getRowKey:e=>"tools:".concat(e.name),className:o,emptyText:v?"未找到匹配工具":void 0})]})}var g=e.i(36845),b=e.i(53925);function h(e){let{open:a,onOpenChange:l,wsUrl:s,apiBase:r,agent:n}=e;return(0,t.jsx)(b.ResourceImportDialog,{open:a,onOpenChange:l,title:"导入工具 zip",description:"选择一个 zip 文件并导入到 tools-runtime。",uploadUrl:(0,g.buildToolsRuntimeImportUrl)(s,r,n),resetKey:n})}var v=e.i(55242);let j=[["name","稳定工具名,与 agent.json.tools 白名单对应"],["call","工具执行入口"],["inputSchema","Zod schema,定义 LLM 入参"],["description","工具描述,可为 async 函数"],["prompt","返回给模型的使用说明,可为 async 函数"],["mapToolResultToToolResultBlockParam","将执行结果映射为 API tool_result 块"]],y=["包目录位于 tools-runtime/<package-name>/,包名使用 kebab-case","包根目录存在 index.js / index.cjs / index.mjs 之一,宿主不会加载源码 TS","入口导出 Tool 对象,工具 name 稳定且唯一","initWsSession 正确处理 ready / skipped / failed",'agent.json.tools 包含工具名或 "*",且未被 disallowedTools 禁用',"GET /api/tools?agent=<id> 中工具 enabled: true 且 readiness: ready"];function w(e){let{index:a,title:l,children:s,className:r}=e;return(0,t.jsxs)("section",{className:"rounded-xl border border-[var(--ds-color-border-default)] bg-[var(--surface-1)] p-4 ".concat(null!=r?r:""),children:[(0,t.jsxs)("div",{className:"mb-3 flex items-center gap-3",children:[(0,t.jsx)("span",{className:"flex size-7 shrink-0 items-center justify-center rounded-full bg-[var(--ds-color-accent)] text-base font-semibold text-[var(--surface-1)]",children:a}),(0,t.jsx)("h3",{className:"text-base font-semibold text-[var(--ds-text)]",children:l})]}),s]})}function N(e){let{open:a,onOpenChange:l}=e;return(0,t.jsx)(v.AppDialog,{open:a,onOpenChange:l,title:"工具接入说明",width:"max-w-4xl",footer:(0,t.jsx)(i.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:()=>l(!1),children:"我知道了"}),children:(0,t.jsxs)("div",{className:"flex max-h-[72vh] flex-col gap-4 overflow-y-auto pr-1 text-sm text-[var(--ds-text)]",children:[(0,t.jsx)(w,{index:1,title:"概念",children:(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)("span",{className:"bg-[var(--ds-color-accent)]/10 mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg text-[var(--ds-color-accent)]",children:(0,t.jsx)(p.default,{name:"Wrench",size:18})}),(0,t.jsxs)("p",{className:"min-w-0 leading-6 text-[var(--ds-muted)]",children:["Runtime Tool 是磁盘上的独立工具包,放在",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"tools-runtime/<package-name>/"}),"下。宿主与工具包只通过编译入口的导出契约通信,互不 import 对方源码。"]})]})}),(0,t.jsxs)(w,{index:2,title:"存放路径",children:[(0,t.jsx)("pre",{className:"overflow-x-auto rounded-lg bg-[var(--ds-color-surface-sidebar)] p-3 text-xs leading-5 text-[var(--ds-text)]",children:"<WS_AGENTS_ROOT>/tools-runtime/<package-name>/\n index.cjs # 必选:编译后的单文件入口\n package.json # 可选\n build.ts # 可选\n src/ # 可选,宿主不加载"}),(0,t.jsxs)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:["默认 WS_AGENTS_ROOT 为项目下的",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:".ws-agents"}),",宿主按",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:".js > .cjs > .mjs"}),"优先级加载入口。agent 层同名包会覆盖 system 层包。"]})]}),(0,t.jsx)(w,{index:3,title:"接入方式",children:(0,t.jsxs)("div",{className:"space-y-3 text-[var(--ds-muted)]",children:[(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"手工放置:"}),"在 .ws-agents/tools-runtime/ 下创建包目录并完成构建,重启会话或触发 reloadDynamicTools。"]}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"Zip 导入:"}),"zip 内必须是单根目录结构,例如 my-tool/index.cjs。"]}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"内置 system 包:"}),"发布到 packages/agent/tools-runtime,用户可用 agent 层同名包覆盖。"]})]})}),(0,t.jsxs)(w,{index:4,title:"包内必须实现的契约",children:[(0,t.jsx)("p",{className:"mt-2 leading-6 text-[var(--ds-muted)]",children:"入口模块需导出至少一个 Tool 对象,可使用 default、tools 数组或命名导出。"}),(0,t.jsx)("div",{className:"mt-3 grid gap-2",children:j.map(e=>{let[a,l]=e;return(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--ds-color-border-default)] bg-[var(--surface-1)] px-3 py-2",children:[(0,t.jsx)("code",{className:"text-base font-semibold text-[var(--ds-color-accent)]",children:a}),(0,t.jsx)("p",{className:"mt-1 text-base leading-5 text-[var(--ds-muted)]",children:l})]},a)})}),(0,t.jsx)("div",{className:"mt-4 rounded-lg border border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-sidebar)] p-3",children:(0,t.jsxs)("p",{className:"leading-6 text-[var(--ds-muted)]",children:["生产包推荐实现",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--surface-1)] px-1.5 py-0.5",children:"initWsSession"}),",返回 ready 才会进入 LLM 工具列表;skipped 或 failed 不会暴露。未实现时默认 ready。"]})})]}),(0,t.jsx)(w,{index:5,title:"最小示例",children:(0,t.jsxs)("p",{className:"leading-6 text-[var(--ds-muted)]",children:["最小包通常包含 package.json、build.ts 和 src/index.ts,构建后在包根目录产出",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"index.cjs"}),"。若 package.json 使用",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"type: module"}),",优先产出 index.cjs,避免 ESM/CJS 冲突。"]})}),(0,t.jsxs)(w,{index:6,title:"在 agent 中启用",children:[(0,t.jsx)("pre",{className:"overflow-x-auto rounded-lg bg-[var(--ds-color-surface-sidebar)] p-3 text-base leading-5 text-[var(--ds-text)]",children:'{\n "tools": ["HelloTool"]\n}'}),(0,t.jsxs)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:'"*"'}),"暴露全部已加载且 ready 的 runtime 工具;",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"[]"}),"不暴露任何 runtime 工具。MCP 工具由 mcpServers 单独控制。"]})]}),(0,t.jsxs)(w,{index:7,title:"宿主加载流程",children:[(0,t.jsx)("div",{className:"rounded-lg bg-[var(--ds-color-surface-sidebar)] p-3 text-base leading-6 text-[var(--ds-muted)]",children:"discoverRuntimePackages → dynamic import index.* → initWsSession → extractToolsFromModule → agent.json.tools 白名单过滤 → LLM 可见工具列表"}),(0,t.jsx)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:"触发时机包括 WS 会话 init、reloadDynamicTools,以及带 agent 参数的 GET /api/tools。 可通过 CLAUDE_CODE_RUNTIME_TOOLS_ENABLED=0 关闭 runtime 工具。"})]}),(0,t.jsx)(w,{index:8,title:"参考实现",children:(0,t.jsxs)("div",{className:"space-y-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("p",{children:"schedule-tool:会话级 init、agent 白名单、文件持久化。"}),(0,t.jsx)("p",{children:"git-tool:环境变量驱动、ready / skipped / failed 状态。"}),(0,t.jsx)("p",{children:"code-tool:通过 buildSessionAppend 追加会话上下文。"})]})}),(0,t.jsx)(w,{index:9,title:"验收清单",children:(0,t.jsx)("ul",{className:"grid gap-2",children:y.map(e=>(0,t.jsxs)("li",{className:"flex gap-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)(p.default,{name:"CheckCircle2",size:16,className:"mt-1 shrink-0 text-[var(--ds-color-accent)]"}),(0,t.jsx)("span",{children:e})]},e))})}),(0,t.jsx)(w,{index:10,title:"常见问题",children:(0,t.jsxs)("div",{className:"space-y-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("p",{children:"放了包但工具不可见:确认已构建 index.*、initWsSession 返回 ready、白名单包含工具名。"}),(0,t.jsx)("p",{children:"installed-list 有但会话 disabled:通常是 init 返回 skipped/failed,或未通过 agent 白名单。"}),(0,t.jsx)("p",{children:"同名工具冲突:agent 层覆盖 system 层;同一层内工具 name 重复时后者会被去重丢弃。"})]})})]})})}var k=e.i(68499),C=e.i(56708),T=e.i(62427);function R(e){return(null!=e.packageId?String(e.packageId).trim():"")||e.name}function S(e){let t=null!=e.packageId?String(e.packageId).trim():"";return!0===e.deletable&&t.length>0}function U(){let e=(0,l.useAppStore)(e=>e.wsUrl),c=(0,l.useAppStore)(e=>e.apiBase),d=(0,l.useAppStore)(e=>e.agentConfig),u=(0,l.useAppStore)(e=>e.patchAgentConfig),{currentAgent:m,loadAgentConfig:x}=(0,s.useSession)(),g=(0,n.usePersistAgentConfigField)("tools"),b=d.tools,[v,j]=(0,a.useState)([]),[y,w]=(0,a.useState)(!1),[U,M]=(0,a.useState)(!1),[D,A]=(0,a.useState)(!1),[E,L]=(0,a.useState)(!1);(0,a.useEffect)(()=>{x()},[x]);let z=(0,a.useCallback)(async(e,t)=>{M(!0);try{await g(e,{silent:t})}finally{M(!1)}},[g]),I=(0,a.useCallback)(async()=>{j([]),w(!0);try{var t;let a=await (0,T.listInstalledTools)(e,c,m());j(null!=(t=a.tools)?t:[])}catch(e){j([]),r.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{w(!1)}},[e,c,m]);(0,a.useEffect)(()=>{I()},[I]);let B=(0,a.useCallback)(e=>v.find(t=>t.name===e),[v]),O=(0,a.useMemo)(()=>v.slice().sort((e,t)=>e.name.localeCompare(t.name)).map(e=>(function(e,t){var a;let l=null!=e.packageName?String(e.packageName).trim():"";return{name:e.name,label:(e.displayName&&e.displayName!==e.name?"".concat(e.displayName," · "):"")+e.name,description:null!=(a=e.searchHint)?a:"",enabled:t,packageId:l,canManage:S({deletable:e.deletable,packageId:l}),layer:e.layer}})(e,b.includes(e.name))),[v,b]),_=(0,a.useCallback)(async t=>{let a=B(t);if(!a||!S({deletable:a.deletable,packageId:a.packageName}))return void r.appToast.error("系统内置工具不可删除");if(await (0,k.confirmAlertDialog)({title:"确认删除工具包?",description:"工具名:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,T.deleteRuntimeTool)(e,c,m(),R({packageId:a.packageName,name:a.name}));let l=b.filter(e=>e!==t);u({tools:l}),await z(l,!0),await I()}catch(e){r.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[B,e,c,m,b,u,z,I]),P=(0,a.useCallback)(t=>{let a=B(t);if(!a||!S({deletable:a.deletable,packageId:a.packageName}))return void r.appToast.error("系统内置工具不可导出");window.open((0,T.exportRuntimeToolUrl)(e,c,m(),R({packageId:a.packageName,name:a.name})),"_blank","noopener")},[B,e,c,m]),F=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...b,e])].sort():b.filter(t=>t!==e).sort();u({tools:a}),z(a,!0)},[b,u,z]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(C.ManageChromeHeaderActions,{children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsxs)(i.Button,{type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>A(!0),children:[(0,t.jsx)(p.default,{name:"Info",size:16,className:"align-middle"}),"工具说明"]}),(0,t.jsxs)(i.Button,{id:"btnAgentPickerToolImport",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>L(!0),children:[(0,t.jsx)(p.default,{name:"Import",size:16,className:"align-middle"}),"导入自定义工具"]})]})}),y?(0,t.jsx)(o.Loading,{text:"加载中…",className:"min-h-[200px]"}):(0,t.jsx)(f,{items:O,saveBusy:U,onToggle:F,onExport:P,onRemove:_}),(0,t.jsx)(h,{open:E,onOpenChange:e=>{L(e),e||I()},wsUrl:e,apiBase:c,agent:m()}),(0,t.jsx)(N,{open:D,onOpenChange:A})]})}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,78163,e=>{"use strict";e.s(["default",()=>t]);let t=[Object.freeze(JSON.parse('{"displayName":"PostCSS","fileTypes":["pcss","postcss"],"foldingStartMarker":"/\\\\*|^#|^\\\\*|^\\\\b|^\\\\.","foldingStopMarker":"\\\\*/|^\\\\s*$","name":"postcss","patterns":[{"begin":"/\\\\*","end":"\\\\*/","name":"comment.block.postcss","patterns":[{"include":"#comment-tag"}]},{"include":"#double-slash"},{"include":"#double-quoted"},{"include":"#single-quoted"},{"include":"#interpolation"},{"include":"#placeholder-selector"},{"include":"#variable"},{"include":"#variable-root-css"},{"include":"#numeric"},{"include":"#unit"},{"include":"#flag"},{"include":"#dotdotdot"},{"begin":"@include","captures":{"0":{"name":"keyword.control.at-rule.css.postcss"}},"end":"(?=[\\\\n(;{])","name":"support.function.name.postcss.library"},{"begin":"@(?:mixin|function)","captures":{"0":{"name":"keyword.control.at-rule.css.postcss"}},"end":"$\\\\n?|(?=[({])","name":"support.function.name.postcss.no-completions","patterns":[{"match":"[-\\\\w]+","name":"entity.name.function"}]},{"match":"(?<=@import)\\\\s[-*./\\\\w]+","name":"string.quoted.double.css.postcss"},{"begin":"@","end":"$\\\\n?|\\\\s(?!(all|braille|embossed|handheld|print|projection|screen|speech|tty|tv|if|only|not)([,\\\\s]))|(?=;)","name":"keyword.control.at-rule.css.postcss"},{"begin":"#","end":"$\\\\n?|(?=[(),.;>\\\\[{\\\\s])","name":"entity.other.attribute-name.id.css.postcss","patterns":[{"include":"#interpolation"},{"include":"#pseudo-class"}]},{"begin":"\\\\.|(?<=&)([-_])","end":"$\\\\n?|(?=[(),;>\\\\[{\\\\s])","name":"entity.other.attribute-name.class.css.postcss","patterns":[{"include":"#interpolation"},{"include":"#pseudo-class"}]},{"begin":"\\\\[","end":"]","name":"entity.other.attribute-selector.postcss","patterns":[{"include":"#double-quoted"},{"include":"#single-quoted"},{"match":"[$*^~]","name":"keyword.other.regex.postcss"}]},{"match":"(?<=[])]|not\\\\(|[*>]|>\\\\s):[-:a-z]+|(:[-:])[-:a-z]+","name":"entity.other.attribute-name.pseudo-class.css.postcss"},{"begin":":","end":"$\\\\n?|(?=;|\\\\s\\\\(|and\\\\(|[{}]|\\\\),)","name":"meta.property-list.css.postcss","patterns":[{"include":"#double-slash"},{"include":"#double-quoted"},{"include":"#single-quoted"},{"include":"#interpolation"},{"include":"#variable"},{"include":"#rgb-value"},{"include":"#numeric"},{"include":"#unit"},{"include":"#flag"},{"include":"#function"},{"include":"#function-content"},{"include":"#function-content-var"},{"include":"#operator"},{"include":"#parent-selector"},{"include":"#property-value"}]},{"include":"#rgb-value"},{"include":"#function"},{"include":"#function-content"},{"begin":"(?<![-(])\\\\b(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|main|svg|rect|ruby|center|circle|ellipse|line|polyline|polygon|path|text|[ux])\\\\b(?![-)]|:\\\\s)|&","end":"(?=[-(),.;>\\\\[_{\\\\s])","name":"entity.name.tag.css.postcss.symbol","patterns":[{"include":"#interpolation"},{"include":"#pseudo-class"}]},{"include":"#operator"},{"match":"[-a-z]+((?=:|#\\\\{))","name":"support.type.property-name.css.postcss"},{"include":"#reserved-words"},{"include":"#property-value"}],"repository":{"comment-tag":{"begin":"\\\\{\\\\{","end":"}}","name":"comment.tags.postcss","patterns":[{"match":"[-\\\\w]+","name":"comment.tag.postcss"}]},"dotdotdot":{"match":"\\\\.{3}","name":"variable.other"},"double-quoted":{"begin":"\\"","end":"\\"","name":"string.quoted.double.css.postcss","patterns":[{"include":"#quoted-interpolation"}]},"double-slash":{"begin":"//","end":"$","name":"comment.line.postcss","patterns":[{"include":"#comment-tag"}]},"flag":{"match":"!(important|default|optional|global)","name":"keyword.other.important.css.postcss"},"function":{"match":"(?<=[(,:|\\\\s])(?!url|format|attr)[-\\\\w][-\\\\w]*(?=\\\\()","name":"support.function.name.postcss"},"function-content":{"match":"(?<=url\\\\(|format\\\\(|attr\\\\().+?(?=\\\\))","name":"string.quoted.double.css.postcss"},"function-content-var":{"match":"(?<=var\\\\()[-\\\\w]+(?=\\\\))","name":"variable.parameter.postcss"},"interpolation":{"begin":"#\\\\{","end":"}","name":"support.function.interpolation.postcss","patterns":[{"include":"#variable"},{"include":"#numeric"},{"include":"#operator"},{"include":"#unit"},{"include":"#double-quoted"},{"include":"#single-quoted"}]},"numeric":{"match":"([-.])?[0-9]+(\\\\.[0-9]+)?","name":"constant.numeric.css.postcss"},"operator":{"match":"\\\\+|\\\\s-\\\\s|\\\\s-(?=\\\\$)|(?<=\\\\()-(?=\\\\$)|\\\\s-(?=\\\\()|[!%*/<=>~]","name":"keyword.operator.postcss"},"parent-selector":{"match":"&","name":"entity.name.tag.css.postcss"},"placeholder-selector":{"begin":"(?<!\\\\d)%(?!\\\\d)","end":"$\\\\n?|\\\\s|(?=[;{])","name":"entity.other.attribute-name.placeholder-selector.postcss"},"property-value":{"match":"[-\\\\w]+","name":"meta.property-value.css.postcss, support.constant.property-value.css.postcss"},"pseudo-class":{"match":":[-:a-z]+","name":"entity.other.attribute-name.pseudo-class.css.postcss"},"quoted-interpolation":{"begin":"#\\\\{","end":"}","name":"support.function.interpolation.postcss","patterns":[{"include":"#variable"},{"include":"#numeric"},{"include":"#operator"},{"include":"#unit"}]},"reserved-words":{"match":"\\\\b(false|from|in|not|null|through|to|true)\\\\b","name":"support.type.property-name.css.postcss"},"rgb-value":{"match":"(#)(\\\\h{3}|\\\\h{6})\\\\b","name":"constant.other.color.rgb-value.css.postcss"},"single-quoted":{"begin":"\'","end":"\'","name":"string.quoted.single.css.postcss","patterns":[{"include":"#quoted-interpolation"}]},"unit":{"match":"(?<=[}\\\\d])(ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw|%)","name":"keyword.other.unit.css.postcss"},"variable":{"match":"\\\\$[-\\\\w]+","name":"variable.parameter.postcss"},"variable-root-css":{"match":"(?<!&)--[-\\\\w]+","name":"variable.parameter.postcss"}},"scopeName":"source.css.postcss"}'))]}]);
|