{"_id":"@aafe/agent-runtime","_rev":"50-a7b6d8902bc6d91d8e998bc9f57c90b4","name":"@aafe/agent-runtime","dist-tags":{"latest":"0.2.27"},"versions":{"0.1.0":{"name":"@aafe/agent-runtime","version":"0.1.0","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.0","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"36a4d6b8dd30e21b8abd0c3422b54e3b96832431","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.0.tgz","fileCount":31,"integrity":"sha512-ya6VF5ZJCIK4EqvpetGDsCP2S5alcs6WF8b2Wt/ziKLUc+F2qOTa6BzyZ2bk9NUIbDFcPB/QpQ61VafmIviG5Q==","signatures":[{"sig":"MEUCIDa7t+akN23dtyjRrRzmC+70k4x6L4l6TFW2+nY/VdAgAiEAyLV1LxwYOPptDwiDhFa3k8IvUJE0TqOk/OQ83AW1xWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66374},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"6da0f78b70b99473ab0c4377b7cc36490dfdaabf","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","memory:scan":"node ./bin/aafe.js memory scan","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.0_1778145803230_0.2085925473587411","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aafe/agent-runtime","version":"0.1.1","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.1","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"377c0b85283e0054dc1b7786ce651ac9a0bab72c","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.1.tgz","fileCount":40,"integrity":"sha512-+GP9mVrcIOm+0w7F+qYI+dCH87u8QtvYjbydfk/YOzmtAOixhEYDUTpu1h2GtdSRpwApLgJX0fgfeZcP6sU17w==","signatures":[{"sig":"MEYCIQC8oUaLiHXnbUwvE/Q8qh3D3G1yree8Ex5XfNvH1BmGYQIhANFD7p2R/CN5rW6F1im72ko4811ZaWu/PjaGpzzHFJxM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101816},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"df63dc49785a5c8433056f8d964c9d62870cb20f","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","ddd:ask":"node ./bin/aafe.js ddd ask","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.1_1778661357010_0.15910795398533084","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aafe/agent-runtime","version":"0.1.2","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.2","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"9e1785d979a619049812de78035980b7d53a4af5","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.2.tgz","fileCount":41,"integrity":"sha512-J9ffuPi5sqq5zLSOHAZSFAFXpaXp3BAh/uEUdOjcpguSn0iSfST8uAAJgjdJMZ0m6MGmXs5FyAfhNaYbCtSB8g==","signatures":[{"sig":"MEUCIQDWR/n+qGX7zVR282nipSvzkn9MHGawonYFMbH0KuQPtgIgBu7pfv+xpPhZZcILry78zmUfkIw71VnWH2zk1uMYjgU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106604},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"df63dc49785a5c8433056f8d964c9d62870cb20f","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.2_1778661590212_0.521901336424494","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aafe/agent-runtime","version":"0.1.3","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.3","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"3a876fe1caa3be14f7bd55673ad4b2c126f5b144","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.3.tgz","fileCount":42,"integrity":"sha512-nfx/+tiz0GDuPjlYLKL79U50J/AOV8njXHvk2La3jQeGCiLJcyIk3+CWxnoXc8sKRMqoC9Qa611fS/7cjcyuWQ==","signatures":[{"sig":"MEUCIBr9jmFdCNNpJ7U96Iq48gaOEfb9bq2nWdWY7f+Ey2ZOAiEA9bq5u9NgVd5LpzQQNGf3AmF/EH+/0BE0Sil8N7Nru9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113542},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"4c657e338f98e45faf891cf9f8e780b78f77ee66","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.3_1778662195871_0.4918614917751709","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aafe/agent-runtime","version":"0.1.4","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.4","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"9017073668163eb2f79756fc67e3394120d100a3","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.4.tgz","fileCount":42,"integrity":"sha512-UF1NMG+z5Qev9iurxPhiVuMaNkxnT5cqKNXN6qS0+Z7FVyNH/bBFxMjL1jzn5XT/1Xp0mADZL799sZnNjtmLcg==","signatures":[{"sig":"MEUCIAfk7Pbm12mDSK4dtKJCKBuTXpJT91E0nVwMH2LsgQFrAiEA58KXDn/EqKKmJdHGUJcIOAZSDR1+GM5DozsBYBhrBSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120152},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"4c657e338f98e45faf891cf9f8e780b78f77ee66","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.4_1779868161346_0.8610341044802625","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@aafe/agent-runtime","version":"0.1.5","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.5","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"28d47b7d598b7186eeba3b94834edc1cd8723538","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.5.tgz","fileCount":43,"integrity":"sha512-YFgOBF2ViSxiHXAGpDCLyCwZFJ7anRKPa4dTh4rw3walc8fZh15sYJZcbh0C6lmvwg5zEhd0KJ3lNAhnklOSuw==","signatures":[{"sig":"MEYCIQCdu5302wteapSDuabjXlhvvn9hfNyypEsCWnZMDLTwUAIhAPC8Hl+cKGGYlhmqC9TdmH3GTS/afcniucU3PqlBLNwn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139838},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"a008c8f8cf44f91b82a2535ab896ac57e919133d","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.5_1779873416503_0.9535233231161349","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@aafe/agent-runtime","version":"0.1.6","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.6","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"ff7c57007cfa63b840ec3bab2c3df2baf89bc9eb","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.6.tgz","fileCount":47,"integrity":"sha512-rXWWMu6ew2d2iwdlNPo7C4Pt431RSlhwBv+oNxH4reBIP+twCY2jDt74wuKX1IloAhDShsH4nQgY19QcLFDkCA==","signatures":[{"sig":"MEYCIQDV2cLgwGPGflYTxaY+E/9fpdtt1rlVAko0Th/rynUUQAIhAIapBYxnlGU+QSsk7ffZZxZEYTfM7/z/oJ0JkN2dPjwh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166662},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"7bdb3416fe6e4713a734960c901da64d4871b2e8","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.6_1781079706345_0.9594705803325834","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@aafe/agent-runtime","version":"0.1.7","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.7","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"137d5a929aa84e74a215e0a2334d70900f795c89","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.7.tgz","fileCount":47,"integrity":"sha512-5fnMJ9oeHqi7lP1161p+EZathiUqaOdxRIx0jlj4ZdkdQuKmP4vJ9E9M/iBCdNBWCbakAJPA6cjcU0/e2nT9iw==","signatures":[{"sig":"MEQCIB94UOk+QEKypg1K5hChGAi57/i/wD3aDotnQbASwYgwAiBy+xkmIJ7kBftMNGbWisjRoAO02ICrtHhguCyz7/HVIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177656},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"c144c3358d3fcd62160f8706af588cc06e476c05","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.7_1785293903455_0.22964049185442348","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@aafe/agent-runtime","version":"0.1.8","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.8","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"341d0947c65f21eb0f23ad8f867f3f0dd4e253d3","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.8.tgz","fileCount":47,"integrity":"sha512-RkaZQ1Xuo08wNFQ4fS6zFM7WAOxYQ1Co2VX3bEI4gr+jQOOFFQAtVbOOJ3RKFUkT1Xt/ZObmG7QDaCm9+K6Vow==","signatures":[{"sig":"MEQCICzNcEVCn2I0rQzbgVnir3NEBCiLjHeEhcwjOU6lY58IAiAv7Etr8UU8OIK1duAhP2sSLYuPHp8oIoLLpip5bfe9Cw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":178394},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"c144c3358d3fcd62160f8706af588cc06e476c05","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.8_1785294327435_0.49034737782773563","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@aafe/agent-runtime","version":"0.1.9","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.9","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"2d37c59a74ab00acb0f9b23ed40bbd49d37d9895","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.9.tgz","fileCount":53,"integrity":"sha512-tCV6yUoFgUtewYKLiL/kDNyo8g9HjV78mmPt8gkDfZ4sRLt63beGpoVd6iRAwx1QOf0xy8ZnRqfxeziErf74dw==","signatures":[{"sig":"MEUCIB2XyVnJzfQy/6TKX48I7jcECPFc9udJCBtRaa4ERtsoAiEAlXdlfnONLlqXpUZde3scd+ZY602/dSbyM7aqAZchP4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":459429},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"c144c3358d3fcd62160f8706af588cc06e476c05","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.9_1785309537520_0.11377974315713812","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@aafe/agent-runtime","version":"0.1.10","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.10","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"8db5d7854766b4f0a9291f24c984c45e5d731843","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.10.tgz","fileCount":54,"integrity":"sha512-C60CdPocCBZ/dPEYMwnR0FyFaptRkHd5wwLFS5gw7BcK7LtdcIg3U4C9zQMy+H7wXPiQ+NDdiStbGK4mLnDnJw==","signatures":[{"sig":"MEUCIB+ZyyHGP0JkKSnrTf0toX/JawaA/736k/fkoPP5AsPlAiEA4Y21wMKeZ9BWrdxXuNztK1ENDxqB8lpy3tcevSfeYJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":468538},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"c144c3358d3fcd62160f8706af588cc06e476c05","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.10_1785310325272_0.7236046862476748","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@aafe/agent-runtime","version":"0.1.11","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.11","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"7af86ef61e3745f405a2d42e864bdc0011327644","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.11.tgz","fileCount":54,"integrity":"sha512-WZRy9CBBSfE7LsfqUgZYiBIIvGJX6Gere54nqnK2uBapWqehvO07XdPoRP66RwNKSrIxBx8f6puzeciqjI3kjA==","signatures":[{"sig":"MEYCIQDdhlaHIdsCX8jUI7qEwD496m4WVvMgdrs7a6yuPBdoaQIhAJQCtzPzADFVfH3IYwoSoKHbJqUP4NCtnC3sNYFzCFeV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":473864},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"108642c2bdcee2b23dc10a1325f4e00cc7137e19","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.11_1785311164682_0.8307667196950503","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@aafe/agent-runtime","version":"0.1.12","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.12","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"364e9dc86c9cb625789ac07b67335bccec592cac","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.12.tgz","fileCount":57,"integrity":"sha512-SweIZcsw6x0JSaIM5cxqZQMponxpAsLnMOcWAmDC8klBjlB1lVQwamWqOzDxlZAKblmLRr+QkaYhdE10TbPknw==","signatures":[{"sig":"MEUCIQCA/GN4ObsGVhxt1XyMGNPYM18XrgFLj4TJ/slrMlO9AgIgVFWfxnptMokxhxg2R5yikJvBdSR20twX5F9aBlpFBFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":506182},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"108642c2bdcee2b23dc10a1325f4e00cc7137e19","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.12_1785377356008_0.24500936037862608","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@aafe/agent-runtime","version":"0.1.13","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.13","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"ced60a4230cd14f77dd995d747d5178e4d390304","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.13.tgz","fileCount":62,"integrity":"sha512-Gw+C35q+uhvgJP3UhKvCQY2KngjyfL8+w7z+QpNDvIJmimIyr6s8+L48XoHNY42zPCmVAjkEknxDHCGzZHfnoA==","signatures":[{"sig":"MEQCIA8V+pKWf1vbfZJ5XP4eRKWOlTOcIxjdsiNcPk+b0qIaAiA/UgjqiZoYIUoQeKoLVcnk9/y19JuW118p8aHst+QrnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":567421},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"f612172c7a5f1bbaf0c8e8bacb7c79c1e8064737","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.13_1785405147896_0.22997109265633942","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@aafe/agent-runtime","version":"0.1.14","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.14","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"2397427db12cfb6f202ac10ce97bdf34b9d1a0e1","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.14.tgz","fileCount":62,"integrity":"sha512-kD9PK2HfHDDdj8XBNGCsSAqi5JGXAQ/SIdUimyGsJVo7xA/QsLzfIHQfwHuKnC6yW5IBBjdr5wu56f/MsA0DFQ==","signatures":[{"sig":"MEQCIHwr6d2NMpSSMT5zhcLkxPWbGd7dxcmSG1ydJ4m8kT0DAiA69Q0pm2A+TlkLJiLP8guqdVB7jXanc4J2qDKKSqqsTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":587702},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"f612172c7a5f1bbaf0c8e8bacb7c79c1e8064737","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.14_1785749663292_0.549769752027101","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@aafe/agent-runtime","version":"0.1.15","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.15","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"c00662316ef70a9eaba021a2c67513673c465816","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.15.tgz","fileCount":64,"integrity":"sha512-PSKbRRYLnNBnfU43PeG+lj7AYGIGWcyOWqslgOXdW9N1Ys73Yz6EjQ3wo5aSgBU06FVSvGaILQHeoNfbBxUXXg==","signatures":[{"sig":"MEUCIFVVPk02Y3VH73wBgFoWTXjU+cr9A4LszO89CXJTjEPpAiEA12dhlVM1VscA/9zHGnTyDXTzYVXK2F94nCyP8brI/tY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":614829},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"8b6b131654bf49f12da8c032faaf847222990c99","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.15_1785810566099_0.7346203937541496","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@aafe/agent-runtime","version":"0.1.16","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.16","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"4bff9a293a130cc2f012bc75c2952ca31900b3e4","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.16.tgz","fileCount":66,"integrity":"sha512-B24hCydNg3nrCeriwDwQ70qzkC6xSyudsU75faykxU7HyyPc7MBJxMT98K6i1S6ZRm08pNQjHmlgtIx7OIrVzQ==","signatures":[{"sig":"MEYCIQDirRHXXnphbSZyEnylBfkTothChzbpaV30RJYylrhSjwIhAPQH7dAU7FwPuacDDjP/HT2yQ7pcLkxtWOpaYo8mYHqc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":642115},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"d6061d0987a392d6f1a2c97e7371039964266585","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.16_1786932277603_0.7547792442248458","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@aafe/agent-runtime","version":"0.1.18","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.18","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"cb49edeb22895c740f6086bc490a71c6114c55cb","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.18.tgz","fileCount":68,"integrity":"sha512-PllZdhgcDNquThAjaXY5clAweYYHdYwT91jtTwEuFdle2qNET+wwbX9fBSYDC7qfAOJ0bALyaV1jtiiWQenUiw==","signatures":[{"sig":"MEUCIQC+oQru/97Tmr5iRKyGDqDsTKhmTHtDuVuG188XnOs2DAIgBCpCwqn1bvQ+WRSRZXXNxpgsSfHJ/JiEm74nK9nsd10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":675342},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"ea6f8073cc4954fe9850244393221ea7f0925cfa","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.18_1787042578074_0.9517387222245903","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@aafe/agent-runtime","version":"0.1.19","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.19","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"898704498bc259543c23fb6c9f0cbab60f1568a2","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.19.tgz","fileCount":93,"integrity":"sha512-O7S8REPGf57I99NkiJ7qbAUdlCJa9vbPchAQyPAz3XjcqRpBiHfbQ1YBBUn1/ObOqYlPRlNAaWFbI9PnennBFg==","signatures":[{"sig":"MEYCIQDrSbPW8TiIztbujo2XBRDxCgvA0wUP3+F/2BUNmdn08QIhAMiPezkX6A5rxBlTlediwT5rIVZnSOJ4WK4rTU93fhr6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":804500},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"ea6f8073cc4954fe9850244393221ea7f0925cfa","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.19_1787110196456_0.28057565556366426","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@aafe/agent-runtime","version":"0.1.20","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.20","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"c1ff1a255bfc5317f36eb670fad7f20de95ac4d3","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.20.tgz","fileCount":96,"integrity":"sha512-9VQcFmTHZJ8FvDBx96W8khIOfqJ5BFEaRe5B0eU0HPOqZOOoULmJwwNmaFC4TSk4s+9/6UzbfVpXQsbiYCOzlg==","signatures":[{"sig":"MEUCIHUuhVjduswOMQZIsd4eO20y9GaK7PY6K7lOYH18tIzLAiEA48fRjUHiDf5Wo9nVeNrRX8SJlpy3HU2UBb01Ng76xiU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":829838},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"ea6f8073cc4954fe9850244393221ea7f0925cfa","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.20_1787110939782_0.4788944343516299","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@aafe/agent-runtime","version":"0.1.21","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.21","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"d3d4937a2093fbc4ed451833aa66253f262fa035","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.21.tgz","fileCount":96,"integrity":"sha512-1Ei3FPj3SGQt5f1yVpXY5YQ9Cwv74A5xBKGIa1BFMVslFKHLPXNDlYJvXAJUiQBep5lVTIdccqKWdYRRVrIAhQ==","signatures":[{"sig":"MEUCICOWxtaExw2mckPef3421bsKb5592Qk45ROE3WpI8KxyAiEAiRtna/+8ZLcarq4m/1KvCOw12ph56md2ywGneW5CUDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":833355},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"ea6f8073cc4954fe9850244393221ea7f0925cfa","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.21_1787120556986_0.397490533336436","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@aafe/agent-runtime","version":"0.1.22","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.1.22","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"016023bf12d84d52e45ec90956750b63637da403","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.1.22.tgz","fileCount":96,"integrity":"sha512-0wtVbX01XHyD+oVBThUW3Is36SVEVoojfivmSd688d18PhIrfhume67KNdL9/HJqp/e8KSnCk41a0mfAV45ZLg==","signatures":[{"sig":"MEUCIBd3P70ELnEelfW4nF0vrtTNIPlr/jl2zOgEKguAS2NXAiEAoH9oBscvVN/VE9bOiv4Qj+3lyO7RElH3MWplHXbgR4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":839849},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"ea6f8073cc4954fe9850244393221ea7f0925cfa","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.1.22_1787121459792_0.5419943522242106","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aafe/agent-runtime","version":"0.2.0","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.0","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"a0f957cf8688d9857df7c21560d5ad0f2b48249c","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.0.tgz","fileCount":187,"integrity":"sha512-Bvtc8LNYs9nh738HO6DtBFY/yOTmFTgzPyyTuZMt/Y5oaQnjID+vawliUo7MN/yaC36RTWHF2pq0fvRHMZPyEg==","signatures":[{"sig":"MEYCIQCZpw+cvELgFwIK+gc2r1WkwZwJYPVrkmg6f6ioF/AOZwIhAJvDMI/cznRI9Yo1Ybnbpa+rxCBWr5F4wSut/nVXpOxj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1597637},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"0f8f1a861ac6c50777d9043389531f337cf63f25","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.0_1787211873037_0.30739117476652966","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aafe/agent-runtime","version":"0.2.1","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.1","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"ce128a55bdb9cf2bc7fe4b4dc4b6fc080cee47ac","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.1.tgz","fileCount":189,"integrity":"sha512-CbGKujRsheDJWKBeDxLIr4T4iXdjn34+E/le2h7JeTIbmRAAa4Ez9kQuLJ0wb5ImGrTOWIt9ayp89dYyNtLQPA==","signatures":[{"sig":"MEMCHziZwhrD/nN8YkomZEoLFBmfliQ1F6/oiQ0Yovnuc7UCIDlda+M3OXhDZvX+P0AYzDWCkzTzCAx4OXg+5r/iTxNi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1653728},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"db4c8366fad86c042ec4007049131821a88e5223","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.1_1787212808411_0.9043975435072187","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@aafe/agent-runtime","version":"0.2.2","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.2","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"73b57c4524d354f43a49e8f05cf3ce2d46adaadc","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.2.tgz","fileCount":201,"integrity":"sha512-SCQInSsSTMazaDgJtgf3R3sL+v0lY0clsjIZbObGw5V8F0Yz8yy1ROpiBuTAKLwR0FBiFLo+/usl4Oj61CKFqQ==","signatures":[{"sig":"MEUCIQCmCNBVzD5PnDpHusmHKf9o5ebir/5E6hc3ulrd5GVMjgIgZYn2+gdenAEwbOxSFZVLheGduywLdB5Y2bZEdwuUEuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1750287},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"0e57c59a2a0d7509744060849703bb16dae475ba","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.2_1787223617340_0.9810718169420081","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@aafe/agent-runtime","version":"0.2.3","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.3","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"3f1d38a853d3b00faa26c57e45a10ce3df66c8cb","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.3.tgz","fileCount":202,"integrity":"sha512-i09F1TwHFU5+q5Sd4l3NIvVCO+4oTRUSTg7BXMYWDkK05noMRE0SgjBE+F1CymX9GCGq4HgZrL7aPQU/xz/2Dg==","signatures":[{"sig":"MEQCIAlEH8J0JLUXfG3vzMDBdmtKZZDnnCE5/iryI58z3VxqAiA89onZpKPJTBwoYMAjgxlaaIyR3qbfaj4VMmifWT6q6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1760372},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"0e57c59a2a0d7509744060849703bb16dae475ba","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.3_1787227313365_0.5972955821715062","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@aafe/agent-runtime","version":"0.2.4","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.4","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"fb4a4fa8359955d3d1200177f973e8b1c790cbef","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.4.tgz","fileCount":202,"integrity":"sha512-4/hrXI6MQr57u718WKZO0mqeb48bVGHTFG26EUgk80qTTdfrNuKUTGUQjDgpRo9wdiIb33l6zRAZdSwpb71eXw==","signatures":[{"sig":"MEUCIQCXgEqzDjDroJo0CorblHoVQ/aUGRum5se+YIu0Tvc47wIgeVnqvF0nZ15W52N3MgOYSp6sAOrbLpRW4y1LHU5dh88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1764858},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"0b567c49cf3f70056ba5ab9488bc3267ab91e290","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.4_1787276399025_0.8081899344253689","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@aafe/agent-runtime","version":"0.2.5","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.5","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"c87443014dda00d89e4eac984b1a80c759619be5","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.5.tgz","fileCount":203,"integrity":"sha512-BH4qvKbQi3IvbH1YkkcmHikHC/OTcGbWMT9o0Jeg5e8xk586oYungXiMHKBsc58wQ9Z64XJbH1I4YA6qu07UWQ==","signatures":[{"sig":"MEUCIQC/2KnYa3q6OxY5pB1BTQDp1hnJY4kOD6e7lLTBm5RWawIgZtrLkj+J77eHtuSwnxw3Y8i+BPUExHe8mHP9LgnWa64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1784388},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"0b567c49cf3f70056ba5ab9488bc3267ab91e290","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.5_1787278236978_0.5787329694715049","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@aafe/agent-runtime","version":"0.2.6","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.6","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"1889614417d45946b3a6b00e7743b87624a714da","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.6.tgz","fileCount":204,"integrity":"sha512-1oI280L0t2d1SQJ7qEn+Tz6nKAw7oiHK4vt8CiShvL6uklxixLqPnjM+NjPg2E/7W1DRiOr0sFQbX9fPZPzjEg==","signatures":[{"sig":"MEUCIA/d1HYTrrOj6aW/ufos3hQupXOMA4tyj4+YmZ8OwtuCAiEA25IdMwkC7EJmzCx3MJMluCz/9+3FEHRK/Fu/sa3PIy4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1820575},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"0b567c49cf3f70056ba5ab9488bc3267ab91e290","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.6_1787282348859_0.23263330151430894","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@aafe/agent-runtime","version":"0.2.7","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.7","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"9d4ebfd3ee838f17988945c64d490db54ae7b72e","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.7.tgz","fileCount":204,"integrity":"sha512-L2jYqS6MQLMPvfBFsoeintgAMOPWGNkx31pjgx4zw3cS/gGy7QUGwIg/ytYCCZG8oZoRefBMAGvAJAwhmzzlPw==","signatures":[{"sig":"MEUCIQDlCl2o4mUHiwLlwiBRpADeB7h5tK2cPSMtt44QEk3t0wIgcn+zuxTXy6ycHWZ7tS+c3hOlhCjFGTclhz8rrIHWzWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1825528},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"0b567c49cf3f70056ba5ab9488bc3267ab91e290","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.7_1787293887555_0.09683683542381383","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@aafe/agent-runtime","version":"0.2.8","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.8","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"6add47b73be6956d54269954893dad87b69d0f75","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.8.tgz","fileCount":212,"integrity":"sha512-9jBxT1+7c7yWEBemtzQOaZFAnxwraldrDE75KerHi1xz8FPu3LLrfntHNPutdpDfJEvM5rLAxgeXDFkWbaNCVQ==","signatures":[{"sig":"MEYCIQD9TqOwuFW1wAddNVQVrJ8Ss2LM5mYIUYkdF80zC+ygzAIhAKBCYnuprc5jTEiGF2FnoPNIJnP2fVVq45Tc2tZEUiuy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1880856},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"f27e46602f5aa92693ceccd921d460d860baaf84","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./scripts/test-code-export.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.8_1787563323298_0.22199565637092378","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@aafe/agent-runtime","version":"0.2.9","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.9","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"7e505e3d914c1ad1afbc01f83738017815f3e0b3","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.9.tgz","fileCount":213,"integrity":"sha512-FHvcnovwD9i52nzzfwsHdRkTQ8oKRnqT9cJ0TtDj0pKJXbYNlrXAp8BO3pPqaozO4jNMlA+aRDJAqjKercj+AA==","signatures":[{"sig":"MEYCIQCe5yvGgswFhYoAOeRWnvXRnaxPqCQk3zGBnBbgA+NzBAIhAPPfkx0qwKLuGX/aHN2Kwg3D/jk0RAYXrZbgMtmowzUT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1888652},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"b9857fecd6f4685f1be83680e8b0238bfa6fdb97","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./scripts/test-code-export.js && node ./scripts/test-gitignore.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.9_1787563911772_0.2422441868994094","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"@aafe/agent-runtime","version":"0.2.10","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.10","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"7de522ee783a2737822978e2e1dbf284010fc44a","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.10.tgz","fileCount":213,"integrity":"sha512-CXBqoLlHBoMBSnjdPqTCeBvHu6VPqUAs+T/UgKeuOUlfcyGE75KTjUAafxsSQHwdDsSPN9w2FfrkidvqH1X/xA==","signatures":[{"sig":"MEQCIChEc6PGwosusKZLaqIa3bLpwrKkYaKrrmDa6+wNFgkyAiBGegmrpWH2xYvcYrYskNd+02VuO9JMZzRas8MCkBFwcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1889205},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"b9857fecd6f4685f1be83680e8b0238bfa6fdb97","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./scripts/test-code-export.js && node ./scripts/test-gitignore.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.10_1787564212324_0.4674693649420514","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@aafe/agent-runtime","version":"0.2.11","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.11","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"7651151fe079cd9cdc68e105bf02a22df6f18f80","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.11.tgz","fileCount":214,"integrity":"sha512-iRATxiz881gURA7WAtKeUD2BsGVb+HxmwZ1Hy3WWE6+Rxgphq79p9akRV9nb7dE/DtP8bAGGcA85d79JUyMmHw==","signatures":[{"sig":"MEYCIQD+cq9PFp3DT8ZduEAFFqd7qbuB9aWlmMoE8OVYXW5hcQIhAMlf8ZvPBW9F/zeALBMQZQ2tM5CLVptcXyYwV95PASxJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1906797},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"b9857fecd6f4685f1be83680e8b0238bfa6fdb97","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./scripts/test-code-export.js && node ./scripts/test-gitignore.js && node ./scripts/test-paths.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.11_1787569538784_0.13267700560270113","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@aafe/agent-runtime","version":"0.2.12","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.12","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"9caf2ddc4f4a7cf9b3918eecff29cf603f7251c3","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.12.tgz","fileCount":214,"integrity":"sha512-HwWxqpOyhheClKj1dMut8vzHOecV2K0g66BN8+vDTfZaVUqmiHkx5bqT6RZy4pUYl70TRc14wqN+K5Bp/cb79w==","signatures":[{"sig":"MEQCIG3PxKApvS1asby03FK28qTVty/rixNXmyYwtgtNfIP9AiAFUwEueVxlXLG5kfc9+WI9Oz2HB8CytP/MHZji2POEXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1906797},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"f9aeed1776a1a2127599c4d9a36f136f2730bf69","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./scripts/test-code-export.js && node ./scripts/test-gitignore.js && node ./scripts/test-paths.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.12_1787643122762_0.8575879546538308","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"@aafe/agent-runtime","version":"0.2.13","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.13","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"8e09c90f2094448b00241f9ed43ce3d8fca7ebfe","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.13.tgz","fileCount":215,"integrity":"sha512-OyWYDazUmcrtLRCJk8svJaYOCw1TnfbzJIo8Nx8nQVkmCpkUeXfl48o79i/1db4cA80ws/opFLoLrN+VHQNuyg==","signatures":[{"sig":"MEQCIC+QccpPoxa4afU1IzLixb/+TH8VxNuo0ftUrnQkb2gNAiARF5lYgW6y4s28jq8hLJsVhTFL3MfrH8ngnRpejz2eXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1947292},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"f9aeed1776a1a2127599c4d9a36f136f2730bf69","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./scripts/test-code-export.js && node ./scripts/test-gitignore.js && node ./scripts/test-paths.js && node ./scripts/test-knowledge-web.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.13_1787650200180_0.5979699214387579","host":"s3://npm-registry-packages-npm-production"}},"0.2.14":{"name":"@aafe/agent-runtime","version":"0.2.14","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.14","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"06d386e21484b48cf77c123aebb8ab3d2cccc232","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.14.tgz","fileCount":235,"integrity":"sha512-s6nCCsyQ6H0GBUdGrYCIsVi0TVDZOu1MM/lEPDNBvV5n78qqxo6vIpIqz1UhlfjxSEvVfOxwNFXbc/KL+DwSTA==","signatures":[{"sig":"MEUCIB+rxvl5xHQt/EFsKbtEXTVLhQgANFQ1tK9U0eHLz6M2AiEAv0VR1pu9s4SjbDw0hHadz12TO10QyHJOK1dEDUao7dE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2063869},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"1b82f112a0b99638c6d3cce29552ab3602ffe242","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./scripts/test-code-export.js && node ./scripts/test-gitignore.js && node ./scripts/test-paths.js && node ./scripts/test-knowledge-web.js && node ./scripts/test-knowledge-runtime.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ui:gate":"node ./bin/aafe.js ui gate","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"sql.js":"^1.14.2","@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.14_1788148130873_0.714978257522455","host":"s3://npm-registry-packages-npm-production"}},"0.2.15":{"name":"@aafe/agent-runtime","version":"0.2.15","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.15","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"828321c60deb5cbf2dbe3bcad992d87cdc9f27bf","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.15.tgz","fileCount":211,"integrity":"sha512-cZA5fG78evVNdJDD281BtGF2xrjy7xBzlaWgG8C4O5rwwpSAx8uDp4xjt2+/qswpkRfHiYpKa8C+9Ncx7WCLNQ==","signatures":[{"sig":"MEQCIA5zss42IGznuqAYvu1bHXs6Koq8S2Gj99FzIT/+XhovAiBDE9XpLICWjBna35SqEEnxPWmHbnMK2lcu7/eJgW3ftg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1869394},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"e26041495eacc7903f0b252783e4731a58905b45","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.15_1788167023782_0.7763208195073266","host":"s3://npm-registry-packages-npm-production"}},"0.2.16":{"name":"@aafe/agent-runtime","version":"0.2.16","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.16","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"724a10a79f8d9dbc34f12a187ecbd44c112abf2c","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.16.tgz","fileCount":211,"integrity":"sha512-EbE8JzRa4MT7Z5BNft9s7FMOoeehuHKzhhlB8V3kTSEdMh5QD+rKvNUlQkB6pkYJcd708vgnI7tjX3hLKb2/4A==","signatures":[{"sig":"MEQCIFXYA7azO2g1BEkrC7TlCb2+duWmENK9+TI842ZirW8TAiAMLUIFdOK23x09Evee/Tx8vOdCKyY+HDnJr1pRkr/HDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1872188},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"7d86405ad92ec848fc74fedf2d67a0103df762a8","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.16_1788168910963_0.31741333409852857","host":"s3://npm-registry-packages-npm-production"}},"0.2.17":{"name":"@aafe/agent-runtime","version":"0.2.17","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.17","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"9c6799457dd607a12492e5e1b93b1037c2c9e16a","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.17.tgz","fileCount":213,"integrity":"sha512-bofQxcl0UGEIpLFh7nuM/5sfC4voIDu/md4idMFUQEe9w9PScc21pRQ50Eh5nkWsJPdapEhXE6mBYIU0EOMBdw==","signatures":[{"sig":"MEQCIBLW5Dg8vF8dAQITyWB/aRhbKYQFftZTN21S37eWfRpGAiAN51mHabv/LAKF+f83UxhRd46twCmVT4NUJXarT7LQQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1887648},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"adf1fdd4807597faaedcd3893ee55e4db6105664","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.17_1788173927596_0.8080499792263376","host":"s3://npm-registry-packages-npm-production"}},"0.2.18":{"name":"@aafe/agent-runtime","version":"0.2.18","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.18","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"17f57901a0347449ea7a0184446d758ac4270360","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.18.tgz","fileCount":213,"integrity":"sha512-CjA0xWeFu4Ik47aIta9Q1GOF+ZZnPvTmGdC+Z/Lcez7NPpzwdE57sfS48szwFH5gt1y2jl67acb7qUpo1B6L4g==","signatures":[{"sig":"MEQCIEUaf9RBap6VYZhqG7tYiI6jlQ2PyW1dWyRKlOPseicfAiAxewbmQSkeiP28BqCWoEL2u1XM4iyDtIs34YZh+hhvEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1887945},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"17470b59fad95dd50586b5e2cc3f6f94c7758aea","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.18_1788179831764_0.3542630275549554","host":"s3://npm-registry-packages-npm-production"}},"0.2.19":{"name":"@aafe/agent-runtime","version":"0.2.19","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.19","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"7af6cdb838dbdd899e3f1e4603373b70c63741b0","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.19.tgz","fileCount":213,"integrity":"sha512-JWUCB5m8w1mc/f11QoUBPdEp7rG/3Du+xYzh/EJbSKMvvIZebwYcKOF4klSO38RZ+Mx0QRGwVtIW9FPGO3A4FA==","signatures":[{"sig":"MEYCIQC6qYKcOIxztmee79F9jnFvJxsoHNyCHiihS0vyephCAQIhAPsKlHNuU5ouLLgVGD+4Rx02djIzcoSlFuAH4T3eiwHC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1888258},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"ba53beb1f1b14d0e6cf0ce77fad1ed096a42aad7","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.19_1788253366197_0.07338064229100683","host":"s3://npm-registry-packages-npm-production"}},"0.2.20":{"name":"@aafe/agent-runtime","version":"0.2.20","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.20","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"061f4e916b2d844921a3a327f723ec4957e33481","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.20.tgz","fileCount":221,"integrity":"sha512-2dDJ6nvmN0yvYt2ERWmRmP9uCwsHw3LkNSXrAgR9HZWDklF7OML0cyh4YCSbLjc2cwPtyx2l7PZbSr2e6cmYnQ==","signatures":[{"sig":"MEUCIHuS3XKAgkoz0DKMPMSk9y/z2vuhNJZs3EbXfjEN50HMAiEA6MvVxBRLoc8YT7KFjLLGHYMsMyA/o2AzBIW1o98OguE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1991899},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"1277732a5f19919ee003d45ac127040a3fffac62","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-workflow-mode.js && node ./scripts/test-agent-mode.js && node ./scripts/test-config-ui.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","test:config-ui":"node ./scripts/test-config-ui.js","test:agent-mode":"node ./scripts/test-agent-mode.js","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@cursor/sdk":"^1.0.18","@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.20_1788332187047_0.008204035397525677","host":"s3://npm-registry-packages-npm-production"}},"0.2.21":{"name":"@aafe/agent-runtime","version":"0.2.21","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.21","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"d91262898bda3bf7f6279747b35329c2225d1ac4","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.21.tgz","fileCount":224,"integrity":"sha512-XfnAJC+EtLgAibQfn+zpbcIpT7mqLPAjLypzysxltfdr9UBUe1Y8MuCiY4AkAIVedFnIYylLogQhe2kndxZXTg==","signatures":[{"sig":"MEUCIFIccSbz1gsGJPXxLfIiqG8ql2pSnvei4sIlNyJ+joYLAiEAsNfqnc42xYdeSVq9p98BeANClPn9FPx4i8bPgDpb9dI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2021925},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"72527d54a47f70ec2434cee687f55858373a170c","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-workflow-mode.js && node ./scripts/test-agent-mode.js && node ./scripts/test-config-ui.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","test:config-ui":"node ./scripts/test-config-ui.js","test:agent-mode":"node ./scripts/test-agent-mode.js","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@cursor/sdk":"^1.0.18","@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.21_1788336639602_0.08929473317204506","host":"s3://npm-registry-packages-npm-production"}},"0.2.22":{"name":"@aafe/agent-runtime","version":"0.2.22","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.22","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"50463e4687bb7d9bda07f5bf666d3b5ad64a62c0","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.22.tgz","fileCount":225,"integrity":"sha512-MfecXDXdqqZ3GcBZ4cge+HwvLvYe3fjhHr9bEaQ92lnLqByL5qTripDY49P+LADU7eVDgRb00xHjPS44FPfXdQ==","signatures":[{"sig":"MEYCIQD0Nd4E+/QYxdCiI1TCDIeeb++RHVYDl+X/9U2/0khghwIhAONTUloJHw3XuN/La/S2ymj8OGN8AZmpywhvLb4jZC2q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2037032},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"775823ebcae248946a479c3c1f554faca3560e63","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-workflow-mode.js && node ./scripts/test-agent-mode.js && node ./scripts/test-config-ui.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","test:config-ui":"node ./scripts/test-config-ui.js","test:agent-mode":"node ./scripts/test-agent-mode.js","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@cursor/sdk":"^1.0.18","@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.22_1788338556212_0.536829689327011","host":"s3://npm-registry-packages-npm-production"}},"0.2.23":{"name":"@aafe/agent-runtime","version":"0.2.23","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.23","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"30aede7d7adf3f343fb61b7cfde90ac01bc1ccba","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.23.tgz","fileCount":225,"integrity":"sha512-pHFV7H7jfm3XoS77y8HtF3x34Z8+rNGEnYjFykjLnGvfEAjfRDdBCsSz45ozFjPJQAt6zp2Jz6768k+R2OiAfg==","signatures":[{"sig":"MEYCIQDLuxp1T5CfEoXvWIlcMzhPX98tIHYJ6BhrSPA9UL8bfgIhANYq36XoD15wv3pzya8p/T51ZItrz47rQKAMSz7LxVU6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2049373},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"dc0c57643846578982fc2df14bb74f9d8b01ecd0","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-workflow-mode.js && node ./scripts/test-agent-mode.js && node ./scripts/test-config-ui.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","test:config-ui":"node ./scripts/test-config-ui.js","test:agent-mode":"node ./scripts/test-agent-mode.js","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@cursor/sdk":"^1.0.18","@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.23_1788401901622_0.060425114717851613","host":"s3://npm-registry-packages-npm-production"}},"0.2.24":{"name":"@aafe/agent-runtime","version":"0.2.24","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.24","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"44e9891f9e021355eab92afba51c215f6f764525","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.24.tgz","fileCount":225,"integrity":"sha512-7xPBDFUBnwXraCd0R974uze8CKpsiCMDY/2xtOgGF1gpHfKLUYN5b5JaTTjj5epSPiHM2O9P1Zsyl8rebFljiQ==","signatures":[{"sig":"MEQCIDJx3pMdNYzjXYzFpj64Cvf1UnvWYZAEziMHGe7ipj5CAiAmxv2zZ76j884Lld44OlPHlcfaHXIjEvj2gQ2c993E1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2051646},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"4e8dc5790ffca97286246ae29f1801bc5a09d07c","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-workflow-mode.js && node ./scripts/test-agent-mode.js && node ./scripts/test-config-ui.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","test:config-ui":"node ./scripts/test-config-ui.js","test:agent-mode":"node ./scripts/test-agent-mode.js","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@cursor/sdk":"^1.0.18","@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.24_1788403256339_0.04610481053105331","host":"s3://npm-registry-packages-npm-production"}},"0.2.25":{"name":"@aafe/agent-runtime","version":"0.2.25","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.25","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"94fcea0a78ce48f3a61b789e4ddf832595154351","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.25.tgz","fileCount":225,"integrity":"sha512-7DaCjWwWVhEZ3siepFWza0GZ9gMYWZGKZgVw2U+sgnPm3OVFq2I5dWpowgJED9DjyMgGlBIJpCkCNzUwZo1IoA==","signatures":[{"sig":"MEUCIQClBB7j2X+JShi8V3CYi5bB6rvHQhTlf5NLyWx84bU3LgIgN7BmYgNRmT0QpJWbJNMfgOBrgWCLx9nc1B4ZY5zKBSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2052457},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"ccffd02c97b11afece918763686a0bfd6e1a7678","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-agent-platform.js && node ./scripts/test-submit-config.js && node ./scripts/test-workflow-mode.js && node ./scripts/test-agent-mode.js && node ./scripts/test-config-ui.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","test:config-ui":"node ./scripts/test-config-ui.js","test:agent-mode":"node ./scripts/test-agent-mode.js","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@cursor/sdk":"^1.0.18","@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.25_1788403570680_0.2664784950705841","host":"s3://npm-registry-packages-npm-production"}},"0.2.26":{"name":"@aafe/agent-runtime","version":"0.2.26","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","_id":"@aafe/agent-runtime@0.2.26","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"bin":{"aafe":"bin/aafe.js"},"dist":{"shasum":"d6cc3ad5aa25d1b667940bce4b7cbb531dc66bef","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.26.tgz","fileCount":250,"integrity":"sha512-RnV1gM76IU+wIILMe6D+vMQhNOvWCJHoKU4MW15wLzs4tqjslh5pnH1UwwyAvtxpTcfHHBYAW7dIUIvDW1JEgg==","signatures":[{"sig":"MEUCIQDTRr5OuzKQaEdrqkg2d/qprXwTnX62Y56Ruoji+KbJZwIgG58bSNf7C5AoaGz1u+WMmTVm9+p124bGIxlewjfeX8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2299394},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"298137cb4ecf37ac73e2404218980e72211fac4d","scripts":{"init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","test":"node ./scripts/test-codex-runtime.js && node ./scripts/test-codex-workflow.js && node ./scripts/test-git-https-auth.js && node ./scripts/test-cost-controls.js && node ./scripts/test-agent-platform.js && node ./scripts/test-task-manager.js && node ./scripts/test-wecom-bot.js && node ./scripts/test-wecom-presentation.js && node ./scripts/test-wecom-intent-regression.js && node ./scripts/test-sdd.js && node ./scripts/test-submit-config.js && node ./scripts/test-workflow-mode.js && node ./scripts/test-agent-mode.js && node ./scripts/test-config-ui.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","doctor":"node ./bin/aafe.js doctor","update":"node ./bin/aafe.js update","ddd:ask":"node ./bin/aafe.js ddd ask","refresh":"node ./bin/aafe.js refresh","test:sdd":"node ./scripts/test-sdd.js","ddd:analyze":"node ./bin/aafe.js ddd analyze","memory:scan":"node ./bin/aafe.js memory scan","pattern:ask":"node ./bin/aafe.js pattern ask","skills:list":"node ./bin/aafe.js skills list --github","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:sync":"node ./bin/aafe.js knowledge sync","memory:compact":"node ./bin/aafe.js memory compact","memory:summary":"node ./bin/aafe.js memory summary","pattern:select":"node ./bin/aafe.js pattern select","test:config-ui":"node ./scripts/test-config-ui.js","test:wecom-bot":"node ./scripts/test-wecom-bot.js && node ./scripts/test-wecom-presentation.js && node ./scripts/test-wecom-intent-regression.js","test:agent-mode":"node ./scripts/test-agent-mode.js","knowledge:update":"node ./bin/aafe.js knowledge update","test:task-manager":"node ./scripts/test-task-manager.js","test:codex-runtime":"node ./scripts/test-codex-runtime.js","test:cost-controls":"node ./scripts/test-cost-controls.js","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","test:agent-platform":"node ./scripts/test-agent-platform.js","test:codex-workflow":"node ./scripts/test-codex-workflow.js","test:git-https-auth":"node ./scripts/test-git-https-auth.js","test:project-context":"node ./scripts/test-project-context.js","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github"},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"_npmVersion":"10.8.2","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@cursor/sdk":"^1.0.18","@babel/parser":"^7.29.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.48.0","@playwright/test":"^1.48.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-runtime_0.2.26_1788922913667_0.3604500650726541","host":"s3://npm-registry-packages-npm-production"}},"0.2.27":{"name":"@aafe/agent-runtime","version":"0.2.27","description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","type":"module","bin":{"aafe":"bin/aafe.js"},"exports":{".":"./src/index.js"},"publishConfig":{"access":"public"},"scripts":{"test:cli-package":"node ./scripts/test-cli-package.js","doctor":"node ./bin/aafe.js doctor","init":"node ./bin/aafe.js init --yes","sync":"node ./bin/aafe.js sync --yes","memory:summary":"node ./bin/aafe.js memory summary","memory:compact":"node ./bin/aafe.js memory compact","memory:scan":"node ./bin/aafe.js memory scan","knowledge:init":"node ./bin/aafe.js knowledge init","knowledge:update":"node ./bin/aafe.js knowledge update","knowledge:sync":"node ./bin/aafe.js knowledge sync","knowledge:web":"node ./bin/aafe.js knowledge-web","knowledge:web:serve":"node ./bin/aafe.js knowledge-web --serve","skills:list":"node ./bin/aafe.js skills list --github","skills:install:aafe-vue-complex":"node ./bin/aafe.js skills install aafe-vue-complex-runtime --github","pattern:ask":"node ./bin/aafe.js pattern ask","pattern:select":"node ./bin/aafe.js pattern select","ddd:ask":"node ./bin/aafe.js ddd ask","ddd:analyze":"node ./bin/aafe.js ddd analyze","update":"node ./bin/aafe.js update","refresh":"node ./bin/aafe.js refresh","test":"node ./scripts/test-cli-package.js && node ./scripts/test-codex-runtime.js && node ./scripts/test-codex-workflow.js && node ./scripts/test-git-https-auth.js && node ./scripts/test-cost-controls.js && node ./scripts/test-agent-platform.js && node ./scripts/test-task-manager.js && node ./scripts/test-wecom-bot.js && node ./scripts/test-wecom-presentation.js && node ./scripts/test-wecom-intent-regression.js && node ./scripts/test-sdd.js && node ./scripts/test-submit-config.js && node ./scripts/test-workflow-mode.js && node ./scripts/test-agent-mode.js && node ./scripts/test-config-ui.js && node ./scripts/test-file-license-rules.js && node ./scripts/test-completion-tapd-rules.js && node ./scripts/test-tapd-config.js && node ./scripts/test-workspace-cursor.js && node ./scripts/test-e2e-platform.js && node ./scripts/test-route-analyze.js && node ./scripts/test-update-analyze.js && node ./bin/aafe.js doctor","test:config-ui":"node ./scripts/test-config-ui.js","test:agent-platform":"node ./scripts/test-agent-platform.js","test:task-manager":"node ./scripts/test-task-manager.js","test:wecom-bot":"node ./scripts/test-wecom-bot.js && node ./scripts/test-wecom-presentation.js && node ./scripts/test-wecom-intent-regression.js","test:cost-controls":"node ./scripts/test-cost-controls.js","test:codex-runtime":"node ./scripts/test-codex-runtime.js","test:codex-workflow":"node ./scripts/test-codex-workflow.js","test:git-https-auth":"node ./scripts/test-git-https-auth.js","test:sdd":"node ./scripts/test-sdd.js","test:agent-mode":"node ./scripts/test-agent-mode.js","test:project-context":"node ./scripts/test-project-context.js"},"keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"license":"MIT","engines":{"node":">=18"},"dependencies":{"@babel/parser":"^7.29.8","@cursor/sdk":"^1.0.18"},"optionalDependencies":{"@playwright/test":"^1.48.0","playwright":"^1.48.0"},"_id":"@aafe/agent-runtime@0.2.27","gitHead":"d6b9c7a6c2cba03a221e638d33af8e93cf1a1017","_nodeVersion":"20.20.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-3oFNt17VXid9IXDZAN573jA+E+NYZKQHQ9Z2LceD/4ZweWWJwkuJKpXwRsgOBg8v6Jgp7XOvXKMtkZ/aH6c6NA==","shasum":"e7f1582bb0afae0767b93b5d1612b536fb6a4d53","tarball":"https://registry.npmjs.org/@aafe/agent-runtime/-/agent-runtime-0.2.27.tgz","fileCount":251,"unpackedSize":2304244,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICWmjZCX5dvSApy59sgkjJ9B93ZV4NryxNFqqFfVa/EuAiBtrjYJlb20xG13eUY3dNmGCF8635R0K4VDsOTtvNG0VA=="}]},"_npmUser":{"name":"lixintao","email":"li18566230175@gmail.com"},"directories":{},"maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-runtime_0.2.27_1788923828849_0.6338481602748913"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-07T09:23:23.109Z","modified":"2026-09-09T03:17:09.235Z","0.1.0":"2026-05-07T09:23:23.359Z","0.1.1":"2026-05-13T08:35:57.158Z","0.1.2":"2026-05-13T08:39:50.378Z","0.1.3":"2026-05-13T08:49:56.018Z","0.1.4":"2026-05-27T07:49:21.499Z","0.1.5":"2026-05-27T09:16:56.637Z","0.1.6":"2026-06-10T08:21:46.477Z","0.1.7":"2026-07-29T02:58:23.589Z","0.1.8":"2026-07-29T03:05:27.656Z","0.1.9":"2026-07-29T07:18:57.741Z","0.1.10":"2026-07-29T07:32:05.420Z","0.1.11":"2026-07-29T07:46:04.835Z","0.1.12":"2026-07-30T02:09:16.221Z","0.1.13":"2026-07-30T09:52:28.056Z","0.1.14":"2026-08-03T09:34:23.462Z","0.1.15":"2026-08-04T02:29:26.283Z","0.1.16":"2026-08-17T02:04:37.772Z","0.1.18":"2026-08-18T08:42:58.218Z","0.1.19":"2026-08-19T03:29:56.614Z","0.1.20":"2026-08-19T03:42:19.928Z","0.1.21":"2026-08-19T06:22:37.141Z","0.1.22":"2026-08-19T06:37:39.954Z","0.2.0":"2026-08-20T07:44:33.236Z","0.2.1":"2026-08-20T08:00:08.562Z","0.2.2":"2026-08-20T11:00:17.543Z","0.2.3":"2026-08-20T12:01:53.623Z","0.2.4":"2026-08-21T01:39:59.201Z","0.2.5":"2026-08-21T02:10:37.172Z","0.2.6":"2026-08-21T03:19:09.072Z","0.2.7":"2026-08-21T06:31:27.780Z","0.2.8":"2026-08-24T09:22:03.475Z","0.2.9":"2026-08-24T09:31:51.937Z","0.2.10":"2026-08-24T09:36:52.475Z","0.2.11":"2026-08-24T11:05:38.983Z","0.2.12":"2026-08-25T07:32:02.920Z","0.2.13":"2026-08-25T09:30:00.370Z","0.2.14":"2026-08-31T03:48:51.056Z","0.2.15":"2026-08-31T09:03:43.939Z","0.2.16":"2026-08-31T09:35:11.118Z","0.2.17":"2026-08-31T10:58:47.761Z","0.2.18":"2026-08-31T12:37:11.915Z","0.2.19":"2026-09-01T09:02:46.397Z","0.2.20":"2026-09-02T06:56:27.228Z","0.2.21":"2026-09-02T08:10:39.776Z","0.2.22":"2026-09-02T08:42:36.425Z","0.2.23":"2026-09-03T02:18:21.835Z","0.2.24":"2026-09-03T02:40:56.500Z","0.2.25":"2026-09-03T02:46:10.916Z","0.2.26":"2026-09-09T03:01:53.928Z","0.2.27":"2026-09-09T03:17:09.024Z"},"license":"MIT","keywords":["ai-agent","frontend-architecture","coding-agent","architecture-runtime","project-memory"],"description":"Universal Frontend Architecture Runtime for architecture-aware AI coding agents.","maintainers":[{"name":"lixintao","email":"li18566230175@gmail.com"}],"readme":"# @aafe/agent-runtime\n\n`@aafe/agent-runtime` 是面向前端工程的项目级 AI 架构运行时。它把 AI Coding 从「直接改代码」升级为一条可审计的链路：\n\n```text\n需求接入/分支判定 → SDD + 架构规划 → 实施 → 批判审查 → 影响分析/自测 → 提交/PR → TAPD 回填（按需） → 知识更新\n```\n\nAAFE 默认只做编排、分析和上下文交付；启用 Cursor developer execution 或 `aafe task` 后，才会通过 Cursor SDK / Cloud Agent 执行代码变更。\n\n核心能力：\n\n- 项目级 Runtime 初始化、更新和诊断\n- Skill、Pipeline、Hook、Gate 和 Memory 编排\n- Vue / React / Next / Monorepo 等项目识别\n- 默认启用的 SDD 规格规划、OpenSpec 兼容 artifact、revision 与 traceability\n- **DDD 领域建模**与**前端设计模式组合**，两者均为显式开启\n- Planner + Orchestrator 的 Agent Platform，产出给 IDE Agent 的最小上下文包\n- Task Manager + Cursor Cloud 的隔离任务、并发调度和进程重启恢复\n- Knowledge Center 知识关系、影响分析和测试预测\n- Knowledge Web 本地可视化\n- 任务完成后自动更新 Knowledge、Runtime 和 Doctor\n\n## 目录\n\n- [快速开始](#快速开始)\n- [从 0.1.x 升级到 0.2.0](#从-01x-升级到-020)\n- [CLI 命令](#cli-命令)\n- [项目初始化](#项目初始化)\n- [Workspace Root 与编辑器分层配置](#workspace-root-与编辑器分层配置)\n- [项目更新与诊断](#项目更新与诊断)\n- [Memory](#memory)\n- [DDD（显式开启）](#ddd显式开启)\n- [前端设计模式（显式开启）](#前端设计模式显式开启)\n- [SDD 与 Feature Pipeline](#sdd-与-feature-pipeline)\n- [Agent Platform](#agent-platform)\n- [任务主流程（Task Spine）](#任务主流程task-spine)\n- [隔离任务与 Cursor Cloud](#隔离任务与-cursor-cloud)\n- [E2E](#e2e)\n- [Agent Setup（Cursor Agent 模式）](./plan-list/AGENTS.SETUP.md)\n- [Cloud Task Manager + 企微 Bot](./plan-list/WECOM-CLOUD-TASK.md)\n- [Agent 作用与配置指南](./plan-list/AGENTS.CONFIG.md)\n- [Agent 内自主命中](#agent-内自主命中)\n- [Knowledge Center](#knowledge-center)\n- [Knowledge Web](#knowledge-web)\n- [任务完成自动同步](#任务完成自动同步)\n- [架构文档接入](#架构文档接入)\n- [AI Runtime 执行](#ai-runtime-执行)\n- [项目目录结构](#项目目录结构)\n- [Agent Skills 分发](#agent-skills-分发)\n- [开发与验证](#开发与验证)\n- [设计边界](#设计边界)\n\n\n\n## 快速开始\n\n在目标前端项目根目录执行：\n\n默认 npm 安装仅提供 AAFE CLI / Runtime，发布包不包含 `ai-bots/wecom`，也不安装企微 Bot SDK。`init`、`update`、`doctor` 等普通命令不加载 WeCom；默认 `update` 不安装、启动或更新 Bot。Bot 统一使用 `aafe bot start --wecom` 显式启动，后续其他 Bot 通过独立适配器扩展。企微 Bot 需在 AAFE 源码的 `ai-bots/wecom` 目录另行安装依赖；默认 npm 安装包执行启动命令会提示未安装，不自动下载 Bot。旧命令 `aafe wecom` 保留兼容。\n\n```bash\nnpm install --save-dev @aafe/agent-runtime\nnpx aafe init --yes \\\n  --framework=vue \\\n  --scenarios=complex,admin,dashboard,workflow,graph \\\n  --template=complex \\\n  --editors=cursor\nnpx aafe doctor\nnpx aafe knowledge update\nnpx aafe knowledge-web --serve --port=4173   # 浏览器打开 http://127.0.0.1:4173/\n```\n\n常用项目类型与场景：\n\n```text\n--framework=vue|react|next|monorepo|generic\n--scenarios=complex,ddd,patterns,graph,admin,dashboard,workflow\n```\n\nSDD 默认启用并融合进 feature pipeline；DDD 与设计模式知识包始终会安装，但**默认不激活**——是否启用由每次请求的门禁判定，见 [SDD 与 Feature Pipeline](#sdd-与-feature-pipeline)、[DDD（显式开启）](#ddd显式开启) 与 [前端设计模式（显式开启）](#前端设计模式显式开启)。\n\n## 从 0.1.x 升级到 0.2.0\n\n线上已发布的最新版本是 `0.1.22`，`0.2.0` 是一次包含破坏性变更的升级。**升级 npm 包之后必须执行** `aafe update`：`.ai-agent/` 下的 Pipeline 和 Gate 是随包生成、留在项目里的文件，光升级包不会刷新它们。\n\n### 一条命令完成迁移\n\n```bash\nnpm install --save-dev @aafe/agent-runtime@latest\nnpx aafe update --yes\nnpx aafe doctor\n```\n\n子目录（Monorepo）安装：\n\n```bash\ncd bklog/web\nnpm install --save-dev @aafe/agent-runtime@latest\nnpx aafe update --yes --module-name=web --migrate-editors\nnpx aafe doctor\n```\n\n先看会改什么：\n\n```bash\nnpx aafe update --dry-run\n```\n\n`aafe update` 会刷新生成物，并保留项目自有知识：`.ai-agent/project.md`、`.ai-agent/project-skills/**`、`.ai-agent/rules/**`、`.aafe-memory/**`（由 `memory.path` 指定）。\n\n### 破坏性变更清单\n\n\n| 变更                                            | 影响                     | 迁移动作                                         |\n| --------------------------------------------- | ---------------------- | -------------------------------------------- |\n| `aafe run` 语义变更为 Planner + Orchestrator 全循环   | 依赖旧行为的脚本               | 改用 `aafe pipeline`，过渡期可用 `aafe run --legacy` |\n| 包内目录调整                                        | 深链导入的代码                | 见「包内目录调整」                                    |\n| DDD 改为显式开启                                    | 通用需求不再自动做领域建模          | `aafe update`，无需改代码                          |\n| 设计模式改为显式开启                                    | `feature` 管线不再无条件跑模式步骤 | `aafe update`，无需改代码                          |\n| `architecture_gate` 不再要求 `pattern_selection`  | 自定义 `gates.yaml`       | 见「自定义 Pipeline / Gate」                       |\n| `analyzeDDD` 变为 async                         | 直接调用 API 的代码           | 加 `await`                                    |\n| `analyzePatternFit` 不再返回 `recommendation`     | 直接调用 API 的代码           | 改读 `composition.patterns`                    |\n| `.aafe.config.json` 的 `analyze.llm.agents` 废弃 | Agent 接线配置             | 迁到 `.aafe.agents.json`                       |\n\n\n\n\n### 包内目录调整\n\n```text\nsrc/analyze/   →  src/static-analysis/\nsrc/runtime/   →  src/agent-platform/skill-runtime/\n```\n\n直接深链到这些路径的代码需要改导入。从包名根导入不受影响：\n\n```js\nimport { AgentRuntime, analyzePatternComposition } from '@aafe/agent-runtime';\n```\n\n\n\n### DDD 与设计模式改为显式开启\n\n0.1.x 的 `feature` 管线里，DDD 与模式步骤是**无条件执行**的，`AgentRuntime.classify` 也会因为请求里出现「领域」「策略」这类词就切到对应管线。结果是一个「加个订单列表页」的普通需求，也会被要求先产出限界上下文和模式选型。\n\n0.2.0 起两者都由门禁把关，只有请求中**明确表达**了相应意图才会激活：\n\n```bash\n$ aafe ddd gate \"加个订单列表页\"\n{ \"enabled\": false, \"decision\": \"disabled\",\n  \"reason\": \"no explicit DDD intent in the request\", \"scope\": \"none\" }\n\n$ aafe ddd gate \"用 DDD 重构订单模块\"\n{ \"enabled\": true, \"decision\": \"enabled\",\n  \"reason\": \"explicit DDD intent: ddd\", \"scope\": \"partial\",\n  \"requestedCapabilities\": [\"refactoring\"] }\n```\n\n判定为 `ambiguous` 时会先反问，不会静默启用。代码库里本来就存在的 DDD 术语或 `adapter`、`strategy` 之类的类名，都不构成启用理由。\n\n`aafe update` 会同时做三件事：\n\n1. 重写 `feature.yaml`，移除无条件的 DDD 与模式步骤；\n2. 写入新的 `domain-feature.yaml`（Gate → Scope → Discovery → Strategic → Tactical → Architecture → Validation）和 `pattern-feature.yaml`（Gate → Discovery → Selection → Composition → Audit → Validation）；\n3. 生成 `.ai-agent/ddd/`（39 个文件）与 `.ai-agent/frontend-engineering/`（61 个文件）两棵知识树，并写入 `aafe-ddd-gate.mdc`、`aafe-pattern-gate.mdc` 两条编辑器指针规则。\n\n\n\n### 自动迁移历史文件与配置\n\n`.ai-agent/`、`.aafe.config.json` 和 `.aafe.agents.json` 都在你的仓库里，升级 npm 包搬不动它们；只重新生成也不够，因为新版本只会写自己知道的路径，不会去动一个它已经不认识的旧文件。所以 `aafe init` / `aafe update` / `aafe sync` 都会在写完新布局之后自动跑一遍迁移。\n\n也可以单独执行：\n\n```bash\nnpx aafe migrate --dry-run    # 只看会改什么\nnpx aafe migrate\n```\n\n当前包含四项：\n\n\n| 迁移                           | 从                                             | 到                                        |\n| ---------------------------- | --------------------------------------------- | ---------------------------------------- |\n| `superseded-flat-ddd-skills` | `.ai-agent/skills/` 下 5 个扁平 DDD 技能文件          | 已由 `.ai-agent/ddd/skills/` 取代，删除         |\n| `file-license-memory-jsonl`  | `.ai-agent/memory/file-license-ok.json`       | `.ai-agent/memory/file-license-ok.jsonl` |\n| `analyze-output-key`         | `.aafe.config.json → analyze.docsOut` + 旧产物目录 | `analyze.output` + 现产物目录                 |\n| `analyze-llm-agents`         | `.aafe.config.json → analyze.llm.agents`      | `.aafe.agents.json`                      |\n\n\n几点值得说明：\n\n- **扁平 DDD 技能文件必须清掉。** 留着不只是多余——Skill Index 路由仍会读到它们，一个残留的 `ddd-discovery.md` 足以让 Agent 对一个从没要求过领域建模的需求做起限界上下文分析，正好绕开新门禁。这些文件每次 `update` 本来就会被整体覆盖，删除不会丢掉任何你该保留的东西。\n- **license 记忆是真实数据，做的是格式转换而非删除。** 旧的单体 `.json` 会被逐条转成追加式 `.jsonl`，只搬运 `ok: true` 的记录，并保留旧文件自己的 fingerprint——如果 License 模板后来变过，这些记录就应该继续判定为不匹配。重新校验一个文件很便宜，错误地信任一个过期的头部不便宜。\n- `analyze` **产物目录会合并，而不是二选一。** `analyze.docsOut` 和 `analyze.output` 同时存在时，配置值只能取其一：读取优先级本来就是 `output ?? docsOut`，而配置模板一直无条件写入 `output`，所以任何生成过的项目里 `docsOut` 其实从未生效——改用它会把分析悄悄指向一个项目可能从没用过的目录。磁盘上的产物则不同：当旧目录有产物、而 `output` 指向的目录还不存在时，产物会一并迁过去，让配置和磁盘重新对上；两个目录都有产物时不合并，因为那会把一次更旧的分析混进当前产物里且无从分辨新旧——分析产物随时可以用 `aafe analyze` 重建，此时只报告旧目录位置，由你确认后删除。指向项目外的旧路径只报告、不搬运。\n- **迁移按「磁盘现状」判断，不看版本号。** 跳过了好几个版本的项目、已经手工迁移过的项目、和完全最新的项目，跑完结果一致；重复执行是 no-op，中途失败也不需要回滚。\n- **前置条件不满足时会推迟而不是硬来。** 例如 `.ai-agent/ddd/` 尚未安装时不会删旧技能文件，`.aafe.agents.json` 尚未生成时不会去写它——否则会写出一个残缺的 agents 配置，让项目永久失去 planner 和内置 Agent。这类情况下旧内容原地保留，下次再迁移。\n\n\n\n### 自定义 Pipeline / Gate\n\n如果改过 `.ai-agent/pipelines/*.yaml` 或 `.ai-agent/runtime/gates.yaml`，`aafe update` 会用新版本覆盖它们。请先备份，再把自定义步骤挪到新结构上。三处语义变化需要注意：\n\n- `architecture_gate` 的 `requires` 去掉了 `pattern_selection`。架构合理与否，和有没有用设计模式是两件事。\n- `pattern_gate` 的 `requires` 改为 `pattern_problems` / `pattern_composition` / `pattern_anti_patterns`。\n- 新增 `ddd_enablement_gate` 与 `pattern_enablement_gate`。\n- `feature` pipeline 默认融合 `sdd-gate / explore / proposal / specs / design / tasks / approval`，并在实施前经过 `sdd_gate`；`sdd.enabled: false` 时这些步骤发布空兼容 artifact 后跳过。\n\n**未执行** `aafe update` **时不会崩**：模式技能在被门禁跳过时，仍会发布 `pattern_interview`、`pattern_selection`、`module_pattern_selection` 等旧 artifact 键（值为空），所以留在磁盘上的旧 `pattern_gate` 不会把管线卡死。但这只是兼容垫片，行为已经是新的——请尽快执行 `update`。\n\n### 升级后验证\n\n```bash\nnpx aafe doctor          # 期望 status: pass，missing 与 warnings 均为空\nnpx aafe migrate         # 期望 migrated: 0，即已无遗留内容\nnpx aafe ddd gate \"加个列表页\"        # 期望 disabled\nnpx aafe pattern gate \"加个列表页\"    # 期望 disabled\n```\n\n`doctor` 会校验 DDD/模式/SDD 知识入口、`feature.yaml` 的 SDD 融合及 DDD/模式 opt-in 约束、各 Gate 配置和 Cursor 指针；启用 Cloud Task readiness 时还会检查这些文件是否可被 Git clone 获取。\n\n### 回滚\n\n`.ai-agent/` 全部纳入版本库时，回滚即：\n\n```bash\nnpm install --save-dev @aafe/agent-runtime@0.1.22\ngit checkout -- .ai-agent .aafe.config.json\n```\n\n\n\n## CLI 命令\n\n\n| 命令                      | 用途                                                                                        |\n| ----------------------- | ----------------------------------------------------------------------------------------- |\n| `aafe init`             | 初始化项目 Runtime、Memory 和编辑器入口                                                               |\n| `aafe detect`           | 识别项目框架、编辑器和场景                                                                             |\n| `aafe doctor`           | 检查 Runtime 文件和配置完整性                                                                       |\n| `aafe sync`             | 同步生成的 Runtime 文件                                                                          |\n| `aafe update`           | 更新已接入项目的 Runtime、Skills、Hooks 和 Knowledge                                                 |\n| `aafe migrate`          | 把旧版本遗留的文件和配置迁移到当前位置；`--dry-run` 预览                                                        |\n| `aafe analyze`          | 生成项目架构定位 Skill、AST 分析产物和检索索引                                                              |\n| `aafe knowledge init`   | 初始化 Knowledge 关系视图                                                                        |\n| `aafe knowledge update` | 更新 `.docs` 下的 Knowledge 视图                                                                |\n| `aafe knowledge sync`   | `knowledge update` 的别名                                                                    |\n| `aafe knowledge search` | 在 analyze 产物里做排序检索（模块/文件/路由/组件/特性/符号）                                                     |\n| `aafe knowledge index`  | 重建并落盘检索索引                                                                                 |\n| `aafe knowledge-web`    | 生成 Knowledge Web 可视化页面；加 `--serve` 启动本地服务                                                 |\n| `aafe task-completion`  | 执行任务完成后的自动同步链路                                                                            |\n| `aafe memory`           | 管理项目 Memory（读写 `memory.path`，默认 `.aafe-memory/`）                                          |\n| `aafe e2e`              | 启用/关闭 Playwright E2E、安装依赖、采集登录态（产物只写配置里的目录）                                               |\n| `aafe ddd`              | DDD 门禁、范围、发现与领域模型分析                                                                       |\n| `aafe pattern`          | 设计模式门禁、问题识别、选型与组合                                                                         |\n| `aafe context`          | 为 IDE Agent 生成最小可追溯上下文包                                                                   |\n| `aafe impact`           | 预测需求或 git diff 的影响范围                                                                      |\n| `aafe plan`             | 查看 Planner 的决策轨迹                                                                          |\n| `aafe run`              | 运行 Planner + Orchestrator 全循环                                                             |\n| `aafe pipeline`         | 运行旧的 Skill Pipeline（0.1.x 的 `aafe run` 行为）                                                |\n| `aafe task`             | 创建、查询、继续、取消和恢复隔离的持久化 Cursor Cloud Task                                                |\n| `aafe sdd`              | 管理 Task 绑定的 OpenSpec artifact、revision、审批、验证、同步和归档                                      |\n| `aafe repo pr`          | 使用仓库 Token 创建或复用 GitHub PR                                                               |\n| `aafe test`             | 规划并生成 YAML Case；`--coverage` 全量、`--diff` 任务变更、`--pr=<url>` PR 差异；`--run` 才用 Playwright 执行 |\n| `aafe diagnose`         | 把失败报告定位成根因与修复方向                                                                           |\n| `aafe license`          | 校验并补齐文件 License 头                                                                         |\n| `aafe skills`           | 下载 GitHub Agent Skills，不用于项目初始化                                                           |\n\n\n查看帮助：\n\n```bash\naafe --help\n```\n\n\n\n## 项目初始化\n\n\n\n### 初始化 Runtime\n\n```bash\naafe init --yes \\\n  --framework=vue \\\n  --scenarios=complex,ddd,patterns,graph \\\n  --template=complex \\\n  --editors=cursor,codebuddy,codex\n```\n\n常用编辑器：\n\n```text\n--editors=cursor|codebuddy|claude|codex|trace|windsurf|vscode\n```\n\n子目录安装额外参数：\n\n```text\n--module-name=web\n--migrate-editors\n--no-migrate-editors\n```\n\nMonorepo 子目录安装见 [Workspace Root 与编辑器分层配置](#workspace-root-与编辑器分层配置)。\n\n### 检查初始化结果\n\n```bash\naafe detect\naafe doctor\n```\n\n`doctor` 期望结果：\n\n```json\n{\n  \"status\": \"pass\",\n  \"missing\": [],\n  \"warnings\": []\n}\n```\n\n\n\n## Workspace Root 与编辑器分层配置\n\n当 AAFE 安装在 **Git 仓库的子目录**（例如 monorepo 中的 `bklog/web`）时，编辑器适配器必须写入 **Workspace Root** 才能生效；`.ai-agent`、`.docs`、`.aafe.config.json` 仍保留在安装目录，避免污染仓库根目录。\n\n### 适用场景\n\n```text\n仓库 Root（Workspace Root，Cursor / CodeBuddy / Claude 等在此读取编辑器配置）\n└── bklog/web/          ← 安装目录（在此执行 aafe init / update）\n    ├── .ai-agent/      ← Runtime 知识源，保留在此\n    ├── .docs/          ← 模块文档，保留在此\n    ├── .aafe.config.json\n    └── package.json\n```\n\n`aafe init` / `aafe update` 会同时扫描 **安装目录** 与 **Workspace Root**，输出分析结果，并按当前 `--editors` 智能适配。\n\n### 迁移策略\n\n\n| 资源                                    | 位置             | 说明                                  |\n| ------------------------------------- | -------------- | ----------------------------------- |\n| `.cursor` / `.codebuddy` / `.codex` 等 | Workspace Root | 仅编辑器适配器迁移/合并到 Root                  |\n| `.ai-agent`                           | 安装目录           | Runtime、Skills、Pipelines            |\n| `.aafe-memory`                        | 安装目录           | 项目 Memory（`memory.path`，update 不覆盖） |\n| `.docs`                               | 安装目录           | 架构文档与 Knowledge 视图                  |\n| `.aafe.config.json`                   | 安装目录           | 项目配置，含 `workspace` 元数据              |\n\n\n迁移时，编辑器文件内的路径引用会自动重写为安装目录实际路径，例如：\n\n```text\n.ai-agent/skill-index.md  →  bklog/web/.ai-agent/skill-index.md\n.docs/guide.md            →  bklog/web/.docs/guide.md\n.cursor/hooks/...         →  .cursor/hooks/web/...\n```\n\n若安装目录已存在编辑器配置，CLI 会提示是否迁移到 Workspace Root（交互模式默认确认；`--yes` 时自动迁移）。\n\n### 支持的编辑器与分层结构\n\n\n| 编辑器       | 安装目录标记           | Workspace Root 分层结构                              |\n| --------- | ---------------- | ------------------------------------------------ |\n| Cursor    | `.cursor/`       | `.cursor/{rules,skills,hooks,context}/{module}/` |\n| CodeBuddy | `.codebuddy/`    | `.codebuddy/{module}/` + `skills/`               |\n| Claude    | `CLAUDE.md`      | 合并到 Root 的 `CLAUDE.md`（按模块块）                     |\n| Codex     | `.codex/`        | `.codex/{module}/aafe.md`                        |\n| Trace     | `.trace/`        | `.trace/{module}/aafe.md`                        |\n| Windsurf  | `.windsurfrules` | 合并到 Root 文件（按模块块）                                |\n| VS Code   | `.vscode/`       | `.vscode/{module}/aafe.instructions.md`          |\n\n\n只对 `--editors` 中启用的编辑器生成分层配置。\n\n### 子目录安装示例\n\n在模块目录下初始化（需以 **仓库 Root** 作为 IDE Workspace 打开）：\n\n```bash\ncd bklog/web\nnpm install --save-dev @aafe/agent-runtime\n\n# 交互式：分析双目录、提示模块名、确认迁移\nnpx aafe init --editors=cursor,codebuddy\n\n# 非交互式\nnpx aafe init --yes \\\n  --framework=vue \\\n  --scenarios=complex,ddd,patterns \\\n  --editors=cursor,codebuddy,codex \\\n  --module-name=web \\\n  --migrate-editors\n```\n\n\n\n### 相关 CLI 参数\n\n\n| 参数                     | 说明                                 |\n| ---------------------- | ---------------------------------- |\n| `--module-name=<name>` | 分层配置的模块名，默认取安装目录名（如 `web`）         |\n| `--migrate-editors`    | 将安装目录下的编辑器适配器迁移/合并到 Workspace Root |\n| `--migrate-cursor`     | `--migrate-editors` 的别名            |\n| `--no-migrate-editors` | 跳过编辑器适配器迁移                         |\n| `--no-migrate-cursor`  | `--no-migrate-editors` 的别名         |\n\n\n\n\n### `.aafe.config.json` 中的 workspace 配置\n\n子目录安装且启用分层后，安装目录下的 `.aafe.config.json` 会写入类似配置：\n\n```json\n{\n  \"workspace\": {\n    \"layeredEditors\": true,\n    \"installRoot\": \".\",\n    \"workspaceRoot\": \"../..\",\n    \"moduleName\": \"web\",\n    \"moduleRelativePath\": \"bklog/web\",\n    \"retainInInstallDir\": [\".ai-agent\", \".docs\", \".aafe.config.json\"],\n    \"editorOnlyAtWorkspaceRoot\": true,\n    \"agentPrefix\": \"bklog/web/.ai-agent\",\n    \"docsPrefix\": \"bklog/web/.docs\",\n    \"editorLayers\": {\n      \"cursor\": \".cursor/{rules,skills,hooks,context}/web\",\n      \"codebuddy\": \".codebuddy/web\",\n      \"codex\": \".codex/web\"\n    }\n  }\n}\n```\n\n`aafe doctor` 会校验 Workspace Root 下的分层编辑器文件，并警告安装目录仍残留 `.cursor` / `.codebuddy` 或 Root 下误放的 `.ai-agent` / `.docs`。\n\n## 项目更新与诊断\n\n升级 npm 包后执行：\n\n```bash\nnpm install\nnpx --yes @aafe/agent-runtime@latest update\nnpx --yes @aafe/agent-runtime@latest doctor\n```\n\n`aafe update` 默认会：\n\n- 刷新 `.ai-agent` Runtime、Skills、Pipelines 和 Gates；\n- 刷新编辑器入口和 Hooks（含 Workspace Root 分层编辑器配置）；\n- 迁移旧版本遗留的文件和配置（见 [自动迁移历史文件与配置](#自动迁移历史文件与配置)），结果在输出的 `migration` 字段；\n- 保留 `.ai-agent/project.md`、`.ai-agent/project-skills/**`、`.ai-agent/rules/**` 和 `memory.path` 指向的 Memory 目录（默认 `.aafe-memory/**`）；\n- TTY 下询问是否强制执行 `aafe analyze`（默认 Yes）；强制时覆盖 analyze 产物并迁移旧布局，保留 `.aafe/e2e/` 与 `.aafe/runs/`；\n- 自动刷新 Knowledge 关系视图；\n- 执行 `doctor` 校验。\n\n常用参数：\n\n```bash\naafe update --dry-run              # 预览\naafe update --upgrade-package      # 只升级全局 npm 包\naafe update --no-knowledge         # 关闭本次 Knowledge 自动更新\naafe update --analyze              # 强制 analyze（默认；TTY 会询问）\naafe update --no-analyze           # 本次不跑 analyze\naafe update --yes --module-name=web --migrate-editors   # 子目录安装迁移编辑器配置\n```\n\n\n\n## Memory\n\n项目记忆已从 `.ai-agent/memory/` 迁出。`aafe init` / `aafe update` 之后，**必须先指定 Memory 目录**，所有读写都走这个目录，不要再往 `.ai-agent/memory/` 写学习记录。\n\n目录由 `.aafe.config.json` → `memory.path` 指定，相对**安装目录**（子目录安装时是模块目录，不是仓库 Root）。默认 `.aafe-memory/`。`aafe update` 不会覆盖该目录。\n\n```json\n{\n  \"memory\": {\n    \"enabled\": true,\n    \"path\": \".aafe-memory\",\n    \"remote\": {\n      \"enabled\": false,\n      \"url\": null,\n      \"projectId\": null,\n      \"tokenEnv\": \"AAFE_MEMORY_TOKEN\",\n      \"timeoutMs\": 15000\n    }\n  }\n}\n```\n\n\n| 路径                                                                                                  | 用途       |\n| --------------------------------------------------------------------------------------------------- | -------- |\n| `.aafe-memory/index.md`                                                                             | 目录入口     |\n| `.aafe-memory/learnings.jsonl`                                                                      | 追加式结构化记忆 |\n| `.aafe-memory/summary.md`                                                                           | 压缩摘要     |\n| `.aafe-memory/{project-design,components,conventions,decisions,experience,project-architecture}.md` | 分类主题     |\n| `.aafe-memory/knowledge-sync.jsonl`                                                                 | 任务完成同步日志 |\n\n\n```bash\naafe memory init\naafe memory add \"列表筛选默认记住上次条件\" --type=experience --tags=list,filter\naafe memory search \"筛选\"\naafe memory context \"日志检索\"\naafe memory summary\naafe memory compact\naafe memory scan --target=src\naafe memory remote-status\naafe memory sync --push\n```\n\n远程同步需要先打开 `memory.remote.enabled` 并注册 MCP adapter；未配置时 `sync` / `upload` 会失败。License 校验缓存仍在 `.ai-agent/memory/file-license-ok.jsonl`，那是 Runtime 内部文件，不是项目 Memory。\n\n前端 OOM / 泄漏诊断是另一套 opt-in 能力（`.ai-agent/frontend-memory/`），与这里的项目记忆目录无关。\n\n## DDD（显式开启）\n\nDDD 是 **opt-in** 的。在用户明确表达 DDD 意图之前，Agent 不会读取 `.ai-agent/ddd/` 下的任何文件，也不做限界上下文、聚合和领域事件分析。代码库里恰好存在的 DDD 术语不构成启用理由。\n\n### 门禁与范围\n\n```bash\naafe ddd gate \"用 DDD 重构订单模块\"     # enabled | disabled | ambiguous\naafe ddd scope \"用 DDD 重构订单模块\"     # 命中的最小技能集与规则加载顺序\n```\n\n判定为 `ambiguous` 时先问用户，不静默启用。\n\n### 发现与建模\n\n```bash\naafe ddd ask \"使用 DDD 实现多租户权限模块\"\naafe ddd analyze \"使用 DDD 实现多租户权限模块，支持角色、组织、权限策略和审计事件\"\n```\n\n`analyze` 是证据驱动的：它读取 `aafe analyze` 的产物，把每个概念标注为 `observed`（项目里确有此物，附来源）或 `inferred`（从需求文本推断），各自带置信度和依据。没有证据的推断不会被伪装成事实。\n\n```bash\naafe ddd analyze \"...\" --no-evidence   # 只从请求推断，不读项目知识\naafe ddd analyze \"...\" --force         # 门禁判定未启用时仍强制执行\n```\n\n输出包含：\n\n```text\nubiquitousLanguage  boundedContexts  aggregates  entities  valueObjects\ndomainEvents        repositories     domainServices        questions\n```\n\n\n\n### 管线\n\n`domain-feature` 管线按 DDD 链路执行：\n\n```text\nGate → Scope → Discovery → Strategic → Tactical → Architecture → Validation\n```\n\n其中还包含 `ddd-pattern-bridge`：把聚合、领域事件等构造块映射到前端模式角色（Aggregate → State Machine / Command / Repository），但不因此激活整条模式链路。\n\n## 前端设计模式（显式开启）\n\n设计模式同样是 **opt-in**。最高优先级的两条原则：\n\n- **PATTERN-SYSTEM-001**：一个项目不是「选一个设计模式」，而是针对具体问题选出**最小充分的模式组合**；\n- **PATTERN-SYSTEM-002**：**不用设计模式不是缺陷**。\n\n内置 16 个模式域、304 个模式、155 条规则，其中 82 个模式带完整评分元数据。\n\n### 门禁\n\n```bash\naafe pattern gate \"用策略模式重构布局算法\"\n```\n\n裸出现 `strategy`、`factory`、`adapter` 这类词不会触发；必须是明确的模式诉求。\n\n### 问题识别与组合\n\n先识别问题，再谈模式：\n\n```bash\naafe pattern discover \"...\"    # 只输出问题与变化点，不给任何模式\naafe pattern select \"...\"      # 识别问题 → 评分候选 → 组合\naafe pattern modules \"...\"     # 按模块分别给出组合\naafe pattern audit \"...\"       # 反模式审计（不受门禁限制）\naafe pattern ask \"...\"         # 选型前需要澄清的问题\naafe pattern catalog --scorable\n```\n\n`select` 的实际输出（`--summary`）：\n\n```json\n{\n  \"status\": \"pass\",\n  \"problems\": [\"同一能力存在多种可替换实现，需要运行时选择或后续扩展\", \"用户操作需要撤销与重做\"],\n  \"complexity\": \"high\",\n  \"patterns\": [\n    { \"pattern\": \"Strategy\", \"responsibility\": \"承担「algorithm-variation」…\", \"score\": 8 },\n    { \"pattern\": \"Command\",  \"responsibility\": \"承担「user-operation」…\",      \"score\": 5 }\n  ],\n  \"flows\": [\"Strategy\", \"Undo/Redo → Command\"],\n  \"conflicts\": [],\n  \"redundant\": [\"chain-of-responsibility\"],\n  \"rationale\": [\"识别到 2 个问题、1 个变化点，问题复杂度评级 2/3。\", \"剔除 1 个冗余模式（Rule 011：优先最小充分组合）。\"]\n}\n```\n\n每个入选模式都必须对应一个明确职责；冲突与冗余会被显式剔除并说明理由。\n\n### 评分与过度设计\n\n评分同时计算收益（ProblemFit、ChangeIsolation、ComplexityReduction、ReusePotential、PerformanceBenefit）与成本（Implementation、Cognitive、Coupling、Overengineering）。收益是**上下文相关**的：一个模式在它的 `justifiedAt` 复杂度阈值之下被使用，会被记为过度设计风险并直接扣分，从而落选。\n\n### 管线\n\n```text\nGate → Discovery → Selection → Composition → Anti-Pattern Audit → Validation\n```\n\n`aafe pattern audit` 会区分 `observed`（项目现状里已存在的反模式）与 `predicted`（当前组合方案会引入的反模式），共 25 类。\n\n## SDD 与 Feature Pipeline\n\nSDD 默认启用，并且是现有通用 `feature` pipeline 的规格规划层，不是与 feature 并列的任务类型。DDD 和设计模式仍是显式启用的分析维度。IDE Task Spine 可同时加载 SDD 与按需知识包；但当前声明式 `domain-feature`、`pattern-feature`、`graph-feature` pipeline 尚未复用这段 SDD steps，只有通用 `feature.yaml` 已完成融合。\n\n```json\n{\n  \"sdd\": {\n    \"enabled\": true,\n    \"root\": \"openspec\",\n    \"schema\": \"spec-driven\",\n    \"approvalRequired\": true\n  }\n}\n```\n\n项目可用 `sdd.enabled: false` 显式退出普通 feature 的 SDD 规划；明确执行 `aafe sdd` 命令仍会进入 SDD 引擎。\n\n### Feature Pipeline 中的融合位置\n\n```mermaid\nflowchart LR\n  SG[\"sdd-gate\"] --> MR[\"memory-recaller\"]\n  MR --> SE[\"sdd-explore\"]\n  SE --> AR[\"architect\"]\n  AR --> MD[\"module-decomposer\"]\n  MD --> EP[\"evolution-predictor\"]\n  EP --> AG{\"architecture_gate\"}\n  AG --> SP[\"sdd-proposal\"]\n  SP --> SS[\"sdd-specs\"]\n  SS --> SD[\"sdd-design\"]\n  SD --> ST[\"sdd-tasks\"]\n  ST --> SA[\"sdd-approval policy\"]\n  SA --> SGATE{\"sdd_gate\"}\n  SGATE --> ADR[\"adr-generator\"]\n  ADR --> IG{\"implementation_gate\"}\n  IG --> RC[\"refactor-critic\"]\n  RC --> ER[\"experience-recorder\"]\n  ER --> MW[\"memory-writer\"]\n  MW --> MG{\"merge_gate\"}\n```\n\n这里的 `sdd-approval` 只把审批策略和待审批状态附着到 pipeline 结果，不代表人工审批已经完成。可执行的持久化审批由 `SDDEngine` 校验当前 revision 后完成；Task Manager 只接受“当前 revision 已验证且已审批”的 SDD 绑定任务。\n\n### Artifact 依赖、修订与归档\n\n```mermaid\nflowchart LR\n  P[\"proposal.md\"] --> S[\"specs/&lt;capability&gt;/spec.md\"]\n  P --> D[\"design.md\"]\n  S --> T[\"tasks.md\"]\n  D --> T\n  T --> V[\"validate\"]\n  V --> A[\"approve current revision\"]\n  A --> I[\"implement / verify\"]\n  I --> SY[\"sync delta specs\"]\n  SY --> AC[\"archive change\"]\n  R[\"任一 artifact 修订\"] -. \"revision + 1；验证与审批失效\" .-> V\n```\n\n共享 artifact 位于 `openspec/changes/<changeId>/` 和 `openspec/specs/`；Task 私有状态位于 `.aafe/tasks/<taskId>/sdd/`，包含 `change.json`、revision 快照、traceability 和 verification evidence。一个 Task 最多绑定一个 active change，一个 change 只属于一个 Task。\n\n```mermaid\nstateDiagram-v2\n  [*] --> draft\n  draft --> waiting_approval: validate 有效且要求审批\n  draft --> ready: validate 有效且免审批\n  draft --> failed\n  draft --> cancelled\n  waiting_approval --> draft: artifact 修订\n  waiting_approval --> ready: approve 当前 revision\n  waiting_approval --> failed\n  waiting_approval --> cancelled\n  ready --> draft: artifact 修订\n  ready --> implementing: apply-context\n  ready --> synced: sync\n  ready --> failed\n  ready --> cancelled\n  implementing --> draft: artifact 修订\n  implementing --> verifying: recordVerification\n  implementing --> synced: sync\n  implementing --> failed\n  implementing --> cancelled\n  verifying --> draft: artifact 修订\n  verifying --> implementing: 继续实现\n  verifying --> verified: passed\n  verifying --> synced: sync\n  verifying --> failed: failed\n  verifying --> cancelled\n  verified --> draft: artifact 修订\n  verified --> implementing: 继续实现\n  verified --> synced: sync\n  verified --> failed\n  verified --> cancelled\n  synced --> draft: artifact 修订\n  synced --> implementing: 继续实现\n  synced --> archived: archive\n  synced --> failed\n  synced --> cancelled\n  failed --> draft: 修订并重试\n  failed --> cancelled\n  archived --> [*]\n  cancelled --> [*]\n```\n\n常用持久化流程：\n\n```bash\naafe task create --requirement=\"增加用户搜索\" --repository=<repo-url> --no-run\naafe sdd create --task-id=<taskId>\naafe sdd propose <taskId> --file=proposal.md\naafe sdd spec <taskId> --capability=user-search --file=spec.md\naafe sdd design <taskId> --file=design.md\naafe sdd tasks <taskId> --file=tasks.md\naafe sdd validate <taskId>\naafe sdd approve <taskId>\naafe task continue <taskId> \"按已审批 SDD 执行\"\naafe sdd verify <taskId> --file=verification.json\naafe sdd sync <taskId> --dry-run\naafe sdd sync <taskId> --yes\naafe sdd archive <taskId> --yes\n```\n\n## Agent Platform\n\n从 `0.2.0` 起，静态分析之上多了一层 Agent Platform：Planner 决定「该做什么」，Orchestrator 负责「怎么可靠地做完」，专业 Agent 各自解决一类问题，最终由 Context Agent 产出交给 IDE Agent 的最小上下文包。\n\n```text\nCLI → Planner → Orchestrator → AgentProvider → Agent → Knowledge → Context Package → IDE Agent\n```\n\n```mermaid\nflowchart LR\n  CLI[\"context / impact / plan / run / test / diagnose\"] --> TASK[\"标准化 Task\"]\n  TASK --> STALE{\"Knowledge 是否缺失或陈旧\"}\n  STALE -->|是| ANALYZE[\"project-analysis\"]\n  STALE -->|否| PLAN[\"Planner.decide\"]\n  ANALYZE --> PLAN\n  PLAN --> ACTION{\"invoke / parallel / complete<br/>fail / need_user_input / replan\"}\n  ACTION -->|invoke / parallel| GRAPH[\"ExecutionGraph 依赖就绪波次\"]\n  GRAPH --> POLICY[\"并发、超时、重试、网络与预算策略\"]\n  POLICY --> REGISTRY[\"Capability → AgentRegistry\"]\n  REGISTRY --> RUNTIME[\"AgentRuntime<br/>输入校验 → Provider → 修复 → 输出/evidence 校验\"]\n  RUNTIME --> STATE[\"ExecutionState + nodes input/output\"]\n  STATE --> PLAN\n  ACTION -->|complete| PACKAGE[\"Context Package + run.json\"]\n  PACKAGE --> OVERLAY{\"是否启用 Cursor developer execution\"}\n  OVERLAY -->|否| IDE[\"IDE handoff / 仅返回上下文\"]\n  OVERLAY -->|是| CURSOR[\"Cursor SDK implementation\"]\n```\n\n默认 `RulePlanner` 按 Task kind 选择 capability：requirement/generic 走影响分析、知识校验和上下文打包；diff 走变更影响；failure 先定位失败；analysis 可并行执行架构、依赖、数据流、feature 与业务流；test 根据 requirement、diff、coverage 或 PR 规划、生成并按显式权限执行 E2E。\n\n\n\n### 命令\n\n```bash\n# 给 IDE Agent 的上下文包（默认纯文本，便于直接粘进对话）\naafe context --requirement=\"增加用户手机号搜索\"\naafe context --diff --format=md --out=.aafe/context.md\n\n# 影响面分析：需求驱动或 diff 驱动\naafe impact --requirement=\"增加用户手机号搜索\"\naafe impact --diff=main...HEAD\n\n# 只看 Planner 打算怎么做，不真正调用 Agent\naafe plan --requirement=\"...\" --dry-run\n\n# Planner + Orchestrator 全循环，产物写入 <output>/runs/<runId>/\naafe run \"增加用户手机号搜索\"\n\n# 规划测试 / 生成 YAML Case；加 --run 才真正用 Playwright 执行\naafe test --diff\naafe test --coverage\n# 「分析此PR … 生成测试用例」走 aafe test --pr，不要安装 uitest / @aafe/ai-test\n# 测试地址每次可能不同：缺地址时 Agent 询问用户，再 --run --base-url=<本次 URL>\naafe test --pr=https://github.com/acme/app/pull/12\naafe test --pr=https://github.com/acme/app/pull/12 --run --base-url=https://preview.example/app\naafe test --requirement=\"增加用户手机号搜索\"\n\n# E2E 启用、目录与登录态见「E2E」一节，不要把报告写到 playwright-report/\n\n# 把一次失败的测试报告定位成根因\naafe diagnose --failure=<report.json|log.txt>\n\n# 历史 run：列表与只读回放（含每步的 input / output 载荷）\naafe run --list\naafe run --replay=<runId>\n```\n\n加 `--no-write` 可以不落盘运行。`aafe impact --format=md` 输出可直接贴进 PR 或 TAPD 的影响分析报告。\n\n## 任务主流程（Task Spine）\n\nAAFE 的 Task Spine 是**动态决策链**，不是每个任务都固定执行四个阶段。每个节点都先根据任务来源、当前分支、代码变更、用户意图和工作流模式判断是否进入、跳过或询问。\n\n`ask` 模式下，门禁不会自动推进：Agent 需要根据用户回复判断是否进入后续环节；用户拒绝或明确跳过时停止该分支。`autonomous` 模式下，LLM 根据上下文自主判定 `proceed / skip / ask`，只有缺少用户独有事实且会影响方案时才 Hard Ask。\n\n默认开关：`mode.workflow=ask`、`sdd.enabled=true`、`agent.enabled=false`、`agent.manager.enabled=false`、`e2e.enabled=true`。因此默认会做 SDD 规划，但不会自动调用 Cursor SDK 或启动持久化 Cloud Task；这两类执行需显式启用或直接使用对应命令。Cursor Agent 模式的启用、API Key、模型列表和 `aafe run --agent=cursor` 见 [Agent Setup](./plan-list/AGENTS.SETUP.md)。\n\n```mermaid\nflowchart TD\n  START([\"用户需求 / TAPD / PR / diff\"]) --> SOURCE{\"任务来源\"}\n  SOURCE -->|TAPD| TAPD[\"拉取详情与验收标准<br/>有 Figma 时取结构化设计和截图\"]\n  SOURCE -->|普通需求| SPEC[\"澄清目标、范围、验收、约束\"]\n  SOURCE -->|PR 或 diff| DIFF[\"读取变更并建立影响上下文\"]\n\n  TAPD --> BRANCH{\"当前分支是否正确关联\"}\n  SPEC --> NEWTASK{\"新任务或当前分支不匹配\"}\n  BRANCH -->|否| SWITCH[\"新建或切换关联分支\"]\n  BRANCH -->|是| HISTORY[\"检索历史与项目知识\"]\n  NEWTASK -->|是| SWITCH\n  NEWTASK -->|否| HISTORY\n  NEWTASK -->|无法判断| MODE{\"workflow mode\"}\n  MODE -->|ask| HARDASK[\"询问用户\"]\n  MODE -->|autonomous 且高置信| HISTORY\n  MODE -->|缺用户独有事实| HARDASK\n  SWITCH --> HISTORY\n  HARDASK --> HISTORY\n  DIFF --> HISTORY\n\n  HISTORY --> SIZE{\"执行复杂度\"}\n  SIZE -->|纯问答或纯文档| ANSWER[\"回答或更新文档\"]\n  SIZE -->|小改| DIRECT[\"按项目约束直接实施\"]\n  SIZE -->|多方案或高风险| PLAN[\"Plan Gate\"]\n  SIZE -->|非平凡 feature| FEATURE[\"Feature Pipeline\"]\n  PLAN --> FEATURE\n\n  FEATURE --> SDD[\"SDD Explore → Proposal → Specs/Design → Tasks\"]\n  SDD --> ARCH{\"sdd_gate + architecture_gate\"}\n  ARCH -->|不通过| REVISE[\"补齐或修订 artifact/架构\"]\n  REVISE --> SDD\n  ARCH -->|通过| IMPLEMENT[\"实施<br/>IDE Agent / 可选 Cursor Developer Agent\"]\n  DIRECT --> IMPLEMENT\n\n  IMPLEMENT --> REVIEW[\"Critic / merge_gate\"]\n  REVIEW --> CHANGE{\"是否有代码或运行时配置变更\"}\n  ANSWER --> CHANGE\n  CHANGE -->|否| SUBMITDECIDE{\"是否有提交意图\"}\n  CHANGE -->|是| IMPACT[\"aafe impact --diff\"]\n  IMPACT --> TESTPLAN[\"最小收敛自测 / aafe test --diff\"]\n  TESTPLAN --> UI{\"是否需要 UI/E2E\"}\n  UI -->|否| SUBMITDECIDE\n  UI -->|是且有本次 URL| E2E[\"Playwright E2E\"]\n  UI -->|缺 URL| URLASK[\"Hard Ask 获取 URL/URL 角色\"]\n  URLASK --> E2E\n  E2E --> SUBMITDECIDE\n\n  SUBMITDECIDE -->|否| DONE([\"完成，不提交\"])\n  SUBMITDECIDE -->|是| COMMIT[\"Commit\"]\n  COMMIT --> PR[\"PR / MR\"]\n  PR --> LINK{\"有关联 TAPD 且 tapd.enabled\"}\n  LINK -->|否| KNOWLEDGE[\"按需更新 Knowledge / Memory\"]\n  LINK -->|是| BACKFILL[\"回填结果、影响、自测和 PR/MR 链接<br/>状态最多推进到 doing\"]\n  BACKFILL --> KNOWLEDGE\n  KNOWLEDGE --> DONE2([\"完成\"])\n```\n\n### 三个运行面及其衔接\n\n当前实现提供三个相互协作但入口不同的运行面。它们共享 `.ai-agent` Rules/Skills 和 `.aafe` 持久化约定，但不能把其中一个入口的能力误认为另一个入口已经自动执行。\n\n```mermaid\nflowchart TB\n  REQ[\"需求\"] --> IDE[\"IDE Agent + Task Spine\"]\n  REQ --> PLATFORM[\"aafe run / context / impact / test\"]\n  REQ --> DURABLE[\"aafe sdd + aafe task\"]\n\n  subgraph PIPE[\"Feature Skill Pipeline\"]\n    IDE --> FP[\"router → feature.yaml\"]\n    FP --> FP_SDD[\"结构化 SDD 规划 + gates\"]\n  end\n\n  subgraph AP[\"Planner + Orchestrator\"]\n    PLATFORM --> RP[\"RulePlanner / LlmPlanner\"]\n    RP --> ORCH[\"依赖图、并发、重试、预算、契约校验\"]\n    ORCH --> CAPS[\"专业 capability Agents\"]\n    CAPS --> CTX[\"Context Package\"]\n    CTX --> DEV{\"agent.enabled / developer provider\"}\n    DEV -->|关闭| HANDOFF[\"交给当前 IDE Agent\"]\n    DEV -->|Cursor| CURSOR_ONE[\"Cursor SDK 单次实现\"]\n  end\n\n  subgraph DT[\"Durable SDD + Cloud Tasks\"]\n    DURABLE --> TS[\"TaskStore\"]\n    TS --> SE[\"SDDEngine / OpenSpecAdapter\"]\n    SE --> READY[\"当前 revision validate + approve\"]\n    READY --> TM[\"TaskManager\"]\n    TM --> SCH[\"TaskScheduler\"]\n    SCH --> CLOUD[\"CursorTaskRuntime\"]\n  end\n\n  FP_SDD -. \"规划结果不会自动写 OpenSpec\" .-> SE\n  CTX -. \"aafe run 不自动创建 durable Task\" .-> TM\n  CLOUD -. \"Cloud clone 原生加载同一套 Rules/Skills\" .-> FP\n```\n\n实际边界：\n\n- `aafe pipeline`（或 `aafe run --legacy`）执行 `.ai-agent/pipelines/*.yaml`；默认 `feature` 已融合 SDD 规划。\n- 明确 DDD、设计模式或 graph 请求会路由到各自专用 pipeline；当前这些专用 pipeline 仍未内嵌 SDD steps，这是现有实现边界。\n- `aafe run` 执行 Planner + Orchestrator，先得到 Context Package；仅当 Agent 模式启用或 developer provider 为 Cursor 时再调用 Cursor SDK。\n- `aafe sdd` 管理持久化 OpenSpec artifact、revision、审批、同步和归档；feature pipeline 的结构化结果不会自动落盘到 OpenSpec。\n- `aafe task` 管理持久化 Cursor Cloud Task。Task 绑定 SDD 后必须通过当前 revision 的验证与审批；未绑定 SDD 的 Task 仍保持兼容，可直接调度。\n- `aafe task create` 不会自动创建 SDD Change；`aafe sdd apply-context` 只返回上下文，TaskManager 当前不会自动把它注入 Cloud prompt。\n- 当前没有“普通 `aafe run` 自动创建 SDD Change，再自动转为 durable Cloud Task”的隐式串联；由 IDE Agent 按 Task Spine 调用对应入口，或由上层代码组合公开 API。\n\n### [1] 需求与分支决策\n\n任务开始后先确认来源与任务性质。若用户给的是 TAPD story / bug 链接或 ID，先通过 TAPD MCP 拉取详情，拿到标题、描述、验收标准、状态，并从 URL 最后一段数字提取末 9 位作为 `tapd_short_id`。若不是 TAPD 单，则按普通需求处理，但仍要澄清目标、范围、验收、约束和依赖。\n\nTAPD 任务的分支判定：\n\n| 当前分支 | 结果 | 下一步 |\n| --- | --- | --- |\n| `feat|bug/<slug>/#<tapd_short_id>` 且 ID 一致 | 已关联 | 进入需求分析 |\n| 有 `#<digits>` 但与当前 TAPD 不一致 | 关联错误 | 按规则新建或切换到正确分支 |\n| `master` / `main` / 无 `#id` | 未关联 | 按规则新建关联分支 |\n| 非 TAPD 任务 | 无需 TAPD 关联 | 跳过分支关联 |\n\nTAPD 分支动作：\n\n| `submit.cli` | 分支动作 |\n| --- | --- |\n| `git` | `git fetch upstream master` → `git checkout -b feat|bug/<slug>/#<short_id> upstream/master` |\n| `gtm` | `gtm create issue` → 关联已有 TAPD 单 → 目标分支 `master` → 按 TAPD 标题生成英文短名 |\n\n非 TAPD 任务也要动态判断是否属于“新任务”。如果当前分支明显已经对应本任务，则继续使用；如果当前在 `master` / `main`，或当前分支主题与新任务无关，应新建或切换任务分支；如果无法从任务描述、分支名、历史上下文判断，`ask` 模式必须询问，`autonomous` 只有高置信时才自主判定。\n\n分支决策闭合后，再查历史积累并做代码范围与根因分析。若预计影响超过小改范围（例如多文件/多函数或外部契约变化），进入 Plan Gate：`ask` 根据用户回复决定是否切到 Plan；`autonomous` 可按上下文直接切换，Hard Ask 只用于无法推断的产品选择。\n\n### [2] 任务执行决策\n\n需求与分支决策闭合后才开始改代码。普通小改按项目既有模式实施；非平凡前端任务进入 `.ai-agent/runtime/engine.md`、`runtime/router.yaml` 和对应 `pipelines/*.yaml`；多方案或高风险改动进入 Plan Gate。DDD 与设计模式包是显式开启，用户没有明确表达时不自动加载。\n\n执行中遵守最小改动原则：只改与需求、根因和影响范围相关的文件；新增源码文件加 License；已有 License 文件用 `aafe license ensure <path>` 校验。\n\n### [3] 影响范围 + 自测决策\n\n任务完成前先判断是否有代码变更，再决定是否进入影响范围与自测：\n\n| 任务类型 | 行为 |\n| --- | --- |\n| 纯问答 / 纯文档 / 需求分析-only | 跳过影响分析与自测 |\n| 代码或运行时配置变更 | 进入影响范围与自测门禁 |\n\n`ask` 模式下，Agent 需要根据用户是否同意影响分析/自测来决定是否继续；用户明确跳过时记录跳过原因。`autonomous` 模式下，LLM 根据代码变更风险、影响面和提交意图自主判定是否 `proceed`。\n\n代码变更流程：\n\n```text\naafe impact --diff --format=md\n  → architecture-impact-test-forecast.md 生成影响范围与最小测试设计\n  → minimal-convergent-self-test.md 执行最小收敛自测\n```\n\n自测分支：\n\n| 影响类型 | 默认自测 |\n| --- | --- |\n| 纯函数 / 数据处理 / 缓存 / 排序 / 百分比 | 单元测试，Mock 输入输出 |\n| 组件 props / emit / store 契约 | 单元或组件层测试，Mock props/state/API |\n| 可见 UI / 路由 / 图表 / 交互 | `aafe test --diff` 生成 YAML；要执行时必须由用户提供本次 URL |\n\nUI/E2E 的 URL 每次可能不同，缺 URL 时必须停下来问。禁止猜 `http://localhost:8080`，禁止把本次测试地址写死到 `e2e.baseUrl`。若 E2E 因无 Playwright blocked，且用户仍要看 UI，才允许浏览器 MCP 兜底；执行前必须先生成完整 `ui_test_paths`。\n\n### [4] 提交 / PR / MR / 回填决策\n\n自测完成后不固定提交，而是进入提交意图判定。`ask` 模式下，用户同意 Commit/PR/MR 才执行；`autonomous` 模式下，LLM 根据当前 diff、分支、测试结果和工作流上下文判断是否提交。无 TAPD 关联时只做常规 Commit/PR/MR，不问 TAPD 回填；有 TAPD 关联时，在自测结束或用户触发提交后进入“是否回填 TAPD 单子”的门禁。\n\nCommit / PR / MR 读取 `.aafe.config.json`：\n\n```json\n{\n  \"submit\": { \"cli\": \"git\" },\n  \"repo\": {\n    \"githubAccessToken\": \"${GITHUB_TOKEN}\",\n    \"gongfengAccessToken\": \"${GIT_PRIVATE_TOKEN}\",\n    \"reviewers\": [\"alice\", \"bob\"],\n    \"labels\": [\"frontend\"]\n  }\n}\n```\n\n提交分支：\n\n| `submit.cli` | Commit | PR/MR |\n| --- | --- | --- |\n| `git` | Git CLI stage + commit | `repo-submit`：优先 `repo.githubAccessToken` / `GITHUB_TOKEN` 调 GitHub API |\n| `gtm` | `gtm commit` | `gtm pr`，再用工蜂 Token 写入 reviewers / labels |\n\nGitHub PR 流程：\n\n```text\n有 repo.githubAccessToken / GITHUB_TOKEN\n  → git 使用 http.extraheader 注入 Token push\n  → aafe repo pr --title= --body= --base= --head=\n  → GitHub REST API 创建或复用 PR\n  → repo.reviewers 写 requested_reviewers\n  → repo.labels 写 issue labels\n\n无 Token 或 Token API 失败\n  → 先提示降级原因\n  → 降级 gh pr create\n  → gh 未登录则如实报告，不阻断 TAPD 回填门禁\n```\n\n工蜂 MR 流程：\n\n```text\nsubmit.cli=gtm\n  → gtm commit\n  → gtm pr\n  → 若 repo.reviewers / repo.labels 非空：\n      - labels 用逗号拼接写入 MR\n      - reviewers：纯数字当 reviewer_ids；username 先查用户 id\n      - 鉴权使用 repo.gongfengAccessToken / GIT_PRIVATE_TOKEN\n```\n\nTAPD 回填只在“任务有关联 TAPD 单且 `tapd.enabled`”时触发。回填内容只能通过 `comments_create` 追加评论，包含处理结果、影响范围、自测结果和 PR/MR 链接；如存在 PR 字段，可用 `stories_update` / `bugs_update` 只更新该字段。状态流转只允许逐步推进：`backlog → todo → doing`；不会自动提到 `for_test`。\n\n### 知识检索\n\n`aafe analyze` 会同时构建倒排索引（`.aafe/knowledge/index/json/search.json`），覆盖模块、文件、路由、组件、特性、业务流程和符号：\n\n```bash\naafe knowledge search \"用户手机号搜索\"\naafe knowledge search \"UserList\" --kind=component,route --limit=10\naafe knowledge index --rebuild\n```\n\n路径与驼峰符号会归一到同一组词元，所以 `userPhoneSearch`、`user-phone-search.js` 和「用户手机号搜索」命中同一批结果。\n\n### 内置 Agent 与 Capability\n\nPlanner 只认 capability，不认 Agent 名字，因此换实现不需要改 Planner。\n\n\n| Agent                 | Capability                                                                                                                                  | 状态                                                                                                                          |\n| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |\n| `code-intelligence`   | `project-analysis` / `architecture-analysis` / `dependency-analysis` / `data-flow-analysis` / `feature-analysis` / `business-flow-analysis` | 已实现                                                                                                                         |\n| `impact-analyzer`     | `requirement-impact` / `change-impact` / `risk-analysis`                                                                                    | 已实现                                                                                                                         |\n| `knowledge-validator` | `knowledge-validation` / `evidence-check`                                                                                                   | 已实现                                                                                                                         |\n| `context-agent`       | `context-packaging` / `evidence-selection`                                                                                                  | 已实现                                                                                                                         |\n| `test-agent`          | `test-planning` / `test-generation` / `e2e-execution`                                                                                       | 已实现；YAML / 报告只写 `e2e.casesDir` / `e2e.reportDir`（见 [E2E](#e2e)）；`e2e-execution` 需 `allowTestExecution`（或 `aafe test --run`） |\n| `failure-analyzer`    | `failure-analysis` / `root-cause-analysis` / `fix-analysis`                                                                                 | 已实现                                                                                                                         |\n\n\n`risk-analysis` 与 `evidence-check` 两个 capability 已注册但尚无本地实现分支。\n\n### 交给当前 IDE Agent（默认开启）\n\n没有可用 Agent 的 capability 不会停在 `no-agent-provides-capability`——此时编辑器里正跑着一个完全有能力做这件事的 Agent。默认会包装成一次 handoff 交给它，已配置且启用的 Agent 永远优先，回退不顶掉真实接线。\n\n```json\n{ \"ideAgent\": { \"enabled\": true, \"mode\": \"current\", \"capabilities\": [] } }\n```\n\n三级关闭窗口，范围越窄越优先：\n\n```bash\nAAFE_IDE_AGENT=0 aafe run \"...\"   # 单次命令 / CI，也接受 false / off / no\naafe run \"...\" --no-ide-agent      # 等价的 CLI 参数\n# 项目级：.aafe.agents.json → \"ideAgent\": { \"enabled\": false }\n```\n\nCI 里建议关掉：没有交互式 IDE Agent 能接手，handoff 只会变成永远没人认领的 `skipped`，明确失败更有价值。要求结果完全可复现时同理。\n\n`ideAgent.capabilities` 是白名单，列进去的 capability **总是**走 IDE Agent，适合那些需要判断而非查表的分析。完整说明见 [Agent 作用与配置指南](./AGENTS.CONFIG.md#全局开关是否自动交给当前-ide-agent)。\n\n### Agent 契约与 Schema 校验\n\n每个 Agent 都绑定一组契约：`prompt` + `inputSchema` + `outputSchema`，默认从 `src/agents/<id>/` 装载，也可以在 `.aafe.agents.json` 里指向项目自己的文件或内联 schema。\n\nAgent Platform 的 `AgentRuntime` 是所有 capability Agent 的唯一执行路径：\n\n```text\n装载契约 → 校验入参 → 注入 prompt/schema → 调用 provider\n        → 确定性纠错 → 校验输出 → 修复回路 → 校验 evidence\n```\n\n输出不合契约时先做本地确定性纠错（标量补成数组、字符串化 JSON 解开、数字/布尔强转），仍不合规才带着校验错误回问模型，最多 `maxRepairAttempts` 轮。\n\n`schemaMode` 控制违约后果，默认按 provider 区分：\n\n\n| 模式        | 行为                                | 默认适用                                 |\n| --------- | --------------------------------- | ------------------------------------ |\n| `enforce` | 违约即 `failed`                      | `http` / `cli` / `mcp` / `ide` 等远程实现 |\n| `warn`    | 保留结果但降级为 `partial`，绝不报成 `success` | `local` 内置 Agent                     |\n| `off`     | 不校验                               | 需要显式配置                               |\n\n\n指向不存在文件的 evidence 会被丢弃并计数——一条指不到任何地方的证据，比没有证据更糟。\n\n### `.aafe.agents.json`\n\nAgent 接线独立成文件，避免把 `.aafe.config.json` 撑爆。`aafe init` / `aafe update` 只在缺失时生成，不覆盖已有配置；`aafe doctor` 会校验每个 capability 都能解析到启用的 Agent。\n\n```json\n{\n  \"version\": 1,\n  \"planner\": { \"provider\": \"rule\", \"maxSteps\": 12,\n    \"llm\": { \"endpoint\": null, \"model\": null, \"apiKeyEnv\": \"AAFE_LLM_API_KEY\", \"temperature\": 0 } },\n  \"agents\": {\n    \"impact-analyzer\": { \"enabled\": true, \"provider\": \"local\", \"ref\": \"builtin:impact-analyzer\" },\n    \"test-agent\": { \"enabled\": true, \"provider\": \"local\", \"ref\": \"builtin:test-agent\" },\n    \"code-intelligence\": {\n      \"provider\": \"http\",\n      \"endpoint\": \"${AAFE_AGENT_ENDPOINT}\",\n      \"model\": \"${AAFE_AGENT_MODEL}\",\n      \"outputSchema\": \"./contracts/code-intelligence.output.json\",\n      \"schemaMode\": \"enforce\",\n      \"maxRepairAttempts\": 2\n    }\n  },\n  \"ideAgent\": { \"enabled\": true, \"mode\": \"current\", \"capabilities\": [] },\n  \"developer\": { \"provider\": \"ide\", \"mode\": \"current\" },\n  \"policies\": {\n    \"timeoutMs\": 120000, \"maxRetries\": 1, \"maxParallel\": 4, \"allowNetwork\": false,\n    \"allowTestExecution\": false, \"tokenBudget\": 12000, \"maxTokens\": null, \"maxCost\": null\n  }\n}\n```\n\n字段逐条说明、五种 provider 的配置示例和自定义 Agent 的写法见 **[Agent 作用与配置指南](./plan-list/AGENTS.CONFIG.md)**；协议层面的请求/响应结构见 [AGENTS.SCHEMA.md](./plan-list/AGENTS.SCHEMA.md)。\n\nPlanner 默认是确定性的 `RulePlanner`，无需 API Key 即可离线运行。把 `planner.provider` 改成 `\"llm\"` 并填好 `endpoint` / `model` 即可启用 OpenAI 兼容的 `LlmPlanner`；它在网络异常、返回非 JSON 或请求了不存在的 capability 时会**自动回退到 RulePlanner**，所以开启 LLM 只会变慢，不会让流程中断。\n\n`provider` 支持 `local` / `http` / `cli` / `mcp` / `ide` 五种传输方式。`http` 类型的 Agent 需要显式打开 `policies.allowNetwork`。`endpoint` / `model` / `prompt` / `inputSchema` / `outputSchema` 支持 `${ENV_VAR}` 展开，密钥和内网地址不必进版本库；变量未设置时该字段置空并在 `aafe doctor` 报警，而不是把字面量 `${...}` 当成地址去请求。\n\n`policies` 里两种预算是不同的东西：`tokenBudget` 限制单个 Agent 的上下文包大小，`maxTokens` / `maxCost` 是整个 run 的花费上限，在步与步之间检查（调用中途中止并不会退还已花的 token）。`cli` 类型 Agent 的命令和 `tools` 会先过危险操作 denylist——`rm -rf`、`git reset --hard`、`git push`、`sudo` 之类在 spawn 前就被拒绝。\n\n## 隔离任务与 Cursor Cloud\n\n`aafe task` 是持久化、多任务的 Cursor Cloud 执行入口，与 `aafe run` 的一次性 developer Agent overlay 不同。每个 Task 拥有独立的 `task.json`、`context.json`、`events.jsonl` 和可选 `sdd/`，默认位于 `.aafe/tasks/<taskId>/`。\n\n```mermaid\nflowchart TD\n  CREATE[\"task create\"] --> STORE[\"TaskStore<br/>task/context/events\"]\n  STORE --> BOUND{\"是否绑定 SDD\"}\n  BOUND -->|是| CHECK{\"当前 revision<br/>validation.valid + approval\"}\n  CHECK -->|否| BLOCK_SDD[\"拒绝启动<br/>task-sdd-not-ready\"]\n  CHECK -->|是| READY[\"CloudProjectReadiness\"]\n  BOUND -->|否| READY\n  READY -->|Rules/Skills 缺失、指针无效或未被 Git 跟踪| BLOCK[\"blocked\"]\n  READY -->|通过| QUEUED[\"queued\"]\n  QUEUED --> SCHED[\"TaskScheduler<br/>maxConcurrentTasks\"]\n  SCHED --> RUN[\"running\"]\n  RUN --> SDK[\"CursorTaskRuntime<br/>Agent.create/resume → send → stream → wait\"]\n  SDK --> RESULT{\"Run 结果\"}\n  RESULT -->|成功且无 verify callback| COMPLETE[\"completed\"]\n  RESULT -->|成功且有 verify callback| VERIFY[\"verifying\"]\n  VERIFY -->|通过| COMPLETE\n  VERIFY -->|失败| FAILED[\"failed\"]\n  RESULT -->|error / missing| FAILED\n  RESULT -->|cancelled| CANCEL[\"cancelled\"]\n  RUN -->|进程重启| RECOVER[\"task recover<br/>Agent.getRun\"]\n  RECOVER --> SDK\n  COMPLETE -->|continue| QUEUED\n  FAILED -->|重试| QUEUED\n  CANCEL -->|重试| QUEUED\n  BLOCK -->|修复 readiness 后重试| QUEUED\n```\n\nTask 状态机：\n\n```mermaid\nstateDiagram-v2\n  [*] --> created\n  created --> queued\n  created --> blocked\n  created --> cancelled\n  queued --> planning\n  queued --> running\n  queued --> blocked\n  queued --> cancelled\n  planning --> queued\n  planning --> ready\n  planning --> waiting\n  planning --> failed\n  planning --> cancelled\n  planning --> blocked\n  ready --> running\n  ready --> queued\n  ready --> cancelled\n  ready --> blocked\n  running --> waiting\n  running --> verifying\n  running --> completed\n  running --> failed\n  running --> cancelled\n  running --> blocked\n  waiting --> queued\n  waiting --> running\n  waiting --> cancelled\n  waiting --> blocked\n  verifying --> completed\n  verifying --> failed\n  verifying --> waiting\n  verifying --> cancelled\n  verifying --> blocked\n  completed --> queued: continue/re-run\n  completed --> blocked\n  failed --> queued: retry\n  failed --> blocked\n  cancelled --> queued: retry\n  cancelled --> blocked\n  blocked --> queued: readiness restored\n  blocked --> cancelled\n```\n\n并发与恢复规则：\n\n- `planning / ready / waiting` 已定义为合法状态并纳入恢复扫描，但当前 TaskManager 没有主动写入这些状态的执行步骤；常规 CLI 主路径是 `created → queued → running → completed/failed/cancelled`。\n- `verifying` 只在 API 调用方传入 `options.verify` 时进入，当前 `aafe task` CLI 尚未暴露该 callback。\n- `TaskScheduler` 是进程内有界调度器，默认 `maxConcurrentTasks: 4`；持久化的是 Task 状态，不是内存队列。\n- 并发上限只约束同一个 `TaskManager` 实例；多个独立 CLI 进程不共享内存 semaphore。`task recover` 会在单次进程内并发重排候选任务。\n- `recover()` 扫描 `queued / planning / ready / running`。有 `agentId + activeRunId` 的 running Task 用 `Agent.getRun` 重连；其他候选重新入队。\n- `recoverOnStart` 只在 API 调用 `TaskManager.initialize()` 时生效；当前 `aafe task` CLI 不会自动调用它，进程重启后需显式执行 `aafe task recover`。\n- Cursor Cloud 启动前验证 `.aafe.config.json`、Skill Index、项目入口和 Cursor 指针均存在且被 Git 跟踪。SDD 启用时还要求 SDD Skill 与指针可被 Cloud clone 获取。\n- `agent.manager.enabled` 目前控制初始化配置与 doctor 提示，但 `aafe task` 命令本身不以该值作为硬开关；显式调用仍会进入 TaskManager。\n- 同一 Task 复用一个 Cursor Agent、可产生多个 Run；终态后关闭本地 session handle，持久化 Agent/Run ID 供恢复与审计。\n- `autoCreatePR` 默认关闭；Task Manager 不替代 Task Spine 的 Commit、PR/MR 和 TAPD 回填判断。\n\n## E2E\n\nPlaywright E2E 与 Runtime 分开配置。`aafe init` / `aafe update` 之后，**必须先指定用例和产物目录**；执行、报告和登录态只认这些路径，不要散落到 `test/ui/`、`playwright-report/`、`test-results/`。\n\n目录写在 `.aafe.config.json` → `e2e`，相对**安装目录**：\n\n\n| 配置                  | 默认                  | 必须指定 | 用途                                |\n| ------------------- | ------------------- | ---- | --------------------------------- |\n| `e2e.casesDir`      | `tests/ui-ai/cases` | 是    | YAML 用例（源）                        |\n| `e2e.reportDir`     | `.aafe/e2e/reports` | 是    | 统一报告 `report.json` / `index.html` |\n| `e2e.specsDir`      | `.aafe/e2e/specs`   | 是    | 由 YAML 编译出的 Playwright spec       |\n| `e2e.impactDir`     | `.aafe/e2e/impact`  | 是    | 影响面 / inventory 中间产物              |\n| `e2e.auth.stateDir` | `.aafe/e2e/auth`    | 是    | SSO / storageState                |\n\n\n```json\n{\n  \"e2e\": {\n    \"enabled\": true,\n    \"casesDir\": \"tests/ui-ai/cases\",\n    \"reportDir\": \".aafe/e2e/reports\",\n    \"specsDir\": \".aafe/e2e/specs\",\n    \"impactDir\": \".aafe/e2e/impact\",\n    \"baseUrl\": null,\n    \"baseUrlEnv\": \"AAFE_E2E_BASE_URL\",\n    \"auth\": {\n      \"mode\": \"reuse-or-headed\",\n      \"stateDir\": \".aafe/e2e/auth\"\n    }\n  }\n}\n```\n\n代码提交 / 拉取 / PR / MR 的 Token、Reviewers、Labels 写在根级 `repo`（代码仓库配置），不要再放进 `e2e`：\n\n```json\n{\n  \"repo\": {\n    \"githubAccessToken\": \"${GITHUB_TOKEN}\",\n    \"gongfengAccessToken\": \"${GIT_PRIVATE_TOKEN}\",\n    \"reviewers\": [\"alice\", \"bob\"],\n    \"labels\": [\"frontend\"]\n  }\n}\n```\n\n默认开启。关闭用 `--no-e2e` 或 `aafe e2e disable`。缺 Playwright 时再装：\n\n```bash\naafe e2e enable\naafe e2e status\naafe e2e install --yes\naafe e2e auth --base-url='https://preview.example/app/#/list'\n```\n\n`--run` 必须带**本次**被测地址（`--base-url=`）。地址每次可能不同，不要写死 `e2e.baseUrl`，不要猜 `http://localhost:8080`。含 `#` 须加引号；有路径/查询参数时确认 A/B/C 并加 `--url-role=target|origin|template`。\n\n```bash\naafe test --diff\naafe test --coverage\naafe test --pr=https://github.com/acme/app/pull/12\naafe test --pr=https://github.com/acme/app/pull/12 --run --base-url='https://preview.example/app/#/list' --url-role=template\n```\n\n报告只读 `<e2e.reportDir>/<runId>/{report.json,index.html}`。PR 令牌写在配置里（可用 `${ENV}`），不要用 `--token <值>`。`aafe update` 强制 analyze 时会保留 `.aafe/e2e/`，不会清掉报告和登录态。\n\n## Knowledge Center\n\nKnowledge Center 是基于项目代码、架构文档、Mermaid 图、Memory 和 Git 变更的 AI 项目知识管理能力。它不要求创建独立的深度文档站点，优先使用项目已有的 `.docs` 作为知识来源。\n\n```bash\nnpx aafe knowledge init\nnpx aafe knowledge update\nnpx aafe knowledge sync            # update 的别名\naafe knowledge update --dry-run    # 预览\n```\n\n自定义架构文档目录：\n\n```bash\naafe knowledge update \\\n  --architecture-docs=.docs \\\n  --knowledge-docs=.docs/aafe-generated\n```\n\n默认生成：\n\n```text\n.docs/aafe-generated/\n├── README.md\n├── 组件关系.md\n├── 业务关系与数据流.md\n└── 影响范围与测试预测.md\n```\n\n这些是生成视图；原始 `.docs` 文档不会被覆盖。采集内容包括页面路由与模块、Vue/React 组件关系、Store/API/Worker/Storage、测试路径与变更关系、架构文档及 Mermaid 图、影响范围与测试预测，以及 Memory、版本、来源和审核状态。\n\n## Knowledge Web\n\n`knowledge-web` 将当前项目的 Knowledge 数据生成一套本地只读可视化页面。\n\n在 **AAFE 安装目录**（存在 `.ai-agent` 的目录，Monorepo 子模块则在对应子目录）执行：\n\n```bash\nnpx aafe knowledge update                      # 建议先更新数据\nnpx aafe knowledge-web --serve --port=4173     # 生成并启动本地服务\n```\n\n浏览器访问 `http://127.0.0.1:4173/`。`--serve` 会占用当前终端，按 `Ctrl+C` 停止。\n\n不加 `--serve` 时只生成静态 HTML，可直接打开 `.docs/aafe-generated/knowledge-web/index.html`。\n\n### 常用参数\n\n\n| 参数                           | 说明                                           |\n| ---------------------------- | -------------------------------------------- |\n| `--serve`                    | 生成后启动内置 HTTP 服务                              |\n| `--port=<number>`            | 服务端口，默认 `4173`                               |\n| `--host=<host>`              | 服务主机，默认 `127.0.0.1`                          |\n| `--dry-run`                  | 预览将生成的文件，不写入磁盘                               |\n| `--architecture-docs=<path>` | 架构文档目录，默认 `.docs`                            |\n| `--output=<path>`            | 输出目录，默认 `.docs/aafe-generated/knowledge-web` |\n\n\n\n\n### 默认输出目录\n\n```text\n.docs/aafe-generated/knowledge-web/\n├── index.html          # 项目总览与扫描统计\n├── modules.html        # 模块关系\n├── routes.html         # 路由与页面\n├── components.html     # 组件关系\n├── sources.html        # 架构文档与 Mermaid 来源\n├── impact.html         # 影响范围与 P0/P1/P2 测试预测\n├── diagrams/*.html     # 每张 Mermaid 图独立预览，可跳转 Mermaid Live Editor\n└── site.json           # 页面和图表索引\n```\n\n它是 Knowledge 的模块化可视化索引，不替代源码、`.docs` 原文或测试结果。\n\n## Agent 内自主命中\n\n上面这些命令不需要你手动敲。项目初始化后，IDE Agent 有三条自主入口：\n\n**1. 会话钩子自动跑同步链。** `sessionStart` 触发 `aafe task-completion`，即 `knowledge update → knowledge-web → update → doctor`，历史文件迁移也在其中。钩子会依次尝试 `node_modules/.bin/aafe`（含 monorepo 向上查找）和全局 `aafe`；都找不到才静默退出，绝不会从网络拉包。\n\n**2. always-apply 规则替 Agent 做判定。** `aafe-sdd-gate.mdc` 默认把 SDD 融入 feature 工作流；`aafe-ddd-gate.mdc` 和 `aafe-pattern-gate.mdc` 要求显式意图后才运行对应分析；`aafe-new-file-license.mdc` 要求跑 `aafe license ensure`；影响分析规则要求先跑 `aafe impact --diff` 拿机器结果，而不是从零推断。\n\n**3.** `skill-index.md` **里的命令表。** Agent 每个任务都先读这个文件，其中「Commands you may run yourself」列出了什么情况该跑什么：\n\n\n| 情况                       | 命令                                     |\n| ------------------------ | -------------------------------------- |\n| 定位模块 / 路由 / 组件 / 特性 / 符号 | `aafe knowledge search \"<terms>\"`      |\n| 检索无结果且 `.aafe/` 缺失或过期    | `aafe analyze`                         |\n| 改动前收集需求证据                | `aafe context --requirement=\"...\"`     |\n| 改动后报告影响面                 | `aafe impact --diff`                   |\n| 规划测试 / 定位失败根因            | `aafe test`、`aafe diagnose`            |\n| Runtime 文件看起来不一致         | `aafe doctor`、`aafe migrate --dry-run` |\n\n\n这些命令除 `analyze` 和 `migrate` 外都只读，Agent 拿来验证假设的成本很低。定位代码时应优先用 `aafe knowledge search` 而不是盲目 grep——它跨模块、路由、组件、特性和符号排序，并把 `userPhoneSearch`、`user-phone-search.js` 和「用户手机号搜索」归一到同一组词元。\n\n## 任务完成自动同步\n\n项目初始化后默认启用。任务成功结束时自动执行：\n\n```text\naafe knowledge update → aafe knowledge-web → aafe update → aafe doctor\n```\n\n也可以手动执行：\n\n```bash\naafe task-completion\naafe task-completion --dry-run\n```\n\n执行结果记录到 `memory.path` 下的 `knowledge-sync.jsonl`（默认 `.aafe-memory/knowledge-sync.jsonl`）。默认策略：任务失败时不写入 Knowledge；同步失败不阻断原任务，只记录日志。需要严格阻断时把 `.aafe.config.json` 的 `taskCompletion.failClosed` 改为 `true`。\n\n```json\n{\n  \"taskCompletion\": {\n    \"enabled\": true,\n    \"command\": \"aafe task-completion\",\n    \"steps\": [\"aafe knowledge update\", \"aafe knowledge-web\", \"aafe update\", \"aafe doctor\"],\n    \"failClosed\": false,\n    \"log\": \".aafe-memory/knowledge-sync.jsonl\"\n  }\n}\n```\n\n\n\n## 架构文档接入\n\n如果项目存在 `.docs` 或其他架构文档目录，`aafe analyze` 会读取 Markdown / MDX 架构说明、Mermaid `.mmd` 图表，以及路由、模块、Store、API 和数据流说明。\n\n```bash\naafe analyze --architecture-docs=.docs\n```\n\n生成：\n\n```text\n.ai-agent/skills/project-architecture-locator.md\n.aafe-memory/project-architecture.md\n.ai-agent/skills/knowledge-center-architecture.md\n```\n\n使用原则：\n\n1. 先读取架构文档和相关图表，再定位源码；\n2. 文档与当前代码冲突时，以代码为事实并记录冲突；\n3. Mermaid 图作为关系和流程证据，不作为可执行代码；\n4. 需求、修复、重构完成后重新计算影响范围和测试范围；\n5. 不把项目强行转换成不存在的业务领域模型。\n\n\n\n## AI Runtime 执行\n\n```bash\n# Planner + Orchestrator；按配置可继续调用 Cursor developer Agent\naafe run \"实现一个支持取消、分页和缓存的日志检索功能\"\n\n# 声明式 Skill Pipeline\naafe pipeline \"实现一个支持取消、分页和缓存的日志检索功能\"\n```\n\n通用 `feature` 管线已融合 SDD，不包含默认关闭的 DDD 与设计模式步骤：\n\n```text\nsdd-gate → memory-recaller → sdd-explore\n→ architect → module-decomposer → evolution-predictor → [architecture_gate]\n→ sdd-proposal → sdd-specs → sdd-design → sdd-tasks → sdd-approval → [sdd_gate]\n→ adr-generator → [implementation_gate] → refactor-critic\n→ experience-recorder → memory-writer → [merge_gate]\n```\n\n只有请求明确表达了相应意图，才会改走 `domain-feature` 或 `pattern-feature` 管线；graph 请求走 `graph-feature`。这些专用 pipeline 当前尚未复用通用 feature 的 SDD steps。\n\n任务结束前，必须基于 `.docs` 和相关模块关系输出：直接/间接/潜在影响范围、架构证据、P0/P1/P2 测试预测、已执行与未覆盖的测试，以及未验证风险和人工确认项。\n\n## 项目目录结构\n\n\n\n### 标准安装（项目根目录即 Workspace Root）\n\n```text\n.ai-agent/\n├── runtime/                    # engine.md router.yaml gates.yaml protocol.md memory.md\n├── skills/                     # 通用技能\n├── pipelines/                  # feature / domain-feature / pattern-feature / refactor / performance …\n├── scenarios/\n├── ddd/                        # DDD 知识包（opt-in）\n├── frontend-engineering/       # 设计模式知识包（opt-in）\n├── frontend-memory/            # 前端 OOM 诊断包（opt-in，不是项目 Memory）\n├── sdd/                        # SDD Skill 与 artifact/workflow rules（默认启用）\n├── project.md                  # 项目自有，update 不覆盖\n├── project-skills/             # 项目自有，update 不覆盖\n└── rules/                      # 项目自有，update 不覆盖\n\n.aafe-memory/                   # 项目 Memory（memory.path，必须指定目录；update 不覆盖）\n├── index.md\n├── learnings.jsonl\n└── summary.md\n\n.aafe/                          # analyze 与运行状态\n├── tasks/<taskId>/             # task.json / context.json / events.jsonl\n│   └── sdd/                    # change.json / revisions / traceability\n├── runs/<runId>/               # Planner + Orchestrator 运行记录\n└── e2e/                        # E2E 报告 / spec / auth（见 e2e.*Dir）\n\nopenspec/\n├── changes/<changeId>/         # proposal / specs / design / tasks\n└── specs/                      # sync 后的主规格\n\ntests/ui-ai/cases/              # E2E YAML 用例（e2e.casesDir）\n\n.cursor/                        # --editors=cursor 时，仅指针，不复制项目知识\n├── rules/\n├── skills/\n└── hooks/\n\n.docs/\n└── aafe-generated/\n```\n\n`.ai-agent/` 是项目 AI Runtime 入口；项目 Memory 在 `memory.path`（默认 `.aafe-memory/`）；Task/Run 状态在 `.aafe/`；共享 SDD artifact 在 `openspec/`。E2E 用例和报告只写 `e2e.casesDir` / `e2e.reportDir`。`.docs/` 保留原始架构说明及 Knowledge 生成视图；编辑器目录只是指向 `.ai-agent` 的薄适配层。\n\n### 子目录安装（Monorepo / 多模块）\n\nRuntime 知识仍在安装目录；编辑器适配器在 Workspace Root 按模块分层：\n\n```text\n# Workspace Root\n.cursor/{rules,skills,hooks}/web/\n.cursor/hooks.json\n.codebuddy/web/\n.codex/web/aafe.md\nCLAUDE.md                  # 含 <!-- AAFE:module:web --> 模块块\n\n# 安装目录 bklog/web/\n.ai-agent/\n.aafe-memory/              # memory.path，相对安装目录\n.aafe.config.json          # 含 workspace / memory.path / e2e.*Dir\n.docs/\npackage.json\n```\n\n\n\n## Agent Skills 分发\n\nAAFE 提供两条互不替代的链路：\n\n\n| 场景             | 命令                                 | 写入位置              |\n| -------------- | ---------------------------------- | ----------------- |\n| 下载 Agent Skill | `aafe skills install ... --github` | Agent Skills 目录   |\n| 接入业务项目 Runtime | `aafe init/update/analyze/doctor`  | 业务项目 `.ai-agent/` |\n\n\n```bash\nnpx --yes @aafe/agent-runtime@latest skills list --github\nnpx --yes @aafe/agent-runtime@latest skills install knowledge-center --github\nnpx --yes @aafe/agent-runtime@latest skills install aafe-vue-complex-runtime --github\n```\n\n不要使用 `aafe skills install` 替代业务项目的 `aafe init/update/analyze/doctor`。\n\n## 开发与验证\n\n项目根目录执行：\n\n```bash\nnpm test                 # 全量：agent-platform / submit / license / tapd / workspace + doctor\nnpm run test:agent-platform\nnpm run doctor\nnode ./bin/aafe.js knowledge update --dry-run\nnode ./bin/aafe.js knowledge-web --dry-run\n```\n\n格式检查：\n\n```bash\ngit diff --check\n```\n\n\n\n## 设计边界\n\n- Runtime 核心提供通用编排能力，不承载具体业务 CMS 数据模型；\n- SDD 是通用 feature 的默认规格层；`sdd.enabled: false` 是项目级退出，持久化验证与审批以当前 revision 为准；\n- Skill Pipeline、Planner/Orchestrator 与 durable TaskManager 是三个协作运行面，不隐式共享 Task/Run 状态；\n- DDD 与设计模式均为显式开启，不因代码库里的术语或需求里的裸关键词自动激活；\n- 模式选型的产物是**最小充分的模式组合**，「不用设计模式」是合法结论；\n- 领域模型区分 `observed` 与 `inferred`，没有证据的推断不伪装成事实；\n- Knowledge Center 使用项目代码、`.docs`、Mermaid 图和 Memory；\n- Knowledge Web 是本地可视化索引，不是独立深度文档站点；\n- 子目录安装时，仅编辑器适配器写入 Workspace Root；`.ai-agent` / `.aafe-memory` / `.docs` 保留在安装目录；\n- Memory 与 E2E 都必须先指定目录（`memory.path`、`e2e.casesDir` / `e2e.reportDir` 等），不要写到未配置路径；\n- 自动生成内容必须保留来源、版本、置信度和审核状态；\n- 不上传源码、密钥、Token、Cookie 或未脱敏业务数据；\n- 自动更新不应覆盖人工维护的原始架构文档。\n- ...\n","readmeFilename":"README.md"}