claude-flow 2.0.0-alpha.84 → 2.0.0-alpha.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/checkpoints/1754316298.json +1 -0
- package/.claude/checkpoints/1754317527.json +1 -0
- package/.claude/checkpoints/1754317611.json +1 -0
- package/.claude/checkpoints/1754317822.json +1 -0
- package/.claude/checkpoints/1754318017.json +1 -0
- package/.claude/checkpoints/1754318655.json +1 -0
- package/.claude/checkpoints/1754318657.json +1 -0
- package/.claude/checkpoints/1754318756.json +1 -0
- package/.claude/checkpoints/1754318758.json +1 -0
- package/.claude/checkpoints/1754318776.json +1 -0
- package/.claude/checkpoints/1754318778.json +1 -0
- package/.claude/checkpoints/1754318972.json +1 -0
- package/.claude/checkpoints/1754318974.json +1 -0
- package/.claude/checkpoints/1754318985.json +1 -0
- package/.claude/checkpoints/1754318988.json +1 -0
- package/.claude/checkpoints/1754319014.json +1 -0
- package/.claude/checkpoints/1754319017.json +1 -0
- package/.claude/checkpoints/1754319028.json +1 -0
- package/.claude/checkpoints/1754319031.json +1 -0
- package/.claude/checkpoints/1754319268.json +1 -0
- package/.claude/checkpoints/1754319272.json +1 -0
- package/.claude/checkpoints/1754319959.json +1 -0
- package/.claude/checkpoints/1754319962.json +1 -0
- package/.claude/checkpoints/1754319969.json +1 -0
- package/.claude/checkpoints/1754319970.json +1 -0
- package/.claude/checkpoints/1754319981.json +1 -0
- package/.claude/checkpoints/1754319983.json +1 -0
- package/.claude/checkpoints/1754319996.json +1 -0
- package/.claude/checkpoints/1754319998.json +1 -0
- package/.claude/checkpoints/1754320004.json +1 -0
- package/.claude/checkpoints/1754320006.json +1 -0
- package/.claude/checkpoints/1754320043.json +1 -0
- package/.claude/checkpoints/1754320045.json +1 -0
- package/.claude/checkpoints/1754320061.json +1 -0
- package/.claude/checkpoints/1754320063.json +1 -0
- package/.claude/checkpoints/1754320082.json +1 -0
- package/.claude/checkpoints/1754320084.json +1 -0
- package/.claude/checkpoints/1754320091.json +1 -0
- package/.claude/checkpoints/1754320093.json +1 -0
- package/.claude/checkpoints/1754320121.json +1 -0
- package/.claude/checkpoints/1754320123.json +1 -0
- package/.claude/checkpoints/1754320129.json +1 -0
- package/.claude/checkpoints/1754320130.json +1 -0
- package/.claude/checkpoints/1754320141.json +1 -0
- package/.claude/checkpoints/1754320142.json +1 -0
- package/.claude/checkpoints/1754320144.json +1 -0
- package/.claude/checkpoints/1754320146.json +1 -0
- package/.claude/checkpoints/1754320147.json +1 -0
- package/.claude/checkpoints/1754320149.json +1 -0
- package/.claude/checkpoints/1754320150.json +1 -0
- package/.claude/checkpoints/1754320151.json +1 -0
- package/.claude/checkpoints/1754320157.json +1 -0
- package/.claude/checkpoints/1754320158.json +1 -0
- package/.claude/checkpoints/1754320172.json +1 -0
- package/.claude/checkpoints/1754320174.json +1 -0
- package/.claude/checkpoints/1754320208.json +1 -0
- package/.claude/checkpoints/1754320210.json +1 -0
- package/.claude/checkpoints/1754320211.json +1 -0
- package/.claude/checkpoints/1754320212.json +1 -0
- package/.claude/checkpoints/1754320213.json +1 -0
- package/.claude/checkpoints/1754320214.json +1 -0
- package/.claude/checkpoints/1754320215.json +1 -0
- package/.claude/checkpoints/1754320218.json +1 -0
- package/.claude/checkpoints/1754320219.json +1 -0
- package/.claude/checkpoints/1754320220.json +1 -0
- package/.claude/checkpoints/1754320221.json +1 -0
- package/.claude/checkpoints/1754320223.json +1 -0
- package/.claude/checkpoints/1754320225.json +1 -0
- package/.claude/checkpoints/1754320226.json +1 -0
- package/.claude/checkpoints/1754320227.json +1 -0
- package/.claude/checkpoints/1754320235.json +1 -0
- package/.claude/checkpoints/1754320237.json +1 -0
- package/.claude/checkpoints/1754320256.json +1 -0
- package/.claude/checkpoints/1754320258.json +1 -0
- package/.claude/checkpoints/1754320270.json +1 -0
- package/.claude/checkpoints/1754320271.json +1 -0
- package/.claude/checkpoints/1754320275.json +1 -0
- package/.claude/checkpoints/1754320282.json +1 -0
- package/.claude/checkpoints/1754320334.json +1 -0
- package/.claude/checkpoints/1754320336.json +1 -0
- package/.claude/checkpoints/1754320508.json +1 -0
- package/.claude/checkpoints/1754320512.json +1 -0
- package/.claude/checkpoints/1754322341.json +1 -0
- package/.claude/checkpoints/1754322346.json +1 -0
- package/.claude/checkpoints/1754322516.json +1 -0
- package/.claude/checkpoints/1754322518.json +1 -0
- package/.claude/checkpoints/1754323023.json +1 -0
- package/.claude/checkpoints/1754323036.json +1 -0
- package/.claude/checkpoints/1754323081.json +1 -0
- package/.claude/checkpoints/1754323094.json +1 -0
- package/.claude/checkpoints/1754323139.json +1 -0
- package/.claude/checkpoints/1754323152.json +1 -0
- package/.claude/checkpoints/1754334379.json +1 -0
- package/.claude/checkpoints/1754334382.json +1 -0
- package/.claude/checkpoints/1754334388.json +1 -0
- package/.claude/checkpoints/1754334393.json +1 -0
- package/.claude/checkpoints/1754334558.json +1 -0
- package/.claude/checkpoints/1754334559.json +1 -0
- package/.claude/checkpoints/1754335162.json +1 -0
- package/.claude/checkpoints/1754335163.json +1 -0
- package/.claude/checkpoints/1754335177.json +1 -0
- package/.claude/checkpoints/1754335178.json +1 -0
- package/.claude/checkpoints/1754335216.json +1 -0
- package/.claude/checkpoints/1754335218.json +1 -0
- package/.claude/checkpoints/1754335264.json +1 -0
- package/.claude/checkpoints/1754335266.json +1 -0
- package/.claude/checkpoints/1754335281.json +1 -0
- package/.claude/checkpoints/1754335283.json +1 -0
- package/.claude/checkpoints/1754335295.json +1 -0
- package/.claude/checkpoints/1754335296.json +1 -0
- package/.claude/checkpoints/1754335317.json +1 -0
- package/.claude/checkpoints/1754335319.json +1 -0
- package/.claude/checkpoints/1754335481.json +1 -0
- package/.claude/checkpoints/1754335484.json +1 -0
- package/.claude/checkpoints/1754335657.json +1 -0
- package/.claude/checkpoints/1754335659.json +1 -0
- package/.claude/checkpoints/1754335686.json +1 -0
- package/.claude/checkpoints/1754335688.json +1 -0
- package/.claude/checkpoints/1754335831.json +1 -0
- package/.claude/checkpoints/1754335832.json +1 -0
- package/.claude/checkpoints/1754335878.json +1 -0
- package/.claude/checkpoints/1754335888.json +1 -0
- package/.claude/checkpoints/1754335912.json +1 -0
- package/.claude/checkpoints/1754335914.json +1 -0
- package/.claude/checkpoints/1754335965.json +1 -0
- package/.claude/checkpoints/1754335967.json +1 -0
- package/.claude/checkpoints/1754336002.json +1 -0
- package/.claude/checkpoints/1754336004.json +1 -0
- package/.claude/checkpoints/1754337527.json +1 -0
- package/.claude/checkpoints/1754337529.json +1 -0
- package/.claude/checkpoints/1754337541.json +1 -0
- package/.claude/checkpoints/1754337543.json +1 -0
- package/.claude/checkpoints/1754337560.json +1 -0
- package/.claude/checkpoints/1754337562.json +1 -0
- package/.claude/checkpoints/1754337586.json +1 -0
- package/.claude/checkpoints/1754337588.json +1 -0
- package/.claude/checkpoints/1754337642.json +1 -0
- package/.claude/checkpoints/1754337643.json +1 -0
- package/.claude/checkpoints/1754337645.json +1 -0
- package/.claude/checkpoints/1754337647.json +1 -0
- package/.claude/checkpoints/1754337725.json +1 -0
- package/.claude/checkpoints/1754337727.json +1 -0
- package/.claude/checkpoints/1754338050.json +1 -0
- package/.claude/checkpoints/1754338052.json +1 -0
- package/.claude/checkpoints/1754338130.json +1 -0
- package/.claude/checkpoints/1754338131.json +1 -0
- package/.claude/checkpoints/1754338177.json +1 -0
- package/.claude/checkpoints/1754338179.json +1 -0
- package/.claude/checkpoints/1754338189.json +1 -0
- package/.claude/checkpoints/1754338191.json +1 -0
- package/.claude/checkpoints/1754338227.json +1 -0
- package/.claude/checkpoints/1754338229.json +1 -0
- package/.claude/checkpoints/1754338237.json +1 -0
- package/.claude/checkpoints/1754338239.json +1 -0
- package/.claude/checkpoints/1754338319.json +1 -0
- package/.claude/checkpoints/1754338321.json +1 -0
- package/.claude/checkpoints/1754338337.json +1 -0
- package/.claude/checkpoints/1754338339.json +1 -0
- package/.claude/checkpoints/1754338431.json +1 -0
- package/.claude/checkpoints/1754338433.json +1 -0
- package/.claude/checkpoints/1754338444.json +1 -0
- package/.claude/checkpoints/1754338445.json +1 -0
- package/.claude/checkpoints/1754338682.json +1 -0
- package/.claude/checkpoints/1754338684.json +1 -0
- package/.claude/checkpoints/1754338746.json +1 -0
- package/.claude/checkpoints/1754338748.json +1 -0
- package/.claude/checkpoints/1754338777.json +1 -0
- package/.claude/checkpoints/1754338779.json +1 -0
- package/.claude/checkpoints/1754338796.json +1 -0
- package/.claude/checkpoints/1754338797.json +1 -0
- package/.claude/checkpoints/1754338813.json +1 -0
- package/.claude/checkpoints/1754338814.json +1 -0
- package/.claude/checkpoints/1754338960.json +1 -0
- package/.claude/checkpoints/1754338962.json +1 -0
- package/.claude/checkpoints/1754338973.json +1 -0
- package/.claude/checkpoints/1754338975.json +1 -0
- package/.claude/checkpoints/1754338997.json +1 -0
- package/.claude/checkpoints/1754338999.json +1 -0
- package/.claude/checkpoints/1754339024.json +1 -0
- package/.claude/checkpoints/1754339026.json +1 -0
- package/.claude/checkpoints/1754339317.json +1 -0
- package/.claude/checkpoints/1754339318.json +1 -0
- package/.claude/checkpoints/1754339400.json +1 -0
- package/.claude/checkpoints/1754339402.json +1 -0
- package/.claude/checkpoints/1754339417.json +1 -0
- package/.claude/checkpoints/1754339418.json +1 -0
- package/.claude/checkpoints/1754339457.json +1 -0
- package/.claude/checkpoints/1754339459.json +1 -0
- package/.claude/checkpoints/1754339480.json +1 -0
- package/.claude/checkpoints/1754339482.json +1 -0
- package/.claude/checkpoints/1754339494.json +1 -0
- package/.claude/checkpoints/1754339496.json +1 -0
- package/.claude/checkpoints/1754339507.json +1 -0
- package/.claude/checkpoints/1754339508.json +1 -0
- package/.claude/checkpoints/1754339517.json +1 -0
- package/.claude/checkpoints/1754339519.json +1 -0
- package/.claude/checkpoints/1754339528.json +1 -0
- package/.claude/checkpoints/1754339530.json +1 -0
- package/.claude/checkpoints/1754341827.json +1 -0
- package/.claude/checkpoints/1754341831.json +1 -0
- package/.claude/checkpoints/1754341840.json +1 -0
- package/.claude/checkpoints/1754341842.json +1 -0
- package/.claude/checkpoints/1754341879.json +1 -0
- package/.claude/checkpoints/1754341881.json +1 -0
- package/.claude/checkpoints/1754341901.json +1 -0
- package/.claude/checkpoints/1754341920.json +1 -0
- package/.claude/checkpoints/1754341922.json +1 -0
- package/.claude/checkpoints/1754342050.json +1 -0
- package/.claude/checkpoints/1754342051.json +1 -0
- package/.claude/checkpoints/1754342060.json +1 -0
- package/.claude/checkpoints/1754342061.json +1 -0
- package/.claude/checkpoints/1754342075.json +1 -0
- package/.claude/checkpoints/1754342077.json +1 -0
- package/.claude/checkpoints/1754342157.json +1 -0
- package/.claude/checkpoints/1754342159.json +1 -0
- package/.claude/checkpoints/1754342315.json +1 -0
- package/.claude/checkpoints/1754342317.json +1 -0
- package/.claude/checkpoints/1754342352.json +1 -0
- package/.claude/checkpoints/1754342354.json +1 -0
- package/.claude/checkpoints/1754342364.json +1 -0
- package/.claude/checkpoints/1754342365.json +1 -0
- package/.claude/checkpoints/1754342377.json +1 -0
- package/.claude/checkpoints/1754342379.json +1 -0
- package/.claude/checkpoints/1754342387.json +1 -0
- package/.claude/checkpoints/1754342389.json +1 -0
- package/.claude/checkpoints/1754342504.json +1 -0
- package/.claude/checkpoints/1754342505.json +1 -0
- package/.claude/checkpoints/1754342515.json +1 -0
- package/.claude/checkpoints/1754342517.json +1 -0
- package/.claude/checkpoints/1754342541.json +1 -0
- package/.claude/checkpoints/1754342543.json +1 -0
- package/.claude/checkpoints/1754345073.json +1 -0
- package/.claude/checkpoints/1754345075.json +1 -0
- package/.claude/checkpoints/1754345123.json +1 -0
- package/.claude/checkpoints/1754345125.json +1 -0
- package/.claude/checkpoints/1754345133.json +1 -0
- package/.claude/checkpoints/1754345135.json +1 -0
- package/.claude/checkpoints/1754345143.json +1 -0
- package/.claude/checkpoints/1754345144.json +1 -0
- package/.claude/checkpoints/1754345171.json +1 -0
- package/.claude/checkpoints/1754345172.json +1 -0
- package/.claude/checkpoints/1754345202.json +1 -0
- package/.claude/checkpoints/1754345204.json +1 -0
- package/.claude/checkpoints/1754345393.json +1 -0
- package/.claude/checkpoints/1754345395.json +1 -0
- package/.claude/checkpoints/1754345409.json +1 -0
- package/.claude/checkpoints/1754345410.json +1 -0
- package/.claude/checkpoints/1754345452.json +1 -0
- package/.claude/checkpoints/1754345510.json +1 -0
- package/.claude/checkpoints/1754345512.json +1 -0
- package/.claude/checkpoints/1754345590.json +1 -0
- package/.claude/checkpoints/1754345691.json +1 -0
- package/.claude/checkpoints/1754345693.json +1 -0
- package/.claude/checkpoints/1754356487.json +1 -0
- package/.claude/checkpoints/1754356489.json +1 -0
- package/.claude/checkpoints/1754356526.json +1 -0
- package/.claude/checkpoints/1754356527.json +1 -0
- package/.claude/checkpoints/1754356538.json +1 -0
- package/.claude/checkpoints/1754356540.json +1 -0
- package/.claude/checkpoints/1754356567.json +1 -0
- package/.claude/checkpoints/1754356569.json +1 -0
- package/.claude/checkpoints/1754356594.json +1 -0
- package/.claude/checkpoints/1754356596.json +1 -0
- package/.claude/checkpoints/1754356614.json +1 -0
- package/.claude/checkpoints/1754356616.json +1 -0
- package/.claude/checkpoints/1754356635.json +1 -0
- package/.claude/checkpoints/1754356637.json +1 -0
- package/.claude/checkpoints/1754356649.json +1 -0
- package/.claude/checkpoints/1754356651.json +1 -0
- package/.claude/checkpoints/1754356668.json +1 -0
- package/.claude/checkpoints/1754356669.json +1 -0
- package/.claude/checkpoints/1754356678.json +1 -0
- package/.claude/checkpoints/1754356680.json +1 -0
- package/.claude/checkpoints/1754356804.json +1 -0
- package/.claude/checkpoints/1754356805.json +1 -0
- package/.claude/checkpoints/1754356952.json +1 -0
- package/.claude/checkpoints/1754356955.json +1 -0
- package/.claude/checkpoints/1754356970.json +1 -0
- package/.claude/checkpoints/1754356972.json +1 -0
- package/.claude/checkpoints/1754357081.json +1 -0
- package/.claude/checkpoints/1754357083.json +1 -0
- package/.claude/checkpoints/1754357107.json +1 -0
- package/.claude/checkpoints/1754357109.json +1 -0
- package/.claude/checkpoints/1754357126.json +1 -0
- package/.claude/checkpoints/1754357128.json +1 -0
- package/.claude/checkpoints/1754357137.json +1 -0
- package/.claude/checkpoints/1754357139.json +1 -0
- package/.claude/checkpoints/1754357341.json +1 -0
- package/.claude/checkpoints/1754357343.json +1 -0
- package/.claude/checkpoints/1754357371.json +1 -0
- package/.claude/checkpoints/1754357788.json +1 -0
- package/.claude/checkpoints/1754357790.json +1 -0
- package/.claude/checkpoints/1754357917.json +1 -0
- package/.claude/checkpoints/1754357919.json +1 -0
- package/.claude/checkpoints/1754358129.json +1 -0
- package/.claude/checkpoints/1754358131.json +1 -0
- package/.claude/checkpoints/1754358642.json +1 -0
- package/.claude/checkpoints/1754358644.json +1 -0
- package/.claude/checkpoints/1754359144.json +1 -0
- package/.claude/checkpoints/1754359146.json +1 -0
- package/.claude/checkpoints/1754359155.json +1 -0
- package/.claude/checkpoints/1754359157.json +1 -0
- package/.claude/checkpoints/1754359165.json +1 -0
- package/.claude/checkpoints/1754359167.json +1 -0
- package/.claude/checkpoints/1754359190.json +1 -0
- package/.claude/checkpoints/1754359191.json +1 -0
- package/.claude/checkpoints/1754359951.json +1 -0
- package/.claude/checkpoints/1754359953.json +1 -0
- package/.claude/checkpoints/1754359963.json +1 -0
- package/.claude/checkpoints/1754359965.json +1 -0
- package/.claude/checkpoints/1754359979.json +1 -0
- package/.claude/checkpoints/1754359981.json +1 -0
- package/.claude/checkpoints/1754360016.json +1 -0
- package/.claude/checkpoints/1754360018.json +1 -0
- package/.claude/checkpoints/1754360195.json +1 -0
- package/.claude/checkpoints/1754360294.json +1 -0
- package/.claude/checkpoints/1754360296.json +1 -0
- package/.claude/checkpoints/1754360408.json +1 -0
- package/.claude/checkpoints/1754360411.json +1 -0
- package/.claude/checkpoints/1754360470.json +1 -0
- package/.claude/checkpoints/1754360472.json +1 -0
- package/.claude/checkpoints/1754360531.json +1 -0
- package/.claude/checkpoints/1754360533.json +1 -0
- package/.claude/checkpoints/1754360741.json +1 -0
- package/.claude/checkpoints/1754360743.json +1 -0
- package/.claude/checkpoints/1754361619.json +1 -0
- package/.claude/checkpoints/1754361621.json +1 -0
- package/.claude/checkpoints/1754362177.json +1 -0
- package/.claude/checkpoints/1754362179.json +1 -0
- package/.claude/checkpoints/1754362189.json +1 -0
- package/.claude/checkpoints/1754362191.json +1 -0
- package/.claude/checkpoints/1754362200.json +1 -0
- package/.claude/checkpoints/1754362202.json +1 -0
- package/.claude/checkpoints/1754362213.json +1 -0
- package/.claude/checkpoints/1754362215.json +1 -0
- package/.claude/checkpoints/1754362224.json +1 -0
- package/.claude/checkpoints/1754362226.json +1 -0
- package/.claude/checkpoints/1754362248.json +1 -0
- package/.claude/checkpoints/1754362250.json +1 -0
- package/.claude/checkpoints/1754362686.json +1 -0
- package/.claude/checkpoints/1754362687.json +1 -0
- package/.claude/checkpoints/1754362701.json +1 -0
- package/.claude/checkpoints/1754362702.json +1 -0
- package/.claude/checkpoints/1754362721.json +1 -0
- package/.claude/checkpoints/1754362723.json +1 -0
- package/.claude/checkpoints/1754362741.json +1 -0
- package/.claude/checkpoints/1754362743.json +1 -0
- package/.claude/checkpoints/1754362757.json +1 -0
- package/.claude/checkpoints/1754362759.json +1 -0
- package/.claude/checkpoints/1754362782.json +1 -0
- package/.claude/checkpoints/1754362784.json +1 -0
- package/.claude/checkpoints/1754362798.json +1 -0
- package/.claude/checkpoints/1754362799.json +1 -0
- package/.claude/checkpoints/1754362810.json +1 -0
- package/.claude/checkpoints/1754362811.json +1 -0
- package/.claude/checkpoints/1754362824.json +1 -0
- package/.claude/checkpoints/1754362825.json +1 -0
- package/.claude/checkpoints/1754362852.json +1 -0
- package/.claude/checkpoints/1754362854.json +1 -0
- package/.claude/checkpoints/1754362873.json +1 -0
- package/.claude/checkpoints/1754362875.json +1 -0
- package/.claude/checkpoints/1754362917.json +1 -0
- package/.claude/checkpoints/1754362918.json +1 -0
- package/.claude/checkpoints/1754363043.json +1 -0
- package/.claude/checkpoints/1754363064.json +1 -0
- package/.claude/checkpoints/1754363079.json +1 -0
- package/.claude/checkpoints/1754363179.json +1 -0
- package/.claude/checkpoints/1754363278.json +1 -0
- package/.claude/checkpoints/1754363418.json +1 -0
- package/.claude/checkpoints/1754363438.json +1 -0
- package/.claude/checkpoints/1754363446.json +1 -0
- package/.claude/checkpoints/1754363460.json +1 -0
- package/.claude/checkpoints/1754363485.json +1 -0
- package/.claude/checkpoints/1754363498.json +1 -0
- package/.claude/checkpoints/1754363507.json +1 -0
- package/.claude/checkpoints/1754363548.json +1 -0
- package/.claude/checkpoints/1754363722.json +1 -0
- package/.claude/checkpoints/1754364202.json +1 -0
- package/.claude/checkpoints/1754364356.json +1 -0
- package/.claude/checkpoints/1754364358.json +1 -0
- package/.claude/checkpoints/1754364365.json +1 -0
- package/.claude/checkpoints/1754364367.json +1 -0
- package/.claude/checkpoints/1754364384.json +1 -0
- package/.claude/checkpoints/1754364386.json +1 -0
- package/.claude/checkpoints/1754364395.json +1 -0
- package/.claude/checkpoints/1754364397.json +1 -0
- package/.claude/checkpoints/1754364420.json +1 -0
- package/.claude/checkpoints/1754364422.json +1 -0
- package/.claude/checkpoints/1754364433.json +1 -0
- package/.claude/checkpoints/1754364436.json +1 -0
- package/.claude/checkpoints/1754364444.json +1 -0
- package/.claude/checkpoints/1754364446.json +1 -0
- package/.claude/checkpoints/1754364549.json +1 -0
- package/.claude/checkpoints/1754364551.json +1 -0
- package/.claude/checkpoints/1754364621.json +1 -0
- package/.claude/checkpoints/1754364623.json +1 -0
- package/.claude/checkpoints/1754364634.json +1 -0
- package/.claude/checkpoints/1754364635.json +1 -0
- package/.claude/checkpoints/1754364650.json +1 -0
- package/.claude/checkpoints/1754364652.json +1 -0
- package/.claude/checkpoints/1754364683.json +1 -0
- package/.claude/checkpoints/1754364685.json +1 -0
- package/.claude/checkpoints/1754364697.json +1 -0
- package/.claude/checkpoints/1754364699.json +1 -0
- package/.claude/checkpoints/1754364755.json +1 -0
- package/.claude/checkpoints/1754364757.json +1 -0
- package/.claude/checkpoints/1754364771.json +1 -0
- package/.claude/checkpoints/1754364773.json +1 -0
- package/.claude/checkpoints/1754365118.json +1 -0
- package/.claude/checkpoints/1754365120.json +1 -0
- package/.claude/checkpoints/1754365179.json +1 -0
- package/.claude/checkpoints/1754365180.json +1 -0
- package/.claude/checkpoints/1754397029.json +1 -0
- package/.claude/checkpoints/1754397030.json +1 -0
- package/.claude/checkpoints/1754397042.json +1 -0
- package/.claude/checkpoints/1754397044.json +1 -0
- package/.claude/checkpoints/1754397397.json +1 -0
- package/.claude/checkpoints/1754397399.json +1 -0
- package/.claude/checkpoints/1754397436.json +1 -0
- package/.claude/checkpoints/1754397438.json +1 -0
- package/.claude/checkpoints/1754397455.json +1 -0
- package/.claude/checkpoints/1754397457.json +1 -0
- package/.claude/checkpoints/1754397493.json +1 -0
- package/.claude/checkpoints/1754397494.json +1 -0
- package/.claude/checkpoints/1754397608.json +1 -0
- package/.claude/checkpoints/1754397611.json +1 -0
- package/.claude/checkpoints/1754397648.json +1 -0
- package/.claude/checkpoints/1754397650.json +1 -0
- package/.claude/checkpoints/1754397699.json +1 -0
- package/.claude/checkpoints/1754397701.json +1 -0
- package/.claude/checkpoints/1754397708.json +1 -0
- package/.claude/checkpoints/1754397710.json +1 -0
- package/.claude/checkpoints/1754397717.json +1 -0
- package/.claude/checkpoints/1754397719.json +1 -0
- package/.claude/checkpoints/1754397727.json +1 -0
- package/.claude/checkpoints/1754397729.json +1 -0
- package/.claude/checkpoints/1754397916.json +1 -0
- package/.claude/checkpoints/1754397918.json +1 -0
- package/.claude/checkpoints/1754397925.json +1 -0
- package/.claude/checkpoints/1754397927.json +1 -0
- package/.claude/checkpoints/1754397935.json +1 -0
- package/.claude/checkpoints/1754397937.json +1 -0
- package/.claude/checkpoints/1754397952.json +1 -0
- package/.claude/checkpoints/1754397955.json +1 -0
- package/.claude/checkpoints/1754398186.json +1 -0
- package/.claude/checkpoints/1754398306.json +1 -0
- package/.claude/checkpoints/1754398670.json +1 -0
- package/.claude/checkpoints/1754398694.json +1 -0
- package/.claude/checkpoints/1754398740.json +1 -0
- package/.claude/checkpoints/1754398742.json +1 -0
- package/.claude/checkpoints/1754398759.json +1 -0
- package/.claude/checkpoints/1754398760.json +1 -0
- package/.claude/checkpoints/1754398794.json +1 -0
- package/.claude/checkpoints/1754398796.json +1 -0
- package/.claude/checkpoints/1754398804.json +1 -0
- package/.claude/checkpoints/1754398806.json +1 -0
- package/.claude/checkpoints/1754398843.json +1 -0
- package/.claude/checkpoints/1754398845.json +1 -0
- package/.claude/checkpoints/1754398900.json +1 -0
- package/.claude/checkpoints/1754398902.json +1 -0
- package/.claude/checkpoints/1754398904.json +1 -0
- package/.claude/checkpoints/1754398906.json +1 -0
- package/.claude/checkpoints/1754398908.json +1 -0
- package/.claude/checkpoints/1754398910.json +1 -0
- package/.claude/checkpoints/1754398912.json +1 -0
- package/.claude/checkpoints/1754398914.json +1 -0
- package/.claude/checkpoints/summary-session-20250803-133416.md +271 -0
- package/.claude/checkpoints/summary-session-20250803-134203.md +254 -0
- package/.claude/checkpoints/summary-session-20250803-134440.md +251 -0
- package/.claude/checkpoints/summary-session-20250803-134859.md +249 -0
- package/.claude/checkpoints/summary-session-20250803-135226.md +244 -0
- package/.claude/checkpoints/summary-session-20250803-135735.md +225 -0
- package/.claude/checkpoints/summary-session-20250804-140521.md +40 -0
- package/.claude/checkpoints/summary-session-20250804-140753.md +43 -0
- package/.claude/checkpoints/summary-session-20250804-141009.md +46 -0
- package/.claude/checkpoints/summary-session-20250804-141140.md +49 -0
- package/.claude/checkpoints/summary-session-20250804-141254.md +52 -0
- package/.claude/checkpoints/summary-session-20250804-141337.md +55 -0
- package/.claude/checkpoints/summary-session-20250804-141525.md +58 -0
- package/.claude/checkpoints/summary-session-20250804-142026.md +61 -0
- package/.claude/checkpoints/summary-session-20250804-142717.md +72 -0
- package/.claude/checkpoints/summary-session-20250804-143045.md +77 -0
- package/.claude/checkpoints/summary-session-20250804-143404.md +82 -0
- package/.claude/checkpoints/summary-session-20250804-150637.md +142 -0
- package/.claude/checkpoints/summary-session-20250804-151119.md +276 -0
- package/.claude/checkpoints/summary-session-20250804-151134.md +282 -0
- package/.claude/checkpoints/summary-session-20250804-151200.md +290 -0
- package/.claude/checkpoints/summary-session-20250804-151308.md +297 -0
- package/.claude/checkpoints/summary-session-20250804-154849.md +298 -0
- package/.claude/checkpoints/summary-session-20250804-160249.md +298 -0
- package/.claude/checkpoints/summary-session-20250804-190944.md +169 -0
- package/.claude/checkpoints/summary-session-20250804-192750.md +219 -0
- package/.claude/checkpoints/summary-session-20250804-193135.md +236 -0
- package/.claude/checkpoints/summary-session-20250804-193339.md +249 -0
- package/.claude/checkpoints/summary-session-20250804-200221.md +302 -0
- package/.claude/checkpoints/summary-session-20250804-201535.md +363 -0
- package/.claude/checkpoints/summary-session-20250804-201549.md +365 -0
- package/.claude/checkpoints/summary-session-20250804-202423.md +392 -0
- package/.claude/checkpoints/summary-session-20250804-202452.md +394 -0
- package/.claude/checkpoints/summary-session-20250804-211223.md +379 -0
- package/.claude/checkpoints/summary-session-20250804-211630.md +390 -0
- package/.claude/checkpoints/summary-session-20250804-212010.md +416 -0
- package/.claude/checkpoints/summary-session-20250804-212237.md +427 -0
- package/.claude/checkpoints/summary-session-20250804-215710.md +397 -0
- package/.claude/checkpoints/summary-session-20250804-220835.md +429 -0
- package/.claude/checkpoints/summary-session-20250804-221342.md +437 -0
- package/.claude/checkpoints/summary-session-20250804-221525.md +439 -0
- package/.claude/checkpoints/summary-session-20250804-221845.md +432 -0
- package/.claude/checkpoints/summary-session-20250804-222838.md +414 -0
- package/.claude/checkpoints/summary-session-20250805-011856.md +419 -0
- package/.claude/checkpoints/summary-session-20250805-012305.md +436 -0
- package/.claude/checkpoints/summary-session-20250805-012330.md +439 -0
- package/.claude/checkpoints/summary-session-20250805-012638.md +459 -0
- package/.claude/checkpoints/summary-session-20250805-013657.md +484 -0
- package/.claude/checkpoints/summary-session-20250805-014220.md +495 -0
- package/.claude/checkpoints/summary-session-20250805-014540.md +503 -0
- package/.claude/checkpoints/summary-session-20250805-015045.md +512 -0
- package/.claude/checkpoints/summary-session-20250805-015650.md +516 -0
- package/.claude/checkpoints/summary-session-20250805-020847.md +537 -0
- package/.claude/checkpoints/summary-session-20250805-022303.md +546 -0
- package/.claude/checkpoints/summary-session-20250805-025117.md +565 -0
- package/.claude/checkpoints/summary-session-20250805-025600.md +575 -0
- package/.claude/checkpoints/summary-session-20250805-030212.md +621 -0
- package/.claude/checkpoints/summary-session-20250805-031257.md +644 -0
- package/.claude/checkpoints/summary-session-20250805-031705.md +646 -0
- package/.claude/checkpoints/summary-session-20250805-032142.md +642 -0
- package/.claude/checkpoints/summary-session-20250805-032354.md +642 -0
- package/.claude/checkpoints/summary-session-20250805-033410.md +719 -0
- package/.claude/checkpoints/summary-session-20250805-033916.md +729 -0
- package/.claude/checkpoints/summary-session-20250805-033952.md +734 -0
- package/.claude/checkpoints/summary-session-20250805-034018.md +737 -0
- package/.claude/checkpoints/summary-session-20250805-034221.md +735 -0
- package/.claude/checkpoints/summary-session-20250805-034626.md +722 -0
- package/.claude/checkpoints/summary-session-20250805-123114.md +602 -0
- package/.claude/checkpoints/summary-session-20250805-123834.md +622 -0
- package/.claude/checkpoints/summary-session-20250805-124747.md +676 -0
- package/.claude/checkpoints/summary-session-20250805-125154.md +683 -0
- package/.claude/checkpoints/summary-session-20250805-125244.md +686 -0
- package/.claude/checkpoints/summary-session-20250805-125824.md +695 -0
- package/.claude/checkpoints/summary-session-20250805-130337.md +743 -0
- package/.claude/checkpoints/task-1754227808.json +1 -0
- package/.claude/checkpoints/task-1754228496.json +1 -0
- package/.claude/checkpoints/task-1754228537.json +1 -0
- package/.claude/checkpoints/task-1754228918.json +1 -0
- package/.claude/checkpoints/task-1754228954.json +1 -0
- package/.claude/checkpoints/task-1754228998.json +1 -0
- package/.claude/checkpoints/task-1754229150.json +1 -0
- package/.claude/checkpoints/task-1754316274.json +1 -0
- package/.claude/checkpoints/task-1754316371.json +1 -0
- package/.claude/checkpoints/task-1754316513.json +1 -0
- package/.claude/checkpoints/task-1754316675.json +1 -0
- package/.claude/checkpoints/task-1754316752.json +1 -0
- package/.claude/checkpoints/task-1754316788.json +1 -0
- package/.claude/checkpoints/task-1754316894.json +1 -0
- package/.claude/checkpoints/task-1754316979.json +1 -0
- package/.claude/checkpoints/task-1754317274.json +1 -0
- package/.claude/checkpoints/task-1754317400.json +1 -0
- package/.claude/checkpoints/task-1754317550.json +1 -0
- package/.claude/checkpoints/task-1754317773.json +1 -0
- package/.claude/checkpoints/task-1754317909.json +1 -0
- package/.claude/checkpoints/task-1754318307.json +1 -0
- package/.claude/checkpoints/task-1754319468.json +1 -0
- package/.claude/checkpoints/task-1754319469.json +1 -0
- package/.claude/checkpoints/task-1754319849.json +1 -0
- package/.claude/checkpoints/task-1754322263.json +1 -0
- package/.claude/checkpoints/task-1754322264.json +1 -0
- package/.claude/checkpoints/task-1754322422.json +1 -0
- package/.claude/checkpoints/task-1754334250.json +1 -0
- package/.claude/checkpoints/task-1754334434.json +1 -0
- package/.claude/checkpoints/task-1754334435.json +1 -0
- package/.claude/checkpoints/task-1754335001.json +1 -0
- package/.claude/checkpoints/task-1754335002.json +1 -0
- package/.claude/checkpoints/task-1754335003.json +1 -0
- package/.claude/checkpoints/task-1754335123.json +1 -0
- package/.claude/checkpoints/task-1754335666.json +1 -0
- package/.claude/checkpoints/task-1754335840.json +1 -0
- package/.claude/checkpoints/task-1754337382.json +1 -0
- package/.claude/checkpoints/task-1754337459.json +1 -0
- package/.claude/checkpoints/task-1754337611.json +1 -0
- package/.claude/checkpoints/task-1754337821.json +1 -0
- package/.claude/checkpoints/task-1754337824.json +1 -0
- package/.claude/checkpoints/task-1754337827.json +1 -0
- package/.claude/checkpoints/task-1754337830.json +1 -0
- package/.claude/checkpoints/task-1754337834.json +1 -0
- package/.claude/checkpoints/task-1754337839.json +1 -0
- package/.claude/checkpoints/task-1754337899.json +1 -0
- package/.claude/checkpoints/task-1754338036.json +1 -0
- package/.claude/checkpoints/task-1754338111.json +1 -0
- package/.claude/checkpoints/task-1754338295.json +1 -0
- package/.claude/checkpoints/task-1754338361.json +1 -0
- package/.claude/checkpoints/task-1754338480.json +1 -0
- package/.claude/checkpoints/task-1754338504.json +1 -0
- package/.claude/checkpoints/task-1754338639.json +1 -0
- package/.claude/checkpoints/task-1754338848.json +1 -0
- package/.claude/checkpoints/task-1754338864.json +1 -0
- package/.claude/checkpoints/task-1754338920.json +1 -0
- package/.claude/checkpoints/task-1754339084.json +1 -0
- package/.claude/checkpoints/task-1754339110.json +1 -0
- package/.claude/checkpoints/task-1754339336.json +1 -0
- package/.claude/checkpoints/task-1754339566.json +1 -0
- package/.claude/checkpoints/task-1754341796.json +1 -0
- package/.claude/checkpoints/task-1754341832.json +1 -0
- package/.claude/checkpoints/task-1754341833.json +1 -0
- package/.claude/checkpoints/task-1754341836.json +1 -0
- package/.claude/checkpoints/task-1754341999.json +1 -0
- package/.claude/checkpoints/task-1754342131.json +1 -0
- package/.claude/checkpoints/task-1754342203.json +1 -0
- package/.claude/checkpoints/task-1754342204.json +1 -0
- package/.claude/checkpoints/task-1754342205.json +1 -0
- package/.claude/checkpoints/task-1754342207.json +1 -0
- package/.claude/checkpoints/task-1754342208.json +1 -0
- package/.claude/checkpoints/task-1754342270.json +1 -0
- package/.claude/checkpoints/task-1754342436.json +1 -0
- package/.claude/checkpoints/task-1754342480.json +1 -0
- package/.claude/checkpoints/task-1754342675.json +1 -0
- package/.claude/checkpoints/task-1754344346.json +1 -0
- package/.claude/checkpoints/task-1754345020.json +1 -0
- package/.claude/checkpoints/task-1754345222.json +1 -0
- package/.claude/checkpoints/task-1754345313.json +1 -0
- package/.claude/checkpoints/task-1754345355.json +1 -0
- package/.claude/checkpoints/task-1754345431.json +1 -0
- package/.claude/checkpoints/task-1754345452.json +1 -0
- package/.claude/checkpoints/task-1754345497.json +1 -0
- package/.claude/checkpoints/task-1754345590.json +1 -0
- package/.claude/checkpoints/task-1754345672.json +1 -0
- package/.claude/checkpoints/task-1754345740.json +1 -0
- package/.claude/checkpoints/task-1754346200.json +1 -0
- package/.claude/checkpoints/task-1754356415.json +1 -0
- package/.claude/checkpoints/task-1754356436.json +1 -0
- package/.claude/checkpoints/task-1754356527.json +1 -0
- package/.claude/checkpoints/task-1754356635.json +1 -0
- package/.claude/checkpoints/task-1754356913.json +1 -0
- package/.claude/checkpoints/task-1754357049.json +1 -0
- package/.claude/checkpoints/task-1754357219.json +1 -0
- package/.claude/checkpoints/task-1754357233.json +1 -0
- package/.claude/checkpoints/task-1754357283.json +1 -0
- package/.claude/checkpoints/task-1754357376.json +1 -0
- package/.claude/checkpoints/task-1754357438.json +1 -0
- package/.claude/checkpoints/task-1754357483.json +1 -0
- package/.claude/checkpoints/task-1754357747.json +1 -0
- package/.claude/checkpoints/task-1754357862.json +1 -0
- package/.claude/checkpoints/task-1754357893.json +1 -0
- package/.claude/checkpoints/task-1754358033.json +1 -0
- package/.claude/checkpoints/task-1754358165.json +1 -0
- package/.claude/checkpoints/task-1754358179.json +1 -0
- package/.claude/checkpoints/task-1754358296.json +1 -0
- package/.claude/checkpoints/task-1754358439.json +1 -0
- package/.claude/checkpoints/task-1754358628.json +1 -0
- package/.claude/checkpoints/task-1754359000.json +1 -0
- package/.claude/checkpoints/task-1754359492.json +1 -0
- package/.claude/checkpoints/task-1754359902.json +1 -0
- package/.claude/checkpoints/task-1754360322.json +1 -0
- package/.claude/checkpoints/task-1754360671.json +1 -0
- package/.claude/checkpoints/task-1754360706.json +1 -0
- package/.claude/checkpoints/task-1754360812.json +1 -0
- package/.claude/checkpoints/task-1754360924.json +1 -0
- package/.claude/checkpoints/task-1754361963.json +1 -0
- package/.claude/checkpoints/task-1754362069.json +1 -0
- package/.claude/checkpoints/task-1754362175.json +1 -0
- package/.claude/checkpoints/task-1754362176.json +1 -0
- package/.claude/checkpoints/task-1754362280.json +1 -0
- package/.claude/checkpoints/task-1754362287.json +1 -0
- package/.claude/checkpoints/task-1754362344.json +1 -0
- package/.claude/checkpoints/task-1754362473.json +1 -0
- package/.claude/checkpoints/task-1754362637.json +1 -0
- package/.claude/checkpoints/task-1754363007.json +1 -0
- package/.claude/checkpoints/task-1754363622.json +1 -0
- package/.claude/checkpoints/task-1754363819.json +1 -0
- package/.claude/checkpoints/task-1754363959.json +1 -0
- package/.claude/checkpoints/task-1754364182.json +1 -0
- package/.claude/checkpoints/task-1754364234.json +1 -0
- package/.claude/checkpoints/task-1754364319.json +1 -0
- package/.claude/checkpoints/task-1754364465.json +1 -0
- package/.claude/checkpoints/task-1754364506.json +1 -0
- package/.claude/checkpoints/task-1754364531.json +1 -0
- package/.claude/checkpoints/task-1754364583.json +1 -0
- package/.claude/checkpoints/task-1754364667.json +1 -0
- package/.claude/checkpoints/task-1754364715.json +1 -0
- package/.claude/checkpoints/task-1754364739.json +1 -0
- package/.claude/checkpoints/task-1754364786.json +1 -0
- package/.claude/checkpoints/task-1754364793.json +1 -0
- package/.claude/checkpoints/task-1754364926.json +1 -0
- package/.claude/checkpoints/task-1754365138.json +1 -0
- package/.claude/checkpoints/task-1754365266.json +1 -0
- package/.claude/checkpoints/task-1754365411.json +1 -0
- package/.claude/checkpoints/task-1754396882.json +1 -0
- package/.claude/checkpoints/task-1754396996.json +1 -0
- package/.claude/checkpoints/task-1754397364.json +1 -0
- package/.claude/checkpoints/task-1754397566.json +1 -0
- package/.claude/checkpoints/task-1754397827.json +1 -0
- package/.claude/checkpoints/task-1754397906.json +1 -0
- package/.claude/checkpoints/task-1754397934.json +1 -0
- package/.claude/checkpoints/task-1754397965.json +1 -0
- package/.claude/checkpoints/task-1754398085.json +1 -0
- package/.claude/checkpoints/task-1754398359.json +1 -0
- package/.claude/checkpoints/task-1754398502.json +1 -0
- package/.claude/checkpoints/task-1754398689.json +1 -0
- package/.claude/checkpoints/task-1754398907.json +1 -0
- package/.claude/checkpoints/task-1754399042.json +1 -0
- package/CHANGELOG.md +42 -0
- package/bin/claude-flow +1 -1
- package/bin/claude-flow.js +1 -1
- package/package.json +1 -1
- package/src/automation/agents/foundation_agent_README.md +274 -0
- package/src/automation/agents/foundation_agent_core.py +384 -0
- package/src/automation/agents/foundation_agent_features.py +413 -0
- package/src/automation/agents/foundation_agent_integration.py +412 -0
- package/src/automation/agents/test_foundation_agent.py +369 -0
- package/src/cli/command-registry.js +12 -2
- package/src/cli/commands/status.ts +1 -1
- package/src/cli/help-text.js +3 -2
- package/src/cli/index-remote.ts +1 -1
- package/src/cli/index.ts +1 -1
- package/src/cli/simple-cli.js +2 -2
- package/src/cli/simple-cli.ts +1 -1
- package/src/cli/simple-commands/automation-executor.js +1542 -0
- package/src/cli/simple-commands/automation.js +318 -3
- package/src/cli/simple-commands/concurrent-display.js +331 -0
- package/src/cli/simple-commands/hive-mind/session-manager.js +167 -58
- package/src/cli/simple-commands/hive-mind.js +211 -78
- package/src/cli/simple-commands/init/index.js +4 -3
- package/src/cli/simple-commands/init/templates/CLAUDE.md.optimized +265 -0
- package/src/cli/simple-commands/init/templates/claude-md.js +237 -139
- package/src/cli/simple-commands/stream-processor.js +327 -0
- package/src/cli/simple-commands/templates/mle-star-workflow.json +294 -0
- package/src/mle-star/ensemble_agent_advanced.py +473 -0
- package/src/mle-star/ensemble_agent_implementation.py +428 -0
- package/src/mle-star/ensemble_agent_tests.py +392 -0
- package/src/workflows/examples/api-development-workflow.json +140 -0
- package/src/workflows/examples/mle-star-workflow.json +238 -0
- package/src/workflows/examples/research-workflow.json +174 -0
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Feature Engineering Module for Foundation Agent
|
|
4
|
+
==============================================
|
|
5
|
+
Advanced feature engineering and selection for MLE-STAR foundation phase.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import numpy as np
|
|
9
|
+
import pandas as pd
|
|
10
|
+
from typing import List, Dict, Tuple, Any, Optional, Union
|
|
11
|
+
from sklearn.preprocessing import PolynomialFeatures, FunctionTransformer
|
|
12
|
+
from sklearn.feature_selection import (
|
|
13
|
+
SelectKBest, SelectPercentile, RFE, RFECV,
|
|
14
|
+
chi2, f_classif, f_regression, mutual_info_classif, mutual_info_regression
|
|
15
|
+
)
|
|
16
|
+
from sklearn.decomposition import PCA, TruncatedSVD, FastICA
|
|
17
|
+
from sklearn.feature_extraction import FeatureHasher
|
|
18
|
+
from sklearn.cluster import KMeans
|
|
19
|
+
from scipy import stats
|
|
20
|
+
import warnings
|
|
21
|
+
warnings.filterwarnings('ignore')
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class FeatureEngineer:
|
|
25
|
+
"""
|
|
26
|
+
Advanced feature engineering for foundation models
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
def __init__(self, problem_type: str = "classification"):
|
|
30
|
+
self.problem_type = problem_type
|
|
31
|
+
self.engineered_features = []
|
|
32
|
+
self.feature_importance = {}
|
|
33
|
+
self.transformations = {}
|
|
34
|
+
|
|
35
|
+
def create_polynomial_features(self, X: pd.DataFrame, degree: int = 2,
|
|
36
|
+
interaction_only: bool = False) -> pd.DataFrame:
|
|
37
|
+
"""Create polynomial and interaction features"""
|
|
38
|
+
poly = PolynomialFeatures(degree=degree, interaction_only=interaction_only,
|
|
39
|
+
include_bias=False)
|
|
40
|
+
|
|
41
|
+
# Select numeric columns only
|
|
42
|
+
numeric_cols = X.select_dtypes(include=[np.number]).columns
|
|
43
|
+
X_numeric = X[numeric_cols]
|
|
44
|
+
|
|
45
|
+
# Generate polynomial features
|
|
46
|
+
X_poly = poly.fit_transform(X_numeric)
|
|
47
|
+
|
|
48
|
+
# Get feature names
|
|
49
|
+
feature_names = poly.get_feature_names_out(numeric_cols)
|
|
50
|
+
|
|
51
|
+
# Create DataFrame
|
|
52
|
+
X_poly_df = pd.DataFrame(X_poly, columns=feature_names, index=X.index)
|
|
53
|
+
|
|
54
|
+
# Combine with non-numeric features
|
|
55
|
+
non_numeric = X.select_dtypes(exclude=[np.number])
|
|
56
|
+
if not non_numeric.empty:
|
|
57
|
+
X_poly_df = pd.concat([X_poly_df, non_numeric], axis=1)
|
|
58
|
+
|
|
59
|
+
self.transformations['polynomial'] = {
|
|
60
|
+
'degree': degree,
|
|
61
|
+
'features_created': len(feature_names)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return X_poly_df
|
|
65
|
+
|
|
66
|
+
def create_statistical_features(self, X: pd.DataFrame) -> pd.DataFrame:
|
|
67
|
+
"""Create statistical aggregate features"""
|
|
68
|
+
X_stats = X.copy()
|
|
69
|
+
numeric_cols = X.select_dtypes(include=[np.number]).columns
|
|
70
|
+
|
|
71
|
+
if len(numeric_cols) > 1:
|
|
72
|
+
# Row-wise statistics
|
|
73
|
+
X_stats['row_mean'] = X[numeric_cols].mean(axis=1)
|
|
74
|
+
X_stats['row_std'] = X[numeric_cols].std(axis=1)
|
|
75
|
+
X_stats['row_max'] = X[numeric_cols].max(axis=1)
|
|
76
|
+
X_stats['row_min'] = X[numeric_cols].min(axis=1)
|
|
77
|
+
X_stats['row_range'] = X_stats['row_max'] - X_stats['row_min']
|
|
78
|
+
X_stats['row_skew'] = X[numeric_cols].apply(lambda x: stats.skew(x), axis=1)
|
|
79
|
+
X_stats['row_kurtosis'] = X[numeric_cols].apply(lambda x: stats.kurtosis(x), axis=1)
|
|
80
|
+
|
|
81
|
+
# Percentiles
|
|
82
|
+
X_stats['row_q25'] = X[numeric_cols].quantile(0.25, axis=1)
|
|
83
|
+
X_stats['row_q75'] = X[numeric_cols].quantile(0.75, axis=1)
|
|
84
|
+
X_stats['row_iqr'] = X_stats['row_q75'] - X_stats['row_q25']
|
|
85
|
+
|
|
86
|
+
self.engineered_features.extend([
|
|
87
|
+
'row_mean', 'row_std', 'row_max', 'row_min', 'row_range',
|
|
88
|
+
'row_skew', 'row_kurtosis', 'row_q25', 'row_q75', 'row_iqr'
|
|
89
|
+
])
|
|
90
|
+
|
|
91
|
+
return X_stats
|
|
92
|
+
|
|
93
|
+
def create_ratio_features(self, X: pd.DataFrame, pairs: Optional[List[Tuple[str, str]]] = None) -> pd.DataFrame:
|
|
94
|
+
"""Create ratio features between numeric columns"""
|
|
95
|
+
X_ratio = X.copy()
|
|
96
|
+
numeric_cols = X.select_dtypes(include=[np.number]).columns.tolist()
|
|
97
|
+
|
|
98
|
+
if pairs is None:
|
|
99
|
+
# Create ratios for all numeric column pairs
|
|
100
|
+
pairs = [(col1, col2) for i, col1 in enumerate(numeric_cols)
|
|
101
|
+
for col2 in numeric_cols[i+1:]]
|
|
102
|
+
|
|
103
|
+
for col1, col2 in pairs:
|
|
104
|
+
if col1 in numeric_cols and col2 in numeric_cols:
|
|
105
|
+
# Avoid division by zero
|
|
106
|
+
ratio_name = f"{col1}_ratio_{col2}"
|
|
107
|
+
X_ratio[ratio_name] = X[col1] / (X[col2] + 1e-8)
|
|
108
|
+
self.engineered_features.append(ratio_name)
|
|
109
|
+
|
|
110
|
+
# Also create difference
|
|
111
|
+
diff_name = f"{col1}_diff_{col2}"
|
|
112
|
+
X_ratio[diff_name] = X[col1] - X[col2]
|
|
113
|
+
self.engineered_features.append(diff_name)
|
|
114
|
+
|
|
115
|
+
return X_ratio
|
|
116
|
+
|
|
117
|
+
def create_clustering_features(self, X: pd.DataFrame, n_clusters: int = 5) -> pd.DataFrame:
|
|
118
|
+
"""Create cluster-based features"""
|
|
119
|
+
X_cluster = X.copy()
|
|
120
|
+
numeric_cols = X.select_dtypes(include=[np.number]).columns
|
|
121
|
+
|
|
122
|
+
if len(numeric_cols) > 0:
|
|
123
|
+
# Perform clustering
|
|
124
|
+
kmeans = KMeans(n_clusters=n_clusters, random_state=42)
|
|
125
|
+
X_numeric = X[numeric_cols].fillna(0)
|
|
126
|
+
|
|
127
|
+
# Cluster assignments
|
|
128
|
+
clusters = kmeans.fit_predict(X_numeric)
|
|
129
|
+
X_cluster['cluster'] = clusters
|
|
130
|
+
|
|
131
|
+
# Distance to each cluster center
|
|
132
|
+
distances = kmeans.transform(X_numeric)
|
|
133
|
+
for i in range(n_clusters):
|
|
134
|
+
X_cluster[f'dist_to_cluster_{i}'] = distances[:, i]
|
|
135
|
+
self.engineered_features.append(f'dist_to_cluster_{i}')
|
|
136
|
+
|
|
137
|
+
# Distance to nearest cluster center
|
|
138
|
+
X_cluster['min_cluster_dist'] = distances.min(axis=1)
|
|
139
|
+
self.engineered_features.append('min_cluster_dist')
|
|
140
|
+
|
|
141
|
+
self.transformations['clustering'] = {
|
|
142
|
+
'n_clusters': n_clusters,
|
|
143
|
+
'features_created': n_clusters + 2
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return X_cluster
|
|
147
|
+
|
|
148
|
+
def create_transformation_features(self, X: pd.DataFrame) -> pd.DataFrame:
|
|
149
|
+
"""Create transformed features (log, sqrt, square, etc.)"""
|
|
150
|
+
X_trans = X.copy()
|
|
151
|
+
numeric_cols = X.select_dtypes(include=[np.number]).columns
|
|
152
|
+
|
|
153
|
+
for col in numeric_cols:
|
|
154
|
+
# Only transform positive values
|
|
155
|
+
if (X[col] > 0).all():
|
|
156
|
+
# Log transformation
|
|
157
|
+
X_trans[f'{col}_log'] = np.log1p(X[col])
|
|
158
|
+
self.engineered_features.append(f'{col}_log')
|
|
159
|
+
|
|
160
|
+
# Square root
|
|
161
|
+
X_trans[f'{col}_sqrt'] = np.sqrt(X[col])
|
|
162
|
+
self.engineered_features.append(f'{col}_sqrt')
|
|
163
|
+
|
|
164
|
+
# Square (works for all values)
|
|
165
|
+
X_trans[f'{col}_square'] = X[col] ** 2
|
|
166
|
+
self.engineered_features.append(f'{col}_square')
|
|
167
|
+
|
|
168
|
+
# Reciprocal (avoid division by zero)
|
|
169
|
+
if not (X[col] == 0).any():
|
|
170
|
+
X_trans[f'{col}_reciprocal'] = 1 / X[col]
|
|
171
|
+
self.engineered_features.append(f'{col}_reciprocal')
|
|
172
|
+
|
|
173
|
+
return X_trans
|
|
174
|
+
|
|
175
|
+
def create_binning_features(self, X: pd.DataFrame, n_bins: int = 10) -> pd.DataFrame:
|
|
176
|
+
"""Create binned features for numeric columns"""
|
|
177
|
+
X_binned = X.copy()
|
|
178
|
+
numeric_cols = X.select_dtypes(include=[np.number]).columns
|
|
179
|
+
|
|
180
|
+
for col in numeric_cols:
|
|
181
|
+
# Equal-width binning
|
|
182
|
+
X_binned[f'{col}_bin_eq_width'] = pd.cut(X[col], bins=n_bins, labels=False)
|
|
183
|
+
|
|
184
|
+
# Equal-frequency binning
|
|
185
|
+
try:
|
|
186
|
+
X_binned[f'{col}_bin_eq_freq'] = pd.qcut(X[col], q=n_bins, labels=False, duplicates='drop')
|
|
187
|
+
except:
|
|
188
|
+
# If qcut fails due to duplicates, use regular cut
|
|
189
|
+
X_binned[f'{col}_bin_eq_freq'] = pd.cut(X[col], bins=n_bins, labels=False)
|
|
190
|
+
|
|
191
|
+
self.engineered_features.extend([f'{col}_bin_eq_width', f'{col}_bin_eq_freq'])
|
|
192
|
+
|
|
193
|
+
return X_binned
|
|
194
|
+
|
|
195
|
+
def select_features_univariate(self, X: pd.DataFrame, y: pd.Series,
|
|
196
|
+
k: Union[int, float] = 0.5) -> Tuple[pd.DataFrame, Dict[str, float]]:
|
|
197
|
+
"""Select features using univariate statistical tests"""
|
|
198
|
+
# Choose scoring function based on problem type
|
|
199
|
+
if self.problem_type == "classification":
|
|
200
|
+
if X.select_dtypes(include=[np.number]).shape[1] == X.shape[1]:
|
|
201
|
+
score_func = f_classif
|
|
202
|
+
else:
|
|
203
|
+
score_func = chi2
|
|
204
|
+
else:
|
|
205
|
+
score_func = f_regression
|
|
206
|
+
|
|
207
|
+
# Handle k parameter (number or percentage)
|
|
208
|
+
if isinstance(k, float) and k < 1:
|
|
209
|
+
selector = SelectPercentile(score_func=score_func, percentile=int(k * 100))
|
|
210
|
+
else:
|
|
211
|
+
selector = SelectKBest(score_func=score_func, k=int(k))
|
|
212
|
+
|
|
213
|
+
# Fit selector
|
|
214
|
+
X_numeric = X.select_dtypes(include=[np.number])
|
|
215
|
+
X_selected = selector.fit_transform(X_numeric, y)
|
|
216
|
+
|
|
217
|
+
# Get selected features
|
|
218
|
+
selected_features = X_numeric.columns[selector.get_support()].tolist()
|
|
219
|
+
|
|
220
|
+
# Get scores
|
|
221
|
+
scores = dict(zip(X_numeric.columns, selector.scores_))
|
|
222
|
+
self.feature_importance.update(scores)
|
|
223
|
+
|
|
224
|
+
# Create DataFrame with selected features
|
|
225
|
+
X_result = X[selected_features]
|
|
226
|
+
|
|
227
|
+
# Add non-numeric features back
|
|
228
|
+
non_numeric = X.select_dtypes(exclude=[np.number])
|
|
229
|
+
if not non_numeric.empty:
|
|
230
|
+
X_result = pd.concat([X_result, non_numeric], axis=1)
|
|
231
|
+
|
|
232
|
+
return X_result, scores
|
|
233
|
+
|
|
234
|
+
def select_features_mutual_info(self, X: pd.DataFrame, y: pd.Series,
|
|
235
|
+
threshold: float = 0.1) -> Tuple[pd.DataFrame, Dict[str, float]]:
|
|
236
|
+
"""Select features using mutual information"""
|
|
237
|
+
# Choose MI function based on problem type
|
|
238
|
+
if self.problem_type == "classification":
|
|
239
|
+
mi_func = mutual_info_classif
|
|
240
|
+
else:
|
|
241
|
+
mi_func = mutual_info_regression
|
|
242
|
+
|
|
243
|
+
# Calculate mutual information
|
|
244
|
+
X_numeric = X.select_dtypes(include=[np.number])
|
|
245
|
+
mi_scores = mi_func(X_numeric, y)
|
|
246
|
+
|
|
247
|
+
# Create feature importance dict
|
|
248
|
+
mi_dict = dict(zip(X_numeric.columns, mi_scores))
|
|
249
|
+
self.feature_importance.update(mi_dict)
|
|
250
|
+
|
|
251
|
+
# Select features above threshold
|
|
252
|
+
selected_features = [col for col, score in mi_dict.items() if score > threshold]
|
|
253
|
+
|
|
254
|
+
# Create result DataFrame
|
|
255
|
+
X_result = X[selected_features]
|
|
256
|
+
|
|
257
|
+
# Add non-numeric features back
|
|
258
|
+
non_numeric = X.select_dtypes(exclude=[np.number])
|
|
259
|
+
if not non_numeric.empty:
|
|
260
|
+
X_result = pd.concat([X_result, non_numeric], axis=1)
|
|
261
|
+
|
|
262
|
+
return X_result, mi_dict
|
|
263
|
+
|
|
264
|
+
def select_features_rfe(self, X: pd.DataFrame, y: pd.Series, estimator,
|
|
265
|
+
n_features: Optional[int] = None) -> Tuple[pd.DataFrame, List[str]]:
|
|
266
|
+
"""Select features using Recursive Feature Elimination"""
|
|
267
|
+
X_numeric = X.select_dtypes(include=[np.number])
|
|
268
|
+
|
|
269
|
+
if n_features is None:
|
|
270
|
+
# Use cross-validation to find optimal number
|
|
271
|
+
selector = RFECV(estimator, cv=3, scoring='accuracy' if self.problem_type == 'classification' else 'neg_mean_squared_error')
|
|
272
|
+
else:
|
|
273
|
+
selector = RFE(estimator, n_features_to_select=n_features)
|
|
274
|
+
|
|
275
|
+
# Fit RFE
|
|
276
|
+
selector.fit(X_numeric, y)
|
|
277
|
+
|
|
278
|
+
# Get selected features
|
|
279
|
+
selected_features = X_numeric.columns[selector.support_].tolist()
|
|
280
|
+
|
|
281
|
+
# Get ranking
|
|
282
|
+
ranking = dict(zip(X_numeric.columns, selector.ranking_))
|
|
283
|
+
|
|
284
|
+
# Create result DataFrame
|
|
285
|
+
X_result = X[selected_features]
|
|
286
|
+
|
|
287
|
+
# Add non-numeric features back
|
|
288
|
+
non_numeric = X.select_dtypes(exclude=[np.number])
|
|
289
|
+
if not non_numeric.empty:
|
|
290
|
+
X_result = pd.concat([X_result, non_numeric], axis=1)
|
|
291
|
+
|
|
292
|
+
return X_result, selected_features
|
|
293
|
+
|
|
294
|
+
def reduce_dimensions_pca(self, X: pd.DataFrame, n_components: Union[int, float] = 0.95) -> pd.DataFrame:
|
|
295
|
+
"""Reduce dimensions using PCA"""
|
|
296
|
+
X_numeric = X.select_dtypes(include=[np.number]).fillna(0)
|
|
297
|
+
|
|
298
|
+
# Apply PCA
|
|
299
|
+
pca = PCA(n_components=n_components, random_state=42)
|
|
300
|
+
X_pca = pca.fit_transform(X_numeric)
|
|
301
|
+
|
|
302
|
+
# Create feature names
|
|
303
|
+
n_components_actual = X_pca.shape[1]
|
|
304
|
+
pca_features = [f'pca_{i}' for i in range(n_components_actual)]
|
|
305
|
+
|
|
306
|
+
# Create DataFrame
|
|
307
|
+
X_pca_df = pd.DataFrame(X_pca, columns=pca_features, index=X.index)
|
|
308
|
+
|
|
309
|
+
# Store transformation info
|
|
310
|
+
self.transformations['pca'] = {
|
|
311
|
+
'n_components': n_components_actual,
|
|
312
|
+
'explained_variance_ratio': pca.explained_variance_ratio_.tolist(),
|
|
313
|
+
'total_variance_explained': pca.explained_variance_ratio_.sum()
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
# Combine with non-numeric features
|
|
317
|
+
non_numeric = X.select_dtypes(exclude=[np.number])
|
|
318
|
+
if not non_numeric.empty:
|
|
319
|
+
X_pca_df = pd.concat([X_pca_df, non_numeric], axis=1)
|
|
320
|
+
|
|
321
|
+
return X_pca_df
|
|
322
|
+
|
|
323
|
+
def create_all_features(self, X: pd.DataFrame, config: Optional[Dict[str, Any]] = None) -> pd.DataFrame:
|
|
324
|
+
"""Create all engineered features based on configuration"""
|
|
325
|
+
if config is None:
|
|
326
|
+
config = {
|
|
327
|
+
'polynomial': {'degree': 2, 'interaction_only': True},
|
|
328
|
+
'statistical': True,
|
|
329
|
+
'ratio': True,
|
|
330
|
+
'clustering': {'n_clusters': 5},
|
|
331
|
+
'transformation': True,
|
|
332
|
+
'binning': {'n_bins': 10}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
X_engineered = X.copy()
|
|
336
|
+
|
|
337
|
+
# Apply each feature engineering method
|
|
338
|
+
if config.get('polynomial'):
|
|
339
|
+
poly_config = config['polynomial'] if isinstance(config['polynomial'], dict) else {}
|
|
340
|
+
X_engineered = self.create_polynomial_features(X_engineered, **poly_config)
|
|
341
|
+
|
|
342
|
+
if config.get('statistical'):
|
|
343
|
+
X_engineered = self.create_statistical_features(X_engineered)
|
|
344
|
+
|
|
345
|
+
if config.get('ratio'):
|
|
346
|
+
X_engineered = self.create_ratio_features(X_engineered)
|
|
347
|
+
|
|
348
|
+
if config.get('clustering'):
|
|
349
|
+
cluster_config = config['clustering'] if isinstance(config['clustering'], dict) else {}
|
|
350
|
+
X_engineered = self.create_clustering_features(X_engineered, **cluster_config)
|
|
351
|
+
|
|
352
|
+
if config.get('transformation'):
|
|
353
|
+
X_engineered = self.create_transformation_features(X_engineered)
|
|
354
|
+
|
|
355
|
+
if config.get('binning'):
|
|
356
|
+
bin_config = config['binning'] if isinstance(config['binning'], dict) else {}
|
|
357
|
+
X_engineered = self.create_binning_features(X_engineered, **bin_config)
|
|
358
|
+
|
|
359
|
+
return X_engineered
|
|
360
|
+
|
|
361
|
+
def get_feature_report(self) -> Dict[str, Any]:
|
|
362
|
+
"""Generate feature engineering report"""
|
|
363
|
+
return {
|
|
364
|
+
'engineered_features': self.engineered_features,
|
|
365
|
+
'total_engineered': len(self.engineered_features),
|
|
366
|
+
'transformations': self.transformations,
|
|
367
|
+
'feature_importance': dict(sorted(
|
|
368
|
+
self.feature_importance.items(),
|
|
369
|
+
key=lambda x: x[1],
|
|
370
|
+
reverse=True
|
|
371
|
+
)[:20]) # Top 20 features
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
def test_feature_engineering():
|
|
376
|
+
"""Test feature engineering functionality"""
|
|
377
|
+
from sklearn.datasets import make_classification
|
|
378
|
+
|
|
379
|
+
# Create sample data
|
|
380
|
+
X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, random_state=42)
|
|
381
|
+
feature_names = [f'feature_{i}' for i in range(X.shape[1])]
|
|
382
|
+
X_df = pd.DataFrame(X, columns=feature_names)
|
|
383
|
+
|
|
384
|
+
# Initialize feature engineer
|
|
385
|
+
engineer = FeatureEngineer(problem_type="classification")
|
|
386
|
+
|
|
387
|
+
# Test different feature engineering methods
|
|
388
|
+
print("Testing feature engineering methods...")
|
|
389
|
+
|
|
390
|
+
# Polynomial features
|
|
391
|
+
X_poly = engineer.create_polynomial_features(X_df, degree=2, interaction_only=True)
|
|
392
|
+
print(f"✓ Polynomial features: {X_df.shape[1]} → {X_poly.shape[1]}")
|
|
393
|
+
|
|
394
|
+
# Statistical features
|
|
395
|
+
X_stats = engineer.create_statistical_features(X_df)
|
|
396
|
+
print(f"✓ Statistical features: {X_df.shape[1]} → {X_stats.shape[1]}")
|
|
397
|
+
|
|
398
|
+
# Feature selection
|
|
399
|
+
X_selected, scores = engineer.select_features_univariate(X_poly, y, k=20)
|
|
400
|
+
print(f"✓ Feature selection: {X_poly.shape[1]} → {X_selected.shape[1]}")
|
|
401
|
+
|
|
402
|
+
# PCA
|
|
403
|
+
X_pca = engineer.reduce_dimensions_pca(X_df, n_components=0.95)
|
|
404
|
+
print(f"✓ PCA: {X_df.shape[1]} → {X_pca.shape[1]}")
|
|
405
|
+
|
|
406
|
+
# Get report
|
|
407
|
+
report = engineer.get_feature_report()
|
|
408
|
+
print(f"\n✓ Total engineered features: {report['total_engineered']}")
|
|
409
|
+
print(f"✓ Transformations applied: {list(report['transformations'].keys())}")
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
if __name__ == "__main__":
|
|
413
|
+
test_feature_engineering()
|