@xgent-ai/skills 0.7.5 → 0.7.6
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/.claude/hooks/xgent-statusline.js +32 -18
- package/README.md +61 -35
- package/bin/phoenix-diagram.js +14 -0
- package/bin/xgent-skills.js +132 -240
- package/dist/phoenix-diagram/LICENSE +21 -0
- package/dist/phoenix-diagram/NOTICE.md +34 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/005fc765ddc5115da796cca915baa9557abae13ff35e0a47c47affc56f6c414d.txt +272 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/010492e490b92ec85db01daad2a290ea5959f29314a1c4ff25e7a172e223abf9.txt +18 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f.txt +3 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/0218327e7a480793ffdd4eb792379a9709e5c135c7ba267f709d6f6d4d70af0a.txt +201 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/02bb8c3b4e70190e3986c0404ad2fd8d639b4f534252d82379cc1b502b6d1812.txt +191 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/0444c6991eead6822f7b9102e654448d51624431119546492e8b231db42c48bb.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/0552c898248eadfc130df0c0e8f6f82776fcb3f1dd5a5af2fa991b5baff9367a.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/0ab4d106b6faac07fb6a051815fd1b4d862d730895e2d7d7358c2f13565e7a38.txt +20 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/0b28172679e0009b655da42797c03fd163a3379d5cfa67ba1f1655e974a2a1a9.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/0d3f7c086c6b6cf3ea4aac714e9aa3e1fb02e355ce35bd21c56acf8d04390885.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/0dd882e53de11566d50f8e8e2d5a651bcf3fabee4987d70f306233cf39094ba7.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/117829c3ca21efb132d81a44b55363d395ab8eea18526873bc828da4c0e5f038.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/123a331b5dbf04c30097fa43b8f858bc85df671fe776de498d01f3d6b7c1f69e.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/1a2f5c12ddc934d58956aa5dbdd3255fe55fd957633ab7d0d39e4f0daa73f7df.txt +26 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5.txt +373 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/1f485f0d6125658861351e3d6084ea90fefe78f89450be9915044b7c56d5a75a.txt +15 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/209fbbe0ad52d9235e37badf9cadfe4dbdc87203179c0899e738b39ade42177b.txt +26 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/20c7855c364d57ea4c97889a5e8d98470a9952dade37bd9248b9a54431670e5e.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/20fe7b00e904ed690e3b9fd6073784d3fc428141dbd10b81c01fd143d0797f58.txt +176 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/219920e865eee70b7dcfc948a86b099e7f4fe2de01bcca2ca9a20c0a033f2b59.txt +7 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d.txt +7 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3.txt +23 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5.txt +220 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/27995d58ad5c1145c1a8cd86244ce844886958a35eb2b78c6b772748669999ac.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/28a9529c7d0bb4dc51f4bf5c116a3d16ef247a052f7591466768ddf563fd1cf5.txt +428 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/29e9fe5074bd27e0e5d5d110394fbbcd841baee2651a3c4b4560a632702cede4.txt +26 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/30fefc3a7d6a0041541858293bcbea2dde4caa4c0a5802f996a7f7e8c0085652.txt +23 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/3521672491a3479422d5fe1aca6645dd2984090f85da6e5205abfb18fb7a6897.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/35242e7a83f69875e6edeff02291e688c97caafe2f8902e4e19b49d3e78b4cab.txt +176 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/36516aefdc84c5d5a1e7485425913a22dbda69eb1930c5e84d6ae4972b5194b9.txt +23 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/375bdbf54d6584debb4bcc5bce1c9dcfdd581f977c9a8469113dbdf208f4c927.txt +131 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/391a5396cec6230bfabd4ef4eb2350eb895bc5efce377a2218f5702ed020d3e3.txt +20 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/39712155836e5c10ef1b07037b606e4ad2d633e72205d162fdd7e2290aa54f15.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/3bb1e548250b3acc43febde65a5cdba9f2e0a3288018aa41f009a3c59ffab51a.txt +390 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/3bc70e239e91272782006c638fc0452a714d384224f11f0923036b7be07cf9b5.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/3f3d9e0024b1921b067d6f7f88deb4a60cbe7a78e76c64e3f1d7fc3b779b9d04.txt +373 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/3f941b3b89cf7b8370ceb83cc76d2120d471b58735d8ca60238a751a48d7f72f.txt +359 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/3fa4ca83dcc9237839b1bdeb2e6d16bdfb5ec0c5ce42b24694d8bbf0dcbef72c.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/42fa16951ce7f24b5a467a40e5b449a1d41e662f97ca779864f053f39e097737.txt +26 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/4455bf75a91154108304cb283e0fea9948c14f13e20d60887cf2552449dea3b1.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/451167c55c0fa447cc2d5632714f5e3c567fe4f1e1badefab2c1333852198aca.txt +542 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/45f522cacecb1023856e46df79ca625dfc550c94910078bd8aec6e02880b3d42.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/45fd05c4865e7c350b98ad7ac50e1b15462d49af4a91e9b0c9dd933dc9a69742.txt +201 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/4789210f4df8abc03fce1cddd9c2ba517f184840687f2815d741de282c1aa93a.txt +228 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/4cada0bd02ea3692eee6f16400d86c6508bbd3bafb2b65fed0419f36d4f83e8f.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/516b24e051bf5630880ebbd55c40a25ce9552ebaf8970a53e8976eb70e522406.txt +201 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/553fffcd9b1cb158bc3e9edc35da85ca5c3b3d7d2e61c883ebcfa8a65814b583.txt +13 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/5757a1f28eff735a8b5e7425478f367812d71e974530f5bedd01219480965f4a.txt +51 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/5b698ca13897be3afdb7174256fa1574f8c6892b8bea1a66dd6469d3fe27885a.txt +19 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/5e05b024f653a5ce199e77cbbbd42fb5553562ec714b819421ed0c3e552a75d7.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/60a7062291b01ba068f300612cdbdc20382ac1d4934f07bcdd7167c15299f309.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/62065228e42caebca7e7d7db1204cbb867033de5982ca4009928915e4095f3a3.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a.txt +176 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/65f94e99ddaf4f5d1782a6dae23f35d4293a9a01444a13135a6887017d353cee.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/6df43f6f4b5d4587f3d8d71e45532c688fd168afa5fe89d571cb32fa09c4ef51.txt +187 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/709e3175b4212f7b13aa93971c9f62ff8c69ec45ad8c6532a7e0c41d7a7d6f8c.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/71674605ec4c087fe9eb534e3e4f9e26eb2e4aabcd76a29fd156c6a844d44b3d.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/7365cc8878a1d7ce155a58c4ca09c3d7a6be413efa5334a80ea842912b669349.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/7abd9b6960dcf7d4d0a48606a5b71bfe37d472db68d70637f3a58a56785f1621.txt +13 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/7ca6700600dfa9c9497bf5556365067daa802c871ea78239f129309c7a2048f7.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/7cfafc877eccc46c0e346ccbaa5c51bb6b894d2b818e617d970211e232785ad4.txt +15 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c.txt +24 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/7e5886959f67f8c75063a9d55cd3cb08c5a8cbea9a944fa1df2d4ae038f53721.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/7fea0ee51a4ca5d5cea7464135fd55e8b09caf3a61da3d451ac8a22af95c033f.txt +20 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/8173d5c29b4f956d532781d2b86e4e30f83e6b7878dce18c919451d6ba707c90.txt +201 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/83c1763356e822adde0a2cae748d938a73fdc263849ccff6b27776dff213bd32.txt +24 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/86dd7f026f916daf7511e39951ad8ea8cf55a8db67ae64060dacf829761c18f3.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/8a35369f3ca263b3c62fbb5032947e53b6bfebc6c8a4d1bb982de1c069f6fba5.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/8b43ce8accd61e9d370b5ca9e9c4f953279b5c239926c62315b40e24df51b726.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/8bb1b50b0e5c9399ae33bd35fab2769010fa6c14e8860c729a52295d84896b7a.txt +201 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/8bce3b45e49ecd1461f223b46de133d8f62cd39f745cfdaf81bee554b908bd42.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/8c7516d4b27b1e495be5e38b612298b63de48d05f49cdac94f70f3cd70f8864b.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/9046848b63a5c92bff14e4accca80bd987e0623b74adf9226ce5198d312b79d5.txt +30 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/90eb64f0279b0d9432accfa6023ff803bc4965212383697eee27a0f426d5f8d5.txt +12 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/9117d922e667125508dde62b02c1f57ed22f5ad21eb536aa2e2d99e1c796e639.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/9387c2d197e2370a740ca457dae1662c56de56b811ee4862024343961307f9bf.txt +19 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/946c9835d8034d24404f8cfec5f4654cee5dad17e944afc3d06d742cf2882831.txt +240 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/95bd3988beee069fa2848f648dab43cc6e0b2add2ad6bcb17360caf749802bcc.txt +176 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/9ba9550ad48438d0836ddab3da480b3b69ffa0aac7b7878b5a0039e7ab429411.txt +396 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/9d185ac6703c4b0453974c0d85e9eee43e6941009296bb1f5eb0b54e2329e9f3.txt +202 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/9e0dfd2dd4173a530e238cb6adb37aa78c34c6bc7444e0e10c1ab5d8881f63ba.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/9f2ae19ef94ba82887729a4a1617ff25eede56611dd21a4b2c6f797df30fca33.txt +2013 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/9fa38f610a00115dd1f612bdd3559e3b381ea579538b6ff25a5899da250a5fce.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/a00511478c83ebb464ef19d840f061c7444adc4636bb561900e75c5808cfc6cc.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499.txt +121 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/a5dea80c1f383cb5f80a6bb0da5e55a2beb9f24adb123ce6300af2cbaaa3bf65.txt +19 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2.txt +201 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/a825bd853ab71619a4923d7b4311221427848070ff44d990da39b0b274c1683f.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5.txt +201 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/aaff376532ea30a0cd5330b9502ad4a4c8bf769c539c87ffe78819d188a18ebf.txt +201 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/ae9baa7beea910273c2f384c2a6b721fb7bd02bda3436074a1072e4ee689f985.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/b1181a40b2a7b25cf66fd01481713bc1005df082c53ef73e851e55071b102744.txt +19 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/b38f11f6096706e6de553dabe2a7ed142d59b6fa8c97e290c67496154745cdd5.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/b3d734001a94efff3579978d953391aa7115f877657d25eb54037a43875d078a.txt +9 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1.txt +201 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/b4eb00df6e2a4d22518fcaa6a2b4646f249b3a3c9814509b22bd2091f1392ff1.txt +27 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/b68ad1a3367b825447089e1f8d6829b97f47a89eb78d2f4ebaef4672f5606186.txt +22 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/b7e650f3fce5c53249d1cdc608b54df156a97edd636cf9d23498d0cfe7aec63e.txt +19 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/c09aae9d3c77b531f56351a9947bc7446511d6b025b3255312d3e3442a9a7583.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b.txt +201 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383.txt +21 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/c30152c94a6d75e021adbc52b3a52470366a46edb917e17deae3259251af244c.txt +42 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/c394e3bda1f3b9378f30a7cab11242887eeeafc73c7bef36a0fe13e09691e18b.txt +17 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4.txt +201 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/c962ee4d1d05ddc138b202b2540219ebc57893fcf97b364852094a9a94ce1365.txt +7 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30.txt +202 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/d1fc1bc0d155df60b2e7705b6b2ae02a05c96f948e1cec6e2fb86360b09f346b.txt +29 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/d5c22aa3118d240e877ad41c5d9fa232f9c77d757d4aac0c2f943afc0a95e0ef.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/d5fca2653c88ad02d197faead77e22b80c70636b5bec6e02f2805f389a21b86d.txt +10 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/db11fec9946737df39ca3898d9cd8c10ec6f6c3a884a6802b0ad0b81b4e8f23a.txt +1 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/dc91f8200e4b2a1f9261035d4c18c33c246911a6c0f7b543d75347e61b249cff.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/ddea4e94a1c35ed9826e54e13a5b50b8f81b21665a00ca07c8861f1859e56b6b.txt +14 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/e271993808fec50ab29350b39539cdec611a9103f827e0aa26d61da70e2d33f8.txt +61 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/e66c269d4819aaab34b49ef5220c4ddab6756f21bb5180761a4eb8561f2b7bbd.txt +438 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/ecc269ef87fd38a1d98e30bfac9ba964a9dbd9315c3770fed98d4d7cb5882055.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/efcfee7981ff72431fffb06925cad00a23dce079ed4354f61030ad5abdb78829.txt +22 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/f025ccfb7dfb6bdfedc75ca0f67acc69e6fb4998143d834f7c2f38a29989680f.txt +13 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2.txt +46 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/f51ac2c59a222f7476ce507ca879960e2b64ea64bb2786eefdbeb7b0b538d1b7.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/f7715d38a3fa1b4ac97c5729740752505a39cb92ee83ab5b102aeb5eaa7cdea4.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/f7db81051789b729fea528a63ec4c938fdcb93d9d61d97dc8cc2e9df6d47f2a1.txt +39 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/f9c4c77baa3828004ee54b8a4f2db2e88ed44a6237a493965bf551fac0fcb62d.txt +17 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85.txt +373 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/fb77f0a9c53e473abe5103c8632ef9f0f2874d4fb3f17cb2d8c661aab9cee9d7.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/ff8f68cb076caf8cefe7a6430d4ac086ce6af2ca8ce2c4e5a2004d4552ef52a2.txt +25 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/ff92bed461f50338dd703a9ba9aee496a425957873df1d91192776e4bdf5dda7.txt +74 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/COPYRIGHT-library.html +29357 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/Apache-2.0.txt +73 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/BSD-2-Clause.txt +9 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/CC-BY-SA-4.0.txt +427 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/GCC-exception-3.1.txt +30 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/GPL-2.0-only.txt +133 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/GPL-3.0-or-later.txt +202 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/ISC.txt +7 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/LLVM-exception.txt +15 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/MIT.txt +9 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/NCSA.txt +29 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/OFL-1.1.txt +43 -0
- package/dist/phoenix-diagram/THIRD-PARTY-LICENSES/rust-std-1.99.1/licenses/Unicode-3.0.txt +39 -0
- package/dist/phoenix-diagram/THIRD-PARTY-NOTICES.md +210 -0
- package/dist/phoenix-diagram/THIRD-PARTY.json +5459 -0
- package/dist/phoenix-diagram/VERSION.json +39 -0
- package/dist/phoenix-diagram/bundle/ENGINE.json +39 -0
- package/dist/phoenix-diagram/bundle/SKILL.md +109 -0
- package/dist/phoenix-diagram/bundle/examples/minimal.architecture.json +11 -0
- package/dist/phoenix-diagram/bundle/examples/minimal.class.json +23 -0
- package/dist/phoenix-diagram/bundle/examples/minimal.dataflow.json +11 -0
- package/dist/phoenix-diagram/bundle/examples/minimal.erd.json +25 -0
- package/dist/phoenix-diagram/bundle/examples/minimal.lifecycle.json +11 -0
- package/dist/phoenix-diagram/bundle/examples/minimal.sequence.json +13 -0
- package/dist/phoenix-diagram/bundle/examples/minimal.timeline.json +15 -0
- package/dist/phoenix-diagram/bundle/examples/minimal.tree.json +13 -0
- package/dist/phoenix-diagram/bundle/examples/minimal.waterfall.json +12 -0
- package/dist/phoenix-diagram/bundle/examples/minimal.workflow.json +12 -0
- package/dist/phoenix-diagram/bundle/manifest.json +253 -0
- package/dist/phoenix-diagram/bundle/references/architecture-compare.md +111 -0
- package/dist/phoenix-diagram/bundle/references/authoring-defaults.md +42 -0
- package/dist/phoenix-diagram/bundle/references/brand-marks.md +52 -0
- package/dist/phoenix-diagram/bundle/references/compatibility.md +22 -0
- package/dist/phoenix-diagram/bundle/references/delivery-contract.md +127 -0
- package/dist/phoenix-diagram/bundle/references/extending-types.md +14 -0
- package/dist/phoenix-diagram/bundle/references/migration.md +57 -0
- package/dist/phoenix-diagram/bundle/references/preview.md +45 -0
- package/dist/phoenix-diagram/bundle/references/repository-authoring.md +29 -0
- package/dist/phoenix-diagram/bundle/references/viewer-runtime.md +27 -0
- package/dist/phoenix-diagram/bundle/schemas/README.md +23 -0
- package/dist/phoenix-diagram/bundle/schemas/architecture.schema.json +329 -0
- package/dist/phoenix-diagram/bundle/schemas/class.schema.json +348 -0
- package/dist/phoenix-diagram/bundle/schemas/common.schema.json +358 -0
- package/{skills/archify → dist/phoenix-diagram/bundle}/schemas/dataflow.schema.json +36 -8
- package/dist/phoenix-diagram/bundle/schemas/erd.schema.json +384 -0
- package/dist/phoenix-diagram/bundle/schemas/lifecycle.schema.json +202 -0
- package/{skills/archify → dist/phoenix-diagram/bundle}/schemas/sequence.schema.json +41 -10
- package/dist/phoenix-diagram/bundle/schemas/timeline.schema.json +170 -0
- package/dist/phoenix-diagram/bundle/schemas/tree.schema.json +144 -0
- package/dist/phoenix-diagram/bundle/schemas/waterfall.schema.json +150 -0
- package/{skills/archify → dist/phoenix-diagram/bundle}/schemas/workflow.schema.json +42 -10
- package/dist/phoenix-diagram/bundle/scripts/phoenix-bootstrap.cjs +589 -0
- package/dist/phoenix-diagram/bundle/scripts/phoenix-diagram +6 -0
- package/dist/phoenix-diagram/bundle/scripts/phoenix-launcher.cjs +10 -0
- package/dist/phoenix-ui/THIRD-PARTY.json +164 -158
- package/dist/phoenix-ui/VERSION.json +17 -17
- package/dist/phoenix-ui/bundle/blobs/00727f7b333a7be8ac7740aa257a3a3f691db8ae545a6afab2b787acab5e88df +46 -0
- package/dist/phoenix-ui/bundle/blobs/{547e3c89d5b8feeddd67e43131fd84b95253eb42bf7d730b4e471dba011f6e51 → 00f4a6a630f31eb05fbdd5725e4a294233d24574bd70f4f32f4597d8256a7c1c} +0 -4
- package/dist/phoenix-ui/bundle/blobs/{41400e182e2180a567923d58bfa935d2799a54f2a747b2c5813c3884c84f768b → 04057592e18ea9dd3c4edcac14cde3fa5b75239c2552d4459db8e047068f61a8} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{34571f7d46632205d518d15cb008457494dfad745c6b483bb11d63ca3a22ac48 → 0cb3bf26e1980b0e530373fb32edbe5864a171492a04e2abe1952ffe78bff231} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{852d2943678a76c33b2f7a090d2ca6c152cd120e9ae62775fcc91519b9289011 → 0e684572eb98d24b39cd70fa23e66c163178f5a11756dcf8a98fe2335636b33f} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{d17b3a454146e74ef4ecf69d7b72a8fa45c4fe1c695dffb0d36690b653cd2d8f → 10553c45c7bf38e527a57a281c4365152a768b4dd7ef597ff34ae841e9ff7d41} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{e49257c0fd32b195cccb16fbfda769c007be6b38f25aceefecd23cfff9366cec → 125bc7030d7f2ba789d7b1d5f474af34f8902b764e7bc351b98f1f6f55779929} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{74dbcbbad6c3831e95abb38775dd488c59ae9f1d44a95f5fd4bc0051577488fa → 13cf6c054ed424e2eb639ea12d20a4aa2b1c85eeb00afa8cbd8a30c6c22aadd8} +1 -1
- package/dist/phoenix-ui/bundle/blobs/1832ff9624cebd30370eb0e806665c656ac879215f93d33bcc0750baa47459dc +46 -0
- package/dist/phoenix-ui/bundle/blobs/{8e7de5ca347036a07f5f1e9cab942d8ff378d029bc101fa6d126406f3298c9db → 1864a10c29e7062cca5e49d1790dc7d9d8ea777bfa2ab6fd941635965cd0084d} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{784722b72224a7005a80cdcd6408dd2b25b23fd9619d0f6c8788f7ac681fad4c → 1ecc81de39d28b85b95e797bcc338d4213a50231c3315a741d14571fd22c844f} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{b8c614dc7c2eb30ee0f864fec116dbcafb39e5a199dce66d0c1a88b13f76265a → 2079e4146039a8dadf19a39237cbdc0b8b54ea1fa16d320716c2cbf58161c835} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{dba6e4a09c5d752e5ddebe7c2c1aefc9c4b2a84e01a3178599579778ed2d09e9 → 2813aa68c0804a7fe061d88201d8a684cac9987b48511e1e2cbfe0a869a67a82} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{2889c2817b5079abff254bb6d13f92dbde0fabc38be4acc7d20e613eef5e5829 → 2873e340be947c83c3d03520139b73524fd166a34063d2693d3b711021ea5b87} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{64c4aa2d1c24ae5028e987498ac544020d48600a51d9654b2df562681ba480f2 → 298ef41899acefa056eccf2345378078832db6d868d2377f471f896d5c1599f9} +6 -14
- package/dist/phoenix-ui/bundle/blobs/{1b7174a6f3f49a8efc8f7fa74ff84cf8960e2646b9bc976e4129a7c8ad608faa → 2b5cef2a14a5b1256ec6de9172a4f57f227948ced1921ef86e899f48524d7fb8} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{f148f630f43f3c91cf10feeda5a3c21448ca0683ce82d0fe763c1b43dee584d6 → 2d376cbbf7ec1e262614aac4f1b200e8f60e86e940c7137a2a26788bc857e509} +6 -7
- package/dist/phoenix-ui/bundle/blobs/2e5985a6eb339d70cfa25f6d2b420a0ef286caa8467f0226eb841702ec438d0b +46 -0
- package/dist/phoenix-ui/bundle/blobs/{7e199833376de5d2b6e088ee2965b448f94da842f28ccbd707e1cc3a295147c8 → 3322d691bf7b578b38723576df6b266993b2afb9e567b0cd1ded898ffe1dc17e} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{f82bfc4c6bc9169d4978d5e16fb925f6e152fdd21dc6a2fae719dfdc1645581f → 3625c5c2750f117021232ce81c1e39ac5ef7c21445729327b88cf54dfc937df0} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{2ceacad745665f79fd7ad5565646426a36a1b508c0469b931d0f202fad45a80b → 36310febe3e7bd4c9b21407603f2a04afefdc87b7821758bb47098b1b2876765} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{24d92a176573768bfffaf8f9c6483e58bceb5bf2a095d1cdf3d3a2c0bcda0707 → 3a9c2daf4ef284ca83b0e7f6fef3a5300e273c32b20769e090463cb8a8b0b06f} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{153e377c44b162cf0074698a61716db7f664db78f5635efa926bed484de4f54c → 3ce1a44efe39b93e7a39307c6a5e5f514e938fbae818e358986b4db1b05883ca} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{ad8ad0b7acf6c88ef9ce0ee1a640c2200da77821f0d97d605d4f1d4a10e5897a → 403fcde498d75abec7844ee31434201152ac229f7675772164d69563f0572da4} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{e8ee6c08e94b80324173d89d6f4cdc5b4829ea6858b3a11fc186588a490cada4 → 45d0e7eff0923c40296e971318756617944c4f1c97f03126cd74c0f8c629f8a4} +3 -1
- package/dist/phoenix-ui/bundle/blobs/{e23dabf908842be08751fc4e7f3b586e8c6b1ca0fc30303ec5317c77f83dcf26 → 4c0f396bfa85171f61972d3f3765733318769bb53fe06d2cdcb5d7f64578b5b8} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{a5517d32c1539c388c47c00879a0d807ed2989647bfa8c0844ef22328f75f5be → 4f6563876e0e0cc51c38a06767b8800eb3238611e9fdd11e5ff9dd487c742e74} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{a9d2203acd45ca33a13d5c68b02b23ed512425ac15f0e8438318ed124b43729d → 4fcada229d0c689c1a493d13184145a81ff40c498e882142ae390bda8e5b2492} +15 -0
- package/dist/phoenix-ui/bundle/blobs/5293adc55cf66068b6df20468ad9e91433fd1c48e75d66c86f874aca951a8fb9 +46 -0
- package/dist/phoenix-ui/bundle/blobs/{96e2e6bd4fcf9a2c6da65fb029f96d9176308fae2efd9d8653d3b8d838960e07 → 5436f0301ec258f3badcc6842019ee29a9b870d2727dc425fbc9cc0f4f88a284} +3 -1
- package/dist/phoenix-ui/bundle/blobs/{d0f4939e86a62b0ca437d51a997ceba7e77d64566b7fa8ca2747487e31ca819d → 54a09a4afdffca3cc135e5007716ea684dc1ed7a78349de859225c55a2fed810} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{d5102701d41f7c6195d410a873f742ac72c428b04196e47df5555c5ccaf80504 → 55277fa15eb4bd2f09bf7bb24c4e79df417b06654b1e10f502c7928b192fd7cc} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{878064e46af4e4109bab405f965e4149bee40bbe8912ffede10b74cec6cff027 → 567c3f42394f9aee9b048a001016a7ba9d8773d78027f8c995c379886634e719} +6 -3
- package/dist/phoenix-ui/bundle/blobs/57c8f33a7401f918566b8a4883871a69ef2223438c51f158c67f69e3250be465 +46 -0
- package/dist/phoenix-ui/bundle/blobs/{bc29e115fd337dda2cc7fc70b868dc18e426b08ec186fd270fcfe96bb2efaa5d → 61450dbef64859e3136cd17ae3e997134d5df5721d96985c4e07367f38522129} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{e3c1e925be0b2deb0e3765b83ab94b86560292364f275e98bb23a8bdf2c2e049 → 656bbfda3e72b40d53b5832293dc8700ad8a784e804a6246271bf0ea23527822} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{ffcaa5c58e779ec74d18bfc3013ad8003f6e7a23f629c1a3b878618961a8b6a3 → 68b454a99ba72c3b9b93ed96c4267847297169f6a5bf321b20e60d637c271068} +6 -3
- package/dist/phoenix-ui/bundle/blobs/68e44832c82b873b0aeb2da56def7b1de5f612c019445e5e28238c690124cbbe +46 -0
- package/dist/phoenix-ui/bundle/blobs/{45bbd4a8e02ca0012216c5c68e1dcd655ae0046bd50ba4295ef1f58ec4a0957c → 6b8d4c71355429a0b16bf367163fea46103a0a99b4e34f87608a39d85b1b980a} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{264815d0080e4862715a4f82542e66241c6563f07259d32aed4a17bbc329b9cc → 6cef874722442de7c60ea96f4221dc54cc4250a270cd05a1e818b58c5b43e232} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{2028a857c0476324a4256faf66693e2a869275e53a88d2b182a28b62c2a17893 → 7181f1f4c452c4345695f9100f6deb610f54f4c55f126043433a65b8491fc680} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{ccb76aabba47938d518a5d46a09d7e70c4a9222bc391e163763f2a7f12d30437 → 75850a8c9d2a8259f71ef1f86dd5d1325415227c1887e81a3467ae1ee400979f} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{4b03cdb5b17d534b5c7e84b079c066f59e8b60b9e454671a453867c4aeb9920d → 77bcc6c2d6ac00a8bfead3b6c6b5fc69f4b60bf086ebbc89271e1b23003168c9} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{9520e25a381c82af6f46e175b7c347d1dc513d933dd6cf8c52570c72abb4ca7f → 792552563745d208594cf4ade19110f2c811a0e1a2661ae1ef43a185ccff5a69} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{f7c8af35acf71a96056afb6afcff6a3ea42f65561f02652d04e11ad9ece9b8e9 → 7acd9b6f2f61b509c6a518508b8b52c2f0de67cdea4fd3f3d383b3ce8b38cf5e} +6 -7
- package/dist/phoenix-ui/bundle/blobs/7bacc1e3da7e8b7127ca3f8f69a2422098b9b2d23fbedefc56dfe76117c1c0e3 +46 -0
- package/dist/phoenix-ui/bundle/blobs/{78662176c1d31cec2d640f70df203f93cc1aec604cfc31619f4d2c62ab78861b → 8078b804bea630ed9c4ea07ec2f8ac92aba4128725860a66599eda90390d98f6} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{2291169748fe0c4c80634dff3083e7464f82d4358b9b2186759b316e612d466f → 88b150cb804bc141b80a5687a091f61b99627155c465a27adb88546ef615af92} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{bde88bf5ac59d744440d9b65f95ceaae01c803b101d48e6afd644a06eeb5de63 → 90f8b07ec12b78e633e306322cda58415aea70d8e0f9ff85bd439361c01dabe1} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{486145071d3445e82774f1b39b2bb15986ce52277e798a31ef7e9c27afb42af3 → 95b2944686e8258a655c3b5e6db68593e24e5199354e46aac553918ea2c0f55a} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{a1998e37084c11f496d4970f86a85d5a6375bbeaa4797b9f42bbac2d44048d23 → 979639f0e8859d600a8db57e733566d9ad37ff8258c3e05a6f9c0f3008e92373} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{3173293607055ea6e1a153ec6f51fb8154782157c8a61abf411da1f41be61728 → 9eaaa00049844060f842fe7fb73cc8edc4be5225cf38a96f33bda3ffc381456c} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{69086f7cb235b35ccc230e1f2da41cbb10cea8f0636b6d4514672113a3adc2cb → a420bbda622399399a6b5c7c3614dcaebc6c62faceaf7b3c83c97db53d26b165} +1 -1
- package/dist/phoenix-ui/bundle/blobs/a63054b8920905045753facece83f154bf806158c6f46ef380036e7a82d4fde5 +46 -0
- package/dist/phoenix-ui/bundle/blobs/{e802e4f7bdc89050a9c0f2ca506e1d493a2316e6e810c0336c57aa073717ef3e → a63788c764b0e4fdcbc029d46093016310edcbcf702d62688e5aaac7ddeee6fd} +3 -1
- package/dist/phoenix-ui/bundle/blobs/{827a211ea03d2cb44b4ea1bc81ba1a6dc51a87fa16d6692997c4e4751241c815 → acfc4c26b135d5b27fc0930738486c9d43d379704102fab45564320180942e4b} +4 -2
- package/dist/phoenix-ui/bundle/blobs/{8da14f3eabac53c990a66e721387367b46cb676cc4204e8c67d6f88c95a6217f → ad243ca615349127aa422bccc1a6604ad17149735659087ca5bab3c5fae97f4e} +6 -7
- package/dist/phoenix-ui/bundle/blobs/b63931066e2b2623d012e1a3c1a0769cc43ed6640460c3899669b45539d6a20d +46 -0
- package/dist/phoenix-ui/bundle/blobs/{bb65af58ecc3e0c0093dc9a705a7ab643035e4e592c3adb93583c82d1aef1f51 → bde793ab5ad776f7e6f6d25ce2b838c1b5022054a1dad5502a873423eb0ad917} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{8de7c97949b0bc4194b3be7645e4b13e9419767927482d01cf19476f6cbeda14 → c0a70ab2889e5c16e1f09249aefad948ce352c42cfe2b5afb758a4524e1b21b6} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{60b2914df394800688c4e20f4eb34e117cd430df9954cf4d48574734507723f4 → c9ee9006ae6c0194a5d39a9f0cb275c52d74a71ea3f6dc2b4c1c7bd89f48a2c0} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{6d8315e307eab11d3236935daf7267746cce6da3b51296e6999651ac97bda3a3 → cadc2daefcf238aab981fa56388381d3d5ab9c0686bb9dd8187035c9933dfcee} +6 -3
- package/dist/phoenix-ui/bundle/blobs/{d7b744fcc95164d96d9f811a93e2e8a374887146eb762ef775f3d3c7f27abc8d → cbea5728b90f58ff047be6ec4f14eed9d63c7148f5db99b5f147d2f17b472317} +1 -1
- package/dist/phoenix-ui/bundle/blobs/d408a4fea71b656aa8a5f6b5c037815a6e4229df336629ebddf4b5c85ed82fac +46 -0
- package/dist/phoenix-ui/bundle/blobs/{6ff950a5729ad9ea480ddf8c1b489b1c84189bbf7d6034b3b5a98e7c11a28cec → d9ae0c782d8a77787561536c0d7bc3b61175d59303f3cb8c20796f85140c6984} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{1d53e2226465b1047faec7cda2e743e61540ea69e073a3a4057e8d86b277405f → e2932d63eb7f52a82960a19ba79bc800ef4f212164e098f96dee7a4326302f38} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{fa576f6655b235bdea535198647305b7a3855e810180cbdf5d4c246c03c7d190 → e381bcfec42ac541d574011460600cf0818aa0e3362e8c6d205b4157890bf821} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{8fbce5b4859e6011afa83b1c07c4436589cd7181f9cb997538f4c27f196d0d34 → e415657d8725d9b60ece42cc18581da177c42fc47cb11e501db722a5f524ecf7} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{546a8428a2d8628bb3496fadb8c36a6dd65a33464291f214ceb581828f37081b → e46d63e5f8a6ead1d44c8b6302a0c7247af8585b975ab5715518381777622ede} +6 -3
- package/dist/phoenix-ui/bundle/blobs/ee63b3f9b354d69443d05ea4a338af56546897335ace7533546e10be56ea2207 +46 -0
- package/dist/phoenix-ui/bundle/blobs/{c23617601e9c4d97b775c175a5ce1642c40459b157d0821609fe1d253b83ced8 → ef7d57633252f4604749447608850e299c277f7dd1a32776685df0724b1051c8} +6 -7
- package/dist/phoenix-ui/bundle/blobs/{0581c8428246f43c5374393878a29e38f2b1865df87e6f13f2309b8eae54e76f → f0652c6ce41e6949133360178f192ea4ee9f6129a018c7a8b6652870c2330392} +1 -1
- package/dist/phoenix-ui/bundle/blobs/{cfac9eaf96481a8874391e5cecc6149abea1f1f19622f77f1ebb9e1876720e91 → f06c9d797ca2ac8c6a49d3dcd2e99d1b4df8bc9637a49c7e80f3161f49d06b1b} +4 -2
- package/dist/phoenix-ui/bundle/blobs/{d50780cb0a345051ae3fb12c5f8249a5dac9324d6a1963f04d03aaf769ffc27c → f077545caeb3ecb9f51a3f703a09736ca924869f4b4345c1b1ffbd9bf927a287} +6 -3
- package/dist/phoenix-ui/bundle/blobs/f781c5874bcd79ebe1b3b012275b9af7eae6c4867e9a16e29bb3d3ed3dc1940b +46 -0
- package/dist/phoenix-ui/bundle/blobs/fa10c0c926997387c89b7c1070e25b1b2b53ee891741e3c450a89ec6c6dcaf7d +46 -0
- package/dist/phoenix-ui/bundle/blobs/fb1a36ab7116b0c6709b89720cdded29d80982114c2f87cad614e01e126270dd +46 -0
- package/dist/phoenix-ui/bundle/blobs/fbd3214fc12ba70d9c69a995742ba73dc5365823af63afdc93c0c8a8f0c484af +46 -0
- package/dist/phoenix-ui/bundle/blobs/{77682e9d63b484f94a699f2c0b393e4540797d311362c384a3d643aec11d6985 → fea19b8381ec10ff8ed1923a336332974bbb552227ed215e7ddaaf0ec0112c1d} +1 -1
- package/dist/phoenix-ui/bundle/manifest.json +126 -126
- package/docs/phoenix-diagram.md +173 -0
- package/docs/phoenix-ui.md +40 -12
- package/package.json +14 -10
- package/skills/agi-mode/SKILL.md +3 -1
- package/skills/agi-mode/assets/sdlc/event.md +4 -5
- package/skills/agi-mode/assets/sdlc/object-status.md +1 -1
- package/skills/agi-mode/assets/sdlc/protocol.md +4 -2
- package/skills/agi-mode/evals/scenarios.md +108 -3
- package/skills/agi-mode/playbooks/authoring-a-skill.md +13 -2
- package/skills/agi-mode/playbooks/eval.md +19 -3
- package/skills/agi-mode/playbooks/hillclimb.md +4 -2
- package/skills/agi-mode/playbooks/reflection.md +1 -1
- package/skills/agi-mode/playbooks/sdlc.md +10 -6
- package/skills/agi-mode/playbooks/what-next.md +6 -2
- package/skills/agi-mode/references/eval-protocol.md +13 -4
- package/skills/agi-mode/references/interface-design.md +1 -0
- package/skills/agi-mode/references/remote-evolution.md +178 -0
- package/skills/agi-mode/references/skill-evolution.md +2 -0
- package/skills/agi-mode/scripts/evolution/compare.py +569 -0
- package/skills/agi-mode/scripts/evolution/evolution.py +2886 -0
- package/skills/agi-mode/scripts/evolution/examples/public-smoke.json +128 -0
- package/skills/agi-mode/scripts/evolution/examples/quality-calibration.json +128 -0
- package/skills/agi-mode/scripts/evolution/examples/quality-rubric.json +133 -0
- package/skills/agi-mode/scripts/evolution/protocol.py +1586 -0
- package/skills/agi-mode/scripts/evolution/pyproject.toml +16 -0
- package/skills/agi-mode/scripts/evolution/quality.py +689 -0
- package/skills/agi-mode/scripts/evolution/remote.py +2303 -0
- package/skills/agi-mode/scripts/evolution/tests/support.py +201 -0
- package/skills/agi-mode/scripts/evolution/tests/test_apply.py +643 -0
- package/skills/agi-mode/scripts/evolution/tests/test_bounded_exploration.py +236 -0
- package/skills/agi-mode/scripts/evolution/tests/test_bundles.py +414 -0
- package/skills/agi-mode/scripts/evolution/tests/test_calibration.py +460 -0
- package/skills/agi-mode/scripts/evolution/tests/test_compare.py +377 -0
- package/skills/agi-mode/scripts/evolution/tests/test_protocol.py +357 -0
- package/skills/agi-mode/scripts/evolution/tests/test_quality.py +647 -0
- package/skills/agi-mode/scripts/evolution/tests/test_remote.py +857 -0
- package/skills/agi-mode/scripts/evolution/tests/test_search.py +1109 -0
- package/skills/agi-mode/scripts/evolution/tests/test_typesafe.py +624 -0
- package/skills/agi-mode/scripts/evolution/tests/test_verifier_context.py +132 -0
- package/skills/agi-mode/scripts/evolution/typesafe_worker.py +145 -0
- package/skills/agi-mode/scripts/evolution/uv.lock +2548 -0
- package/skills/apply-code-review/SKILL.md +1 -0
- package/skills/apply-code-review/agents/openai.yaml +2 -0
- package/skills/apply-doc-review/SKILL.md +1 -0
- package/skills/apply-doc-review/agents/openai.yaml +2 -0
- package/skills/apply-ui-review/SKILL.md +1 -0
- package/skills/apply-ui-review/agents/openai.yaml +2 -0
- package/skills/autoresearch/SKILL.md +1 -0
- package/skills/clean-artifacts/SKILL.md +52 -0
- package/skills/clean-artifacts/agents/openai.yaml +4 -0
- package/skills/clean-artifacts/evals/scenarios.md +13 -0
- package/skills/clean-artifacts/references/history-cleanup.md +41 -0
- package/skills/crd/SKILL.md +100 -65
- package/skills/crd/assets/cr-template.md +15 -0
- package/skills/crd-respond/SKILL.md +17 -5
- package/skills/crd-respond/agents/openai.yaml +2 -2
- package/skills/crd-respond/assets/response-template.md +7 -0
- package/skills/crd-respond/evals/scenarios.md +7 -0
- package/skills/create-verification-skill/SKILL.md +1 -0
- package/skills/debugging/SKILL.md +1 -0
- package/skills/design-md/SKILL.md +1 -0
- package/skills/design-reference/SKILL.md +6 -2
- package/skills/design-reference/evals/scenarios.md +4 -0
- package/skills/dev-plan/SKILL.md +11 -6
- package/skills/dev-plan/references/execution-workflow.md +1 -1
- package/skills/dev-plan/references/plan-skeleton.md +234 -69
- package/skills/dev-plan/scripts/check_plan.py +1 -1
- package/skills/documentation-writer/SKILL.md +19 -14
- package/skills/documentation-writer/references/architecture.md +6 -2
- package/skills/documentation-writer/references/user-manual.md +2 -2
- package/skills/elintp/SKILL.md +12 -6
- package/skills/experience-capture/SKILL.md +1 -0
- package/skills/gdpr-compliant/SKILL.md +1 -0
- package/skills/kpi-dashboard-design/SKILL.md +1 -0
- package/skills/landing-page-conversion-audit/SKILL.md +1 -0
- package/skills/mcp-release-qa/SKILL.md +2 -1
- package/skills/meeting-minutes/SKILL.md +1 -0
- package/skills/optimize-agents-md/SKILL.md +128 -0
- package/skills/optimize-agents-md/assets/coding-principles.md +118 -0
- package/skills/phoenix-diagram/ENGINE.json +39 -0
- package/skills/phoenix-diagram/SKILL.md +109 -0
- package/skills/phoenix-diagram/examples/legacy.agent-tool-call.workflow.json +94 -0
- package/skills/phoenix-diagram/examples/legacy.async-job-roundtrip.sequence.json +61 -0
- package/skills/phoenix-diagram/examples/legacy.deployment-release.lifecycle.json +49 -0
- package/skills/phoenix-diagram/examples/legacy.product-analytics.dataflow.json +76 -0
- package/skills/{archify/test/fixtures/v1-baseline/web-app.architecture.json → phoenix-diagram/examples/legacy.web-app.architecture.json} +16 -11
- package/skills/phoenix-diagram/examples/minimal.architecture.json +11 -0
- package/skills/phoenix-diagram/examples/minimal.class.json +23 -0
- package/skills/phoenix-diagram/examples/minimal.dataflow.json +11 -0
- package/skills/phoenix-diagram/examples/minimal.erd.json +25 -0
- package/skills/phoenix-diagram/examples/minimal.lifecycle.json +11 -0
- package/skills/phoenix-diagram/examples/minimal.sequence.json +13 -0
- package/skills/phoenix-diagram/examples/minimal.timeline.json +15 -0
- package/skills/phoenix-diagram/examples/minimal.tree.json +13 -0
- package/skills/phoenix-diagram/examples/minimal.waterfall.json +12 -0
- package/skills/phoenix-diagram/examples/minimal.workflow.json +12 -0
- package/skills/phoenix-diagram/references/architecture-compare.md +111 -0
- package/skills/phoenix-diagram/references/authoring-defaults.md +42 -0
- package/skills/phoenix-diagram/references/brand-marks.md +52 -0
- package/skills/phoenix-diagram/references/compatibility.md +22 -0
- package/skills/phoenix-diagram/references/delivery-contract.md +127 -0
- package/skills/phoenix-diagram/references/extending-types.md +14 -0
- package/skills/phoenix-diagram/references/migration.md +57 -0
- package/skills/phoenix-diagram/references/preview.md +45 -0
- package/skills/phoenix-diagram/references/repository-authoring.md +29 -0
- package/skills/phoenix-diagram/references/viewer-runtime.md +27 -0
- package/skills/phoenix-diagram/schemas/README.md +23 -0
- package/skills/phoenix-diagram/schemas/architecture.schema.json +329 -0
- package/skills/phoenix-diagram/schemas/class.schema.json +348 -0
- package/skills/phoenix-diagram/schemas/common.schema.json +358 -0
- package/skills/{archify/schemas/lifecycle.schema.json → phoenix-diagram/schemas/dataflow.schema.json} +63 -58
- package/skills/phoenix-diagram/schemas/erd.schema.json +384 -0
- package/skills/phoenix-diagram/schemas/lifecycle.schema.json +202 -0
- package/skills/phoenix-diagram/schemas/sequence.schema.json +254 -0
- package/skills/phoenix-diagram/schemas/timeline.schema.json +170 -0
- package/skills/phoenix-diagram/schemas/tree.schema.json +144 -0
- package/skills/phoenix-diagram/schemas/waterfall.schema.json +150 -0
- package/skills/phoenix-diagram/schemas/workflow.schema.json +460 -0
- package/skills/phoenix-diagram/scripts/phoenix-bootstrap.cjs +589 -0
- package/skills/phoenix-diagram/scripts/phoenix-diagram +6 -0
- package/skills/phoenix-diagram/scripts/phoenix-launcher.cjs +10 -0
- package/skills/phoenix-ui/GENERATED.json +255 -240
- package/skills/phoenix-ui/SKILL.md +7 -4
- package/skills/phoenix-ui/evals/scenarios.md +8 -1
- package/skills/phoenix-ui/reference/craft-floor.md +3 -1
- package/skills/phoenix-ui/reference/critique.md +6 -14
- package/skills/phoenix-ui/reference/init.md +1 -1
- package/skills/phoenix-ui/reference/live.md +1 -1
- package/skills/phoenix-ui/reference/operate.md +15 -0
- package/skills/phoenix-ui/scripts/ENGINE.json +17 -17
- package/skills/phoenix-ui/scripts/phoenix-bootstrap.cjs +0 -4
- package/skills/portal-app-exchange/SKILL.md +1 -0
- package/skills/portal-dev-setup/SKILL.md +71 -12
- package/skills/portal-dev-setup/scripts/onebox.sh +69 -6
- package/skills/portal-external-app/SKILL.md +55 -16
- package/skills/portal-external-app/references/config-placement.md +108 -2
- package/skills/portal-external-app/references/registration-and-onebox.md +56 -2
- package/skills/portal-logging/SKILL.md +1 -0
- package/skills/portal-micro-app/SKILL.md +2 -1
- package/skills/portal-micro-app/references/sdk-reference.md +3 -1
- package/skills/prd/SKILL.md +238 -159
- package/skills/prd/evals/scenarios.md +13 -0
- package/skills/prd/references/prd-skeleton.md +14 -4
- package/skills/react/SKILL.md +1 -0
- package/skills/resolve-blocked/SKILL.md +46 -19
- package/skills/resolve-blocked/agents/openai.yaml +2 -2
- package/skills/resolve-blocked/evals/scenarios.md +22 -0
- package/skills/resolve-blocked/references/decisions-contract.md +7 -4
- package/skills/review-code/SKILL.md +308 -46
- package/skills/review-code/agents/openai.yaml +2 -0
- package/skills/review-dev-plan/SKILL.md +88 -33
- package/skills/review-dev-plan/agents/openai.yaml +2 -0
- package/skills/review-dev-plan/references/report-contract.md +53 -19
- package/skills/review-dev-plan/references/review-lenses.md +2 -1
- package/skills/review-prd/SKILL.md +90 -34
- package/skills/review-prd/agents/openai.yaml +2 -0
- package/skills/review-prd/references/report-contract.md +54 -18
- package/skills/review-prd-dev-gaps/SKILL.md +1 -0
- package/skills/review-prd-dev-gaps/agents/openai.yaml +2 -0
- package/skills/review-ui/SKILL.md +369 -71
- package/skills/review-ui/agents/openai.yaml +2 -0
- package/skills/review-ui/evals/scenarios.md +2 -0
- package/skills/rust/SKILL.md +76 -84
- package/skills/rust/references/api-design.md +97 -0
- package/skills/rust/references/{chapter_10.md → async-tokio.md} +42 -18
- package/skills/rust/references/behavioral-patterns.md +49 -0
- package/skills/rust/references/bevy.md +95 -0
- package/skills/rust/references/{chapter_02.md → clippy-and-linting.md} +26 -15
- package/skills/rust/references/{chapter_01.md → coding-idioms.md} +58 -7
- package/skills/rust/references/crates-and-dependencies.md +66 -0
- package/skills/rust/references/{chapter_08.md → documentation.md} +30 -3
- package/skills/rust/references/{chapter_04.md → error-handling.md} +32 -6
- package/skills/rust/references/{chapter_06.md → generics-and-dispatch.md} +28 -11
- package/skills/rust/references/macros.md +45 -0
- package/skills/rust/references/{chapter_03.md → performance.md} +25 -2
- package/skills/rust/references/{chapter_09.md → pointers-and-ownership.md} +37 -17
- package/skills/rust/references/{chapter_05.md → testing.md} +18 -2
- package/skills/rust/references/{chapter_07.md → type-state.md} +5 -1
- package/skills/rust/references/unsafe-and-ffi.md +56 -0
- package/skills/rust-port/SKILL.md +144 -0
- package/skills/rust-review/SKILL.md +177 -0
- package/skills/security-audit/SKILL.md +1 -0
- package/skills/spec-human-decision/SKILL.md +1 -0
- package/skills/sql-optimization/SKILL.md +1 -0
- package/skills/story-points/SKILL.md +1 -0
- package/skills/swarm/SKILL.md +1 -0
- package/skills/test-plan/SKILL.md +1 -0
- package/skills/ui-loop/SKILL.md +39 -0
- package/skills/ui-loop/agents/openai.yaml +3 -0
- package/skills/ui-pattern-research/SKILL.md +1 -0
- package/skills/use-llm-gateway/SKILL.md +58 -0
- package/skills/use-llm-gateway/agents/openai.yaml +4 -0
- package/skills/use-llm-gateway/references/api.md +129 -0
- package/skills/use-llm-gateway/references/recovery.md +86 -0
- package/skills/use-prompt-dsl/SKILL.md +165 -0
- package/skills/use-prompt-dsl/references/examples.md +726 -0
- package/skills/use-prompt-dsl/references/language.md +938 -0
- package/skills/use-rustify-docs/SKILL.md +60 -0
- package/skills/use-rustify-docs/agents/openai.yaml +4 -0
- package/skills/use-rustify-docs/references/rustify-docs.md +138 -0
- package/skills/use-task-gateway/SKILL.md +60 -0
- package/skills/use-task-gateway/agents/openai.yaml +3 -0
- package/skills/use-task-gateway/references/authentication.md +75 -0
- package/skills/use-task-gateway/references/task-api.md +121 -0
- package/skills/use-task-gateway/references/workers.md +85 -0
- package/skills/use-task-gateway/references/workflow-actions.md +66 -0
- package/skills/use-workflow-service/SKILL.md +57 -0
- package/skills/use-workflow-service/agents/openai.yaml +3 -0
- package/skills/use-workflow-service/references/action-provider.md +84 -0
- package/skills/use-workflow-service/references/authentication.md +76 -0
- package/skills/use-workflow-service/references/authoring.md +62 -0
- package/skills/use-workflow-service/references/mcp.md +47 -0
- package/skills/use-workflow-service/references/open-api.md +88 -0
- package/skills/use-workflow-service/references/orchestration-choice.md +63 -0
- package/skills/working-with-mbx/SKILL.md +1 -0
- package/skills/working-with-mise/SKILL.md +1 -0
- package/skills/xgent-app-release/SKILL.md +114 -16
- package/skills/xgent-app-release/references/build-and-package.md +2 -1
- package/skills/xgent-app-release/references/publish-api.md +6 -1
- package/skills/xgent-app-release/references/troubleshooting.md +2 -1
- package/skills/xgent-app-release/references/verify-preflight.mjs +21 -1
- package/skills/xgent-app-release/scripts/preflight.mjs +42 -3
- package/skills/xgent-image-push/SKILL.md +1 -0
- package/skills/xgent-init/SKILL.md +1 -0
- package/docs/claude-context-goal-guard.md +0 -124
- package/docs/codex-context-goal-guard.md +0 -109
- package/hooks/claude/context-goal-guard.js +0 -139
- package/hooks/claude/settings.example.json +0 -26
- package/hooks/codex/context-goal-guard.py +0 -189
- package/hooks/codex/hooks.example.json +0 -26
- package/skills/archify/SKILL.md +0 -137
- package/skills/archify/assets/template.html +0 -14937
- package/skills/archify/bin/archify.mjs +0 -2139
- package/skills/archify/bin/open-artifact.mjs +0 -86
- package/skills/archify/bin/preview.mjs +0 -653
- package/skills/archify/bin/visual-check.mjs +0 -829
- package/skills/archify/brand-marks/README.md +0 -31
- package/skills/archify/brand-marks/catalog.json +0 -131
- package/skills/archify/delta/architecture-delta.mjs +0 -1232
- package/skills/archify/examples/agent-run.lifecycle.json +0 -60
- package/skills/archify/examples/brand-aware-delivery.architecture.json +0 -47
- package/skills/archify/examples/cache-miss-request.sequence.json +0 -82
- package/skills/archify/examples/checkout-platform.base.architecture.json +0 -31
- package/skills/archify/examples/checkout-platform.head.architecture.json +0 -31
- package/skills/archify/examples/dataflow-product-analytics.html +0 -15048
- package/skills/archify/examples/event-stream.dataflow.json +0 -57
- package/skills/archify/examples/incident-response.workflow.json +0 -64
- package/skills/archify/examples/lifecycle-agent-run.html +0 -14983
- package/skills/archify/examples/production-deployment.architecture.json +0 -71
- package/skills/archify/examples/release-delivery.workflow.json +0 -62
- package/skills/archify/examples/sequence-cache-miss-request.html +0 -15063
- package/skills/archify/examples/web-app-rendered.html +0 -15012
- package/skills/archify/examples/workflow-agent-tool-call-rendered.html +0 -15054
- package/skills/archify/migrations/workflow-v2.mjs +0 -279
- package/skills/archify/package-lock.json +0 -149
- package/skills/archify/package.json +0 -39
- package/skills/archify/recipes/scenarios.mjs +0 -391
- package/skills/archify/references/authoring-contract.md +0 -247
- package/skills/archify/references/brand-marks.md +0 -65
- package/skills/archify/references/delivery-contract.md +0 -138
- package/skills/archify/references/viewer-runtime.md +0 -45
- package/skills/archify/renderers/architecture/grid.mjs +0 -62
- package/skills/archify/renderers/architecture/render-architecture.mjs +0 -1078
- package/skills/archify/renderers/dataflow/README.md +0 -104
- package/skills/archify/renderers/dataflow/render-dataflow.mjs +0 -483
- package/skills/archify/renderers/lifecycle/README.md +0 -115
- package/skills/archify/renderers/lifecycle/render-lifecycle.mjs +0 -561
- package/skills/archify/renderers/sequence/README.md +0 -114
- package/skills/archify/renderers/sequence/render-sequence.mjs +0 -464
- package/skills/archify/renderers/shared/brand-marks.mjs +0 -563
- package/skills/archify/renderers/shared/cli.mjs +0 -218
- package/skills/archify/renderers/shared/desktop-readability.mjs +0 -26
- package/skills/archify/renderers/shared/diagnostics.mjs +0 -160
- package/skills/archify/renderers/shared/engineering-profiles.mjs +0 -157
- package/skills/archify/renderers/shared/generated-brand-marks.mjs +0 -2003
- package/skills/archify/renderers/shared/generated-validators.mjs +0 -13
- package/skills/archify/renderers/shared/geometry.mjs +0 -1423
- package/skills/archify/renderers/shared/i18n.mjs +0 -595
- package/skills/archify/renderers/shared/layout-report.mjs +0 -40
- package/skills/archify/renderers/shared/legend.mjs +0 -217
- package/skills/archify/renderers/shared/output-path.mjs +0 -340
- package/skills/archify/renderers/shared/repository-evidence.mjs +0 -239
- package/skills/archify/renderers/shared/repository-location.mjs +0 -58
- package/skills/archify/renderers/shared/text-fit.mjs +0 -49
- package/skills/archify/renderers/shared/utils.mjs +0 -232
- package/skills/archify/renderers/shared/validator.mjs +0 -86
- package/skills/archify/renderers/workflow/README.md +0 -223
- package/skills/archify/renderers/workflow/render-workflow.mjs +0 -35
- package/skills/archify/renderers/workflow/workflow-compiler.mjs +0 -4400
- package/skills/archify/renderers/workflow/workflow-migration-geometry.mjs +0 -144
- package/skills/archify/schemas/README.md +0 -211
- package/skills/archify/schemas/architecture.schema.json +0 -178
- package/skills/archify/schemas/common.schema.json +0 -115
- package/skills/archify/scripts/check-render-output.mjs +0 -916
- package/skills/archify/scripts/check-update.mjs +0 -1667
- package/skills/archify/scripts/generate-brand-marks.mjs +0 -141
- package/skills/archify/scripts/generate-validators.mjs +0 -66
- package/skills/archify/scripts/render-examples.mjs +0 -26
- package/skills/archify/scripts/update-contract.mjs +0 -182
- package/skills/archify/skill-release.json +0 -10
- package/skills/archify/test/adaptive-reader-layout.test.mjs +0 -86
- package/skills/archify/test/animation.test.mjs +0 -179
- package/skills/archify/test/architecture-compare-recovery.test.mjs +0 -157
- package/skills/archify/test/architecture-delta-markers.test.mjs +0 -137
- package/skills/archify/test/architecture-delta.test.mjs +0 -705
- package/skills/archify/test/artifact-receipt-flush.test.mjs +0 -126
- package/skills/archify/test/authored-reachability.test.mjs +0 -95
- package/skills/archify/test/authoring-safety-contract.test.mjs +0 -54
- package/skills/archify/test/automatic-port-spread.test.mjs +0 -376
- package/skills/archify/test/base-input-compatibility.test.mjs +0 -42
- package/skills/archify/test/brand-marks.test.mjs +0 -678
- package/skills/archify/test/chapter-delta-preview.test.mjs +0 -157
- package/skills/archify/test/chapter-handoff.test.mjs +0 -97
- package/skills/archify/test/chapter-rail.test.mjs +0 -86
- package/skills/archify/test/checkout-line-endings.test.mjs +0 -72
- package/skills/archify/test/ci-scope.test.mjs +0 -59
- package/skills/archify/test/clean-skill-staging.test.mjs +0 -440
- package/skills/archify/test/cli-output-types.test.mjs +0 -201
- package/skills/archify/test/cli.test.mjs +0 -986
- package/skills/archify/test/community-proof-intake.test.mjs +0 -125
- package/skills/archify/test/cursor-onboarding.test.mjs +0 -74
- package/skills/archify/test/degraded.test.mjs +0 -161
- package/skills/archify/test/delivery-contract.test.mjs +0 -52
- package/skills/archify/test/desktop-reader-browser.test.mjs +0 -80
- package/skills/archify/test/diagram-guide.test.mjs +0 -92
- package/skills/archify/test/engineering-profile.test.mjs +0 -209
- package/skills/archify/test/export-browser.test.mjs +0 -305
- package/skills/archify/test/export-cleanup-browser.test.mjs +0 -294
- package/skills/archify/test/finder-browser.test.mjs +0 -274
- package/skills/archify/test/finder.test.mjs +0 -104
- package/skills/archify/test/fixtures/automatic-routing-node-border-clearance.workflow.json +0 -40
- package/skills/archify/test/fixtures/fail-migration-cleanup.mjs +0 -17
- package/skills/archify/test/fixtures/issue-126/custom-widths.workflow.json +0 -18
- package/skills/archify/test/fixtures/issue-126/explicit-route.workflow.json +0 -28
- package/skills/archify/test/fixtures/issue-126/explicit-viewbox.workflow.json +0 -19
- package/skills/archify/test/fixtures/issue-126/labels.workflow.json +0 -18
- package/skills/archify/test/fixtures/v1-baseline/agent-run.lifecycle.json +0 -64
- package/skills/archify/test/fixtures/v1-baseline/agent-tool-call.workflow.json +0 -88
- package/skills/archify/test/fixtures/v1-baseline/cache-miss-request.sequence.json +0 -75
- package/skills/archify/test/fixtures/v1-baseline/event-stream.dataflow.json +0 -57
- package/skills/archify/test/fixtures/v1-baseline/product-analytics.dataflow.json +0 -70
- package/skills/archify/test/fixtures/v1-baseline/production-deployment.architecture.json +0 -71
- package/skills/archify/test/fixtures/v1-workflow-700x400.workflow.json +0 -22
- package/skills/archify/test/fixtures/v1-workflow-explicit-coordinates.workflow.json +0 -47
- package/skills/archify/test/focus-browser.test.mjs +0 -226
- package/skills/archify/test/gallery.test.mjs +0 -130
- package/skills/archify/test/generate-validators.test.mjs +0 -59
- package/skills/archify/test/generate-viewer.test.mjs +0 -165
- package/skills/archify/test/generated-artifact-xml.test.mjs +0 -88
- package/skills/archify/test/geometry.test.mjs +0 -739
- package/skills/archify/test/golden.mjs +0 -207
- package/skills/archify/test/grid.test.mjs +0 -47
- package/skills/archify/test/guide-page.test.mjs +0 -85
- package/skills/archify/test/guide.test.mjs +0 -81
- package/skills/archify/test/guided-views-browser.test.mjs +0 -460
- package/skills/archify/test/guided-views.test.mjs +0 -144
- package/skills/archify/test/helpers/desktop-browser.mjs +0 -48
- package/skills/archify/test/helpers/offline-fonts.mjs +0 -76
- package/skills/archify/test/helpers/viewer-click.mjs +0 -72
- package/skills/archify/test/helpers/xml.mjs +0 -37
- package/skills/archify/test/i18n.test.mjs +0 -422
- package/skills/archify/test/intent-trace-browser.test.mjs +0 -284
- package/skills/archify/test/intent-trace.test.mjs +0 -111
- package/skills/archify/test/landing.test.mjs +0 -97
- package/skills/archify/test/layout-rules.test.mjs +0 -1498
- package/skills/archify/test/legend-contract.test.mjs +0 -404
- package/skills/archify/test/motion-governor-browser.test.mjs +0 -342
- package/skills/archify/test/motion-governor.test.mjs +0 -111
- package/skills/archify/test/offline-font-browser.test.mjs +0 -210
- package/skills/archify/test/offline-self-containment.test.mjs +0 -80
- package/skills/archify/test/open-artifact.test.mjs +0 -118
- package/skills/archify/test/ordinary-model-floor.test.mjs +0 -1052
- package/skills/archify/test/output-path.test.mjs +0 -587
- package/skills/archify/test/presentation.test.mjs +0 -71
- package/skills/archify/test/preset-tryon.test.mjs +0 -113
- package/skills/archify/test/preview-contract.test.mjs +0 -40
- package/skills/archify/test/preview.test.mjs +0 -530
- package/skills/archify/test/proof-aperture.test.mjs +0 -78
- package/skills/archify/test/reach-share-card.test.mjs +0 -149
- package/skills/archify/test/reader-layout-browser.test.mjs +0 -320
- package/skills/archify/test/readme-showcase.test.mjs +0 -319
- package/skills/archify/test/real-repository-proof.test.mjs +0 -209
- package/skills/archify/test/relationship-direct-explorer.test.mjs +0 -115
- package/skills/archify/test/relationship-lens.test.mjs +0 -128
- package/skills/archify/test/relationship-permalink.test.mjs +0 -130
- package/skills/archify/test/relationship-pulse.test.mjs +0 -122
- package/skills/archify/test/release-identity.test.mjs +0 -476
- package/skills/archify/test/release-package-gates.test.mjs +0 -750
- package/skills/archify/test/render-output-checks.test.mjs +0 -588
- package/skills/archify/test/renderer-diagnostic-boundary.test.mjs +0 -107
- package/skills/archify/test/repair-receipt.test.mjs +0 -181
- package/skills/archify/test/repository-evidence-replacement.test.mjs +0 -136
- package/skills/archify/test/repository-evidence.test.mjs +0 -605
- package/skills/archify/test/repository-language-metadata.test.mjs +0 -67
- package/skills/archify/test/route-journey.test.mjs +0 -125
- package/skills/archify/test/route-probe-browser.test.mjs +0 -363
- package/skills/archify/test/route-probe.test.mjs +0 -114
- package/skills/archify/test/route-share-card.test.mjs +0 -163
- package/skills/archify/test/semantic-camera.test.mjs +0 -88
- package/skills/archify/test/semantic-flow.test.mjs +0 -90
- package/skills/archify/test/semantic-legend-gateway.test.mjs +0 -156
- package/skills/archify/test/semantic-lens-browser.test.mjs +0 -372
- package/skills/archify/test/semantic-lens.test.mjs +0 -103
- package/skills/archify/test/semantic-passport.test.mjs +0 -99
- package/skills/archify/test/semantic-radar.test.mjs +0 -735
- package/skills/archify/test/semantic-zoom.test.mjs +0 -86
- package/skills/archify/test/sequence-column-fit.test.mjs +0 -137
- package/skills/archify/test/settled-flow.test.mjs +0 -97
- package/skills/archify/test/share-card-export.test.mjs +0 -132
- package/skills/archify/test/site-language-continuity.test.mjs +0 -569
- package/skills/archify/test/site-language-integration.mjs +0 -9
- package/skills/archify/test/skill-metadata.test.mjs +0 -84
- package/skills/archify/test/stable-update-manifest.test.mjs +0 -167
- package/skills/archify/test/start-page.test.mjs +0 -312
- package/skills/archify/test/story-beat-navigator.test.mjs +0 -103
- package/skills/archify/test/story-carrier.test.mjs +0 -90
- package/skills/archify/test/story-director-strip.test.mjs +0 -91
- package/skills/archify/test/story-follow-camera.test.mjs +0 -103
- package/skills/archify/test/story-horizon.test.mjs +0 -91
- package/skills/archify/test/story-moment-link.test.mjs +0 -93
- package/skills/archify/test/story-shelf.test.mjs +0 -84
- package/skills/archify/test/story-trail.test.mjs +0 -81
- package/skills/archify/test/toolbar-polish.test.mjs +0 -57
- package/skills/archify/test/update-contract.test.mjs +0 -133
- package/skills/archify/test/update-notifier.test.mjs +0 -3317
- package/skills/archify/test/v1-compatibility.test.mjs +0 -329
- package/skills/archify/test/vertical-edge.test.mjs +0 -68
- package/skills/archify/test/viewer-camera-browser.test.mjs +0 -395
- package/skills/archify/test/viewer-chrome-layout.test.mjs +0 -1104
- package/skills/archify/test/viewer-identifiers-browser.test.mjs +0 -135
- package/skills/archify/test/visual-check.test.mjs +0 -400
- package/skills/archify/test/webm-artifact.smoke.mjs +0 -1855
- package/skills/archify/test/workflow-compiler-hard-contract.test.mjs +0 -2136
- package/skills/archify/test/workflow-compiler.test.mjs +0 -1163
- package/skills/archify/test/workflow-migration.test.mjs +0 -620
- package/skills/archify/test/workflow-semantic-contract.test.mjs +0 -131
- /package/{skills/archify/THIRD_PARTY_NOTICES.md → dist/phoenix-diagram/THIRD-PARTY-LICENSES/0b7fb59365dc21c93b0f62526d74ee913aeec9ae532c112bc76afa7edcd56e14.txt} +0 -0
- /package/{skills/archify/LICENSE → dist/phoenix-diagram/THIRD-PARTY-LICENSES/b799ab081703e7821ae5096d2c1abdf14bbdc75e8ea1c4045998c36ed6db9706.txt} +0 -0
- /package/{skills/archify/assets/JetBrainsMono-OFL.txt → dist/phoenix-diagram/THIRD-PARTY-LICENSES/c1ab7c666206842a02b35b30770dac0d7a10156ed401c9defc3f02a754d89e90.txt} +0 -0
- /package/{skills/archify/examples/agent-tool-call.workflow.json → dist/phoenix-diagram/bundle/examples/legacy.agent-tool-call.workflow.json} +0 -0
- /package/{skills/archify/examples/async-job-roundtrip.sequence.json → dist/phoenix-diagram/bundle/examples/legacy.async-job-roundtrip.sequence.json} +0 -0
- /package/{skills/archify/examples/deployment-release.lifecycle.json → dist/phoenix-diagram/bundle/examples/legacy.deployment-release.lifecycle.json} +0 -0
- /package/{skills/archify/examples/product-analytics.dataflow.json → dist/phoenix-diagram/bundle/examples/legacy.product-analytics.dataflow.json} +0 -0
- /package/{skills/archify/examples/web-app.architecture.json → dist/phoenix-diagram/bundle/examples/legacy.web-app.architecture.json} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: xgent-app-release
|
|
3
3
|
description: '用于从 App 仓库发布或排查 XGENT 门户版本:前端 dist、后端镜像、manifest 或首次接入。通过 release-cli 与发布令牌提交提案,处理 CI、待审及发布后故障。'
|
|
4
|
+
when_to_use: "用户会说「发个版」「提案卡在待审」「发布后出故障」时。"
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# xgent-app-release · App 版本自助发布
|
|
@@ -15,7 +16,7 @@ description: '用于从 App 仓库发布或排查 XGENT 门户版本:前端 di
|
|
|
15
16
|
自动通过并应用清单/产物;后端与网关需分别确认,且每次留档(时间 + diff + 令牌前缀)。
|
|
16
17
|
- **审核档**:其余一切(scopes / ACL 清单 / 依赖 / 跨应用授权 / 服务地址 / 席位 /
|
|
17
18
|
授权文案 scopeLabels / iframe 指向 embedUrl / 部署形态 / 部署前置 env 键清单
|
|
18
|
-
requiredEnv / 服务账号身份 serviceAccount.clientId / 嵌进门户管理面的管理页 adminPages / 首次接入)都会改变权限面,
|
|
19
|
+
requiredEnv / 服务账号身份 serviceAccount.clientId / 嵌进门户管理面的管理页 adminPages / service 租户配置 tenantConfig / 首次接入)都会改变权限面,
|
|
19
20
|
⇒ 提交成功但进入平台管理员的「发布审核」队列,**批准前库里一字不动**。
|
|
20
21
|
被拒绝时 `status` 与 `--wait` 都能看到原因。
|
|
21
22
|
- **`helpEntry`(版头那枚帮助按钮)按【值】分档**,同一个字段两种命运:写 App 内路由
|
|
@@ -39,7 +40,7 @@ SERVICE_ONLY scope(如 `seats.read`)写进 `serviceScopes` 都会**提交即
|
|
|
39
40
|
reason 会原文展示给审批人,写清楚用途能少一轮往返。上报自己的用量指标,先在
|
|
40
41
|
`usageMetrics` 里声明(key 必须以你的 listingKey. 开头;同样治理档)——没声明的
|
|
41
42
|
metricKey 会被上报接口拒收并计入 `rejected`。要声明「部署我需要哪些环境变量」
|
|
42
|
-
用 `requiredEnv
|
|
43
|
+
用 `requiredEnv`(键名与可选生成规格),值由平台注入、自动供给、声明生成或管理员配置 —— 见下面「镜像要环境变量」。
|
|
43
44
|
|
|
44
45
|
### 文案字段:哪些支持多语,哪些不支持
|
|
45
46
|
|
|
@@ -156,14 +157,25 @@ MANIFEST_STORE_TOKEN=xrel_… # 目录那台签给你的发布令牌;
|
|
|
156
157
|
别把套件令牌当单应用令牌随手分发。成员被移出套件 ⇒ 令牌对它即刻 404;维护者离场 ⇒
|
|
157
158
|
套件令牌连同吊销。
|
|
158
159
|
- **批次**:`POST /api/market/release/bundle/<bundleKey>`(bundle 令牌),一次给全体成员
|
|
159
|
-
|
|
160
|
-
每成员可选 `dist__<key>`(文件)与 `manifest__<key
|
|
160
|
+
各建一条提案,共享同一批号与同一镜像/版本。字段:`version` / `image` 共享,
|
|
161
|
+
每成员可选 `dist__<key>`(文件)与 `manifest__<key>`。**带任何 `dist__<key>` 就必须发
|
|
162
|
+
`multipart/form-data`**(它只认文件字段,JSON 体里塞不进文件);只有 `version` / `image` /
|
|
163
|
+
`manifest__<key>` 的纯元数据批次才可以发 JSON。单个包 ≤200 MiB,**整个请求 ≤256 MiB** ——
|
|
164
|
+
各成员的包加起来也受这一条限制,不能按「成员数 × 200 MiB」估。任一成员的确定性校验不过 ⇒
|
|
161
165
|
整批不落库;成员镜像已漂移而批次没带镜像 ⇒ `BUNDLE_IMAGE_DIVERGED`(带上镜像即可收敛)。
|
|
162
166
|
状态轮询:`GET /api/market/release/bundle/<bundleKey>/status`(每成员一条)。
|
|
167
|
+
- **批次的后端只收敛一次**:门户在提交时冻结本批的预期后端成员;它们**全部生效且无 applyError**
|
|
168
|
+
后共享后端才按新目标收敛一次。之前清单 / 前端可逐个生效,发布状态显示「后端等待成员 x、y」;
|
|
169
|
+
有成员被拒 / 撤回 ⇒ 原批不再执行:先撤清其余待审,再提交**新的完整批次**(取代旧批);
|
|
170
|
+
`applyError` 按既有重试修好即可。前端先于后端生效,**新前端必须兼容旧后端**。批次回执里每个
|
|
171
|
+
成员的 `warnings` 会写明「自动档被转待审」的原因(缺键、等生成者等)。
|
|
163
172
|
- **共享后端的 manifest**:成员各自的 `deployDescriptor.image` 的**仓库段可以等于 bundleKey**
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
173
|
+
(治理闸对套件镜像放行)。**端口、资源、迁移与健康路径取宿主**(最早加入的有后端成员);
|
|
174
|
+
**环境变量由全体后端成员共同提供**——各成员的 SA、交换密钥、库连接、生成密钥都会进同一个容器;
|
|
175
|
+
**同名表示共享**:同值合并,**异值拒绝**(要么统一取值,要么改用带各自前缀的键)。成员的受管
|
|
176
|
+
envFile 每行必须是 `KEY=value`,不能写裸 `KEY`。成员的对外地址不变:各自 `/svc/<成员key>`,
|
|
177
|
+
容器只是同一个(`<bundleKey>-server`)。共享 ⇒ **成员能读到彼此的密钥、故障域合一**:容器挂了,
|
|
178
|
+
全部成员一起不可用,各自的告警各自到;需要进程级保密的成员继续独立部署。
|
|
167
179
|
- **加不进去的两种真原因**:报 `BUNDLE_BUILTIN_MEMBER` ⇒ 那是仓内内置 App,先出仓再进套件;
|
|
168
180
|
报 `BUNDLE_MEMBER_ALREADY_DEPLOYED` ⇒ 它已有独立容器在跑,先让平台管理员在
|
|
169
181
|
「服务部署」里停止,再加入。
|
|
@@ -269,7 +281,8 @@ whoami `200` 而 `/status` `404`,就是这种情况:**令牌没问题,别
|
|
|
269
281
|
每次都传完整 dist。
|
|
270
282
|
- **tar 根必须直接是 `index.html`。** CLI 传目录会生成临时包并在命令收尾删除;本流程先留存
|
|
271
283
|
完整 `.tgz` 再用 `--dist` 上传该文件,保证留存的是实际上传的字节。套一层 `dist/` 的包会被拒收。
|
|
272
|
-
-
|
|
284
|
+
- **单个包 ≤200 MiB**(`dist` / 每个 `dist__<key>` 各算各的),**整个上传请求 ≤256 MiB**(套件批次所有
|
|
285
|
+
成员的包合计也在内);门户只按顶层条目数报数。真超了先查有没有把 source map / 未压缩素材打进去。
|
|
273
286
|
- **本机配了代理就用 `@xgent/release-cli` ≥0.6.0。** Node 内置的 `fetch` **不读** `HTTPS_PROXY`
|
|
274
287
|
—— curl / git / npm / docker 全都读,唯独发版这一步不读,于是它绕开本机代理直连门户:跨境
|
|
275
288
|
直连上行实测约 10 KB/s,2MB 产物必然超时,而报出来的是一句没有线索的 `fetch failed`。
|
|
@@ -292,14 +305,15 @@ whoami `200` 而 `/status` `404`,就是这种情况:**令牌没问题,别
|
|
|
292
305
|
|
|
293
306
|
## 镜像要环境变量:**键名归你,值归平台**
|
|
294
307
|
|
|
295
|
-
manifest 里带**值**的 `deployDescriptor.env` 提交即拒(防生产密钥进你的 git
|
|
296
|
-
|
|
308
|
+
manifest 里带**值**的 `deployDescriptor.env` 提交即拒(防生产密钥进你的 git 历史)。使用
|
|
309
|
+
**`requiredEnv` 声明键名与可选的生成规格**。值从哪来按下表区分:
|
|
297
310
|
|
|
298
311
|
| 档 | 键 | 值从哪来 |
|
|
299
312
|
| --- | --- | --- |
|
|
300
313
|
| **平台注入** | `PORT` · `<PREFIX>_SERVER_PORT` · `PORTAL_INTROSPECT_URL` · `API_BASE_URL` · `PORTAL_BASE_URL` · `<PREFIX>_SA_CLIENT_ID` · `<PREFIX>_SA_CLIENT_SECRET` · `<PREFIX>_APP_SECRET` | 平台换版时自己算并注入,没有人需要动手 |
|
|
301
|
-
| **自动供给** | 库连接串 · Redis 地址 |
|
|
302
|
-
|
|
|
314
|
+
| **自动供给** | 库连接串 · Redis 地址 · 对象存储五键 | 批准时平台按登记的服务代建资源 / 取地址并注入(见下面「服务怎么绑到键」) |
|
|
315
|
+
| **随机生成** | App 独立密钥,声明 `generate` | 批准时生成、加密保管,后续换版复用,值永不回显 |
|
|
316
|
+
| **自定** | 其余**环境依赖**(第三方服务地址、第三方已有 API key…) | 平台管理员手填:非密钥进控制台的 `deployDescriptor.env`,密钥进宿主机上一个 600 的 `envFile` |
|
|
303
317
|
|
|
304
318
|
业务参数(超时、阈值、默认文案、功能开关…)**不在这张表里**:先看下面「业务参数」一节。
|
|
305
319
|
|
|
@@ -307,6 +321,43 @@ manifest 里带**值**的 `deployDescriptor.env` 提交即拒(防生产密钥
|
|
|
307
321
|
`PORTAL_BASE_URL` 是**浏览器可达的门户公开地址**,也是你调别的 App `/svc/<key>/…` 的基址;
|
|
308
322
|
`API_BASE_URL` 是内部 portal-api,**不代理 `/svc`** —— 两个别互相顶替。
|
|
309
323
|
|
|
324
|
+
### 独立密钥:只声明生成规格
|
|
325
|
+
|
|
326
|
+
```jsonc
|
|
327
|
+
"requiredEnv": [
|
|
328
|
+
{
|
|
329
|
+
"key": "WORKER_DATA_KEY",
|
|
330
|
+
"renamedFrom": "WORKER_LEGACY_DATA_KEY",
|
|
331
|
+
"generate": { "bytes": 32, "encoding": "base64" }
|
|
332
|
+
}
|
|
333
|
+
],
|
|
334
|
+
"requiredEnvNotes": { "WORKER_DATA_KEY": "保护应用持久化数据;应用兼容消费旧键名" }
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
`generate` 只收 `bytes`(16–64 整数)与 `encoding`(标准带填充 `base64` / 小写 `hex`)。
|
|
338
|
+
新增、撤回或改变规格都需审批;首供在批准时完成,生产按 App、按 brand 各自生成,
|
|
339
|
+
加密保管并只向所属独立 descriptor 部署注入。重发、重试、重部署与重启复用原值,
|
|
340
|
+
不覆盖存量值;没有读取值或轮换入口,丢失应从备份恢复,不能重生成修复原密文。
|
|
341
|
+
|
|
342
|
+
有主键沿用主键;descriptor 旧名可以同值搬到新键。可读 `envFile` 只有旧名时,
|
|
343
|
+
`generate` + `renamedFrom` 表示 App 仍能消费旧名,门户原样注入文件、不创建新主键,
|
|
344
|
+
审批屏显示沿用旧名。不要引导运维改文件或手填 NEW。普通无 `generate` 的改名规则不变。
|
|
345
|
+
不可读 envFile、来源冲突、已保管规格冲突均硬拦;旧键已由平台保管时拒绝改名。
|
|
346
|
+
平台派生键和服务自动供给目标不能声明 `generate`。
|
|
347
|
+
|
|
348
|
+
**套件里的共享生成密钥**:带自己前缀的键各自 `generate`;**同名共享键只由一个成员声明 `generate`**,
|
|
349
|
+
其他成员只在 `requiredEnv` 写字符串键名消费(两名生成者会被拒)。先批生成者——消费者先到时提案
|
|
350
|
+
保持待审、审批屏点名生成者;批次发布自动把生成者排在消费者前面。生成者退出套件前,先让消费者去掉
|
|
351
|
+
对这个键的依赖。
|
|
352
|
+
|
|
353
|
+
旧门户 / 旧一盒镜像会拒收 `generate`(`VALIDATION_FAILED`),须先升级平台,不能用手填绕过。
|
|
354
|
+
最低门户提交 / `APP_VERSION`、一盒 runtime / proxy tag、公开 skill 提交与脚本 SHA-256
|
|
355
|
+
目前均**未发布**,发布后按完整组合核对。一盒宿主脚本不随镜像更新:先执行
|
|
356
|
+
`npx skills add XGENT-ai/skills` 更新 `portal-dev-setup`,从实际安装目录用
|
|
357
|
+
`shasum -a 256 <脚本路径>` 核对后再 pull / upgrade / up / add,步骤见该 skill §6。
|
|
358
|
+
新版 `add` 把生成值写进共享的 `<一盒目录>/compose.env`,沿用已有主键或旧别名;同名键共享值,
|
|
359
|
+
主 App 和其他 App 均可能读取,限可信团队调试,不能作为生产 App 隔离证据。
|
|
360
|
+
|
|
310
361
|
### 业务参数:能不进清单就不进;进了就写 `requiredEnvNotes`
|
|
311
362
|
|
|
312
363
|
审批你发版的平台管理员只负责**环境**:地址、连接串、密钥、这台机器上的事。你的业务参数他不懂,
|
|
@@ -318,7 +369,8 @@ manifest 里带**值**的 `deployDescriptor.env` 提交即拒(防生产密钥
|
|
|
318
369
|
进了 `requiredEnv` 的键批准前**必须有值**(缺了就是 `REQUIRED_ENV_MISSING`),审批人照你这句话填。
|
|
319
370
|
3. **全平台一份、要能随时改、不想换版** ⇒ 这不是环境变量。做成你自己的「平台设置」页,由门户嵌进
|
|
320
371
|
应用市场的编辑页(见 portal-external-app skill「配置放哪一层」)。
|
|
321
|
-
4. **每个租户不同** ⇒
|
|
372
|
+
4. **每个租户不同** ⇒ 有前端的 App 用 `adminPages.tenant` 嵌入自己的配置页;无前端 service 用 `tenantConfig`
|
|
373
|
+
声明数字、静态选项和开关 schema,由门户渲染动态表单(同上)。
|
|
322
374
|
5. **应用内的业务设置** ⇒ 你应用里的设置页,按 ACL 授权(租户管理员默认可改)。
|
|
323
375
|
|
|
324
376
|
```jsonc
|
|
@@ -414,7 +466,53 @@ manifest 里带**值**的 `deployDescriptor.env` 提交即拒(防生产密钥
|
|
|
414
466
|
`envKey` 只对 postgres / redis 这类单键服务有效(kafka / 对象存储 / http 不支持)。不绑定的话,
|
|
415
467
|
平台管理员要在审批屏上手选一条服务取值,每次发版多等一轮;预检会对这类键给你一条 warn。
|
|
416
468
|
|
|
417
|
-
|
|
469
|
+
### 对象存储:应用池直供 S3 五键
|
|
470
|
+
|
|
471
|
+
这条路径用于 App 自管的底层对象,后端用 S3 SDK 直连,不经过 Files。需要用户/团队文件空间、
|
|
472
|
+
文件权限、配额、预览或清理时走 Files;两条路径的选型见 `portal-external-app` skill 的
|
|
473
|
+
「文件与对象存储」。**Files 的「应用空间」不等于这里的应用专属 bucket。**
|
|
474
|
+
|
|
475
|
+
以 `listingKey=wish-list` 为例,下面是合并进现有 manifest 的存储声明片段,其他必需键照常保留:
|
|
476
|
+
|
|
477
|
+
```jsonc
|
|
478
|
+
"requiredServices": [
|
|
479
|
+
{ "kind": "objectStorage", "name": "main" }
|
|
480
|
+
],
|
|
481
|
+
"requiredEnv": [
|
|
482
|
+
"WISH_LIST_S3_ENDPOINT",
|
|
483
|
+
"WISH_LIST_S3_REGION",
|
|
484
|
+
"WISH_LIST_S3_BUCKET",
|
|
485
|
+
"WISH_LIST_S3_ACCESS_KEY_ID",
|
|
486
|
+
"WISH_LIST_S3_SECRET_ACCESS_KEY"
|
|
487
|
+
]
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
- `main` 换成目标环境已登记的对象存储服务名,用于服务可用性闸;它**不是桶名或池 ID**。
|
|
491
|
+
首次开通按实际落点 VM 的地域选择应用池,未命中用兜底池;只使用 `role=app`,不回退租户池。
|
|
492
|
+
- 发布提案批准时平台按 `listingKey` 建桶并加密保管整组连接参数,部署时注入。**每应用一个桶,
|
|
493
|
+
该应用的所有租户共用**;不会为每个租户或安装实例另建桶,也不会自动添加租户目录。
|
|
494
|
+
App 须自行实现租户隔离、权限、计量和对象清理;它们不自动进入 Files 的配额、计量与退出清理。
|
|
495
|
+
- 五键固定为 `<PREFIX>_S3_ENDPOINT` / `_S3_REGION` / `_S3_BUCKET` / `_S3_ACCESS_KEY_ID` /
|
|
496
|
+
`_S3_SECRET_ACCESS_KEY`(每项均带 `<PREFIX>`)。`objectStorage` **不支持 `envKey`**,带上即拒;
|
|
497
|
+
约定名是 `_S3_BUCKET`,镜像若只读 `_S3_BUCKET_NAME` 等其他名字,需在应用配置层适配。
|
|
498
|
+
只声明该 `requiredServices` 也会整组供给;显式列出五键便于启动校验与交付检查,只交键名、不交值。
|
|
499
|
+
仅用 `requiredEnv` 的兼容路径以 `<PREFIX>_S3_ACCESS_KEY_ID` 为触发键,仍供给整组;
|
|
500
|
+
只写 endpoint / region / bucket 不会触发自动供给。
|
|
501
|
+
- **管理员不必逐键取值**:已匹配应用池时,审批页显示「批准时自动供给」,直接批准即可。
|
|
502
|
+
需要手动选池或提前供给时,在五键任意一行选择 `objectStorage` 应用池并点击「取值」,
|
|
503
|
+
一次写入全部五键,刷新后整组显示「已取值」。只切换下拉选项、不点「取值」不会保存选择;
|
|
504
|
+
不要为五个键分别选池。没有可用应用池时先由平台管理员配置,不能拿租户池替代。
|
|
505
|
+
- 注入的是应用池**共用的数据面凭据**,不含管理凭据,也不是 per-App / per-tenant 子凭据;
|
|
506
|
+
独立桶不等于独立云权限。凭据只留后端,不回显、不写日志、不交给前端。
|
|
507
|
+
- 重发、重试与重部署沿用已登记的桶和存储池;改变落点地域不会自动搬桶或迁移对象。
|
|
508
|
+
租户卸载也不自动删除这个共用桶。需要迁移、清理或轮换池凭据时由平台与 App 协调。
|
|
509
|
+
|
|
510
|
+
以上自动供给发生在**发布提案批准链路**。一盒 `onebox.sh add` 的直接注册路径仍须按
|
|
511
|
+
`portal-dev-setup` 配好 RustFS 连接参数和桶名;不能只写这条声明就认为五键已到位。
|
|
512
|
+
|
|
513
|
+
### 通用环境变量约束
|
|
514
|
+
|
|
515
|
+
**平台级能力(例如日志写入)会直接出现在你的服务令牌里,不用申请、不用写进 manifest** ——
|
|
418
516
|
拿到令牌就能用,你那侧只管调。
|
|
419
517
|
|
|
420
518
|
**六条别踩:**
|
|
@@ -441,8 +539,8 @@ manifest 里带**值**的 `deployDescriptor.env` 提交即拒(防生产密钥
|
|
|
441
539
|
```
|
|
442
540
|
|
|
443
541
|
批准时门户把旧键在 **`descriptor.env`** 里的值搬到新键,审批屏如实显示「将沿用旧键的现有值」。
|
|
444
|
-
⚠️ **值在 envFile
|
|
445
|
-
|
|
542
|
+
⚠️ **值在 envFile 里的搬不了**(门户不写主机文件)。普通条目仍判缺;带 `generate` 的条目
|
|
543
|
+
可兼容沿用文件旧名,由 App 消费,不改文件、不复制值、不生成 NEW。旧键已由平台保管则拒绝改名。
|
|
446
544
|
两条写法约束:`renamedFrom` 不能等于 `key`;旧键**不能**同时还留在清单里(那等于说「它既被改掉
|
|
447
545
|
又仍然必需」,提交即拒)。改名生效之后 **`renamedFrom` 留着就行** —— 它是幂等的(新键已有值就不再搬),
|
|
448
546
|
而摘掉它本身是一次清单变更,会平白再进一次人工审。
|
|
@@ -40,7 +40,8 @@ tar czf dist.tgz dist # ❌ 全套在 dist/ 一层下面,拒收
|
|
|
40
40
|
发布流程应按 [前端归档与同步验收](frontend-archive.md) 留存原始 tgz,再用 `--dist <包路径>`
|
|
41
41
|
上传这份文件;重新打包目录不保证 SHA-256 相同,不能替代实际上传包的留存。
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
其它约束:单个包 **≤200 MiB**,整个上传请求 ≤256 MiB(套件批次多个 `dist__<key>` 合计也算在内;
|
|
44
|
+
超了先查 source map 与未压缩素材);空文件会被当成「构建没产出」拒掉,
|
|
44
45
|
而不是当成「只发版本号」——这是有意的,否则一条坏流水线会报成功。
|
|
45
46
|
|
|
46
47
|
## 3. 不需要 CORS,但可能需要 CSP
|
|
@@ -128,13 +128,18 @@ curl -X POST "$XGENT_PORTAL_URL/api/market/release/<key>" \
|
|
|
128
128
|
| 字段 | 必填 | 说明 |
|
|
129
129
|
| --- | --- | --- |
|
|
130
130
|
| `version` | (或 manifest.version) | 字母/数字/`. _ + -`,≤64 字符。**每次都要 bump** |
|
|
131
|
-
| `dist` | | multipart 文件,`.tar.gz`,根下 `index.html`,≤
|
|
131
|
+
| `dist` | | multipart 文件,`.tar.gz`,根下 `index.html`,≤200 MiB。省掉 = 这次不换产物 |
|
|
132
132
|
| `image` | | 镜像引用。省掉 = 不换镜像 |
|
|
133
133
|
| `manifest` | | `app.manifest.json` 全文(文件或 JSON 字符串)。省掉 = 只发三件(全自动档) |
|
|
134
134
|
|
|
135
135
|
**这四个之外的散字段仍然直接拒**(`200 + VALIDATION_FAILED`,拒在写库之前)——
|
|
136
136
|
治理变更只能经 manifest 整份提交,没有「往表单里塞一个 scopes」这条路。
|
|
137
137
|
|
|
138
|
+
**请求格式与上限**:带文件(`dist`,套件批次的 `dist__<key>`)的请求必须是 `multipart/form-data`,
|
|
139
|
+
产物只认文件字段;不带文件的纯元数据请求(只有 `version` / `image` / `manifest`)也可以发 JSON。
|
|
140
|
+
单个包 ≤200 MiB;**整个请求 ≤256 MiB**,这是门户 HTTP 层的上限,套件批次里各成员的包是合计的,
|
|
141
|
+
不能按「成员数 × 200 MiB」估。
|
|
142
|
+
|
|
138
143
|
**定级唯一判据:这次提交有没有改变权限面。** manifest 里与当前 listing 相比有治理差异
|
|
139
144
|
(scopes / aclManifest / dependencies / exchangeTargets / serviceScopes /
|
|
140
145
|
privilegedServiceScopes / usageMetrics / serviceBaseUrl /
|
|
@@ -19,7 +19,8 @@ catalog 只收 manifest;旧版发布成功后会删归档。有 distDigest 不
|
|
|
19
19
|
| `404` | 令牌不是为这个 `--key` 签发的(也可能该 listing 不存在——门户**故意**不区分) | 核对 `--key` 与签发时的 key 逐字相同;换一个你确定存在的 key 试同一枚令牌 |
|
|
20
20
|
| `GET …/<key>/status` 返回 `404`,但同一枚令牌 whoami `200` | **这个门户上还没有只读面**(它比发布面晚一版上线),不是令牌的问题 | 见下面「`/status` 报 404 怎么分诊」。别改令牌、别重发 |
|
|
21
21
|
| `200` 但 `ok:false`,说缺根 `index.html` | 打包套了一层 | 用 `tar czf x.tgz -C dist .`,不是 `tar czf x.tgz dist`;或 `--dist` 指错了一层 |
|
|
22
|
-
| `200` 但 `ok:false
|
|
22
|
+
| `200` 但 `ok:false`,说「前端产物过大(>200MB)」 | 单个包超 200 MiB:source map / 未压缩素材打进产物了 | `du -sh dist`,关掉 sourcemap 再看 |
|
|
23
|
+
| 上传拿不到 `{ok:…}` 响应体:连接被断开、挂到超时或返回非 200 | 整个请求超过 256 MiB(门户 HTTP 层上限,到不了业务校验);套件批次最常见,各成员的包是合计的 | 把这次所有 `dist` / `dist__<key>` 与 manifest 的字节加起来看 |
|
|
23
24
|
| `200` 但 `ok:false`,说版本号非法 | 只能字母/数字/`. _ + -`,≤64 字符 | 别把 `v1.2.3 (build 42)` 这种带空格括号的塞进去 |
|
|
24
25
|
| `200` 但 `ok:false`,说属治理字段不接受散字段 | 往表单里直接塞 `scopes=...` / `aclManifest=...` 之类 | 散字段只认 `dist`/`version`/`image`/`manifest`;治理变更写进 `app.manifest.json` 用 `--manifest` 整份提交,进「发布审核」 |
|
|
25
26
|
| `200` 但 `ok:false`,`PROPOSAL_PENDING` | 该 App 已有一条待审提案挡路——待审期间**任何**新提交都拒,纯 dist/version 也一样(放行会「后交先生效」) | 等平台审批,或先撤回:`DELETE …/proposals/<id>`(错误 details 里带在审提案 id) |
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
|
-
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from "node:fs";
|
|
2
|
+
import { mkdtempSync, mkdirSync, writeFileSync, rmSync, openSync, writeSync, closeSync } from "node:fs";
|
|
3
|
+
import { randomBytes } from "node:crypto";
|
|
3
4
|
import { tmpdir } from "node:os";
|
|
4
5
|
import { dirname, join, resolve } from "node:path";
|
|
5
6
|
import { fileURLToPath } from "node:url";
|
|
@@ -71,12 +72,31 @@ if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.ur
|
|
|
71
72
|
["admin page escape", {adminPages:{platform:{route:"//evil.example",label:"x"}}}, false],
|
|
72
73
|
["admin page no zh-CN", {adminPages:{tenant:{route:"/s",label:{en:"S"}}}}, false],
|
|
73
74
|
["admin page unknown level", {adminPages:{console:{route:"/s",label:"x"}}}, false],
|
|
75
|
+
["tenant config ok", {type:"service",scopes:["demo.read"],tenantConfig:{label:"设置",path:"/v2/policy",scopes:["demo.read"],schema:{type:"object",properties:{limits:{type:"object",properties:{wait:{type:"integer",title:"等待",default:10,unit:"秒",scale:1000},mode:{type:"select",title:"模式",options:[{value:"auto",label:"自动"}]},strict:{type:"boolean",title:"严格",default:false}}}}}}}, true],
|
|
76
|
+
["tenant config bad scope", {type:"service",scopes:["demo.read"],tenantConfig:{label:"设置",path:"/v2/policy",scopes:["demo.write"],schema:{type:"object",properties:{wait:{type:"integer",title:"等待"}}}}}, false],
|
|
77
|
+
["tenant config escape", {type:"service",scopes:["demo.read"],tenantConfig:{label:"设置",path:"//evil.example",scopes:["demo.read"],schema:{type:"object",properties:{wait:{type:"integer",title:"等待"}}}}}, false],
|
|
74
78
|
]) {
|
|
75
79
|
writeFileSync(join(root,"app.manifest.json"),JSON.stringify({listingKey:"demo",name:"Demo",version:"1",...extra}));
|
|
76
80
|
const result = spawnSync(process.execPath,[preflight,"--offline","--config","fixture.env","--key","demo","--dist","dist","--version","1","--manifest","app.manifest.json"],{cwd:root,env:{PATH:process.env.PATH},encoding:"utf8",timeout:15000});
|
|
77
81
|
assert.equal(result.status,valid?0:1,label);
|
|
78
82
|
passed++;
|
|
79
83
|
}
|
|
84
|
+
// 单包上限与门户 MAX_DIST_BYTES 同为 200 MiB:用不可压缩内容逼近边界,199 MiB 放行、201 MiB 拒绝。
|
|
85
|
+
{
|
|
86
|
+
const blob = join(root,"dist/blob.bin");
|
|
87
|
+
const grow = (mib) => { const fd = openSync(blob,"a"); for (let i = 0; i < mib; i++) writeSync(fd,randomBytes(1024*1024)); closeSync(fd); };
|
|
88
|
+
const run = () => spawnSync(process.execPath,[preflight,"--offline","--config","fixture.env","--key","demo","--dist","dist","--version","1","--manifest","app.manifest.json"],{cwd:root,env:{PATH:process.env.PATH},encoding:"utf8",timeout:120000});
|
|
89
|
+
writeFileSync(join(root,"app.manifest.json"),JSON.stringify({listingKey:"demo",name:"Demo",version:"1"}));
|
|
90
|
+
grow(199);
|
|
91
|
+
assert.equal(run().status,0,"dist 199 MiB");
|
|
92
|
+
passed++;
|
|
93
|
+
grow(2);
|
|
94
|
+
const over = run();
|
|
95
|
+
assert.equal(over.status,1,"dist 201 MiB");
|
|
96
|
+
assert.match(over.stdout,/单包 200 MiB 上限/,"dist 201 MiB");
|
|
97
|
+
passed++;
|
|
98
|
+
rmSync(blob);
|
|
99
|
+
}
|
|
80
100
|
assert.deepEqual(normalizeEmbedCsp(cases.find(c=>c[0]==="origin normalization")[1]),{imgSrc:["https://example.com"]});passed++;
|
|
81
101
|
assert.throws(()=>normalizeEmbedCsp(Object.defineProperty({},"scriptSrc",{get(){throw new Error("must-not-run");}})),/accessors/);passed++;
|
|
82
102
|
console.log(`exported preflight: ${passed}/0`);
|
|
@@ -25,7 +25,7 @@ import { spawnSync } from "node:child_process";
|
|
|
25
25
|
import { loadConfig, parseArgs, pick, warnIfProxyIgnored } from "./registry-config.mjs";
|
|
26
26
|
import { normalizeEmbedCsp } from "../references/embed-csp.mjs";
|
|
27
27
|
|
|
28
|
-
const MAX_BYTES =
|
|
28
|
+
const MAX_BYTES = 200 * 1024 * 1024; // 门户单包上限(MAX_DIST_BYTES),超了直接 VALIDATION_FAILED;整个请求另有 256 MiB 上限
|
|
29
29
|
const VERSION_RE = /^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$/; // 与门户逐字一致
|
|
30
30
|
const KEY_RE = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/;
|
|
31
31
|
|
|
@@ -133,8 +133,8 @@ if (distStat?.isDirectory()) {
|
|
|
133
133
|
const size = statSync(out).size;
|
|
134
134
|
const mb = (size / 1024 / 1024).toFixed(1);
|
|
135
135
|
const entries = readdirSync(dist).length;
|
|
136
|
-
if (size > MAX_BYTES) err(`打包后 ${mb}
|
|
137
|
-
else ok(`打包 ${mb}
|
|
136
|
+
if (size > MAX_BYTES) err(`打包后 ${mb} MiB,超过门户单包 200 MiB 上限 —— 先查 source map / 未压缩素材是不是打进来了`);
|
|
137
|
+
else ok(`打包 ${mb} MiB · ${entries} 个顶层条目`);
|
|
138
138
|
}
|
|
139
139
|
} finally {
|
|
140
140
|
rmSync(temp, { recursive: true, force: true });
|
|
@@ -345,6 +345,45 @@ if (!manifestPath) {
|
|
|
345
345
|
err(`manifest.adminPages.${level}.label 必须是非空字符串,或带 "zh-CN" 的多语对象`);
|
|
346
346
|
}
|
|
347
347
|
}
|
|
348
|
+
/* ③d tenantConfig:service 的受限动态配置 schema。门户提交面会做完整校验,这里先挡住常见形状错误。 */
|
|
349
|
+
if (mf.tenantConfig !== undefined && mf.tenantConfig !== null) {
|
|
350
|
+
const tc = mf.tenantConfig;
|
|
351
|
+
const textOk = (value) => typeof value === "string" ? !!value.trim() : isObj(value) && typeof value["zh-CN"] === "string" && !!value["zh-CN"].trim();
|
|
352
|
+
if (!isObj(tc) || Array.isArray(tc)) err(`manifest.tenantConfig 必须是 { label, path, scopes, schema }`);
|
|
353
|
+
else {
|
|
354
|
+
if (mf.type !== "service") err(`manifest.tenantConfig 只能由 type=service 声明`);
|
|
355
|
+
if (!textOk(tc.label)) err(`manifest.tenantConfig.label 必须是非空字符串或带 zh-CN 的多语对象`);
|
|
356
|
+
if (typeof tc.path !== "string" || !tc.path.startsWith("/") || tc.path.startsWith("//") || /[?#]/.test(tc.path) || /(^|\/)\.\.(\/|$)/.test(tc.path))
|
|
357
|
+
err(`manifest.tenantConfig.path 必须是不带 query / fragment 的同源绝对路径`);
|
|
358
|
+
if (!Array.isArray(tc.scopes) || !tc.scopes.length || tc.scopes.some((scope) => typeof scope !== "string" || !scope.trim()))
|
|
359
|
+
err(`manifest.tenantConfig.scopes 必须是非空字符串数组`);
|
|
360
|
+
else if (Array.isArray(mf.scopes)) for (const scope of tc.scopes) if (!mf.scopes.includes(scope)) err(`manifest.tenantConfig.scopes 的「${scope}」未声明在 listing scopes 中`);
|
|
361
|
+
const walk = (node, where, depth) => {
|
|
362
|
+
if (!isObj(node) || Array.isArray(node)) { err(`${where} 必须是对象`); return; }
|
|
363
|
+
if (depth > 4) { err(`${where} 嵌套超过 4 层`); return; }
|
|
364
|
+
if (node.type === "object") {
|
|
365
|
+
if (!isObj(node.properties) || Array.isArray(node.properties) || !Object.keys(node.properties).length) { err(`${where}.properties 必须是非空对象`); return; }
|
|
366
|
+
for (const [key, child] of Object.entries(node.properties)) {
|
|
367
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]{0,63}$/.test(key) || ["__proto__", "prototype", "constructor"].includes(key)) err(`${where}.properties 的键「${key}」非法`);
|
|
368
|
+
walk(child, `${where}.properties.${key}`, depth + 1);
|
|
369
|
+
}
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
if (!["integer", "number", "select", "boolean"].includes(node.type)) { err(`${where}.type 只支持 integer / number / select / boolean / object`); return; }
|
|
373
|
+
if (!textOk(node.title)) err(`${where}.title 必须是非空字符串或带 zh-CN 的多语对象`);
|
|
374
|
+
if (node.description !== undefined && !textOk(node.description)) err(`${where}.description 形状非法`);
|
|
375
|
+
if (["integer", "number"].includes(node.type)) {
|
|
376
|
+
for (const field of ["default", "scale", "minimum", "maximum"]) if (node[field] !== undefined && (typeof node[field] !== "number" || !Number.isFinite(node[field]))) err(`${where}.${field} 必须是有限数字`);
|
|
377
|
+
if (node.scale !== undefined && node.scale <= 0) err(`${where}.scale 必须是正数`);
|
|
378
|
+
if (node.unit !== undefined && !textOk(node.unit)) err(`${where}.unit 形状非法`);
|
|
379
|
+
} else if (node.type === "select") {
|
|
380
|
+
if (!Array.isArray(node.options) || !node.options.length) err(`${where}.options 不能为空`);
|
|
381
|
+
else for (const option of node.options) if (!isObj(option) || typeof option.value !== "string" || !option.value.trim() || !textOk(option.label)) err(`${where}.options 每项必须是 { value, label }`);
|
|
382
|
+
} else if (node.default !== undefined && typeof node.default !== "boolean") err(`${where}.default 必须是布尔值`);
|
|
383
|
+
};
|
|
384
|
+
walk(tc.schema, "manifest.tenantConfig.schema", 0);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
348
387
|
/* ③b requiredEnvNotes:只能给 requiredEnv 里的键写说明,非空、≤200 字(与门户同口径)。 */
|
|
349
388
|
if (mf.requiredEnvNotes !== undefined) {
|
|
350
389
|
const declaredEnv = new Set((Array.isArray(mf.requiredEnv) ? mf.requiredEnv : [])
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
# Claude Code goal 上下文收尾提醒
|
|
2
|
-
|
|
3
|
-
当前会话的 `/goal` 仍 active,且本地估算上下文使用率**严格超过阈值**(默认 70%,可配置)时,本 hook 提醒 agent 收尾:停止开始新的实质任务,按任务已有约定更新进度并交接。回合结束时由 Stop hook 结束回合,Claude Code 原生把 goal 置为「Goal paused」,再由你自己新开对话(或 `/clear`)接续。恰好等于阈值不触发。hook 只读当前会话记录,不写任何文件,也不清除、转移或恢复 goal。
|
|
4
|
-
|
|
5
|
-
## 兼容范围与限制
|
|
6
|
-
|
|
7
|
-
- 已验证:Claude Code **2.1.288** 交互式 CLI、macOS arm64、Node v25.2.1(安装器要求 Node ≥ 18)。完整验收见 [M1 记录](plan/claude-context-goal-guard.records/M1.md)、[M2 记录](plan/claude-context-goal-guard.records/M2.md)、[M3 记录](plan/claude-context-goal-guard.records/M3.md)、[M4 记录](plan/claude-context-goal-guard.records/M4.md)。新版本不自动视为兼容。
|
|
8
|
-
- 未验证:`claude -p` 非交互模式、桌面应用、Remote Control、云端会话。
|
|
9
|
-
- 只保护主会话;子 agent 内的事件直接跳过。
|
|
10
|
-
- 上下文窗口:hook 输入和会话记录都不含窗口大小,脚本只认下表中验证过的模型。其他模型,或设置了 `CLAUDE_CODE_DISABLE_1M_CONTEXT`、`DISABLE_COMPACT`、`CLAUDE_CODE_MAX_CONTEXT_TOKENS` 任一变量时,报告「检测不可用」,不触发。
|
|
11
|
-
|
|
12
|
-
| 模型 id(会话记录中的 `message.model`) | 窗口 |
|
|
13
|
-
| --- | --- |
|
|
14
|
-
| `claude-opus-5-5` | 1,000,000(是否选 `[1m]` 相同) |
|
|
15
|
-
| `claude-sonnet-5-5` | 1,000,000(是否选 `[1m]` 相同) |
|
|
16
|
-
| `claude-haiku-4-5-20251001` | 200,000 |
|
|
17
|
-
|
|
18
|
-
窗口还会因账号与服务端能力而不同,上表只在验证时用的 Claude Max 账号上核对过。启用前用 statusLine 自查:statusLine 命令的 stdin JSON 里 `model.id` 和 `context_window.context_window_size` 应与上表一致,不一致时不要启用。
|
|
19
|
-
|
|
20
|
-
### 用量口径
|
|
21
|
-
|
|
22
|
-
```text
|
|
23
|
-
used = input_tokens + cache_creation_input_tokens + cache_read_input_tokens # 取最新主链 assistant 记录;有 iterations 时取最后一项
|
|
24
|
-
trigger = used * 100 > window * threshold # threshold 默认 70,见「阈值配置」
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
与 statusLine 的 `used_percentage` 同口径,不计 output。会话记录异步写入,可能落后一条消息。自动压缩后,出现新统计前不判定。
|
|
28
|
-
|
|
29
|
-
Claude Code 界面右下角的「NN% context used」按扣除输出预留后的有效窗口计算,读数比本 guard 高。例如 Haiku 4.5 实测 155,100 token 时,界面显示 86%(≈ 155,100 / 180,000),guard 计为 78%。
|
|
30
|
-
|
|
31
|
-
## 安装
|
|
32
|
-
|
|
33
|
-
### 使用 install
|
|
34
|
-
|
|
35
|
-
```sh
|
|
36
|
-
# 默认不安装 guard;从本仓库源码显式安装
|
|
37
|
-
# 发布到 npm 后可用 npx @xgent-ai/skills install --claude-context-goal-guard
|
|
38
|
-
node bin/xgent-skills.js install /absolute/path/to/project --claude-context-goal-guard
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
交互和非交互安装均默认跳过 guard,不再询问。仅在显式传入 `--claude-context-goal-guard` 或 `--claude-context-goal-guard-threshold=N` 时安装;`--no-claude-context-goal-guard` 显式跳过并保留已有 guard,不能与安装参数同时使用。这个选项与 `--providers`、`--no-phoenix-ui`(旧 `--no-impeccable` 为弃用别名)、`--xgent-init` 及 Codex guard 的选项互不影响。
|
|
42
|
-
|
|
43
|
-
安装器会:
|
|
44
|
-
|
|
45
|
-
1. 复制脚本到目标项目 `.claude/hooks/context-goal-guard.js`;
|
|
46
|
-
2. 把 `PostToolBatch` 与 `Stop` 两个 handler 合并进个人的 `.claude/settings.local.json`(不进共享的 `settings.json`),command 为 `node "$CLAUDE_PROJECT_DIR/.claude/hooks/context-goal-guard.js"`,超时 5 秒;
|
|
47
|
-
3. 保留其他事件、handler、matcher 和顶层字段,重复安装只更新 guard。非法 JSON 默认报错,`--force` 先备份为 `.bak` 再覆盖;合法 JSON 但结构不认识时报错,需要手动修复。
|
|
48
|
-
|
|
49
|
-
### 阈值配置
|
|
50
|
-
|
|
51
|
-
阈值写在 handler 命令末尾:`--threshold N`,N 为 1–99 的整数百分比;不带参数时为 70。与 Codex 版(默认 65)各自独立。
|
|
52
|
-
|
|
53
|
-
```sh
|
|
54
|
-
# 安装时指定(同时表示安装,不再询问)
|
|
55
|
-
node bin/xgent-skills.js install /absolute/path/to/project --claude-context-goal-guard-threshold=75
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
安装器总是把阈值明确写进两个 handler 的 command,在 `/hooks` 里看得到。之后重装时不给这个 flag,就沿用已装的值。也可以直接改 `.claude/settings.local.json` 里两条 command 末尾的数字,两条要一致。参数无效时(如 `0`、`100`、`6.5`)guard 不猜测数值,按「检测不可用」处理。
|
|
59
|
-
|
|
60
|
-
阈值不宜太高:收尾本身还要消耗上下文,而 Claude Code 在接近有效窗口上限时会自动压缩(见上面的界面读数说明)。建议不超过 75%。
|
|
61
|
-
|
|
62
|
-
### 手动部署
|
|
63
|
-
|
|
64
|
-
```sh
|
|
65
|
-
mkdir -p "/absolute/path/to/project/.claude/hooks"
|
|
66
|
-
cp hooks/claude/context-goal-guard.js "/absolute/path/to/project/.claude/hooks/context-goal-guard.js"
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
把 [设置示例](../hooks/claude/settings.example.json) 里的两组 handler(默认 `--threshold 70`,按需修改)**追加**到目标项目 `.claude/settings.local.json` 已有的 `PostToolBatch`、`Stop` 数组,不要用示例覆盖整个文件。Claude Code 的 hook 运行环境里必须能找到 `node`。
|
|
70
|
-
|
|
71
|
-
## 信任与生效确认
|
|
72
|
-
|
|
73
|
-
1. 运行 `claude --version`,确认是上面验证过的版本。
|
|
74
|
-
2. 从目标项目启动 Claude Code,信任该工作区。工作区未被信任时,设置里的 hook 和 `/goal` 都不可用。
|
|
75
|
-
3. 输入 `/hooks`,确认 `PostToolBatch` 和 `Stop` 下各有一条 `[Local] node "$CLAUDE_PROJECT_DIR/.claude/hooks/context-g…`,其他 hooks 仍在。
|
|
76
|
-
4. 先用测试 goal 走一遍:越过阈值后应看到提醒,回合结束后出现「Goal paused · a hook ended the turn」。
|
|
77
|
-
|
|
78
|
-
## goal 条件怎么写
|
|
79
|
-
|
|
80
|
-
guard 不管进度写到哪里,提醒只要求 agent 按任务**已有约定**更新进度。最好让 goal 条件指向一份带进度区的计划,例如:
|
|
81
|
-
|
|
82
|
-
```text
|
|
83
|
-
/goal 按 docs/plan/xxx.md 开发:全部里程碑完成并回写进度
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
没有计划文件时,agent 会在最终回复里给出交接摘要,不会新建文件。
|
|
87
|
-
|
|
88
|
-
## 触发后会看到什么
|
|
89
|
-
|
|
90
|
-
1. 越线后的每个工具批次,agent 都会收到同一条收尾提醒:停止新工作,把手上的工作处理到可交接,更新进度,停止后台任务,写明「因上下文收尾而暂停,工作未完成」。
|
|
91
|
-
2. agent 第一次结束回合时,guard 可能先请求补做收尾。界面上显示为「Stop hook error: 上下文估算使用率 NN% …」,这是正常的继续请求,不是故障。
|
|
92
|
-
3. 下一次结束回合时,guard 结束回合,界面显示 guard 的说明和「Goal paused · a hook ended the turn · send a message to continue」。goal 评估器会照常判定「未达成」,但不会再自动续跑。
|
|
93
|
-
|
|
94
|
-
提醒没有强制力。在 goal 的自动续轮里越线时,agent 可能只收到一次提醒、甚至一次都没收到就被暂停。交接不完整时,在原会话发一句「按上下文收尾提醒补交接」,回合结束后会再次暂停。
|
|
95
|
-
|
|
96
|
-
## 接续
|
|
97
|
-
|
|
98
|
-
在同一项目目录新开对话,或在原会话输入 `/clear`。告诉 agent 计划路径(或粘贴交接摘要),再重新设置 `/goal`。新对话和 `/clear` 后都**不继承** goal:不重新设置,guard 就不会触发。
|
|
99
|
-
|
|
100
|
-
原会话的 goal 只是暂停:在原会话里发任何消息都会恢复 goal,guard 随即再次收口;`claude --resume` 也会恢复 goal(不会自动运行)。不再需要时,在原会话 `/goal clear`。
|
|
101
|
-
|
|
102
|
-
### 后台任务
|
|
103
|
-
|
|
104
|
-
暂停时如果还有后台命令或子 agent 在跑,它们完成时的通知(以及 goal 的 idle check-in)会唤醒会话。guard 会先请求一次收尾,在请求里列出仍在运行的任务,再结束回合;进度不会前进,但每次唤醒多花两次简短的模型调用。这种被唤醒后再结束的回合,界面可能显示「Goal not yet met… continuing」,状态栏仍是「/goal active」,没有「Goal paused」提示;实测此后约 7 分钟内没有自动回合。
|
|
105
|
-
|
|
106
|
-
## 停用
|
|
107
|
-
|
|
108
|
-
从 `.claude/settings.local.json` 删除 command 含 `context-goal-guard.js` 的两个 handler,保留其他 hooks,再删除 `.claude/hooks/context-goal-guard.js`。实测会话运行中修改后,`/hooks` 数秒内就不再列出它们;保险起见仍建议重启会话。已暂停的 goal 不受影响。
|
|
109
|
-
|
|
110
|
-
不要用 `disableAllHooks`:它会连 `/goal` 一起禁用。
|
|
111
|
-
|
|
112
|
-
## 排查
|
|
113
|
-
|
|
114
|
-
guard 只在 **Stop** 时显示告警,不会在每个工具批次刷屏。告警格式为「context goal guard 检测不可用:<原因>」:
|
|
115
|
-
|
|
116
|
-
| 原因 | 处理 |
|
|
117
|
-
| --- | --- |
|
|
118
|
-
| 模型 `X` 的上下文窗口未经验证 | 换用上表中的模型,或停用 guard;补表需要先在同环境核对 statusLine 的窗口 |
|
|
119
|
-
| 设置了改变上下文窗口的环境变量 `X` | 取消该变量,或停用 guard |
|
|
120
|
-
| 无法读取会话记录 / hook 输入缺少会话记录路径 | 核对 Claude Code 版本;持续出现时停用 guard |
|
|
121
|
-
| 用量统计格式未知 | Claude Code 的会话记录格式变了,停用 guard 并等待重新验证 |
|
|
122
|
-
| 阈值参数无效 | 把两条 command 末尾改为 `--threshold` 加 1–99 的整数,或重新运行安装器 |
|
|
123
|
-
|
|
124
|
-
检测不可用时,guard 不提醒、不结束回合,也不显示 0%。
|